[Feature][T106BUG-559]fix memory leak of qser_data_call_init

Only Configure: No
Affected branch: master
Affected module: data
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: Ibfbdb3e93c8d94dc73cefa622dc1c0c7b3f2db2a
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
index e73229a..7a82c38 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -1442,14 +1442,17 @@
 //xf.li@20230610 add for T106 data start
 static int lynq_start_data_call_rc_socket_thread()
 {
-//    pthread_attr_t attr;
+    pthread_attr_t attr;
     int ret;
 
     pthread_mutex_init(&s_lynq_rc_vector_mutex, NULL);   
 
     module_rc_status = 1;
 
-    ret = pthread_create(&module_rc_tid,/*&attr*/NULL,data_thread_rc_recv,NULL);
+    pthread_attr_init(&attr);
+    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+    ret = pthread_create(&module_rc_tid,&attr,data_thread_rc_recv,NULL);
     if(ret <0)
     {
         LYERRLOG("rc pthread create error");
@@ -1457,6 +1460,7 @@
         return ret;
     }   
     
+    pthread_attr_destroy(&attr);
     LYINFLOG("rc start success");
 
     return 0;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
index 5e3e2c7..8d61536 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
@@ -272,6 +272,7 @@
 
 int lynq_init_data_urc_thread()
 {
+    pthread_attr_t attr;
     int ret = 0;
     if(ril_init_mem()!=0)
     {
@@ -313,7 +314,10 @@
     }
 
     data_urc_process_status = 1;
-    ret = pthread_create(&data_urc_process_tid,NULL,thread_urc_process,NULL);
+    pthread_attr_init(&attr);
+    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+    ret = pthread_create(&data_urc_process_tid,&attr,thread_urc_process,NULL);
     if (ret < 0)
     {
         LYERRLOG("urc recv pthread create error");
@@ -324,6 +328,7 @@
 
         return -1;
     }
+    pthread_attr_destroy(&attr);
     return 0;
 }
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index 94af56b..93494ca 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -632,6 +632,7 @@
     if (rc == SQLITE_OK) 
     {
         LYINFLOG("check init success!");
+        sqlite3_close_v2(apnDb_l);
         return APN_DB_READED;
     } 
     else 
@@ -787,6 +788,7 @@
     {
         LYERRLOG("SQL error: %s\n", zErrMsg);
         sqlite3_free(zErrMsg);
+        sqlite3_close(apnDb);
         return -1;
     }
     else
@@ -1223,15 +1225,21 @@
 
 int qser_cb_pthread_create()
 {
+    pthread_attr_t attr;
     int ret;
     s_qser_data_cb_thread_status = 1;
-    ret = pthread_create(&s_cb_tid,NULL,thread_wait_cb_status,NULL);
+    
+    pthread_attr_init(&attr);
+    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+    ret = pthread_create(&s_cb_tid,&attr,thread_wait_cb_status,NULL);
     if (ret < 0)
     {
         LYERRLOG("pthread create fail");
         s_qser_data_cb_thread_status = 0;
         return RESULT_ERROR;
     }
+    pthread_attr_destroy(&attr);
     return RESULT_OK;
 }