diff options
author | PaulK <contact@paulk.fr> | 2012-02-01 17:41:23 +0100 |
---|---|---|
committer | PaulK <contact@paulk.fr> | 2012-02-01 17:41:23 +0100 |
commit | a90a37b2d8940c23279da78b6c81ae8ca4939fae (patch) | |
tree | 2573ea077adc736a0bdd0c667e2df6f87d857f80 /net.c | |
parent | fa06f4660184421b0cee4b00938508b3187ab704 (diff) | |
download | hardware_replicant_libsamsung-ril-a90a37b2d8940c23279da78b6c81ae8ca4939fae.tar.gz hardware_replicant_libsamsung-ril-a90a37b2d8940c23279da78b6c81ae8ca4939fae.tar.bz2 hardware_replicant_libsamsung-ril-a90a37b2d8940c23279da78b6c81ae8ca4939fae.zip |
Don't return failure if net requests are overlaping
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(); |