[Freeswitch-dev] bad REGISTER processing

Michael Jerris mike at jerris.com
Thu Apr 10 17:44:41 EDT 2008


The NDLB-connectile-dysfunction is a paramater to explicitly break the  
rfc and re-write our behavior as if we got a contact of the same  
address that we received the packet from.  If it comes from 5060, it  
will have 5060 in the contact.  If you would like to handle nat and  
still be rfc compliant, then you need to use a client that follows the  
rfc's so you don't have to use non compliant hacks.

Mike



On Apr 10, 2008, at 2:42 PM, kokoska rokoska wrote:

>
> Hi all,
> I'm back and the bug too :-)
>
> Now I try to setup NAT handling:
>
> <variable name='sip-force-contact' value='NDLB-connectile- 
> dysfunction'/>
>
> and FreeSWITCH starts to rewrite contact (append port 5060) like in
> previous case...
>
> Best regards,
>
> kokoska.rokoska
>
>
> kokoska rokoska napsal(a):
>> Hi all,
>>
>> I just start to play with Freeswitch and first thing I discover is  
>> bad
>> REGISTER processing in mod_sofia :-(
>>
>> The problem is, that Sofia modifies Contact header (append port 5060
>> which is not in original REGISTER request) in 200 OK reply and thus  
>> a ot
>> of clients refuses it (for example SJPhone, Nokia E series etc.).
>> Full debug is included at the end of my e-mail.
>>
>>
>> In this manner Freeswitch behaviour IMO violates rfc3261:
>>
>> 19.1.4 URI Comparison
>> ...
>>
>> A URI omitting any component with a default value will not
>> match a URI explicitly containing that component with its
>> default value.  For instance, a URI omitting the optional port
>> component will not match a URI explicitly declaring port 5060.
>> The same is true for the transport-parameter, ttl-parameter,
>> user-parameter, and method components.
>>
>> Defining sip:user at host to not be equivalent to
>> sip:user at host:5060 is a change from RFC 2543.  When deriving
>> addresses from URIs, equivalent addresses are expected from
>> equivalent URIs.  The URI sip:user at host:5060 will always
>> resolve to port 5060.  The URI sip:user at host may resolve to
>> other ports through the DNS SRV mechanisms detailed in [4].
>> ...
>>
>>
>> Could you please tell me how to configure mod_sofia to properly  
>> handle
>> REGISTER request?
>>
>> Thanx a lot, regards
>>
>> kokoska.rokoska
>>
>>
>> ----------------------------
>> SIP debug made with SJPhone:
>>
>> 2008-04-06 08:26:36.093 UDP LOCAL->192.168.1.128:5065
>> REGISTER sip:192.168.1.128:5065 SIP/2.0
>> Via: SIP/2.0/UDP
>> 192.168.1.101 
>> ;branch=z9hG4bKc0a801650000001e47f8893c000053f900000006;rport
>> From: "unknown" <sip:1000 at 192.168.1.128:5065>;tag=42f1ed397
>> To: <sip:1000 at 192.168.1.128:5065>
>> Contact: <sip:1000 at 192.168.1.101>
>> Call-ID: 02C388469A134FC18B97E294E4BD845C0xc0a80165
>> CSeq: 3 REGISTER
>> Max-Forwards: 70
>> User-Agent: SJphone/1.65.377a (SJ Labs)
>> Content-Length: 0
>>
>>
>> 2008-04-06 08:26:36.109 UDP 192.168.1.128:5065->LOCAL
>> SIP/2.0 401 Unauthorized
>> Via: SIP/2.0/UDP
>> 192.168.1.101 
>> ;branch=z9hG4bKc0a801650000001e47f8893c000053f900000006;rport=5060
>>
>> From: "unknown" <sip:1000 at 192.168.1.128:5065>;tag=42f1ed397
>> To: <sip:1000 at 192.168.1.128:5065>;tag=vHv1X7K9yemUe
>> Call-ID: 02C388469A134FC18B97E294E4BD845C0xc0a80165
>> CSeq: 3 REGISTER
>> User-Agent: FreeSWITCH-mod_sofia/1.0.pre4-8038
>> Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, SUBSCRIBE,
>> NOTIFY, REFER, UPDATE, REGISTER, INFO, PUBLISH
>> Supported: 100rel, precondition, timer
>> WWW-Authenticate: Digest realm="192.168.1.128",
>> nonce="3a4ee704-f9a9-4789-9853-e8e8d6b562e9", algorithm=MD5,  
>> qop="auth"
>> Content-Length: 0
>>
>>
>> 2008-04-06 08:26:36.109 UDP LOCAL->192.168.1.128:5065
>> REGISTER sip:192.168.1.128:5065 SIP/2.0
>> Via: SIP/2.0/UDP
>> 192.168.1.101 
>> ;branch=z9hG4bKc0a801650000001f47f8893c00007cb100000008;rport
>> From: "unknown" <sip:1000 at 192.168.1.128:5065>;tag=42f1ed397
>> To: <sip:1000 at 192.168.1.128:5065>
>> Contact: <sip:1000 at 192.168.1.101>
>> Call-ID: 02C388469A134FC18B97E294E4BD845C0xc0a80165
>> CSeq: 4 REGISTER
>> Max-Forwards: 70
>> User-Agent: SJphone/1.65.377a (SJ Labs)
>> Content-Length: 0
>> Authorization: Digest
>> username="1000",realm="192.168.1.128",nonce="3a4ee704- 
>> f9a9-4789-9853-e8e8d6b562e9",uri="sip: 
>> 192.168.1.128 
>> : 
>> 5065 
>> ",response 
>> = 
>> "cd1a36378bdb3efaabcfa263a6b9f24c 
>> ",algorithm=MD5,cnonce="5536ed3a7",qop=auth,nc=00000001
>>
>>
>>
>> 2008-04-06 08:26:36.109 UDP 192.168.1.128:5065->LOCAL
>> SIP/2.0 200 OK
>> Via: SIP/2.0/UDP
>> 192.168.1.101 
>> ;branch=z9hG4bKc0a801650000001f47f8893c00007cb100000008;rport=5060
>>
>> From: "unknown" <sip:1000 at 192.168.1.128:5065>;tag=42f1ed397
>> To: <sip:1000 at 192.168.1.128:5065>;tag=XtNtZ24cvQaea
>> Call-ID: 02C388469A134FC18B97E294E4BD845C0xc0a80165
>> CSeq: 4 REGISTER
>> Contact: "user" <sip:1000 at 192.168.1.101:5060>;expires=60
>> User-Agent: FreeSWITCH-mod_sofia/1.0.pre4-8038
>> Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, SUBSCRIBE,
>> NOTIFY, REFER, UPDATE, REGISTER, INFO, PUBLISH
>> Supported: 100rel, precondition, timer
>> Content-Length: 0
>>
>>
>> 10:26:36 SIP.Registration WARNING   Registrar did not registered  
>> none of
>> our contacts!
>> 10:26:36 SIP.Registration NOTICE    Foreign contacts returned by the
>> server: sip:1000 at 192.168.1.101:5060
>> 10:26:36 SIP.Registration INFO      Not registered
>> sip:1000 at 192.168.1.128:5065
>> 10:26:36 SIP.RegistrationClient INFO      Registration reattempt
>> scheduled after 60 seconds
>> 10:26:36 SIP.Network DEBUG
>> 2008-04-06 08:26:36.234 UDP 192.168.1.128:5065->LOCAL
>> NOTIFY sip:1000 at 192.168.1.101:5060 SIP/2.0
>> Via: SIP/2.0/UDP 192.168.1.128:5065;rport;branch=z9hG4bKc5ZBa6F96yHee
>> Max-Forwards: 70
>> From: <sip:1000 at 192.168.1.128>;tag=y3eK1XNgS000N
>> To: <sip:1000 at 192.168.1.128>
>> Call-ID: feef82f8-7e55-122b-fb8d-000854d1424f
>> CSeq: 97616858 NOTIFY
>> Contact: <sip:mod_sofia at 192.168.1.128:5065>
>> User-Agent: FreeSWITCH-mod_sofia/1.0.pre4-8038
>> Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, SUBSCRIBE,
>> NOTIFY, REFER, UPDATE, REGISTER, INFO, PUBLISH
>> Supported: 100rel, precondition, timer
>> Event: message-summary
>> Subscription-State: terminated;timeout
>> Content-Type: application/simple-message-summary
>> Content-Length: 65
>>
>> Messages-Waiting: no
>> Message-Account: sip:1000 at 192.168.1.128
>>
>>
>> 10:26:36 SIP.Network DEBUG
>> 2008-04-06 08:26:36.234 UDP LOCAL->192.168.1.128:5065
>> SIP/2.0 200 OK
>> Via: SIP/2.0/UDP
>> 192.168.1.128 
>> :5065;branch=z9hG4bKc5ZBa6F96yHee;rport=5065;received=192.168.1.128
>>
>> From: <sip:1000 at 192.168.1.128>;tag=y3eK1XNgS000N
>> To: "unknown" <sip:1000 at 192.168.1.128>;tag=6c19ed424
>> Call-ID: feef82f8-7e55-122b-fb8d-000854d1424f
>> CSeq: 97616858 NOTIFY
>> Content-Length: 0
>> Server: SJphone/1.65.377a (SJ Labs)
>>
>
>
> _______________________________________________
> Freeswitch-dev mailing list
> Freeswitch-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org




More information about the Freeswitch-dev mailing list