diff options
Diffstat (limited to 'net.c')
-rw-r--r-- | net.c | 39 |
1 files changed, 33 insertions, 6 deletions
@@ -309,8 +309,17 @@ void ril_request_operator(RIL_Token t) ipc_fmt_send_get(IPC_NET_CURRENT_PLMN, reqGetId(t)); } else { - LOGE("Another request is going on, reporting failure"); - RIL_onRequestComplete(t, RIL_E_GENERIC_FAILURE, response, sizeof(response)); + LOGE("Another request is going on, returning UNSOL data"); + + /* Send back the data we got UNSOL */ + ril_plmn_string(&(ril_state.plmndata), response); + + RIL_onRequestComplete(t, RIL_E_SUCCESS, response, sizeof(response)); + + for(i = 0; i < sizeof(response) / sizeof(char *) ; i++) { + if(response[i] != NULL) + free(response[i]); + } } ril_tokens_net_state_dump(); @@ -441,8 +450,17 @@ void ril_request_registration_state(RIL_Token t) ipc_net_regist_get(®ist_req, IPC_NET_SERVICE_DOMAIN_GSM); ipc_fmt_send(IPC_NET_REGIST, IPC_TYPE_GET, (void *)®ist_req, sizeof(struct ipc_net_regist_get), reqGetId(t)); } else { - LOGE("Another request is going on, reporting failure"); - RIL_onRequestComplete(t, RIL_E_GENERIC_FAILURE, NULL, 0); + LOGE("Another request is going on, returning UNSOL data"); + + /* Send back the data we got UNSOL */ + ipc2ril_reg_state_resp(&(ril_state.netinfo), response); + + RIL_onRequestComplete(t, RIL_E_SUCCESS, response, sizeof(response)); + + for(i = 0; i < sizeof(response) / sizeof(char *) ; i++) { + if(response[i] != NULL) + free(response[i]); + } } ril_tokens_net_state_dump(); @@ -485,8 +503,17 @@ void ril_request_gprs_registration_state(RIL_Token t) ipc_net_regist_get(®ist_req, IPC_NET_SERVICE_DOMAIN_GPRS); ipc_fmt_send(IPC_NET_REGIST, IPC_TYPE_GET, (void *)®ist_req, sizeof(struct ipc_net_regist_get), reqGetId(t)); } else { - LOGE("Another request is going on, reporting failure"); - RIL_onRequestComplete(t, RIL_E_GENERIC_FAILURE, NULL, 0); + LOGE("Another request is going on, returning UNSOL data"); + + /* Send back the data we got UNSOL */ + ipc2ril_gprs_reg_state_resp(&(ril_state.gprs_netinfo), response); + + RIL_onRequestComplete(t, RIL_E_SUCCESS, response, sizeof(response)); + + for(i = 0; i < sizeof(response) / sizeof(char *) ; i++) { + if(response[i] != NULL) + free(response[i]); + } } ril_tokens_net_state_dump(); |