[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)