NUCLEAR-WAR created an issue (kamailio/kamailio#4291)
<!-- 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:
* https://lists.kamailio.org/mailman3/postorius/lists/sr-users.lists.kamailio....
If you have questions about developing extensions to Kamailio or its existing C code, ask on sr-dev mailing list:
* https://lists.kamailio.org/mailman3/postorius/lists/sr-dev.lists.kamailio.or...
Please try to fill this template as much as possible for any issue. It helps the developers to troubleshoot the issue.
Note that an issue report may be closed automatically after about 2 months if there is no interest from developers or community users on pursuing it, being considered expired. In such case, it can be reopened by writing a comment that includes the token `/notexpired`. About two weeks before considered expired, the issue is marked with the label `stale`, trying to notify the submitter and everyone else that might be interested in it. To remove the label `stale`, write a comment that includes the token `/notstale`. Also, any comment postpone the `expire` timeline, being considered that there is interest in pursuing 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
Kamailio is sending wrong P-Associated-URI towards Application Server, when sending 3rd Party Registration:
Kamailio sends: ``` P-Associated-URI: <sip:0912584710@ims.mnc001.mcc001.3gppnetwork.org, tel:0912584710>, sip:001010000084710@ims.mnc001.mcc001.3gppnetwork.org
``` ABNF for the Header is (see RFC7315 Section 5.1) : ``` "P‑Associated‑URI" HCOLON [ p‑aso‑uri‑spec ] *( COMMA p‑aso‑uri‑spec )
p-aso-uri-spec = name‑addr *( SEMI ai‑param )
it looks like an issue in ims_isc module, as other transactions containing this header are not affected.
```
### Troubleshooting
#### Reproduction
Using any version of Kamailio in IMS Setup ( e.g like Docker_open5gs) and enable 3rd Party registration in the associated iFC of the IMS User. fur testing this particular issue any SIP Server could be user, as we need only to capture the 3rdPty Register only.
Start the registration process and capture the 3rdPty registration after a successful registration with the S-CSCF.
also, would it be possible to have multiple occurrence of this header for each IMPU, that will make it easy to use non complex logic to gather the IMPUs of a user from the AS.
#### Debugging Data
log is long, therefor I attached it to the issue along with a PCAP
#### 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). -->
``` Session Initiation Protocol (SIP as raw text) REGISTER sip:mtas.ims.mnc001.mcc001.3gppnetwork.org SIP/2.0 Via: SIP/2.0/UDP 172.22.0.20:6060;branch=z9hG4bK1f1a.2acf13e0000000000000000000000000.0 To: sip:001010000084710@ims.mnc001.mcc001.3gppnetwork.org From: sip:scscf.ims.mnc001.mcc001.3gppnetwork.org;tag=577487a47557db6ca47545080fcdadff-3e5eb954 CSeq: 10 REGISTER Call-ID: 60988901578cff95-50@172.22.0.20 Content-Length: 2374 User-Agent: Kamailio S-CSCF Event: registration Max-Forwards: 10 Expires: 600120 Path: sip:scscf.ims.mnc001.mcc001.3gppnetwork.org;lr,sip:term@pcscf.ims.mnc001.mcc001.3gppnetwork.org;lr Contact: sip:scscf.ims.mnc001.mcc001.3gppnetwork.org P-Visited-Network-ID: ims.mnc001.mcc001.3gppnetwork.org P-Access-Network-Info: 3GPP-NR-TDD;utran-cell-id-3gpp=0010100000100066C000 P-Associated-URI: <sip:0912584710@ims.mnc001.mcc001.3gppnetwork.org, tel:0912584710>, sip:001010000084710@ims.mnc001.mcc001.3gppnetwork.org Content-Type: message/sip
REGISTER sip:scscf.ims.mnc001.mcc001.3gppnetwork.org:6060 SIP/2.0 From: sip:001010000084710@ims.mnc001.mcc001.3gppnetwork.org;tag=114776405 To: sip:001010000084710@ims.mnc001.mcc001.3gppnetwork.org CSeq: 114776123 REGISTER Call-ID: 114776122_989640048@192.168.101.3 Via: SIP/2.0/UDP 172.22.0.19:4060;branch=z9hG4bKc18d.4d94d35bf6f42b8e538cf9d84cb693d8.0;i=1 Via: SIP/2.0/TCP 172.22.0.21;branch=z9hG4bKc18d.8969a1b752d8220823a5bd82c9199eb9.0;i=7 Via: SIP/2.0/TCP 192.168.101.3:44186;rport=42756;branch=z9hG4bK1511394995 Max-Forwards: 67 […]Contact: sip:3259ecc0-e957-4a46-a046-8e9cab307031@192.168.101.3:44186;alias=192.168.101.3~42756~2;+g.3gpp.accesstype="cellular2";+sip.instance="urn:gsma:imei:86401006-018500-0";audio;+g.3gpp.nw-init-ussi;+g.3gpp.smsip;video;+g.3g P-Access-Network-Info: 3GPP-NR-TDD;utran-cell-id-3gpp=0010100000100066C000 Security-Verify: ipsec-3gpp;q=0.1;prot=esp;mod=trans;spi-c=4098;spi-s=4099;port-c=5101;port-s=6101;alg=hmac-sha-1-96;ealg=null Expires: 600000 Proxy-Require: sec-agree Allow: INVITE,BYE,CANCEL,ACK,NOTIFY,UPDATE,PRACK,INFO,MESSAGE,OPTIONS […]Authorization: Digest username="001010000084710@ims.mnc001.mcc001.3gppnetwork.org",realm="ims.mnc001.mcc001.3gppnetwork.org",uri="sip:ims.mnc001.mcc001.3gppnetwork.org",qop=auth,nonce="ferAjDMunr0os568G1AocOd/sdY+MoAA+PTh/ISdKLo=",nc User-Agent: Xiaomi_Redmi Note 12 5G_OS2.0.1.0.UMQEUXM […]Security-Client: ipsec-3gpp; alg=hmac-md5-96; ealg=des-ede3-cbc; spi-c=4176830254; spi-s=4255578078; port-c=42756; port-s=44186,ipsec-3gpp; alg=hmac-md5-96; ealg=aes-cbc; spi-c=4176830254; spi-s=4255578078; port-c=42756; port-s=44186 Content-Length: 0 Path: sip:term@pcscf.ims.mnc001.mcc001.3gppnetwork.org;lr Supported: path Require: path P-Visited-Network-ID: ims.mnc001.mcc001.3gppnetwork.org
```
### Possible Solutions
<!-- If you found a solution or workaround for the issue, describe it. Ideally, provide a pull request with a fix. -->
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
Used in the test :
``` version: kamailio 6.1.0-dev0 (x86_64/linux) ba1369 flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, 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, TLS_PTHREAD_MUTEX_SHARED ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_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: ba1369 compiled on 22:21:16 Mar 18 2025 with gcc 9.4.0
[scscf.log](https://github.com/user-attachments/files/20852988/scscf.log)
[kamailio_wrong_PAU.zip](https://github.com/user-attachments/files/20852989/kamailio_wrong_PAU.zip)
```
* **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`) -->
``` Kamailio runs in Docker, with the following info from the container:
Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal
Linux 2b805b1de581 6.8.0-62-generic #65-Ubuntu SMP PREEMPT_DYNAMIC Mon May 19 17:15:03 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
```
henningw left a comment (kamailio/kamailio#4291)
Thanks for the report. I think the problem is that the syntax of the P-Associated-URI is not correct, right? But its only related to the missing > for the tel URI, and not related to the single line/multi-line format. The single line format is allowed if I read the specification correctly.
NUCLEAR-WAR left a comment (kamailio/kamailio#4291)
HI @henningw, yes exactly, the problem is the missing ">" for SIP URI and "<" for the TEL URI. As you wrote, spec has it in single line format with the values separated with comma. The Multiline format is a suggestion to make life easier when capturing the values on the AS, which is being actually used by many operators I know, but yes the issue is with the missing angle brackets.
NUCLEAR-WAR left a comment (kamailio/kamailio#4291)
regarding multi row for the header, RFC 3261 Sektion 7.3 allows it with exception to WWW-Authenticate, Authorization, Proxy-Authenticate, and Proxy-Authorization wich are not allowed to have multi row header field name, also the Route/Record-Route/Via should be in the correct order when using multi row format, I also did that for the Route in the IMS_ISC module, so its up to you if you want to use multi rows, but it will make the life easier ;)