diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
index 0b4ae92..a72566c 100755
--- a/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -64,8 +64,8 @@
 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;
+pthread_t lynq_call_urc_tid = -1;
+pthread_t lynq_call_list_loop_tid = -1;
 
 /*lei add*/
 /* socket文件描述符 */ 
@@ -110,6 +110,12 @@
 bool call_list_loop = 1;
 int isDial = 0;
 int lynqIncomingCallId = 0;
+/**
+ * @brief mark call initialization state
+ * 0: deinit state
+ * 1: init state
+ */
+int g_lynq_call_init_flag = 0;
 
 int JumpHeader(Parcel &p,int *resp_type,int *request,int *slot_id,int *error)
 {
@@ -596,7 +602,12 @@
     printf("call state change,sim:%d\n",soc_id);
 }
 int lynq_init_call(int uToken)
-{
+{   
+    if(g_lynq_call_init_flag == 1){
+        LYDBGLOG("lynq init call failed!!!");
+        return -1;
+    }
+    g_lynq_call_init_flag = 1;
     int result = 0;
     Global_uToken_call = uToken;
     urc_call_recive_status = 1;
@@ -624,22 +635,35 @@
 }
 int lynq_deinit_call()
 {
-    int ret = -1;
-    if(lynq_call_client_sockfd>0)
+    if(g_lynq_call_init_flag == 0)
     {
-        close(lynq_call_client_sockfd);
+        LYDBGLOG("lynq_deinit_call failed!!!");
+        return -1;
     }
-    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;
+    else
+    {   
+        g_lynq_call_init_flag = 0;
+        int ret = -1;
+        if(lynq_call_client_sockfd>0)
+        {
+            close(lynq_call_client_sockfd);
+        }
+        urc_call_recive_status = 0;
+        call_list_loop = 0;
+        if(lynq_call_urc_tid == -1 || lynq_call_list_loop_tid == -1)
+        {
+            return -1;
+        }
+        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[])
 {
