[Bugfix][API-471][SMS]After sending a long message, the API returns garbled characters.

Change-Id: Ie73e638e6d1c5f830a431d1abc19e6e09a9dc518
diff --git a/src/lynq/lib/liblynq-sms/src/lynq_sms.cpp b/src/lynq/lib/liblynq-sms/src/lynq_sms.cpp
index 5101671..0a44eba 100755
--- a/src/lynq/lib/liblynq-sms/src/lynq_sms.cpp
+++ b/src/lynq/lib/liblynq-sms/src/lynq_sms.cpp
@@ -165,7 +165,7 @@
     *handle = sms_storage_index;

     return 0;

 }

-int recvfrom_server(void *resp)

+int recvfrom_server(void *resp, int id)

 {

     char recv_buf[4096] = {0};

     int recv_len = 0;

@@ -174,21 +174,24 @@
     int32_t resp_type = 0;

     int32_t request = 0;

     int32_t slot_id = 0;

-    int32_t error = 0;

-    recv_len = recvfrom(sms_instance.sock_fd, recv_buf, sizeof(recv_buf), 0, (struct sockaddr*)&sms_instance.addrfrom, (socklen_t*)&len);

-    LYDBGLOG("##################recv length:%d\n", recv_len);

-    if(recv_len <= 0){

-        LYERRLOG("recvform error: %s\n", strerror(errno));

-        return SMS_FAIL;

-    }

-    resp_parcel.setData((uint8_t *)recv_buf,recv_len);

-    resp_parcel.setDataPosition(0);

-    if(resp_parcel.dataAvail() > 0)

+    int32_t error = -1;

+    while (request != id)

     {

-        resp_parcel.readInt32(&resp_type);

-        resp_parcel.readInt32(&request);

-        resp_parcel.readInt32(&slot_id);

-        resp_parcel.readInt32(&error);

+        recv_len = recvfrom(sms_instance.sock_fd, recv_buf, sizeof(recv_buf), 0, (struct sockaddr*)&sms_instance.addrfrom, (socklen_t*)&len);

+        LYDBGLOG("##################recv length:%d\n", recv_len);

+        if(recv_len <= 0){

+            LYERRLOG("recvform error: %s\n", strerror(errno));

+            return SMS_FAIL;

+        }

+        resp_parcel.setData((uint8_t *)recv_buf,recv_len);

+        resp_parcel.setDataPosition(0);

+        if(resp_parcel.dataAvail() > 0)

+        {

+            resp_parcel.readInt32(&resp_type);

+            resp_parcel.readInt32(&request);

+            resp_parcel.readInt32(&slot_id);

+            resp_parcel.readInt32(&error);

+        }

     }

     LYDBGLOG("resp data: %d,%d, %d,%d\n", resp_type, request, slot_id, error);

     switch(request)

@@ -398,11 +401,11 @@
     client.request = RIL_REQUEST_SEND_SMS;

     client.uToken = GuToken;

     client.paramLen = 3;

-

+    bzero(client.param, 8*1024);

     sprintf(client.param, "%s %d %s\n", telephony_num, charset, msg);

     pthread_mutex_lock(&g_lynq_sms_sendto_mutex);

     ret = send_buff_to_service((char *)&client, sizeof(client));

-    ret = recvfrom_server(NULL);

+    ret = recvfrom_server(NULL, RIL_REQUEST_SEND_SMS);

     pthread_mutex_unlock(&g_lynq_sms_sendto_mutex);

 

     return ret;

@@ -417,10 +420,11 @@
     client.request = LYNQ_REQUEST_READ_SMS_FROM_MEMORY;

     client.uToken = GuToken;

     client.paramLen = 1;

+    bzero(client.param, 8*1024);

     sprintf(client.param, "%d", index);

     pthread_mutex_lock(&g_lynq_sms_sendto_mutex);

     ret = send_buff_to_service((char *)&client, sizeof(client));

-    ret = recvfrom_server((void *)&sms_msg_info);

+    ret = recvfrom_server((void *)&sms_msg_info, LYNQ_REQUEST_READ_SMS_FROM_MEMORY);

     pthread_mutex_unlock(&g_lynq_sms_sendto_mutex);

     if(ret == 0)

     {

@@ -461,7 +465,7 @@
     client.paramLen = 0;

     pthread_mutex_lock(&g_lynq_sms_sendto_mutex);

     ret = send_buff_to_service((char *)&client, sizeof(client));

-    ret = recvfrom_server(service_num);

+    ret = recvfrom_server(service_num, RIL_REQUEST_GET_SMSC_ADDRESS);

     pthread_mutex_unlock(&g_lynq_sms_sendto_mutex);

 

     return ret;

@@ -483,10 +487,11 @@
     client.request = RIL_REQUEST_SET_SMSC_ADDRESS;

     client.uToken = GuToken;

     client.paramLen = 1;

+    bzero(client.param, 8*1024);

     sprintf(client.param, "%s", service_num);

     pthread_mutex_lock(&g_lynq_sms_sendto_mutex);

     send_buff_to_service((char *)&client, sizeof(client));

-    ret = recvfrom_server(NULL);

+    ret = recvfrom_server(NULL, RIL_REQUEST_SET_SMSC_ADDRESS);

     pthread_mutex_unlock(&g_lynq_sms_sendto_mutex);

 

     return ret;

@@ -501,7 +506,7 @@
     client.paramLen = 0;

     pthread_mutex_lock(&g_lynq_sms_sendto_mutex);

     ret = send_buff_to_service((char *)&client, sizeof(client));

-    ret = recvfrom_server((void *)index_list);

+    ret = recvfrom_server((void *)index_list, LYNQ_REQUEST_LIST_SMS_FROM_MEMORY);

     pthread_mutex_unlock(&g_lynq_sms_sendto_mutex);

     return ret;

 }

@@ -517,7 +522,7 @@
     sprintf(client.param, "%d", index);

     pthread_mutex_lock(&g_lynq_sms_sendto_mutex);

     ret = send_buff_to_service((char *)&client, sizeof(client));

-    ret = recvfrom_server(NULL);

+    ret = recvfrom_server(NULL, LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY);

     pthread_mutex_unlock(&g_lynq_sms_sendto_mutex);

     return ret;

 }