[asterisk-bugs] [JIRA] (ASTERISK-24889) Possible bug: PJSIP: stateless behavior when transport=tcp
Joshua Colp (JIRA)
noreply at issues.asterisk.org
Tue Mar 17 05:41:34 CDT 2015
[ https://issues.asterisk.org/jira/browse/ASTERISK-24889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joshua Colp closed ASTERISK-24889.
----------------------------------
Resolution: Duplicate
> Possible bug: PJSIP: stateless behavior when transport=tcp
> ----------------------------------------------------------
>
> Key: ASTERISK-24889
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-24889
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: pjproject/pjsip
> Affects Versions: 13.2.0
> Environment: OS: Ubuntu 14.04, with all updates
> Kernel: 3.13.0-44-generic
> pjsip: 2.3 from http://www.pjsip.org/release/2.3/pjproject-2.3.tar.bz2 (./configure --prefix=/usr --enable-shared --enable-epoll; make; sudo make install)
> Asterisk: 13.2.0 from http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.2.0.tar.gz (./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var; make; sudo make install)
> Reporter: Anatoli
>
> When an endpoint registers via TCP, PJSIP processes everything as corresponds: the communication is via TCP, REGISTER/ACK pass OK, the endpoint can even establish calls. But, when another endpoint calls to the first one, PJSIP sends INVITE message in a new TCP session to the already opened port.
> So if the registration was performed from TCP 55880 to 5060 and everything except INVITE flows in the same TCP session, INVITE is sent via a new TCP session from a random port on asterisk server (e.g. 32926) to the already opened 55880 port. With tcpdump I see a new SYN packet (and the already established TCP session was not closed/reset yet):
> {noformat}
> From: 10.101.10.1 (asterisk IP)
> To: 10.101.100.100 (endpoint IP)
> Source port: 32926
> Destination port: 55880
> Protocol: TCP
> TCP Data: [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=9227246 TSecr=0 WS=128
> {noformat}
> Naturally, the endpoint responds with a RST,ACK.
> The CLI shows the following:
> {noformat}
> ERROR[19352]: pjsip:0 <?>: tcpc0x7fcdb404 TCP connect() error: Connection refused [code=120111]
> WARNING[19352]: pjsip:0 <?>: tsx0x7fcdb402e Failed to send Request msg INVITE/cseq=31054 (tdta0x7fcdb4034260)! err=120111 (Connection refused)
> {noformat}
> Investigating the code, I've found that to send the INVITE message PJSIP calls pjsip_endpt_send_request_stateless, which, as the name indicates, behaves statelessly, though using TCP.
> Call trace:
> {noformat}
> sip_dialog.c at 1164 pjsip_dlg_send_request(INVITE) => @1214 call to pjsip_tsx_create_uac
> sip_transaction.c at 1266 pjsip_tsx_create_uac => call to pjsip_tsx_create_uac2
> sip_transaction.c at 1273 pjsip_tsx_create_uac2 => @1367 tsx_on_state_null callback assignment
> sip_transaction.c at 2311 tsx_on_state_null => @2351 call to tsx_send_msg
> sip_transaction.c at 2006 tsx_send_msg => @2120 call to pjsip_endpt_send_request_stateless
> {noformat}
> Asterisk 13.2.0, PJSIP 2.3, everything compiled from sources.
> Config: same as in the examples except for one endpoint the transport=<tcp_transport> option is specified.
> Client: a number of softphones, tested with latest Linphone on iPhone, SessionChat (freeware from AppStore), Jitsi on Windows.
> Please let me know if additional information is required.
> Regards,
> Anatoli
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list