[Bugfix][API-1238][DATA]data call status is disconnected,but data call list status is still active
Only Configure: No
Affected branch: All
Affected module: Data
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No
Change-Id: I2408c1abe6900ccab76c9e80d245cb136fb91fb6
diff --git a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
index 2d78727..980ebd8 100755
--- a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -184,8 +184,8 @@
#if DEBUG
printf("line %d for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",__LINE__,i,apn_table[i].apn,urc_response->apnName);
#endif
- RLOGD("for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",i,apn_table[i].apn,urc_response->apnName);
- if(strcmp(apn_table[i].apn,urc_response->apnName)==0)
+ RLOGD("for apn_table[%d].apntype:%s,,,,urc_response->apnType:%s\n",i,apn_table[i].apntype,urc_response->apnType);
+ if(strcmp(apn_table[i].apntype,urc_response->apnType)==0)
{
#if DEBUG
printf("line %d This apn has been created update???!!!\n",__LINE__);
@@ -306,15 +306,19 @@
char ptr[1] = "";
if(NULL == urc_response->ifname)
{
- memcpy(apn_table[i].ifaceName, ptr,strlen(ptr)+1);
+ memset(iface_t,0,LYNQ_APNTPYE_LEN_MAX);
+ memset(apn_table[i].ifaceName,0,LYNQ_APNTPYE_LEN_MAX);
+ }
+ else
+ {
+ memcpy(iface_t,urc_response->ifname,strlen(urc_response->ifname)+1);
}
if(NULL == urc_response->addresses)
{
- memcpy(apn_table[i].address, ptr, strlen(ptr)+1);
+ memset(apn_table[i].address,0,LYNQ_APNTPYE_LEN_MAX);
}
- memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
- memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
- memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
+ memcpy(apnType_t,urc_response->apnType,strlen(urc_response->apnType)+1);
+ memcpy(apn_t,urc_response->apnName,strlen(urc_response->apnName)+1);
p.writeInt32(1);
p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
p.writeInt32(0);//temporary plan
@@ -353,15 +357,19 @@
char ptr[1] = "";
if(NULL == urc_response->ifname)
{
- memcpy(apn_table[i].ifaceName, ptr,strlen(ptr)+1);
+ memset(iface_t,0,LYNQ_APNTPYE_LEN_MAX);
+ memset(apn_table[i].ifaceName,0,LYNQ_APNTPYE_LEN_MAX);
+ }
+ else
+ {
+ memcpy(iface_t,urc_response->ifname,strlen(urc_response->ifname)+1);
}
if(NULL == urc_response->addresses)
{
- memcpy(apn_table[i].address, ptr, strlen(ptr)+1);
+ memset(apn_table[i].address,0,LYNQ_APNTPYE_LEN_MAX);
}
- memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
- memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
- memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
+ memcpy(apnType_t,urc_response->apnType,strlen(urc_response->apnType)+1);
+ memcpy(apn_t,urc_response->apnName,strlen(urc_response->apnName)+1);
p.writeInt32(1);
p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
p.writeInt32(0);//temporary plan
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 1351300..b7498a6 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -719,7 +719,7 @@
apnId = getLynqApnID(apnType);
if(apnId >= 0)
{
- LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+ LYINFLOG("[%d]URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",__LINE__,apnType,ifaceName,apn,pdnState,apnId);
lynq_data_call_change_id = apnId;
//bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);//async clean
pthread_mutex_lock(&s_lynq_urc_vector_mutex);
@@ -735,7 +735,7 @@
LYERRLOG("[%d]invalid apnId:%d",__LINE__,apnId);
break;
}
- LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+ LYINFLOG("[%d]URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",__LINE__,apnType,ifaceName,apn,pdnState,apnId);
cleanDeactApn(apnId);
lynq_data_call_change_id = apnId;
bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);//async clean