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

Liviu Chircu liviu at opensips.org
Thu May 10 12:46:37 EDT 2018


  Branch: refs/heads/2.3
  Home:   https://github.com/OpenSIPS/opensips
  Commit: 185672e0f5b17915f5eb4be354082653b341c5a8
      https://github.com/OpenSIPS/opensips/commit/185672e0f5b17915f5eb4be354082653b341c5a8
  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)
(cherry picked from commit fba65033e8878bdc3ab7b8ebcb1c7029e02e2237)


  Commit: 6f7c7130ab3ee6b4fee28935b075f55cdf9f2c40
      https://github.com/OpenSIPS/opensips/commit/6f7c7130ab3ee6b4fee28935b075f55cdf9f2c40
  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)
(cherry picked from commit 6fa390bde2c408fa291973929eaa97bad3238f2c)


  Commit: aea1869ac4361824f67b9682a5f1046a7686d1b8
      https://github.com/OpenSIPS/opensips/commit/aea1869ac4361824f67b9682a5f1046a7686d1b8
  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)
(cherry picked from commit 67b2bf382de40bc2e93672d8e952ffd30e12940b)


  Commit: acb17059e19807c4a1122350c2f1b04cb6fbead8
      https://github.com/OpenSIPS/opensips/commit/acb17059e19807c4a1122350c2f1b04cb6fbead8
  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)
(cherry picked from commit 7d887fb4e8ffe15e93ae6d15e2d777469e5a056b)


  Commit: 27dee095f9a3707655acdd364c129edc58d4e20f
      https://github.com/OpenSIPS/opensips/commit/27dee095f9a3707655acdd364c129edc58d4e20f
  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)
(cherry picked from commit 7d0f6bc0ec4aa823f83199c91591dfbfe56cc1a7)


  Commit: 625286e267a65b481ed90fad6a3807a43c8f8cd9
      https://github.com/OpenSIPS/opensips/commit/625286e267a65b481ed90fad6a3807a43c8f8cd9
  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)
(cherry picked from commit fd854b77866e6d591f84ed2db07c39a785f21b7a)


  Commit: 2a59013d7aa5ffbcbac585947e7284b73c10cfcc
      https://github.com/OpenSIPS/opensips/commit/2a59013d7aa5ffbcbac585947e7284b73c10cfcc
  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)
(cherry picked from commit 123255c3e9be2e926c67cfefa340f7c46acb9456)


  Commit: 0d7dea1d52689567ebaba36e8d1f9d4900bcf450
      https://github.com/OpenSIPS/opensips/commit/0d7dea1d52689567ebaba36e8d1f9d4900bcf450
  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)
(cherry picked from commit 430039fd8c04f17cc762401e1511e01fed20776a)


  Commit: c4df9724a22dd0b52abb5bda99b8f98435f7e618
      https://github.com/OpenSIPS/opensips/commit/c4df9724a22dd0b52abb5bda99b8f98435f7e618
  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)
(cherry picked from commit 44af51b1ad35dff8d193fdd3b50f9b8ba02ca546)


  Commit: e797ca1e0a7c02a30606ec9de7b68e67560e8465
      https://github.com/OpenSIPS/opensips/commit/e797ca1e0a7c02a30606ec9de7b68e67560e8465
  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)
(cherry picked from commit 2ddb4d10cb1ace4f9e50f3c057bd1f978f893d22)


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

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

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

(cherry picked from commit 362e65d28ac6409d66d48bea4a735c1558dd6993)
(cherry picked from commit 718cf732c76e03cdf3aaee3ed4d2402c0f8bbb99)


Compare: https://github.com/OpenSIPS/opensips/compare/060a386fc973...55184367c66d
      **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