Ticket #1662 (closed defect: fixed)

Opened 5 years ago

Last modified 5 years ago

Call slot unavailable after some fail calls due to codec mismatch

Reported by: nanang Owned by: bennylp
Priority: normal Milestone: release-2.2
Component: pjsua-lib Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no

Description

Scenario to reproduce:

  1. A calls B.
  2. B rejects with 406 (not acceptable here) due to no matching audio codec available.
  3. Repeat the above two steps for about four more times (or as many as max calls setting).
  4. Now the B will reject with 486 (busy here), instead of 406.
  5. Any future making/incoming call will fail due to unavailable call slot until the stack is restarted.

After investigation, when PJSUA terminates a call due to media channel init error, the pointer to dialog (for async media transport creation), i.e: pjsua_call.async_call.dlg, is not nullified, while the call slot allocation will inspect this pointer (along with the INVITE session pointer) to check the call slot availability.

Change History

comment:1 Changed 5 years ago by nanang

  • Status changed from new to closed
  • Resolution set to fixed

In 4509:

Fixed #1662: Reset/nullify the pointer to dialog in internal PJSUA call structure after an incoming call is terminated due to media channel init error.

comment:2 Changed 5 years ago by ming

In 4518:

Re #1662: Clear call descriptor before making call

Note: See TracTickets for help on using tickets.