[OpenSIPS-Devel] [OpenSIPS/opensips] ae9d2e: $route variable: Add support for script "callback ...

Liviu Chircu noreply at github.com
Tue Dec 21 14:20:22 UTC 2021


  Branch: refs/heads/3.2
  Home:   https://github.com/OpenSIPS/opensips
  Commit: ae9d2e2d99922bbf5cdaed1842056e55d6e8f711
      https://github.com/OpenSIPS/opensips/commit/ae9d2e2d99922bbf5cdaed1842056e55d6e8f711
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2021-12-21 (Tue, 21 Dec 2021)

  Changed paths:
    M action.c
    M action.h
    M pvar.c
    M route.c

  Log Message:
  -----------
  $route variable: Add support for script "callback routes"

The idea of "callback routes" was missed during the development of
$route, with this feature having been first introduced in 3.1.

Conceptually, a "callback route" is a contextless route that may be
invoked in a nested fashion, during the processing of a SIP message in
any of the routes.

For example, on a SIP BYE:
    1. route
	1.1 loose_route() (this triggers the "callback route",
	    e.g. see dlg_on_hangup())
	1.2 route "dlg_on_hangup" is run, contextless!
    2. script processing continues! <--- here, $route output was broken

This patch fixes the issue, by adding recursion detection into the
run_top_route() function, such that the $route variable works as
expected regardless of how many (nested) times it is called.

Many thanks to Ben Newlin for catching this issue, as well as providing
a detailed report!

Fixes #2681

(cherry picked from commit bb1fcc27e279e3021537d197e97bee900fbbae37)





More information about the Devel mailing list