Situation: Two Kamailio nodes syncing dialog profiles via DMQ
Observation: When a dialog timeout is encountered, about half of the time, the timeout is triggered on the peer node not handling the dialog preventing the call to be correctly terminated and also leaving entries in the dialog database which never get deleted.
https://kamailio.org/docs/modules/5.7.x/modules/dialog.html#dialog.p.enable…
Makes clear, that only the node which is handling the dialog in question, can make changes not …
[View More]related to the dialog profiles. So when a dialog times out, it is this node which has to trigger the timeout, not any other one.
When looking at the source code, it is clear, that the 'lifetime' is transmitted via DMQ dialog message to the peer nodes, which in turn arm a timer. So it is obvious, this time will trigger, sometimes before the instance handling the dialog itself triggers that timer.
With some assistance of @oej I found a way to alter the JSON payload to extend the lifetime on the peer nodes:
```
route[DMQ_CAPTURE]
{
if(is_method("KDMQ"))
{
if(has_body("application/json") && $fU == 'dialog')
{
if (jansson_get("lifetime", $rb, "$var(lifetime)"))
{
$var(new_lifetime) = $var(lifetime) + 60; # Add 60 seconds on DMQ peer to make sure it expires AFTER main node.
$var(newrb) = $rb;
jansson_set("integer", "lifetime", $var(new_lifetime), "$var(newrb)");
set_body("$var(newrb)","application/json");
msg_apply_changes();
}
}
dmq_handle_message();
exit;
}
}
```
Testing with this config fixed the issue of the timeout firing on a peer node instead of the node handling the dialog.
Issue is present in 5.5, 5.6 and after looking at the code, I assume also on 5.7
-Benoît
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3656
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3656(a)github.com>
[View Less]
Module: kamailio
Branch: master
Commit: ba31a0065af34490650a205738328f52b95a784b
URL: https://github.com/kamailio/kamailio/commit/ba31a0065af34490650a205738328f5…
Author: Kamailio Dev <kamailio.dev(a)kamailio.org>
Committer: Kamailio Dev <kamailio.dev(a)kamailio.org>
Date: 2024-07-16T10:31:11+02:00
modules: readme files regenerated - dispatcher ... [skip ci]
---
Modified: src/modules/dispatcher/README
---
Diff: https://github.com/kamailio/kamailio/commit/…
[View More]ba31a0065af34490650a205738328f5…
Patch: https://github.com/kamailio/kamailio/commit/ba31a0065af34490650a205738328f5…
---
diff --git a/src/modules/dispatcher/README b/src/modules/dispatcher/README
index 41f9d7bb812..16c10332df7 100644
--- a/src/modules/dispatcher/README
+++ b/src/modules/dispatcher/README
@@ -1883,6 +1883,7 @@ kamctl rpc dispatcher.hash 4 bob server.com
startup, useful when the hostname of the destination address
is a NAPTR or SRV record only. Such addresses cannot be
matched anymore with ds_is_from_list(...).
+ + 32 (bit at index 5 - 1 <<5) - no ping to destination
* priority: sets the priority in destination list (based on it is
done the initial ordering inside the set)
* attributes: extra fields in form of name1=value1;...;nameN=valueN.
[View Less]
<!-- Kamailio Pull Request Template -->
<!--
IMPORTANT:
- for detailed contributing guidelines, read:
https://github.com/kamailio/kamailio/blob/master/.github/CONTRIBUTING.md
- pull requests must be done to master branch, unless they are backports
of fixes from master branch to a stable branch
- backports to stable branches must be done with 'git cherry-pick -x ...'
- code is contributed under BSD for core and main components (tm, sl, auth, …
[View More]tls)
- code is contributed GPLv2 or a compatible license for the other components
- GPL code is contributed with OpenSSL licensing exception
-->
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
<!-- Describe your changes in detail -->
`handle_ruri_alias()` wasn't handling correctly the IP address in the alias, in case it was an IPv6. This adds `[` and `]` around the IP if v6 when composing a destination SIP URI, such that the downstream functions will handle it correctly and not be confused by the `:` before the port.
Arguably, nathelper is not needed in IPv6. Yet I have discovered a scenario where it could be quite helpful as a way to force some UE routing through an intermediary proxy.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3913
-- Commit Summary --
* nathelper: fixed handle_ruri_alias() for alias being an IPv6
-- File Changes --
M src/modules/nathelper/nathelper.c (34)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3913.patchhttps://github.com/kamailio/kamailio/pull/3913.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3913
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3913(a)github.com>
[View Less]