Hello,
I have a problem with BLF (Busy Lamp Fields, i.e. dialog events) on Yealink
T41S: the key status (green or blinking red) freezes when calling a user to
which we SUBSCRIBEd. It freezes until the subscription expires.
Using sngrep, I was able to see that some NOTIFYs get a timeout (they are
sent 3 times) because the phone doesn't reply (200 OK). These NOTIFY seem
to have in common the fact that the caller is the SUBSCRIBEd Yealink user.
Example on NOTIFY body:
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="4"
state="full" entity="sip:callee@sip.com">
<dialog id="5_2630032430(a)11.202.138.255" call-id="
5_2630032430(a)11.202.138.255" direction="recipient">
<state>confirmed</state>
<remote>
<identity>sip:caller@sip.com:5060</identity>
<target uri="sip:caller@11.202.138.255:5060"/>
</remote>
<local>
<identity>sip:callee@sip.com:5060</identity>
<target uri="sip:callee@sip.com:5060"/>
</local>
</dialog>
</dialog-info>
caller(a)sip.com subscribed to callee(a)sip.com and then called it.
I wasn't able to find a solution with the current implementation, for
example presence_dialoginfo/force_single_dialog = 1 doesn't help.
I come with a setting modparam("presence", "dont_notify_subscribed_caller",
1) that, if enabled, doesn't NOTIFY a subscriber if this one is the caller
itself. It does this by validating remote and local elements in the xml
body of the NOTIFY message against the message target.
Is there a better solution?
The technical questions:
1. I verify the sender in the function notify(..) by analyzing the dialog's
event xml body. Is there a more direct method, not passing by this xml?
modparam("pua_dialoginfo", "include_localremote", 0) - might be missing,
but it's not relevant
2. I would have preferred a flag-like solution: but how to flag (refuse) a
NOTIFY message that doesn't even pass by the configuration script? For
example, I could activate that flag for a SUBSCRIBE coming from
"User-Agent: Yealink SIP-T41S".
3. I am using xml_utils.h, so libser_cds, libser_presence, but is this
alright? I had to modify their Makefiles for the build to succeed, this
gets new dependencies in presence.so ...
4. I verify only that dialog-info/remote & local/identity is not the one of
the recipient (the subscriber) and, if so, I stop the notification ...
Because the message could contain multiple dialogs, this technique is not
enough: removing parts of the dialog is necessary.
Thank you,
Liviu
<!-- 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, 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
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [X] 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 -->
Add a mqueue parameter to control the mq_add() mode.
0 - default, no changes in behavior
1 - add unique keys, keep oldest
2 - add unique keys, keep newest
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3053
-- Commit Summary --
* mqueue: add mqueue_mode modparam
-- File Changes --
M src/modules/mqueue/doc/mqueue_admin.xml (40)
M src/modules/mqueue/mqueue_api.c (44)
M src/modules/mqueue/mqueue_mod.c (2)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3053.patchhttps://github.com/kamailio/kamailio/pull/3053.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3053
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3053(a)github.com>
Module: kamailio
Branch: master
Commit: a3d88ed0128d5d9d94af3bc5b9bbc3e1dbe9aea7
URL: https://github.com/kamailio/kamailio/commit/a3d88ed0128d5d9d94af3bc5b9bbc3e…
Author: Kamailio Dev <kamailio.dev(a)kamailio.org>
Committer: Kamailio Dev <kamailio.dev(a)kamailio.org>
Date: 2022-04-07T08:31:25+02:00
modules: readme files regenerated - dispatcher ... [skip ci]
---
Modified: src/modules/dispatcher/README
---
Diff: https://github.com/kamailio/kamailio/commit/a3d88ed0128d5d9d94af3bc5b9bbc3e…
Patch: https://github.com/kamailio/kamailio/commit/a3d88ed0128d5d9d94af3bc5b9bbc3e…
---
diff --git a/src/modules/dispatcher/README b/src/modules/dispatcher/README
index ff24e03f26..5472fd15ba 100644
--- a/src/modules/dispatcher/README
+++ b/src/modules/dispatcher/README
@@ -1575,8 +1575,9 @@ kamcmd dispatcher.set_duid_state ip 2 xyz
Name: dispatcher.list
Parameters:
- * _rmode_ - (optional) response mode - can be 'short' to get a
- shorter version of groups and destinations
+ * _rmode_ - (optional) response mode - can be: 'short' to get a
+ shorter version of groups and destinations; 'full' to get more
+ attributes per destination
Example:
kamcmd dispatcher.list
Module: kamailio
Branch: master
Commit: 4e08fbcd45886dfa7d687cda68540ef548b23cf9
URL: https://github.com/kamailio/kamailio/commit/4e08fbcd45886dfa7d687cda68540ef…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2022-04-07T08:27:19+02:00
dispatcher: docs updated for rpc dispatcher.list
---
Modified: src/modules/dispatcher/doc/dispatcher_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/4e08fbcd45886dfa7d687cda68540ef…
Patch: https://github.com/kamailio/kamailio/commit/4e08fbcd45886dfa7d687cda68540ef…
---
diff --git a/src/modules/dispatcher/doc/dispatcher_admin.xml b/src/modules/dispatcher/doc/dispatcher_admin.xml
index bcd0a49a71..6075d110fe 100644
--- a/src/modules/dispatcher/doc/dispatcher_admin.xml
+++ b/src/modules/dispatcher/doc/dispatcher_admin.xml
@@ -1932,8 +1932,9 @@ onreply_route {
<para>Parameters:</para>
<itemizedlist>
<listitem>
- <para>_rmode_ - (optional) response mode - can be 'short' to get a
- shorter version of groups and destinations</para>
+ <para>_rmode_ - (optional) response mode - can be: 'short' to get a
+ shorter version of groups and destinations; 'full' to get more
+ attributes per destination</para>
</listitem>
</itemizedlist>
<para>