summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaulK <contact@paulk.fr>2012-02-01 17:41:23 +0100
committerPaulK <contact@paulk.fr>2012-02-01 17:41:23 +0100
commita90a37b2d8940c23279da78b6c81ae8ca4939fae (patch)
tree2573ea077adc736a0bdd0c667e2df6f87d857f80
parentfa06f4660184421b0cee4b00938508b3187ab704 (diff)
downloadhardware_ril_samsung-ril-a90a37b2d8940c23279da78b6c81ae8ca4939fae.zip
hardware_ril_samsung-ril-a90a37b2d8940c23279da78b6c81ae8ca4939fae.tar.gz
hardware_ril_samsung-ril-a90a37b2d8940c23279da78b6c81ae8ca4939fae.tar.bz2
Don't return failure if net requests are overlaping
-rw-r--r--net.c39
1 files changed, 33 insertions, 6 deletions
diff --git a/net.c b/net.c
index 5ff8afc..1b15252 100644
--- a/net.c
+++ b/net.c
@@ -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(&regist_req, IPC_NET_SERVICE_DOMAIN_GSM);
ipc_fmt_send(IPC_NET_REGIST, IPC_TYPE_GET, (void *)&regist_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(&regist_req, IPC_NET_SERVICE_DOMAIN_GPRS);
ipc_fmt_send(IPC_NET_REGIST, IPC_TYPE_GET, (void *)&regist_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();