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.…
-----> 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.