mirror of
https://github.com/team-infusion-developers/android_hardware_samsung.git
synced 2024-11-06 21:55:41 +00:00
secril-client: Fix RIL client token management in SendOemRequestHookRaw()
On some devices, like SM-T805 (Galaxy Tab S 10.5 LTE), the RIL client code produces errors "SendOemRequestHookRaw: No token" due to large amount of tokens allocated by OEM messages requiring no response from RIL daemon (like set call audio path, set call volume, set mite etc). The indicator of an OEM message with no response expected is: RegisterRequestCompleteHandler(client, REQ_XXX, NULL); inside the RIL client message method. To prevent the token pool from overflows, the proposed patch de-registers the token and frees its call history if the handler for this message req_id is set to NULL. Change-Id: Id414263bf471115797cae1a9ed628249734b9347
This commit is contained in:
parent
338942b188
commit
72aac79216
1 changed files with 9 additions and 0 deletions
|
@ -1088,6 +1088,8 @@ static int SendOemRequestHookRaw(HRilClient client, int req_id, char *data, size
|
|||
RilClientPrv *client_prv;
|
||||
int maxfd = -1;
|
||||
|
||||
unsigned int check_req_id = req_id;
|
||||
|
||||
client_prv = (RilClientPrv *)(client->prv);
|
||||
|
||||
// Allocate a token.
|
||||
|
@ -1126,6 +1128,13 @@ static int SendOemRequestHookRaw(HRilClient client, int req_id, char *data, size
|
|||
goto error;
|
||||
}
|
||||
|
||||
// check if the handler for specified event is NULL and deregister token
|
||||
// to prevent token pool overflow
|
||||
if(!FindReqHandler(client_prv, token, &check_req_id)) {
|
||||
FreeToken(&(client_prv->token_pool), token);
|
||||
ClearReqHistory(client_prv, token);
|
||||
}
|
||||
|
||||
return RIL_CLIENT_ERR_SUCCESS;
|
||||
|
||||
error:
|
||||
|
|
Loading…
Reference in a new issue