Update item expiration value during de-/incrementation for htables that are configured with autoexpire and updateexpire disabled. Otherwise an item cannot be used until timer cleaned it up.
<!-- 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 -->
- [x] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
Using following configuration
```
#!KAMAILIO
listen=udp:127.0.0.1:9999
log_stderror=yes
loadmodule "xlog.so"
loadmodule "pv.so"
loadmodule "sl.so"
loadmodule "htable.so"
modparam("htable", "htable", "foo=>autoexpire=1;updateexpire=0")
request_route {
if ($sht(foo=>bar) == $null) {
$sht(foo=>bar) = 0;
}
$var(foo) = $shtdec(foo=>bar);
xlog("$Ts single value $sht(foo=>bar)\texpire $shtex(foo=>bar)\n");
sl_send_reply("200", "Hello");
}
```
running
```
while true; do sleep 0.3; sipsak -vs sip:localhost:9999 ; done
```
produces following output
```
0(1414153) ERROR: <script>: 1734539304 single value -1 expire 1
0(1414153) ERROR: <script>: 1734539305 single value -2 expire 0
0(1414153) ERROR: <script>: 1734539305 single value -3 expire 0
0(1414153) ERROR: <script>: 1734539305 single value -4 expire 0
0(1414153) ERROR: <script>: 1734539306 single value <null> expire 4294967295
0(1414153) ERROR: <script>: 1734539306 single value <null> expire 4294967295
0(1414153) ERROR: <script>: 1734539306 single value <null> expire 4294967295
0(1414153) ERROR: <script>: 1734539306 single value <null> expire 4294967295
0(1414153) ERROR: <script>: 1734539307 single value <null> expire 4294967294
0(1414153) ERROR: <script>: 1734539307 single value <null> expire 4294967294
0(1414153) ERROR: <script>: 1734539307 single value <null> expire 4294967294
0(1414153) ERROR: <script>: 1734539308 single value <null> expire 4294967293
0(1414153) ERROR: <script>: 1734539308 single value <null> expire 4294967293
0(1414153) ERROR: <script>: 1734539308 single value <null> expire 4294967293
0(1414153) ERROR: <script>: 1734539309 single value <null> expire 4294967292
0(1414153) ERROR: <script>: 1734539309 single value <null> expire 4294967292
0(1414153) ERROR: <script>: 1734539309 single value <null> expire 4294967292
0(1414153) ERROR: <script>: 1734539310 single value <null> expire 4294967291
0(1414153) ERROR: <script>: 1734539310 single value <null> expire 4294967291
0(1414153) ERROR: <script>: 1734539310 single value <null> expire 4294967291
0(1414153) ERROR: <script>: 1734539311 single value <null> expire 4294967290
0(1414153) ERROR: <script>: 1734539311 single value <null> expire 4294967290
0(1414153) ERROR: <script>: 1734539311 single value <null> expire 4294967290
0(1414153) ERROR: <script>: 1734539312 single value <null> expire 4294967289
0(1414153) ERROR: <script>: 1734539312 single value <null> expire 4294967289
0(1414153) ERROR: <script>: 1734539312 single value <null> expire 4294967289
0(1414153) ERROR: <script>: 1734539313 single value <null> expire 4294967288
0(1414153) ERROR: <script>: 1734539313 single value <null> expire 4294967288
0(1414153) ERROR: <script>: 1734539313 single value <null> expire 4294967288
0(1414153) ERROR: <script>: 1734539314 single value <null> expire 4294967287
0(1414153) ERROR: <script>: 1734539314 single value <null> expire 4294967287
0(1414153) ERROR: <script>: 1734539314 single value <null> expire 4294967287
0(1414153) ERROR: <script>: 1734539315 single value <null> expire 4294967286
0(1414153) ERROR: <script>: 1734539315 single value <null> expire 4294967286
0(1414153) ERROR: <script>: 1734539315 single value <null> expire 4294967286
0(1414153) ERROR: <script>: 1734539316 single value <null> expire 4294967285
0(1414153) ERROR: <script>: 1734539316 single value <null> expire 4294967285
0(1414153) ERROR: <script>: 1734539316 single value <null> expire 4294967285
0(1414153) ERROR: <script>: 1734539316 single value <null> expire 4294967285
0(1414153) ERROR: <script>: 1734539317 single value <null> expire 4294967284
0(1414153) ERROR: <script>: 1734539317 single value <null> expire 4294967284
0(1414153) ERROR: <script>: 1734539317 single value <null> expire 4294967284
0(1414153) ERROR: <script>: 1734539318 single value <null> expire 4294967283
0(1414153) ERROR: <script>: 1734539318 single value <null> expire 4294967283
0(1414153) ERROR: <script>: 1734539318 single value <null> expire 4294967283
0(1414153) ERROR: <script>: 1734539319 single value <null> expire 4294967282
0(1414153) ERROR: <script>: 1734539319 single value <null> expire 4294967282
0(1414153) ERROR: <script>: 1734539319 single value <null> expire 4294967282
0(1414153) ERROR: <script>: 1734539320 single value <null> expire 4294967281
0(1414153) ERROR: <script>: 1734539320 single value <null> expire 4294967281
0(1414153) ERROR: <script>: 1734539320 single value <null> expire 4294967281
0(1414153) ERROR: <script>: 1734539321 single value <null> expire 4294967280
0(1414153) ERROR: <script>: 1734539321 single value <null> expire 4294967280
0(1414153) ERROR: <script>: 1734539321 single value <null> expire 4294967280
0(1414153) ERROR: <script>: 1734539322 single value <null> expire 4294967279
0(1414153) ERROR: <script>: 1734539322 single value <null> expire 4294967279
0(1414153) ERROR: <script>: 1734539322 single value <null> expire 4294967279
0(1414153) ERROR: <script>: 1734539323 single value <null> expire 4294967278
0(1414153) ERROR: <script>: 1734539323 single value <null> expire 4294967278
0(1414153) ERROR: <script>: 1734539323 single value <null> expire 4294967278
0(1414153) ERROR: <script>: 1734539324 single value <null> expire 4294967277
0(1414153) ERROR: <script>: 1734539324 single value <null> expire 4294967277
0(1414153) ERROR: <script>: 1734539324 single value -1 expire 1
0(1414153) ERROR: <script>: 1734539325 single value -2 expire 0
0(1414153) ERROR: <script>: 1734539325 single value -3 expire 0
0(1414153) ERROR: <script>: 1734539325 single value -4 expire 0
```
When adding `initval=0` to `htable` configuration log output changes `<null>` to `0`
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/4079
-- Commit Summary --
* htable: Fix de-/increment w/ auto expire
-- File Changes --
M src/modules/htable/ht_api.c (4)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/4079.patchhttps://github.com/kamailio/kamailio/pull/4079.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/4079
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/4079(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 -->
- [x] 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 -->
This PR fixes a logic error where "flow failed" could also be triggered, when the call was ringing and has not been answered...
(according to https://www.kamailio.org/docs/modules/stable/modules/tm.html#tm.f.t_branch_… )
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/4087
-- Commit Summary --
* outbound/doc: Fix logic error
-- File Changes --
M src/modules/outbound/doc/outbound_admin.xml (3)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/4087.patchhttps://github.com/kamailio/kamailio/pull/4087.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/4087
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/4087(a)github.com>
### Description
Some UAC (notably Aastra Phones) use the sips: uri scheme without ;transport=tls when TLS is being used.
I observed kamailio 5.7.6 and most probably also 5.8.4 to insert the sips URI in the wrong Record-Route header causing replies not to reach the destination.
#### Reproduction
Find a UAC which uses the sips URI scheme when configured to use TLS. (AAstra IP Phones for example).
Important: The Registration looks like this, contains no transport attribute but the sips scheme with port 5061 and a path pointing to the SBC.
```
"Contact" : {
"Address" : "sips:315996608@157.161.4.237:5061",
"CFlags" : 0,
"CSeq" : 1446407115,
"Call-ID" : "3abf8e6af6391e7b",
"Expires" : 56,
"Flags" : 0,
"Instance" : "<urn:uuid:00000000-0000-1000-8000-00085D49FB42>",
"KA-Roundtrip" : 0,
"Keepalive" : 0,
"Last-Keepalive" : 1735827284,
"Last-Modified" : 1735827284,
"Methods" : 16095,
"Path" : "<sip:157.161.23.249;lr;r2=on>,<sip:157.161.23.249:5061;transport=tls;lr;r2=on>",
"Q" : 0.44,
"Received" : "[not set]",
"Reg-Id" : 0,
"Ruid" : "uloc-677695ae-20472d-23",
"Server-Id" : 0,
"Socket" : "udp:157.161.23.4:5060",
"State" : "CS_DIRTY",
"Tcpconn-Id" : -1,
"User-Agent" : "Aastra 6869i/6.3.0.1020"
}
```
Using this set-up:
UAC (TLS) - Kamailio SBC (rtpengine / nat) udp - Kamailio Registrar udp - Core Infrastructure
Call the UAC. Each hop is adding a Record-Route header which is then used by the UAC when creating a new transaction within the dialog.
In this example:
Transaction 1:
CORE => UAC: INVITE 100rel supported
UAC => CORE: 180 Ringing 100rel required
---
Transaction 2:
CORE => UAC: PRACK
During the first transaction, Record-Route header are accumulated to indicate the Route set to be taken by the in-dialog PRACK request.
In the INVITE, the UAC is presented with those Record-Route Header:
The first two header are added by the SBC (IP .249) with r2=on to indicate the change from UDP to TLS
The third header was added by the Registrar (IP .5)
The fourth header was added by the Core (IP .2)
```
02.01.2025 15:17:54.250 +01:00: 157.161.23.249:5061 -> 157.161.4.237:5061
INVITE sips:315996608@157.161.4.237:5061 SIP/2.0
Record-Route: <sips:157.161.23.249:5061;transport=tls;r2=on;lr;ftag=3944816274-1416360442>
Record-Route: <sips:157.161.23.249;r2=on;lr;ftag=3944816274-1416360442>
Record-Route: <sips:157.161.23.5;lr;ftag=3944816274-1416360442>
Record-Route: <sip:157.161.23.2;lr;ftag=3944816274-1416360442;did=e77.89e5>
```
UAC is ringing:
```
02.01.2025 15:17:54.368 +01:00: 157.161.4.237:5061 -> 157.161.23.249:5061
SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 157.161.23.249:5061;branch=z9hG4bK5b72.d42e9bf4e341f690d8b383a0a96edeb3.0
Via: SIP/2.0/UDP 157.161.23.5;rport=5060;branch=z9hG4bK5b72.621bba23d60b529f876b92bf2ab718de.0
Via: SIP/2.0/UDP 157.161.23.2;branch=z9hG4bK5b72.2d88c4e6630f19da5ae24efb523564bf.0
Via: SIP/2.0/UDP 157.161.10.230:5060;branch=z9hG4bK100567609d7e7e9517ddfb1eaa7d684c
Record-Route: <sips:157.161.23.249:5061;transport=tls;r2=on;lr;ftag=3944816274-1416360442>, <sips:157.161.23.249;r2=on;lr;ftag=3944816274-1416360442>, <sips:157.161.23.5;lr;ftag=3944816274-1416360442>, <sip:157.161.23.2;lr;ftag=3944816274-1416360442;did=e77.89e5>
[...]
Contact: "Somebody" <sips:315996608@157.161.4.237:5061>;+sip.instance="<urn:uuid:00000000-0000-1000-8000-00085D49FB42>"
```
Origin of call takes this Record-Route to create the source Route header for new PRACK transaction:
```
02.01.2025 15:17:54.393 +01:00: 157.161.10.230:5060 -> 157.161.23.2:5060
PRACK sips:315996608@157.161.4.237:5061 SIP/2.0
Max-Forwards: 66
Route: <sip:157.161.23.2;lr;ftag=3944816274-1416360442;did=e77.89e5>
Route: <sips:157.161.23.5;lr;ftag=3944816274-1416360442>
Route: <sips:157.161.23.249;r2=on;lr;ftag=3944816274-1416360442>
Route: <sips:157.161.23.249:5061;transport=tls;r2=on;lr;ftag=3944816274-1416360442>
RAck: 1 1 INVITE
```
According to this route set, the call shall be routed from 157.161.23.2 to 157.161.23.5 via 'sips'
This fails as there is no TLS socket bound between those two instances.
`prepare_new_uac(): can't fwd to af 2, proto 3 (no corresponding listening socket)`
IMHO the issue is caused by the wrong URI scheme (sips instead of sip) being used when the registrar is adding it's Record-Route header. (And maybe also by the SBC when adding the double (r2=on) RR to indicate the change of transport.
I suspect this happens, because the UAC has registered it's contact with the sips uri scheme.
Repeating the same situation with an UAC which registers a sip:user@domain:5061;transport=tls URI when using TLS demonstrates this works fine. It only happens when an UAC uses the sips URI scheme.
If any more information is required like a SIP trace of the issue, I am glad to provide it.
-Benoît-
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4092
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4092(a)github.com>
Hello all,
As in previous years, I'm organising the VoIP dinner for FOSDEM (1 Feb @
19:00)
However unlike previous years (since the restaurant got upset about
splitting the bill 30 ways). I will ask everyone to order their meal and
pay in advance. (and I will pay the bill to the restaurant with my card)
If you are wanting to attend the dinner please fill out the following form
and follow the instructions for payment.
https://form.jotform.com/250012543310033
Contact details are also in the form if you want to reach out to me with
any further questions.
Kind regards
Torrey