[reSIProcate] repro updating request URI
Daniel Pocock
daniel at pocock.pro
Fri Nov 11 08:16:31 CST 2016
Looking at the way repro currently operates:
- the original request URI is accessed (and can be modified) through
RequestContext::getOriginalRequest().header(resip::h_RequestLine).uri()
- monkey classes don't seem to modify this, instead, they simply add
targets using
RequestContext::getResponseContext().addTarget(foo)
- if a route is used to re-write an address on the same host (e.g.
changing sip:help at example.org to sip:user1 at example.org) or to change the
domain before it hits the Location service (e.g. from
sip:user at host.example.org to sip:user at example.org) then a new message is
sent out over the network and comes back in over the network to be
processed from the beginning of the chain. This causes various
problems, e.g. the looped-back request may not pass authentication
unless the proxy is configured to identify requests that loop back like
this.
- SER-based SIP proxies (e.g. Kamailio) are modifying the request URI as
the request passes through their routing logic
- should we have a mutable request URI field in the RequestContext? It
would be initialized from the incoming request but any monkey could read
it and/or change it.
- this could potentially be used for the forwardAddress field in the
user table
More information about the resiprocate-devel
mailing list