nksip_router:resend_worklist function might cause calling process to hang for gen_server:call timeout#85
Closed
pickme467 wants to merge 1 commit intoNetComposer:masterfrom
Closed
Conversation
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
Member
|
Hi, thank you for your comment. I am not working on NkSIP recently, but, at first sight, your PR does not seem to work... validate_process/1 would not receive a pid, but [{_, pid()}] right? |
Author
|
Hi,
I was too quick sending this PR and then closing it. You are right, this
won't work. My subsequent PR has it fixed, here is the link:
#86
Sorry for messing up things. I shall just leave the PR and just make
another commit with fixed code.
Greetings,
Pawel
śr., 2 wrz 2020 o 10:36 Carlos González Florido <notifications@github.com>
napisał(a):
… Hi, thank you for your comment.
I am not working on NkSIP recently, but, at first sight, your PR does not
seem to work... validate_process/1 would not receive a pid, but [{_,
pid()}] right?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
<#85 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADDVJPRUFKUZD2QGUZUCAU3SDX72DANCNFSM4QRSAPXA>
.
|
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