Peter Dunkley writes:
I think this should be working now. Please let me
know if there are
problems.
peter,
i made some tests with client that supports both ob and gruu in this
kind of setup:
caller ua -- proxy/registrar 1 -- proxy/registrar 2 -- callee ua
when invite comes to proxy/registrar 1 it has "Supported: gruu,
outbound, path" and ;gr param in contact uri. proxy/registrar 1 then
calls record_route() on the invite and forwards it to proxy/registrar 2.
ngrep shows that record_route() added these two r-r headers:
Record-Route:
<sip:8ESgMbGAnoV8swXAYmYKJ2DAYmgC6dc=@192.98.102.10:5070;transport=tcp;r2=on;lr>.
Record-Route:
<sip:8ESgMbGAnoV8swXAYmYKJ2DAYmgC6dc=@192.98.102.10:10080;transport=ws;r2=on;lr>.
because caller ua supports gruu, in-dialog requests to it should be
routed based on gruu lookup, not based on flow token in route header.
so i don't see the point in record_route() including the flow tokens to
r-r uris.
now when callee ua sends bye, it gets handled in proxy/registrar 1 like
this:
Apr 25 08:49:01 siika /usr/sbin/sip-proxy[12538]: INFO: calling loose_route() on route
<<sip:8ESgMbGAnoV8swXAYmYKJ2DAYmgC6dc=@192.98.102.10:5070;transport=tcp;r2=on;lr>>
Apr 25 08:49:01 siika /usr/sbin/sip-proxy[12538]: INFO: ru/du =
<sip:jh@test.fi;gr=urn:uuid:e88f32f1-b837-43be-8955-bc606d626252;ob>/<sip:192.98.104.2:59863;transport=ws>
Apr 25 08:49:01 siika /usr/sbin/sip-proxy[12538]: INFO: Routing in-dialog BYE
<sip:jh@test.fi;gr=urn:uuid:e88f32f1-b837-43be-8955-bc606d626252;ob> from
<sip:test@test.fi> to <sip:192.98.104.2:59863;transport=ws>
that is, loose_route() set $du and since $du is set, gruu lookup does not
take place.
i'm not sure what is the best way to fix this. one way could be to add
some param in record_route() that tells it not to use flow tokens.
-- juha