[fix]
1.fix bug API-43
2.fix bug API-4
Change-Id: I18563495ddca219ffb6a35b840c73cd8d1fe9715
diff --git a/lib/liblynq-call/lynq_call.cpp b/lib/liblynq-call/lynq_call.cpp
index 2af714d..5443df3 100755
--- a/lib/liblynq-call/lynq_call.cpp
+++ b/lib/liblynq-call/lynq_call.cpp
@@ -63,6 +63,9 @@
static pthread_cond_t s_urc_call_state_change_cond = PTHREAD_COND_INITIALIZER;
static pthread_mutex_t s_incoming_call_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t s_incoming_call_cond = PTHREAD_COND_INITIALIZER;
+pthread_t lynq_call_urc_tid;
+pthread_t lynq_call_list_loop_tid;
+
int s_call_urc_event_complete = 1;
@@ -187,8 +190,11 @@
if(call_num<=0)
{
lynq_call_state = CALL_OFF;
+ LYINFLOG("lynq_call_state:%d",lynq_call_state);
return 0;
}
+ lynq_call_state = CALL_ON;
+ LYINFLOG("lynq_call_state:%d",lynq_call_state);
for(int i = 0;i < call_num;i++)
{
p.readInt32(&temp);
@@ -426,11 +432,10 @@
int lynq_update_call_list_loop()
{
int ret = 0;
- pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- ret = pthread_create(&tid,&attr,triggerGetCallList,NULL);
+ ret = pthread_create(&lynq_call_list_loop_tid,&attr,triggerGetCallList,NULL);
if(ret < 0)
{
LYERRLOG("lynq_update_call_list_loop fail!!!");
@@ -516,7 +521,6 @@
int len=0;
int on=1;
struct sockaddr_in urc_local_addr;
- pthread_t tid;
pthread_attr_t attr;
socket_fd = socket(AF_INET,SOCK_DGRAM,0);
if(socket_fd < 0)
@@ -544,7 +548,7 @@
}
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- rt = pthread_create(&tid,&attr,thread_urc_recv,(void *)socket_fd);
+ rt = pthread_create(&lynq_call_urc_tid,&attr,thread_urc_recv,(void *)socket_fd);
if(rt < 0)
{
LYERRLOG("urc loop failure!!!\n");
@@ -601,9 +605,21 @@
}
int lynq_deinit_call()
{
- close(lynq_call_client_sockfd);
+ int ret = -1;
+ if(lynq_call_client_sockfd>0)
+ {
+ close(lynq_call_client_sockfd);
+ }
urc_call_recive_status = 0;
call_list_loop = 0;
+ ret = pthread_cancel(lynq_call_urc_tid);
+ LYDBGLOG("pthread cancel ret = %d",ret);
+ ret = pthread_cancel(lynq_call_list_loop_tid);
+ LYDBGLOG("pthread cancel ret = %d",ret);
+ ret = pthread_join(lynq_call_urc_tid,NULL);
+ LYDBGLOG("pthread join ret = %d",ret);
+ ret = pthread_join(lynq_call_list_loop_tid,NULL);
+ LYDBGLOG("pthread join ret = %d",ret);
return 0;
}
int lynq_call(int* handle,char addr[])