[Bugfix]API-81 API-82

Change-Id: I1a0a9bfa100c256d0353be8e580043f30dbce05d
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 4df67e7..1fe3e3e 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -56,6 +56,12 @@
 static pthread_cond_t s_data_call_state_change_cond = PTHREAD_COND_INITIALIZER;
 static pthread_mutex_t s_pdn_change_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t s_pdn_change_cond = PTHREAD_COND_INITIALIZER;
+/**g_lynq_data_init_flag
+* @brief mark data initialization state
+* 0:deinit status
+* 1:init state
+*/
+static int g_lynq_data_init_flag = 0;
 
 typedef struct{
     char apn[LYNQ_APN_MAX_LEN];
@@ -432,6 +438,12 @@
 }
 int lynq_init_data(int uToken)
 {
+    if (g_lynq_data_init_flag == 1)
+    {
+        LYERRLOG("init twice is not allowed");
+        return -1;
+    }
+    g_lynq_data_init_flag = 1;
     int result = 0;
     Global_uToken = uToken;
     data_urc_recive_status = 1;
@@ -457,6 +469,12 @@
 int lynq_deinit_data()
 {
     int ret = -1;
+    if (g_lynq_data_init_flag == 0)
+    {
+        LYERRLOG("deinit twice is not allowed");
+        return ret;
+    }
+    g_lynq_data_init_flag = 0;
     for(int i =0;i<LYNQ_APN_CHANNEL_MAX;i++)
     {
         if(strlen(lynq_apn_table[i].apnType)!=0)
@@ -469,10 +487,13 @@
         close(lynq_client_sockfd);
     }
     data_urc_recive_status = 0;
-    ret = pthread_cancel(lynq_data_tid);
-    LYDBGLOG("pthread cancel ret = %d",ret);
-    ret = pthread_join(lynq_data_tid,NULL);
-    LYDBGLOG("pthread join ret = %d",ret);
+    if (lynq_data_tid > 0)
+    {
+        ret = pthread_cancel(lynq_data_tid);
+        LYDBGLOG("pthread cancel ret = %d",ret);
+        ret = pthread_join(lynq_data_tid,NULL);
+        LYDBGLOG("pthread join ret = %d",ret);
+    }
     return 0;
 }
 int lynq_setup_data_call(int *handle)
diff --git a/src/lynq/lib/liblynq-network/lynq_network.cpp b/src/lynq/lib/liblynq-network/lynq_network.cpp
index a3e82aa..e6aaba8 100755
--- a/src/lynq/lib/liblynq-network/lynq_network.cpp
+++ b/src/lynq/lib/liblynq-network/lynq_network.cpp
@@ -56,7 +56,12 @@
 int network_urc_status = 1;

 int network_wait_urc_id = 0;

 signalStrength_t network_urc_solSigStren;

-

+/**g_lynq_network_init_flag

+* @brief mark network initialization state

+* 0:deinit status

+* 1:init state

+*/

+static int g_lynq_network_init_flag = 0;

 

 static pthread_mutex_t signal_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;

 static pthread_cond_t signal_state_change_cond = PTHREAD_COND_INITIALIZER;

@@ -278,6 +283,12 @@
 }

 

 int lynq_network_init(int utoken){

+    if(g_lynq_network_init_flag == 1)

+    {

+        LYERRLOG("init twice is not allowed");

+        return -1;

+    }

+    g_lynq_network_init_flag = 1;

     if(utoken <0){

         LYERRLOG("init err");

         return -1;

@@ -420,7 +431,16 @@
 }

 

 int lynq_network_deinit(void){

-    close(network_sock_fd);

+    if (g_lynq_network_init_flag == 0)

+    {

+        LYERRLOG("deinit twice is not allowed");

+        return -1;

+    }

+    if (network_sock_fd > 0)

+    {

+        close(network_sock_fd);

+    }

+    g_lynq_network_init_flag = 0;

     network_urc_status = 0;

     return 0;

 }