[OpenSIPS-Devel] [OpenSIPS/opensips] a03ed4: dialog: Fix Re-INVITE pinging issues with parallel...
Liviu Chircu
liviu at opensips.org
Thu Apr 19 10:53:16 EDT 2018
Branch: refs/heads/master
Home: https://github.com/OpenSIPS/opensips
Commit: a03ed4e1a366807df3a89efada59df0d07f4d361
https://github.com/OpenSIPS/opensips/commit/a03ed4e1a366807df3a89efada59df0d07f4d361
Author: Liviu Chircu <liviu at opensips.org>
Date: 2018-04-19 (Thu, 19 Apr 2018)
Changed paths:
M modules/dialog/dlg_db_handler.c
M modules/dialog/dlg_handlers.c
M modules/dialog/dlg_handlers.h
M modules/dialog/dlg_hash.c
M modules/dialog/dlg_hash.h
M modules/dialog/dlg_replication.c
M modules/dialog/dlg_timer.c
Log Message:
-----------
dialog: Fix Re-INVITE pinging issues with parallel forking
The Re-INVITE pinging code would always leak both SDP and contact buffers
when parallel forking. Moreover, depending on which branch answered
the call, in some cases OpenSIPS would only Re-INVITE ping one of the
parties involved, even if both "Rr" create_dialog() flags are set.
This patch fixes the above issues by storing the SDPs of each forked
branch into the "callee" leg array. Each call leg gets created before
the INVITE branch is sent out, rather than only getting created upon
matching a 200 OK reply. When matching a reply, the corresponding leg
becomes 1 + the Via branch idx, which added by tm. (0, 1, 2, ...)
Remaining issue:
Proper handling for the multi-200 OK scenario, as we currently still
overwrite the callee SDP at each 200 OK.
More information about the Devel
mailing list