-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BYE not sent through proxy under ACK-BYE due to cancel race condition #255
Comments
worry what is the impact of this bug? How does it affect calls? |
In my environment it results in a dead air call to the far end because we ack the 200OK (which follows the proxy path) and the immediate BYE is send trying to bypass the proxy resulting in it never reaching the far end so they just sit there on a dead call until they disconnect |
how would I recreate this in a test case? |
not sure off hand. I had to set my Kamailio box (proxy) to sleep on passing the 200OK so that I could cancel the A leg of the B2BUA and have the cancel pass through... |
If you were looking for the specific scenario that we have it is Kamailio on the edge with Drachtio behind. Call comes in through Kam to Drachtio, we then make a B2BUA using the same Kam as a proxy out to another destination. Drachtio doesn't have external access directly and has to go through Kam to get to the outside. |
The reason I ask is that the function
It should not be called in the normal course of things. Are either of those the scenario you are seeing? If not I would be interested to see the drachtio log file containing an example call |
It would take me quite a while to scrub the logs to send. |
I think a quick PR would certainly be the fastest way forward. Is there a reason you can't do that? |
I haven't been able to reproduce under test, timing is too tight... Let me see what I can sort out for tomorrow |
actually yeah, I should be able to do that |
In SipDialogController::notifyTerminateStaleDialog when calling nta_outgoing_tcreate the dialog routeUri is not used and instead null is just passed in.
I was able to correct it by setting the routeUri within notifyTerminateStaleDialog using dlg->getRouteUri(routeUri) and then replacing the null with routeUri.empty() ? NULL : URL_STRING_MAKE(routeUri.c_str()) as you had used in other places.
I would have submitted a fix myself for you to take but I have to get those approved and thought this would be simple enough.
The text was updated successfully, but these errors were encountered: