[Bugfix]Fix API-339
Change-Id: I005e0a21665334c26efbaff80616a86d61295040
diff --git a/src/lynq/lib/liblynq-network/lynq_network.cpp b/src/lynq/lib/liblynq-network/lynq_network.cpp
index ff297f6..a67b4dd 100755
--- a/src/lynq/lib/liblynq-network/lynq_network.cpp
+++ b/src/lynq/lib/liblynq-network/lynq_network.cpp
@@ -66,6 +66,13 @@
static pthread_mutex_t signal_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t signal_state_change_cond = PTHREAD_COND_INITIALIZER;
+/**g_lynq_network_sendto_mutex
+* @brief mark network send request mutex
+*/
+static pthread_mutex_t g_lynq_network_sendto_mutex;
+
+//static pthread_mutex_t g_lynq_network_recv_mutex;
+
typedef enum{
LYNQ_E_CARDSTATE_ERROR=8000,
/* The voice service state is out of service*/
@@ -311,6 +318,7 @@
LYERRLOG("init socket urc fail!!!");
return -1;
}
+ pthread_mutex_init(&g_lynq_network_sendto_mutex, NULL);
return 0;
}
@@ -472,6 +480,7 @@
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -481,6 +490,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -542,6 +552,7 @@
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -551,6 +562,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -616,7 +628,7 @@
return ret;
}
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -625,6 +637,7 @@
}
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -659,7 +672,7 @@
client_t.paramLen = 0;
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -669,6 +682,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -752,6 +766,7 @@
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -761,6 +776,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -842,7 +858,7 @@
client_t.paramLen = 0;
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -852,6 +868,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -891,6 +908,7 @@
client_t.paramLen = 1;
client_t.uToken = network_Global_uToken;
sprintf(client_t.param,"%d",preffertype);
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -899,6 +917,7 @@
}
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -935,6 +954,7 @@
client_t.paramLen = 0;
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -944,6 +964,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -987,7 +1008,7 @@
client_t.paramLen = 1;
client_t.uToken = network_Global_uToken;
sprintf(client_t.param,"%d",rate);
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -995,7 +1016,9 @@
return ret;
}
+
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -1028,7 +1051,7 @@
client_t.paramLen = 1;
client_t.uToken = network_Global_uToken;
sprintf(client_t.param,"%d",bandmode);
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -1037,6 +1060,7 @@
}
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -1073,6 +1097,7 @@
client_t.paramLen = 0;
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -1082,6 +1107,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -1133,7 +1159,7 @@
client_t.paramLen = 1;
client_t.uToken = network_Global_uToken;
sprintf(client_t.param,"%d",data);
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -1142,6 +1168,7 @@
}
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -1177,7 +1204,7 @@
client_t.paramLen = 0;
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -1186,6 +1213,7 @@
}
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -1232,6 +1260,7 @@
client_t.uToken = network_Global_uToken;
memset(client_t.param,0,sizeof(client_t.param));
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if(send_num<0)
{
@@ -1241,6 +1270,7 @@
//get data
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if(recv_num == 0 ||recv_num <0)
{
LYERRLOG("recvfrom error");
@@ -1343,7 +1373,7 @@
client_t.paramLen = 1;
client_t.uToken = network_Global_uToken;
sprintf(client_t.param,"%d",ims_mode);
-
+ pthread_mutex_lock(&g_lynq_network_sendto_mutex);
send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
if (send_num<0)
{
@@ -1352,6 +1382,7 @@
}
recv_num = recvfrom(network_sock_fd,res_data,sizeof(res_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
if (recv_num == 0 || recv_num < 0)
{
LYERRLOG("recvfrom error");