[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