After upgrading to Asterisk 15.3.0 from 14.x, calls that are hangup by my softphone do not terminate the call in the other end.
From the SDP logs I can see that Asterisk receive BYE from my phone, but do not send it to the other end.
“Pjsip show channels” show that both channels are gone. Any suggestions?
Log from when I hangup:
– Channel PJSIP/softphone23-0000004c left ‘simple_bridge’ basic-bridge
– Channel PJSIP/sbc-00000049 left ‘simple_bridge’ basic-bridge
== Spawn extension (dial_local_user, 1, 15) exited non-zero on ‘PJSIP/sbc-00000049’
Executing [h@ dial_local_user:6] Hangup(“PJSIP/sbc-00000049”, “”) in new stack
== Spawn extension (dial_local_user, h, 6) exited non-zero on ‘PJSIP/sbc-00000049’
The BYE was delayed because there is already an outstanding request in progress. I’d suggest looking at the complete SIP trace from start to finish and following the requests.
Compared to Asterisk 14 trace logs, Asterisk 15 sends an extra INVITE to the same number that called after the bridge has joined the 2 parties. I have tested it multiple times.
That may be a re-invite to update properties of the underlying audio stream. SBCServer should not leave that in limbo, it should send a final response (such as accepting the re-invite or rejecting it). I don’t think we have any configuration option to control that, but by not responding it is breaking SIP. We can’t send a BYE until we know the result of that re-invite.
After updating SBC software, the problem still exists.
I commented out the code that delays BYE in Asterisk and sends it right away, and the problem is solved.
It might be a bug in the other end, but isn’t it better to just send BYE directly and ignore pending results?
The call seems to permanently hang in limbo state, which is not good.