#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:
- Make call from device A to device B
- Answer the call on device B and disconnect immediately.
- 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 10 years ago by riza
comment:2 Changed 10 years ago by riza
- Description modified (diff)
- Resolution set to fixed
- Status changed from new to closed
comment:3 Changed 10 years ago by riza
- Description modified (diff)
In 5104: