[Users] moved temporarily - different port, same host

Benko benkokakao at gmail.com
Wed Feb 21 14:52:22 CET 2007


Hello!

I'm having a issue with a 302 moved temporarily from a UA i want to
attach to my proxy. The UA replies to a INVITE from the proxy with a 302
MOVED TEMPORARILY and i'm using "get_redirects" from the
uac_redirect-module to extract the contact. However, i don't know how
to continue from there as the domain part in the redirect-contact is
the hostname of the proxy but the port is 5065 and transport=TCP (see
debug for details) and if i simply relay it, it would be relayed back
to the proxy on the wrong port 5065.

I guess i could use the request branch pseudo variable($br) and extract
the port from it(or change the domain-part to the actual domain/ip of
the UA and relay it), still i don't really know how to do it.

This is the sip-trace of the relevant dialog part:

2xx.xxx.xxx.x06 is the openser-host, 6x.xxx.xxx.x93 is the useragent

######################################
####
T 2xx.xxx.xxx.x06:56669 -> 6x.xxx.xxx.x93:5060 [AP]
INVITE sip:4989111111 at proxydomain.org SIP/2.0.
Record-Route:
<sip:2xx.xxx.xxx.x06;transport=tcp;r2=on;lr;ftag=as784d1ec2>.
Record-Route:
<sip:2xx.xxx.xxx.x06;r2=on;lr;ftag=as784d1ec2>. Via:
SIP/2.0/TCP 2xx.xxx.xxx.x06;branch=z9hG4bK96db.2c3c0006.0. Via:
SIP/2.0/UDP 2xx.xxx.xxx.97:5060;branch=z9hG4bK52fef574;rport=5060.
From: "SIPPHONE1"
<sip:089222222 at otherproxydomain.org>;tag=as784d1ec2. To:
<sip:4989111111 at proxydomain.org>. 
Contact:<sip:089222222 at 21x.xxx.xxx.97>. 
Call-ID:7fc122590665124f347fb2d956ba4c07 at sip.at.telgo.cc. 
CSeq: 102 INVITE.
User-Agent: MyMediaGW1. Max-Forwards: 69. Date: Wed, 21 Feb 2007
13:02:26 GMT. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY. Content-Type: application/sdp.
Content-Length: 492.
.
v=0.
o=root 14334 14334 IN IP4 2xx.xxx.xxx.97.
s=session.
c=IN IP4 2xx.xxx.xxx.97.
t=0 0.
m=audio 10380 RTP/AVP 0 8 18 4 3 97 111 5 10 7 110 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=no.
a=rtpmap:4 G723/8000.
a=rtpmap:3 GSM/8000.
a=rtpmap:97 iLBC/8000.
a=rtpmap:111 G726-32/8000.
a=rtpmap:5 DVI4/8000.
a=rtpmap:10 L16/8000.
a=rtpmap:7 LPC/8000.
a=rtpmap:110 speex/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-16.
a=silenceSupp:off - - - -
.

#
T 6x.xxx.xxx.x93:5060 -> 2xx.xxx.xxx.x06:56669 [AP]
SIP/2.0 100 Trying.
FROM: "SIPPHONE1"<sip:089222222 at otherproxydomain.org>;tag=as784d1ec2.
TO: <sip:4989111111 at proxydomain.org>. CSEQ: 102 INVITE.
CALL-ID: 7fc122590665124f347fb2d956ba4c07 at otherproxydomain.org.
MAX-FORWARDS: 70. 
VIA: SIP/2.0/TCP
2xx.xxx.xxx.x6;branch=z9hG4bK96db.2c3c0006.0,SIP/2.0/UDP
2xx.xxx.xxx.97:5060;branch=z9hG4bK52fef574;rport=5060. 
CONTENT-LENGTH: 0. 
.

##
T 6x.xxx.xxx.x93:5060 -> 2xx.xxx.xxx.x06:56669 [AP]
SIP/2.0 302 Moved Temporarily.
FROM: "SIPPHONE1"<sip:089222222 at otherproxydomain.org>;tag=as784d1ec2.
TO: <sip:4989111111 at proxydomain.org>;tag=b3addacf4f. CSEQ: 102
INVITE. CALL-ID: 7fc122590665124f347fb2d956ba4c07 at otherproxydomain.org.
MAX-FORWARDS: 70.
VIA: SIP/2.0/TCP
2xx.xxx.xxx.x06;branch=z9hG4bK96db.2c3c0006.0,SIP/2.0/UDP
213.208.4.97:5060;branch=z9hG4bK52fef574;rport=5060. 
CONTENT-LENGTH: 0.
SERVER: RTCC/2.0.6017.0. 
CONTACT: <sip:4989111111 at proxydomain.org:5065;transport=TCP>. 
.

##
T 2xx.xxx.xxx.x06:56669 -> 6x.xxx.xxx.x93:5060 [AP]
ACK sip:4989111111 at proxydomain.org SIP/2.0.
Via: SIP/2.0/TCP 213.208.4.106;branch=z9hG4bK96db.2c3c0006.0.
From: "SIPPHONE1"
<sip:089222222 at otherproxydomain.org>;tag=as784d1ec2. Call-ID:
7fc122590665124f347fb2d956ba4c07 at otherproxydomain.org. 
TO:<sip:4989111111 at proxydomain.org>;tag=b3addacf4f. CSeq: 102
ACK. User-Agent: OpenSer (1.1.0-tls (i386/linux)).
Content-Length: 0.
.

######################################


Either i'm lacking understanding of the openser functionalities and sip
redirect in general and simply don't see how this could be accomplished
easier or i guess i need to grab
"sip:4989111111 at proxydomain.org:5065;transport=TCP" and extract the
right port and protocol from it to relay it correctly(don't know how
to do that though), i'm not sure. Currently i'm using a simple 
t_relay("tcp:6x.xxx.xxx.x93:5065");
to get it working, but i'd like to implement it in a more generic way.

thx for all answers!

best regards
christian




More information about the Users mailing list