Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#1857 closed defect (fixed)

BYE is not sent when 200/OK is not ACK-ed

Reported by: riza Owned by: bennylp
Priority: normal Milestone: release-2.4.5
Component: pjsip Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no

Description (last modified by riza)

Scenario:

  1. Make call from device A to device B
  2. Answer the call on device B and disconnect immediately.
  3. In case device B disconnected the call (hangup) and ACK is lost, BYE will not be send and call will not be disconnected.

In case device B didn't hangup, timeout will occur and BYE is sent
(200/OK is not ACK-ed).

BYE will be delayed until ACK is received or the dialog is confirmed (see #1712). On a non confirmed dialog, BYE is only allowed to be sent when there's a timeout or transport error.
On the above case, B's manual hangup will have cause 603, hence BYE is delayed (until ACK is received or tsx timeout or transport error) . However when the timeout occur, The BYE won't be sent and still got delayed because the cause can not be set due to this check on inv_set_cause:

(cause_code > inv->cause)

Thanks to Nir Lavi for the report.

Change History (3)

comment:1 Changed 4 years ago by riza

In 5104:

Re #1857: (Fix) BYE is not sent when 200/OK is not ACK-ed

comment:2 Changed 4 years ago by riza

  • Description modified (diff)
  • Resolution set to fixed
  • Status changed from new to closed

comment:3 Changed 4 years ago by riza

  • Description modified (diff)
Note: See TracTickets for help on using tickets.