[Home]

Summary:ASTERISK-12835: Asterisk won't register if SIP-port at peer differ than local (5060)
Reporter:performer (performer)Labels:
Date Opened:2008-10-07 00:37:31Date Closed:2008-12-10 09:22:40.000-0600
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Channels/chan_sip/Registration
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:The problem happens because Asterisk fills 'Contact' header in SIP-message using remote port number instead local port number.

Example:
REGISTER sip:sip.asterisk.xxx.com:55060 SIP/2.0
Via: SIP/2.0/UDP 83.167.107.46:0;branch=z9hG4bK47cfc028
Max-Forwards: 70
From: <sip:12345678@sip.asterisk.xxx.com>;tag=as5f389822
To: <sip:12345678@sip.asterisk.xxx.com>
Call-ID: 099f43ef434287c457a3d793535e9df7@yyy.ru
CSeq: 3084 REGISTER
User-Agent: SweetHome Agent
Expires: 120
Contact: <sip:s@83.137.137.146:55060>
Event: registration
Content-Length: 0

My solution:
diff chan_sip.c.bak chan_sip.c
2628c2628
<               p->socket.port = htons(r->portno);
---
>               // p->socket.port = htons(r->portno);
Comments:By: performer (performer) 2008-10-07 00:46:18

Sorry, reproducibility is always.

By: Digium Subversion (svnbot) 2008-12-10 09:22:39.000-0600

Repository: asterisk
Revision: 162619

U   trunk/channels/chan_sip.c

------------------------------------------------------------------------
r162619 | file | 2008-12-10 09:22:38 -0600 (Wed, 10 Dec 2008) | 4 lines

When transmitting a register set the socket port to the local one for the transport being used, not the port for the remote server.
(closes issue ASTERISK-12835)
Reported by: performer

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=162619