nksip_router:resend_worklist function might cause calling process to hang for gen_server:call timeout#86
Open
pickme467 wants to merge 4 commits intoNetComposer:masterfrom
Conversation
added 2 commits
September 1, 2020 12:26
nksip_router:resend_worklist function might cause calling process to hang for gen_server:call timeout The scenario: 1. There is sip dialog opened 2. SIP BYE arrives and sip_bye callback is being called 3. Client notified by sip_bye callback calls nksip_request:reply 4. nksip_router sends work to its nksip_call_srv worker process 5. Meanwhile dialog is closed and nksip_call_srv process stops without notifying nksip_router that it started processing the next work 6. nksip_router receives 'DOWN' message from stopped process and calls nksip_router:resend_worklist 7. nksip_call_srv:find_call is executed, but it doesn't check if found Pid is of alive process, it just checks that it is the valid pid 8. nksip_router sends work as gen_server:cast to not exisnting process, so it will never call gen_server:reply to calling process, causing calling process to wait till timeout. The solution: make nksip_call_srv:find_call function to check if process is alive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The scenario:
notifying nksip_router that it started processing the next work
calls nksip_router:resend_worklist
Pid is of alive process, it just checks that it is the valid pid
process, so it will never call gen_server:reply to calling process,
causing calling process to wait till timeout.
The solution:
make nksip_call_srv:find_call function to check if process is alive