[SR-Users] Problem removing headers from FAILURE_ROUTE

Joel Serrano joel at gogii.net
Fri Oct 13 20:35:49 CEST 2017


Hi all,

I have the following scenario:


Client -> Kamailio (adds X-CallSource hdr) -> Media Server -> Kamailio
(removes all "X-" headers) -> Carrier

Carrier doesn't get any X- headers. All works.


Now for example, if the media server replies with a non-OK status, like:

Client -> Kamailio (adds X-CallSource hdr) <-> Media Server (480
Temporarily Unavailable)
          Kamailio (in failure_route, removes all "X-" headers) -> External
Voicemail Service

External Voicemail Service gets the X- headers.


Basically, on the first example, it is a regular call, all handled from
request route.

On the second example, call goes to media server, media server replies with
a 480, reaches kamailio's failure route, in there we run the same
remove_hf_re.

In the captures I can see that the X-CallSource header (added at the very
beginning) is still there.


I have tried different combinations in the failure route:

a) Tried removing exactly the header: remove_hf("X-CallSource")
b) Tried removing any X- header: remove_hf_re("X-")

Those didn't work, then I tried:

c) append_hf("X-CallSource: Test")
    remove_hf("X-CallSource")

The result was now two X-CallSource headers, the add worked, the remove
didn't.

I thought maybe "msg_apply_changes()" could help, but it isn't valid inside
failure_route.



So what is the deal here? Am I doing something completely wrong or is it
just that you cannot remove headers (but you can add) in failure route?
According to the doc:

https://www.kamailio.org/docs/modules/devel/modules/textops.html#textops.f.remove_hf_re
-----> This function can be used from ANY_ROUTE.

OS: Debian 8
Kamailio: 4.4.5 (installed from deb repo)

# kamailio -v
version: kamailio 4.4.5 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE,
USE_MCAST, DNS_IP_HACK, SHM_MEM, 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_BLACKLIST,
HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
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


Any suggestions?

Thanks
Joel.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20171013/08531589/attachment.html>


More information about the sr-users mailing list