[OpenSIPS-Devel] [OpenSIPS/opensips] fba650: dialog: Fix Re-INVITE pinging issues with parallel...

Liviu Chircu liviu at opensips.org
Thu May 10 12:41:28 EDT 2018


  Branch: refs/heads/2.4
  Home:   https://github.com/OpenSIPS/opensips
  Commit: fba65033e8878bdc3ab7b8ebcb1c7029e02e2237
      https://github.com/OpenSIPS/opensips/commit/fba65033e8878bdc3ab7b8ebcb1c7029e02e2237
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 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.

(cherry picked from commit a03ed4e1a366807df3a89efada59df0d07f4d361)


  Commit: 6fa390bde2c408fa291973929eaa97bad3238f2c
      https://github.com/OpenSIPS/opensips/commit/6fa390bde2c408fa291973929eaa97bad3238f2c
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_hash.h

  Log Message:
  -----------
  dialog: Clarify the new meaning of dlg_leg.sdp

(cherry picked from commit bf2ae315609b1224338273a059b5f760b961b89f)


  Commit: 67b2bf382de40bc2e93672d8e952ffd30e12940b
      https://github.com/OpenSIPS/opensips/commit/67b2bf382de40bc2e93672d8e952ffd30e12940b
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_handlers.c
    M modules/dialog/dlg_hash.c
    M modules/dialog/dlg_hash.h
    M modules/dialog/dlg_timer.c

  Log Message:
  -----------
  dialog: Fix regression in commit a03ed4e1a3

Commit a03ed4e1a3 may have fixed the create_dialog("Rr") scenarios,
but it also broke the simpler ones, which rely on create_dialog().

Reported by Nick Altmann

(cherry picked from commit b45ee74f5994ffdca12ccc8b6df0bcb33ca4c0b5)


  Commit: 7d887fb4e8ffe15e93ae6d15e2d777469e5a056b
      https://github.com/OpenSIPS/opensips/commit/7d887fb4e8ffe15e93ae6d15e2d777469e5a056b
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_handlers.c

  Log Message:
  -----------
  dialog: Fix pkg memleak in commit a03ed4e1a3

The auto-generated CANCEL messages were leaking the parsed Via header.

Reported by Nick Altmann

(cherry picked from commit 34960b140f81adca25bf9ad84ac2bc078732421e)


  Commit: 7d0f6bc0ec4aa823f83199c91591dfbfe56cc1a7
      https://github.com/OpenSIPS/opensips/commit/7d0f6bc0ec4aa823f83199c91591dfbfe56cc1a7
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_db_handler.c
    M modules/dialog/dlg_handlers.c

  Log Message:
  -----------
  dialog: Fix Re-INVITE pinging after restarts

The current solution is to persist the SDPs/Contacts of the caller side and
the winning callee side into dialog var storage, which is restart
persistent ("vars" column).

Fixes #1342

(cherry picked from commit 9521770efccd385fafdb2c58ff365627e0d65fef)


  Commit: fd854b77866e6d591f84ed2db07c39a785f21b7a
      https://github.com/OpenSIPS/opensips/commit/fd854b77866e6d591f84ed2db07c39a785f21b7a
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_vals.c
    M modules/dialog/dlg_vals.h

  Log Message:
  -----------
  dialog: Improve fetch_dlg_value() signature & docs

(cherry picked from commit f2626d471d6c1d1b58c2d4a27eee13f96203c24f)


  Commit: 123255c3e9be2e926c67cfefa340f7c46acb9456
      https://github.com/OpenSIPS/opensips/commit/123255c3e9be2e926c67cfefa340f7c46acb9456
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_db_handler.c
    M modules/dialog/dlg_vals.c

  Log Message:
  -----------
  dialog: Fix unnecessary errors on DB load

Affects DB-persistent dialogs w/o reinvite pinging. This regression was
introduced by commit 9521770e.

(cherry picked from commit 200a5563b227fc8c231e82f3d42e3c8528358fa2)


  Commit: 430039fd8c04f17cc762401e1511e01fed20776a
      https://github.com/OpenSIPS/opensips/commit/430039fd8c04f17cc762401e1511e01fed20776a
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dlg_handlers.c

  Log Message:
  -----------
  dialog: Fix re-INVITE pinging SDPs after on-hold/resume

(cherry picked from commit 1d1f3d04d75b3c2a46444d7a6d57348ce85543a9)


  Commit: 44af51b1ad35dff8d193fdd3b50f9b8ba02ca546
      https://github.com/OpenSIPS/opensips/commit/44af51b1ad35dff8d193fdd3b50f9b8ba02ca546
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/README
    M modules/dialog/doc/dialog_admin.xml

  Log Message:
  -----------
  dialog: Document re-INVITE pinging interval restrictions

(cherry picked from commit 4b59ffc0c65dca11a043faf61eb2987555192603)


  Commit: 2ddb4d10cb1ace4f9e50f3c057bd1f978f893d22
      https://github.com/OpenSIPS/opensips/commit/2ddb4d10cb1ace4f9e50f3c057bd1f978f893d22
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/dialog.c
    M modules/dialog/dlg_handlers.h
    M modules/dialog/dlg_load.h
    M modules/script_helper/script_helper.c
    M modules/topology_hiding/topology_hiding.c

  Log Message:
  -----------
  dialog: Fix dialog matching bugs in looping + TH scenarios

This patch adds an extra control parameter to topology_hiding_match()
and match_dialog() which allows the script writer to disable the current
behavior of forcefully imposing the "DID_FALLBACK" dialog matching mode.

In looping scenarios, performing SIP-wise dialog matching may be out of
the question, as we may randomly match one of multiple dialogs with
identical SIP coordinates.

(cherry picked from commit deb3ee457b1f64a169b61751e6490c7049f1493e)


  Commit: 718cf732c76e03cdf3aaee3ed4d2402c0f8bbb99
      https://github.com/OpenSIPS/opensips/commit/718cf732c76e03cdf3aaee3ed4d2402c0f8bbb99
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2018-05-10 (Thu, 10 May 2018)

  Changed paths:
    M modules/dialog/README
    M modules/dialog/doc/dialog_admin.xml
    M modules/topology_hiding/README
    M modules/topology_hiding/doc/topology_hiding_admin.xml

  Log Message:
  -----------
  dialog/topology_hiding: Update docs

(cherry picked from commit 362e65d28ac6409d66d48bea4a735c1558dd6993)


Compare: https://github.com/OpenSIPS/opensips/compare/ea3559717330...718cf732c76e
      **NOTE:** This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.


More information about the Devel mailing list