[Feature][T8TSK-30][data]Ril related lib data receive timeout handing mechanism
Change-Id: I9c744c5cb9191a19c0a195730325e50b48fd89c5
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index bfa0c94..e096d53 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -14,6 +14,7 @@
#include "liblog/lynq_deflog.h"
#include <sys/time.h>
#include <include/lynq_uci.h>
+#include <errno.h>
#define LYNQ_SERVICE_PORT 8088
#define LYNQ_URC_SERVICE_PORT 8086
#define LYNQ_REC_BUF 8192
@@ -81,6 +82,8 @@
* @brief temp of apn result info
*/
char g_lynq_apn_result[1024] = {};
+
+struct sockaddr_in lynq_data_socket_server_addr;
typedef struct
{
char apn[LYNQ_APN_MAX_LEN];
@@ -237,10 +240,10 @@
char recvline[LYNQ_REC_BUF];
bzero(recvline,LYNQ_REC_BUF);
/* receive data from server */
- len = read(sockfd, recvline, LYNQ_REC_BUF);
- if(len == -1)
+ len = recvfrom(sockfd,recvline,LYNQ_REC_BUF,0,(struct sockaddr *)&lynq_data_socket_server_addr,(socklen_t *)&lynq_data_socket_server_addr);
+ if(len == -1 && errno == EAGAIN)
{
- perror("read error");
+ LYERRLOG("read error");
return -1;
}
if (recvline != NULL) {
@@ -292,12 +295,11 @@
/*Warren add for T800 platform 2021/11/19 start*/
int lynq_socket_client_start()
{
- struct sockaddr_in lynq_socket_server_addr;
/* init lynq_socket_server_addr */
- bzero(&lynq_socket_server_addr, sizeof(lynq_socket_server_addr));
- lynq_socket_server_addr.sin_family = AF_INET;
- lynq_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
- lynq_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);
+ bzero(&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr));
+ lynq_data_socket_server_addr.sin_family = AF_INET;
+ lynq_data_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
+ lynq_data_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);
/*
if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)
{
@@ -306,7 +308,16 @@
}
*/
lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_socket_server_addr, sizeof(lynq_socket_server_addr)) == -1)
+ struct timeval timeOut;
+
+ timeOut.tv_sec = 5; //ÉèÖÃ5s³¬Ê±
+ timeOut.tv_usec = 0;
+
+ if (setsockopt(lynq_client_sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
+ {
+ LYERRLOG("time out setting failed");
+ }
+ if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr)) == -1)
{
perror("connect error");
return -1;