[SR-Users] Removing headers in a failure route on 3xx redirect

Daniel Tryba d.tryba at pocos.nl
Thu Jul 9 17:11:48 CEST 2015


I'm adding and removing headers in the standard route[RELAY], but if there is 
a redirection involved headers aren't removed.

route[RELAY]
{
#stdstuff
        route(ADDCHECKSUM);

        # enable additional event routes for forwarded requests
        # - serial forking, RTP relaying handling, a.s.o.
        if (is_method("INVITE|SUBSCRIBE")) {
                t_on_branch("MANAGE_BRANCH");
                t_on_reply("MANAGE_REPLY");
        }
        if (is_method("INVITE")) {
                t_on_failure("MANAGE_FAILURE");
        }

        if (!t_relay()) {
                sl_reply_error();
        }
        exit;
}

route[ADDCHECKSUM]
{
        if($avp(dst_accountcode) || $avp(src_accountcode))
        {
                #some magic
                remove_hf("X-rand");
                remove_hf("X-csum");

                append_hf("X-rand: $var(rand)\r\n");
                append_hf("X-csum: $var(checksum)\r\n");
        }

        return;
}

This works well unless the destination is a redirecting sip server.

failure_route[MANAGE_FAILURE] {
        route(NATMANAGE);

        if (t_is_canceled()) {
                exit;
        }

        if (t_check_status("3[0-9][0-9]"))
        {
#...
                route(RELAY);
                exit;
        }


-user calls destination.
-dispatcher sets destination is send to redirectserver and routes to RELAY, 
addchecksums add some headers called from relay.
-redirectserver replies 302.
-failure route triggers and ends with a route to RELAY. Any existing old 
values should be removed and the newer ones added.

But end the result is that I have two sets op X-rand/csum headers for the 
INVITE to the redirection contact. How do I get rid of every X-csum/rand 
header except the last added ones?

Version tested: 4.2.5.




More information about the sr-users mailing list