[asterisk-users] PJSIP redirect_method=uri_core and header modifications
Daniel Tryba
daniel at tryba.nl
Thu Aug 2 10:29:23 CDT 2018
With chan_sip there is the variable SIP_MAX_FORWARDS to set
Max-Forwards. This counter is persistant after a redirect. I can't find
the equivalent for PJSIP, so I went the way of header manipulation. Only
to find out that any headers added to the outbound leg are lost after a
redirect (with redirect_method=uri_core (didn't try any other since in
the past they didn't work for me)).
Am I missing something? Or is this a PJSIP feature?
chan_sip example:
[macro-maxforwards]
exten => s,1,NoOp()
exten => s,n,Set(mf=${SIP_HEADER(Max-Forwards)})
exten => s,n,Set(mf=$[ ${mf} - 1 ])
exten => s,n,ExecIf($[ ${mf} < 1 ]?Hangup(19))
exten => s,n,Set(__SIP_MAX_FORWARDS=${mf})
exten => s,n,SipAddHeader(X-Foo: bar)
exten => s,n,MacroExit()
[route]
...
exten => _+.,n,Macro(maxforwards)
exten => _+.,n,Dial(SIP/${EXTEN}@redirector)
An incomig INVITE will look like:
> INVITE sip:+number at asterisk;user=phone SIP/2.0
> Max-Forwards: 70
To the redirector:
> INVITE sip:+number at asterisk;user=phone SIP/2.0
> Max-Forwards: 69
> X-Foo: bar
< SIP/2.0 302 Redirect
< Contact: <sip:+number at somewhereelse:5060;transport=udp>
To somewhereelse:
> INVITE sip:+number at somewhereelse;user=phone SIP/2.0
> Max-Forwards: 69
> X-Foo: bar
PJSIP example (where the add strangely overrides the default
Max-Forwards: 70).
[setoutgoinglegvars]
exten => add,1,Set(PJSIP_HEADER(add,Max-Forwards)=60)
exten => add,1,Set(PJSIP_HEADER(add,X-Foo)=bar)
exten => add,n,Return()
[route]
...
exten => _+.,n,Macro(maxforwards)
exten => _+.,n,Dial(PJSIP/${EXTEN}@redirector,,b(setoutgoinglegvars,add,1))
> INVITE sip:+number at asterisk;user=phone SIP/2.0
> Max-Forwards: 70
To the redirector:
> INVITE sip:+number at asterisk;user=phone SIP/2.0
> Max-Forwards: 60
> X-Foo: bar
< SIP/2.0 302 Redirect
< Contact: <sip:+number at somewhereelse:5060;transport=udp>
To somewhereelse:
> INVITE sip:+number at somewhereelse;user=phone SIP/2.0
> Max-Forwards: 70
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20180802/892e051a/attachment.sig>
More information about the asterisk-users
mailing list