Skip to content

Conversation

@pickme467
Copy link

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

Pawel Wlodyga 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant