Module: kamailio
Branch: master
Commit: 3efc0c1093ed3c9b5a11e40e4ccc65c93f4627a4
URL: https://github.com/kamailio/kamailio/commit/3efc0c1093ed3c9b5a11e40e4ccc65c…
Author: Kamailio Dev <kamailio.dev(a)kamailio.org>
Committer: Kamailio Dev <kamailio.dev(a)kamailio.org>
Date: 2022-05-20T13:31:17+02:00
modules: readme files regenerated - registrar ... [skip ci]
---
Modified: src/modules/registrar/README
---
Diff: https://github.com/kamailio/kamailio/commit/3efc0c1093ed3c9b5a11e40e4ccc65c…
Patch: https://github.com/kamailio/kamailio/commit/3efc0c1093ed3c9b5a11e40e4ccc65c…
---
diff --git a/src/modules/registrar/README b/src/modules/registrar/README
index 22483876ad..bf0a663710 100644
--- a/src/modules/registrar/README
+++ b/src/modules/registrar/README
@@ -96,6 +96,7 @@ Bogdan-Andre Iancu
4.9. reg_fetch_contacts(domain, uri, profile)
4.10. reg_free_contacts(profile)
4.11. reg_send_reply()
+ 4.12. reg_from_user(ultable, uri, mode)
5. Event Routes
@@ -162,8 +163,9 @@ Bogdan-Andre Iancu
1.43. reg_fetch_contacts usage
1.44. reg_free_contacts usage
1.45. reg_send_reply usage
- 1.46. event_route[usrloc:contact-expired] usage
- 1.47. $ulc(name) usage
+ 1.46. reg_from_user usage
+ 1.47. event_route[usrloc:contact-expired] usage
+ 1.48. $ulc(name) usage
Chapter 1. Admin Guide
@@ -230,6 +232,7 @@ Chapter 1. Admin Guide
4.9. reg_fetch_contacts(domain, uri, profile)
4.10. reg_free_contacts(profile)
4.11. reg_send_reply()
+ 4.12. reg_from_user(ultable, uri, mode)
5. Event Routes
@@ -991,6 +994,7 @@ kamcmd cfg.set_now_int registrar use_expired_contacts 0
4.9. reg_fetch_contacts(domain, uri, profile)
4.10. reg_free_contacts(profile)
4.11. reg_send_reply()
+ 4.12. reg_from_user(ultable, uri, mode)
4.1. save(domain, [, flags [, uri]])
@@ -1293,6 +1297,30 @@ save("location", "0x2");
reg_send_reply();
...
+4.12. reg_from_user(ultable, uri, mode)
+
+ The function returns true if the SIP message comes from the user
+ identified by 'uri' parameter by matching the associated location
+ records. The matching is done with the field 'received' if it is set,
+ otherwise with the contact address.
+
+ Meaning of the parameters is as follows:
+ * ultable - user location table (e.g., 'location')
+ * uri - SIP URI to identify the location records to match against.
+ * mode - matching mode (int) - host part (IP address) is matched
+ always. If mode has bit 1 set (value 1), then the port is matched
+ as well. If mode has bit 2 set (value 2), then the protocol is
+ matched as well.
+
+ This function can be used from ANY_ROUTE.
+
+ Example 1.46. reg_from_user usage
+...
+if(reg_from_user("location", "sip:alice@server.com", "0")) {
+ # message coming from where 'alice' sent before a REGISTER request
+}
+...
+
5. Event Routes
5.1. event_route[usrloc:contact-expired]
@@ -1302,7 +1330,7 @@ reg_send_reply();
Executed when a contact in location table has expired. The variable
$ulc(exp=>...) is filled with the attributes of the expired contact.
- Example 1.46. event_route[usrloc:contact-expired] usage
+ Example 1.47. event_route[usrloc:contact-expired] usage
...
event_route[usrloc:contact-expired] {
xlog("expired contact for $ulc(exp=>aor)\n");
@@ -1376,7 +1404,7 @@ event_route[usrloc:contact-expired] {
The pseudo-variable accepts positive index value to access a specific
contact record.
- Example 1.47. $ulc(name) usage
+ Example 1.48. $ulc(name) usage
...
if(reg_fetch_contacts("location", "$fu", "caller"))
{
Module: kamailio
Branch: master
Commit: f0bf4cebef916887cd5196dce0521d4784904ab8
URL: https://github.com/kamailio/kamailio/commit/f0bf4cebef916887cd5196dce0521d4…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2022-05-20T13:26:00+02:00
registrar: docs for reg_from_user() function
---
Modified: src/modules/registrar/doc/registrar_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/f0bf4cebef916887cd5196dce0521d4…
Patch: https://github.com/kamailio/kamailio/commit/f0bf4cebef916887cd5196dce0521d4…
---
diff --git a/src/modules/registrar/doc/registrar_admin.xml b/src/modules/registrar/doc/registrar_admin.xml
index d8a3c88b57..c402ab4b20 100644
--- a/src/modules/registrar/doc/registrar_admin.xml
+++ b/src/modules/registrar/doc/registrar_admin.xml
@@ -1813,6 +1813,52 @@ save("location", "0x2");
...
reg_send_reply();
...
+</programlisting>
+ </example>
+ </section>
+ <section id="registrar.f.reg_from_user">
+ <title>
+ <function moreinfo="none">reg_from_user(ultable, uri, mode)</function>
+ </title>
+ <para>
+ The function returns true if the SIP message comes from the user
+ identified by 'uri' parameter by matching the associated location
+ records. The matching is done with the field 'received' if it is set,
+ otherwise with the contact address.
+ </para>
+ <para>Meaning of the parameters is as follows:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>ultable</emphasis> - user location table (e.g., 'location')
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>uri</emphasis> - SIP URI to identify the location records
+ to match against.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>mode</emphasis> - matching mode (int) - host part (IP address)
+ is matched always. If mode has bit 1 set (value 1), then the port is
+ matched as well. If mode has bit 2 set (value 2), then the protocol
+ is matched as well.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ This function can be used from ANY_ROUTE.
+ </para>
+ <example>
+ <title><function>reg_from_user</function> usage</title>
+ <programlisting format="linespecific">
+...
+if(reg_from_user("location", "sip:alice@server.com", "0")) {
+ # message coming from where 'alice' sent before a REGISTER request
+}
+...
</programlisting>
</example>
</section>
It seems that TOPOS is not working properly on RE-INVITE and stop masking IP and contact on some RE-INVITE.
When a RE-INVITE is send with Kamailio IP as Request-URI TOPOS is not operating.
Note : we are using the HTABLE trick to rewrite $ru and match the call but we would need to have TOPOS re-evaluating the dialog once done.
We use a standard configuration with 2 modifications.
1) in route[DISPATCH] to set the HTABLE
if(is_method("INVITE")) {
$sht(ct=>$ci::$ft) = $sel(contact.uri);
}
2) in route[WITHINDLG] to find the call if R-URI = myself
if(has_totag() && uri==myself) {
if($sht(ct=>$ci::$ft) != $null && $T_reply_code > 400) $shtex(ct=>$ci::$ft) = 10 ;
if($sht(ct=>$ci::$tt) != $null) {
$ru = $sht(ct=>$ci::$tt);
if (is_method("BYE")) $shtex(ct=>$ci::$tt) = 10 ;
route(RELAY);
}
}
As you can see in the PCAP the RE-INVITE goes directly to calling stating with the Contact not updated and the 200 OK is also sent to called party with wrong Contact info too.
[topos-issue.zip](https://github.com/kamailio/kamailio/files/8730489/topos-i…
This behavior breaks the BYE procedure.
Any advice ?
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3118
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3118(a)github.com>
<!--
Kamailio Project uses GitHub Issues only for bugs in the code or feature requests. Please use this template only for bug reports.
If you have questions about using Kamailio or related to its configuration file, ask on sr-users mailing list:
* http://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
If you have questions about developing extensions to Kamailio or its existing C code, ask on sr-dev mailing list:
* http://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
Please try to fill this template as much as possible for any issue. It helps the developers to troubleshoot the issue.
If there is no content to be filled in a section, the entire section can be removed.
You can delete the comments from the template sections when filling.
You can delete next line and everything above before submitting (it is a comment).
-->
### Description
<!--
Explain what you did, what you expected to happen, and what actually happened.
-->
module: tm
kemi proto relay functions fails on TLS:
- ki_t_relay_to_proto
- ki_t_relay_to_proto_addr
### Troubleshooting
#### Reproduction
<!--
If the issue can be reproduced, describe how it can be done.
-->
#### Debugging Data
<!--
If you got a core dump, use gdb to extract troubleshooting data - full backtrace,
local variables and the list of the code at the issue location.
gdb /path/to/kamailio /path/to/corefile
bt full
info locals
list
If you are familiar with gdb, feel free to attach more of what you consider to
be relevant.
-->
```
```
#### Log Messages
<!--
Check the syslog file and if there are relevant log messages printed by Kamailio, add them next, or attach to issue, or provide a link to download them (e.g., to a pastebin site).
-->
```
13(19) ERROR: {1 1 REGISTER 184193281845942-18001879945554(a)192.168.1.135} tm [tm.c:2934]: ki_t_relay_to_proto(): bad protocol specified <TLS>
13(19) ERROR: {1 1 REGISTER 184193281845942-18001879945554(a)192.168.1.135} sl [sl_funcs.c:414]: sl_reply_error(): stateless error reply used: I'm terribly sorry, server error occurred (1/SL)
```
#### SIP Traffic
<!--
If the issue is exposed by processing specific SIP messages, grab them with ngrep or save in a pcap file, then add them next, or attach to issue, or provide a link to download them (e.g., to a pastebin site).
-->
```
(paste your sip traffic here)
```
### Possible Solutions
<!--
If you found a solution or workaround for the issue, describe it. Ideally, provide a pull request with a fix.
-->
It's missing an equal zero (== 0) on TLS test.
Code: tm.c
if (strncasecmp(sproto->s, "UDP", 3) == 0) {
proto = PROTO_UDP;
} else if (strncasecmp(sproto->s, "TCP", 3) == 0) {
proto = PROTO_TCP;
} else if (strncasecmp(sproto->s, "TLS", 3)) {
proto = PROTO_TLS;
} else {
LM_ERR("bad protocol specified <%s>\n", sproto->s);
return E_UNSPEC;
}
Fix:
if (strncasecmp(sproto->s, "UDP", 3) == 0) {
proto = PROTO_UDP;
} else if (strncasecmp(sproto->s, "TCP", 3) == 0) {
proto = PROTO_TCP;
} else if (strncasecmp(sproto->s, "TLS", 3) == 0) {
proto = PROTO_TLS;
} else {
LM_ERR("bad protocol specified <%s>\n", sproto->s);
return E_UNSPEC;
}
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 5.5.0 (x86_64/linux)
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 4.9.2
```
* **Operating System**:
<!--
Details about the operating system, the type: Linux (e.g.,: Debian 8.4, Ubuntu 16.04, CentOS 7.1, ...), MacOS, xBSD, Solaris, ...;
Kernel details (output of `lsb_release -a` and `uname -a`)
-->
```
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.11 (jessie)
Release: 8.11
Codename: jessie
Linux routersip 4.18.0-348.el8.0.2.x86_64 #1 SMP Sun Nov 14 00:51:12 UTC 2021 x86_64 GNU/Linux
```
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3111
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3111(a)github.com>