<!-- 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.
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
I am working on extending $hfl and $hflc to support some more headers.
During some experimentation, I stumbled into some weird behavior regarding $(hfl(Route)[-1]) and negative indexing of $hfl pseudo-variable (also for Via, Contact).
Per the [docs ](https://www.kamailio.org/wikidocs/cookbooks/devel/pseudovariables/#hflname-h... ): -1 index should print the last header found and so on (as stated by $hdr $hfl).
Right now, -1 produces null, and from -2 and onwards it prints correctly from the last one to the first one.
### Troubleshooting
#### Reproduction ``` #kamailio.cfg ... request_route { xlog("L_INFO", "Route headers hdr: $hdr(Route)\n"); xlog("L_INFO", "Route headers hfl: $hfl(Route)\n"); xlog("L_INFO", "Route headers count: $hflc(Route)\n"); xlog("L_INFO", "Route headers 0: $(hfl(Route)[0])\n"); xlog("L_INFO", "Route headers 1: $(hfl(Route)[1])\n"); xlog("L_INFO", "Route headers 4: $(hfl(Route)[4])\n"); xlog("L_INFO", "Route headers -1: $(hfl(Route)[-1])\n"); xlog("L_INFO", "Route headers -2: $(hfl(Route)[-2])\n"); xlog("L_INFO", "Route headers -3: $(hfl(Route)[-3])\n"); ... } ```
Seng a SIP message containing Route (but also applicable for VIA, Contact headers): ``` OPTIONS_MSG_2CONTACTS="OPTIONS sip:example.com SIP/2.0 Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK123456789 Max-Forwards: 70 From: sip:bob@example.com;tag=123456789 To: sip:alice@example.com Call-ID: 987654321@192.168.1.100 CSeq: 1 OPTIONS Contact: sip:bob@example.com;expires=3600,sip:bob2@example.com;expires=3600,sip:bob3@example.com;expires=3600 Route: sip:server1.example.com;lr;ftag=1234, sip:server2.example.com;lr;ftag=5678, sip:server3.example.com;lr;ftag=9012 Route: sip:server4.example.com;lr;ftag=1234, sip:server5.example.com;lr;ftag=5678 Content-Length: 0 "
echo -e "$OPTIONS_MSG_2CONTACTS" | nc -u localhost 5060 ```
See logs for logging details.
#### 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). -->
``` INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers hdr: sip:server1.example.com;lr;ftag=1234, sip:server2.example.com;lr;ftag=5678, sip:server3.example.com;lr;ftag=9012 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers hfl: sip:server1.example.com;lr;ftag=1234 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers count: 5 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers 0: sip:server1.example.com;lr;ftag=1234 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers 1: sip:server2.example.com;lr;ftag=5678 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers 4: sip:server5.example.com;lr;ftag=5678 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers -1: <null> INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers -2: sip:server5.example.com;lr;ftag=5678 INFO: {1 1 OPTIONS 987654321@192.168.1.100} <script>: Route headers -3: sip:server4.example.com;lr;ftag=1234 ```
### Possible Solutions
<!-- If you found a solution or workaround for the issue, describe it. Ideally, provide a pull request with a fix. -->
In https://github.com/kamailio/kamailio/blob/e59c4415707f0995a0d5315b5601ae518b..., the count should start at 0 ie. ``` n=0; // not n=1; ```
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
``` (paste your output here) ```
* **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`) -->
``` (paste your output here) ```
This issue is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks.
Closed #3653 as completed.