- To be used with headers containing values separated by commas
- pvh_header_param_exists() check if the value is present to a given header
- pvh_remove_header_param() remove the value from the given header or the entire header if no other value is present
<!-- 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 -->
Previously, to remove a parameter from a header it was needed to create a complex method on the configuration file for each header/parameter. This modification moves this complexity to the 'pv_headers' module.
Two new functions:
* pvh_header_param_exists
* pvh_remove_header_param
Both functions take as parameters the name of the header and the name of the parameter.
It returns '-1' if the combination header/parameter:
- is not found (pvh_header_param_exists)
- couldn't be removed (pvh_remove_header_param).
Examples (proxy configuration):
if (pvh_header_param_exists("Supported", "100rel"))
{
// "100rel" is present on the "Supported" header
}
if (pvh_remove_header_param("Supported", "100rel"))
{
// "100rel" removed from header "Supported"
}
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3070
-- Commit Summary --
* pv_headers: Add support to remove a specific value from a header
-- File Changes --
M src/modules/pv_headers/doc/functions.xml (35)
M src/modules/pv_headers/doc/pv_headers.xml (6)
M src/modules/pv_headers/pv_headers.c (61)
M src/modules/pv_headers/pvh_func.c (87)
M src/modules/pv_headers/pvh_func.h (2)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3070.patchhttps://github.com/kamailio/kamailio/pull/3070.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3070
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3070(a)github.com>
<!-- 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>
<!-- 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
- [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
- [ ] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
<!-- Describe your changes in detail -->
Setup: uac_req_send() with evroute=2 and tm module enable_uac_fr=1
Noticed following shm errors while intensively testing uac_req_send(), happening quite soon after a fresh restart (e.g. 10 min):
```
kamailio[5384]: ERROR: <core> [core/mem/q_malloc.c:297]: qm_find_free(): qm_find_free(0x7fe8943bc000, 40632); Free fragment not found!
kamailio[5384]: ERROR: <core> [core/mem/q_malloc.c:430]: qm_malloc(): qm_malloc(0x7fe8943bc000, 40632) called from uac: uac_send.c: uac_send_info_clone(105), module: uac; Free fragment not found!
kamailio[5384]: ERROR: uac [uac_send.c:108]: uac_send_info_clone(): no more shm memory
kamailio[5384]: ERROR: uac [uac_send.c:837]: uac_req_send(): cannot clone the uac structure
```
I tried monitoring system memory using `free` tool and noticed that the "used" memory didn't grow alot. However, I noticed the "buff/cached" memory had a steep growth when 200OK(s) started to come, for my setup.
Noticed that, for my setup, when 200OK come, event_route[uac:reply] is not called, so the tm callback set by UAC module is not called. => the "tp" callback parameter shm allocated by UAC module is not freed.
By analogy, when using uac_req_send() with evroute=1 and timeout happens (e.g. no reply comes), event_route[uac:reply] won't be called and same leak should happen => *i didn;t tested that*, was just an analogy.
I updated the code to call the callback on TMCB_DESTROY, and make sure tp parameter is freed, *one time*.
Let me know what you think of this... in my setup/tests I got no kamailio shm logs anymore. Also "buff/cached" memory didn't have that steep growth anymore.
Thank you,
Stefan
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3065
-- Commit Summary --
* uac: fix shm leak
-- File Changes --
M src/modules/uac/uac_send.c (14)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3065.patchhttps://github.com/kamailio/kamailio/pull/3065.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3065
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3065(a)github.com>
- Added new parameters: af_signaling_ip6, component_media_type,
flow_protocol, omit_flow_ports, rs_default_bandwidth,
rr_default_bandwidth. Check doc for details.
<!-- 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
- [x] 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 -->
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3066
-- Commit Summary --
* ims_qos: Added new parameters for AAR,AVP517
-- File Changes --
M src/modules/ims_qos/doc/ims_qos_admin.xml (134)
M src/modules/ims_qos/ims_qos_mod.c (13)
M src/modules/ims_qos/rx_aar.c (29)
M src/modules/ims_qos/rx_avp.c (67)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3066.patchhttps://github.com/kamailio/kamailio/pull/3066.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3066
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3066(a)github.com>
<!-- 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)
- [ ] 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
- [ ] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
Seems I managed to submit a corrupted doc file with my last PR. Tested it plenty this time and fixed a typo while I was at it.
Also I see this is showing my previous PR as well. I'm not sure how to make it not do that. Any tips would be appreciated.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3067
-- Commit Summary --
* stirshaken: Add PVs to allow access to x509 subject and ppt grants
* Merge branch 'kamailio:master' into master
* stirshaken: fix doc typos
-- File Changes --
M src/modules/stirshaken/doc/stirshaken_admin.xml (5)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3067.patchhttps://github.com/kamailio/kamailio/pull/3067.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3067
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3067(a)github.com>
My cfg file is written like this :
$du = "sip:"+$rd+":"+$rp+";transport=tcp";
![image](https://user-images.githubusercontent.com/16113837/160795856-945514d5-b36b-4b1a-95a1-41d60bf0de7a.png)
when i use
$du = "sip:"+$rd+":"+$rp+";transport=udp";
the sip message will be normal
![image](https://user-images.githubusercontent.com/16113837/160796099-0d498eb2-e6a8-4703-9f4a-0e7d9b069bef.png)
excuse me, can you tell me the reason ?
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3069
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3069(a)github.com>
### Description
The Kamailio 5.4.x dialog profiles functionality can lead to dead-lock on certain high-load scenarios.
The Kamailio dialog profiles are used to track parallel channels for about 200 outgoing PSTN carrier interconnections. During high traffic times (like several thousands parallel calls) the Kamailio server will frequently (e.g. hourly) goes into an end-less loop while executing get_profile_size in the configuration script. This causes the locking for the dialog profiles never be released and Kamailio will stop serving traffic. Internal monitoring tools and RPC commands stay working, as long as they do not touch the dialog functionality.
A similar (dedicated) Kamailio setup is used for tracking parallel channels for customers. Here the dead-lock is not observed that frequently, but aparentely also some crashes happens in a much longer time interval.
### Troubleshooting
After analysis of the back-traces with GDB the get_profile_size() function was removed from the configuration script. After this change the crash did not happened anymore for several days.
#### Reproduction
Issue could not be reproduced so far.
#### Debugging Data
##### bt 1 (some data removed)
(gdb) bt
\# 0 0x00007f57cf3b00da in get_profile_size (profile=0x7f50ccbc7e80, value=0x7ffd9928f300) at dlg_profile.c:859
n = 364
i = 12
ph = 0x7f50d3e4b7d0
\# 1 0x00007f57cf419c67 in w_get_profile_size_helper (msg=0x7f57d699d418, profile=0x7f50ccbc7e80, value=0x7ffd9928f300, spd=0x7f57d6916960) at dialog.c:941
\# 2 0x00007f57cf41a459 in w_get_profile_size3 (msg=0x7f57d699d418, profile=0x7f50ccbc7e80, value=0x7f57d6935118, result=0x7f57d6916960) at dialog.c:982
\# 3 0x0000000000463fea in do_action (h=0x7ffd99293610, a=0x7f57d6936488, msg=0x7f57d699d418) at core/action.c:1094
\# 4 0x00000000004711ee in run_actions (h=0x7ffd99293610, a=0x7f57d6936488, msg=0x7f57d699d418) at core/action.c:1581
\# 5 0x000000000046058b in do_action (h=0x7ffd99293610, a=0x7f57d690fda8, msg=0x7f57d699d418) at core/action.c:700
The first back-trace was taking from a running process with gdb. The counter in f0 does not increased that much during this time, probably due the overflow of the loop counter.
##### bt2 (analysis with data structure with gdb scripts)
Here the loop counter in f0 showed a really high value. Expected size of dialog profiles hash table:
(gdb) p profile->entries[3]
$4 = {first = 0x7f9bfd4aad98, content = 2068}
(gdb) p profile->entries[7]
$3 = {first = 0x7f9c12079f70, content = 784}
(gdb) p profile->entries[12]
$6 = {first = 0x7f9c02be5d50, content = 7600}
(gdb) p profile->entries[14]
$2 = {first = 0x7f9bff636de8, content = 6764}
hash table bucket 14 shows a lot of corruption and the loop never ends (carrier names and IPs replaced). The list for hash bucket 7 got linked to the list for hash bucket 14:
counter 6755: prev 0x7f9c0b9dcde0 - current 0x7f9c02e5b378 - next 0x7f9c0a5f9ba0 - value carrier1-XX.XX - hash 14
counter 6756: prev 0x7f9c02e5b378 - current 0x7f9c0a5f9ba0 - next 0x7f9c0860b968 - value carrier1-XX.XX▒▒▒▒ - hash 14
counter 6757: prev 0x7f9c0a5f9ba0 - current 0x7f9c0860b968 - next 0x7f9bfe3f3a78 - value carrier1-XX.XX▒▒▒▒ - hash 14
counter 6758: prev 0x7f9c0860b968 - current 0x7f9bfe3f3a78 - next 0x7f9c10d977f0 - value carrier1-XX.XX - hash 14
counter 6759: prev 0x7f9bfe3f3a78 - current 0x7f9c10d977f0 - next 0x7f9c0ae198b0 - value carrier2-XX.XX▒▒▒▒ - hash 7
counter 6760: prev 0x7f9c10d977f0 - current 0x7f9c0ae198b0 - next 0x7f9c12079f70 - value carrier3-XX.XX - hash 7
counter 6761: prev 0x7f9c0ae198b0 - current 0x7f9c12079f70 - next 0x7f9c011f2540 - value-carrier2-XX.XX▒▒▒▒ - hash 7
counter 6762: prev 0x7f9c12079f70 - current 0x7f9c011f2540 - next 0x7f9bfff886f0 - value carrier2-XX.XX▒▒▒▒ - hash 7
counter 6763: prev 0x7f9c011f2540 - current 0x7f9bfff886f0 - next 0x7f9c05db00a8 - value carrier3-XX.XX= - hash 7
[...]
counter 28270: prev 0x7f9c019d06e8 - current 0x7f9bfaf18290 - next 0x7f9c12c90680 - value carrier2-XX.XX▒▒▒▒ - hash 7
counter 28271: prev 0x7f9bfaf18290 - current 0x7f9c12c90680 - next 0x7f9c086a2b58 - value-carrier2-XX.XX▒▒▒▒ - hash 7
counter 28272: prev 0x7f9c12c90680 - current 0x7f9c086a2b58 - next 0x7f9c0b4f09e8 - value carrier2-XX.XX▒▒▒▒ - hash 7
[...]
hash table bucket 7 is still consistent regarding the loop, but already shows initial sign of corruption. There is one item of the list for hash bucket 14 visible:
counter 780: prev 0x7f9c0db57ac8 - current 0x7f9c02225700 - next 0x7f9bfbf7db08 - value carrier2-XX.XX▒▒▒▒ - hash 7
counter 781: prev 0x7f9c02225700 - current 0x7f9bfbf7db08 - next 0x7f9c10d977f0 - value carrier1-XX.XX- hash 14
counter 782: prev 0x7f9bfe3f3a78 - current 0x7f9c10d977f0 - next 0x7f9c0ae198b0 - value carrier2-XX.XX▒▒▒▒ - hash 7
counter 783: prev 0x7f9c10d977f0 - current 0x7f9c0ae198b0 - next 0x7f9c12079f70 - value carrier3-XX.XX - hash 7
total size of hash table is 784
#### Log Messages
No special log messages observed.
#### SIP Traffic
SIP traffic looked ok during analysis of the core dumps.
### Possible Solutions
* adding additional safe-guards for the get_profile_size function to not access data from other hash buckets
* stopping the loop counter after some threshold
* finding and fixing the source of the internal data corruption (obviously)
* refactoring the dialog modules to use another approach for storing the dialog profile information
### Additional Information
* **Kamailio version**:
Kamailio 5.4.7, compiled from git repository
* **Operating System**:
CentOS 7.9
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/2923