[Home]

Summary:ASTERISK-04779: [patch] SIP over TCP project
Reporter:Hyoungjoo Lee (hjlee)Labels:
Date Opened:2005-08-05 00:42:23Date Closed:2006-05-04 15:24:56
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) siptcpchanges2.patch
Description:I added TCP support to asterisk SIP channel. I put all my changes under #ifdef SIP_TCP_SUPPORT and left the original code. So if you search SIP_TCP_SUPPORT, you can find my changes very easily.

My changes
-Added TCP listening socket, siptcpsock.
-Added securechannel, sockfd, transport field to struct sip_pvt.
-Added transport, tcpsockfd field to struct sip_peer.
-Added TCP read in sipsock_read().
-Added siptcp_accept() to accept an incoming TCP connection request.
-Added transport, q parameter processing in Contact header parsing.
-Changed the hard-coded "UDP" in Via header to copy sip_pvt.transport.
-Added tcp_conenct() to make a TCP connection for outgoing message.
-Added TCP transmit in __sip_xmit().
-Saved TCP connecton socket to sip_peer.tcpsockfd, copied it to sip_pvt.sockfd when OPTIONS or INVITE is sent to the peer that is using TCP.

I tested it mainly xlite(UDP only free version) and Jain-SIP communicator. call signal is working well. One problem I am having is Jain-SIP communicator doesn't receive any audio, I don't know why. If any one has xlite-pro(TCP supported commercial version) or TCP supported SIP clients, I am looking forward to hear the test result.

Welcome any comment.
Thanks


****** ADDITIONAL INFORMATION ******

[SIP log data when registration through TCP]

 == Accepted TCP connection fd 7 from 67.177.208.191:1864

<-- Sip read from 67.177.208.191:1864:TCP
REGISTER sip:java.cudenver.edu:5060;transport=tcp SIP/2.0
Call-ID: 646a81a0d2c4f204809de88cc4bf5402@192.168.1.110
CSeq: 1 REGISTER
From: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=10054858
To: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>
Via: SIP/2.0/TCP 192.168.1.110:5065;branch=z9hG4bK05a20d93b52ecd9bf2b13ab113e3c04b
Max-Forwards: 70
Expires: 3600
Contact: "Home1" <sip:192.168.1.110:5065;transport=tcp>
Content-Length: 0


--- (10 headers 0 lines)---
Using latest request as basis request
Sending to 192.168.1.110 : 5065 (non-NAT)
Transmitting (NAT) to 67.177.208.191:1864:
SIP/2.0 100 Trying
Via: SIP/2.0/TCP 192.168.1.110:5065;branch=z9hG4bK05a20d93b52ecd9bf2b13ab113e3c04b;received=67.177.208.191;rport=1864
From: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=10054858
To: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>
Call-ID: 646a81a0d2c4f204809de88cc4bf5402@192.168.1.110
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Contact: <sip:home1@132.194.22.188>
Content-Length: 0


---
Transmitting (NAT) to 67.177.208.191:1864:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TCP 192.168.1.110:5065;branch=z9hG4bK05a20d93b52ecd9bf2b13ab113e3c04b;received=67.177.208.191;rport=1864
From: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=10054858
To: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=as035f3b88
Call-ID: 646a81a0d2c4f204809de88cc4bf5402@192.168.1.110
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Contact: <sip:home1@132.194.22.188>
WWW-Authenticate: Digest realm="asterisk", nonce="16a4031e"
Content-Length: 0


---
Scheduling destruction of call '646a81a0d2c4f204809de88cc4bf5402@192.168.1.110' in 15000 ms
Destroying call '760114b0476b67f72df26ed64db7c2cb@132.194.22.188'

<-- Sip read from 67.177.208.191:1864:TCP
REGISTER sip:java.cudenver.edu:5060;transport=tcp SIP/2.0
Call-ID: 646a81a0d2c4f204809de88cc4bf5402@192.168.1.110
CSeq: 2 REGISTER
Via: SIP/2.0/TCP 192.168.1.110:5065;branch=z9hG4bK031ede41ad4112cec0c597d3f45f935b
Max-Forwards: 70
Expires: 3600
Contact: "Home1" <sip:192.168.1.110:5065;transport=tcp>
Authorization: Digest username="home1",realm="asterisk",nonce="16a4031e",uri="sip:java.cudenver.edu:5060;transport=tcp",response="80d8d3bb7e60b043b7c4220ceddb6552"
From: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=10054858
To: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>
Content-Length: 0


--- (11 headers 0 lines)---
Using latest request as basis request
Sending to 192.168.1.110 : 5065 (NAT)
Transmitting (NAT) to 67.177.208.191:1864:
SIP/2.0 100 Trying
Via: SIP/2.0/TCP 192.168.1.110:5065;branch=z9hG4bK031ede41ad4112cec0c597d3f45f935b;received=67.177.208.191;rport=1864
From: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=10054858
To: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>
Call-ID: 646a81a0d2c4f204809de88cc4bf5402@192.168.1.110
CSeq: 2 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Contact: <sip:home1@132.194.22.188>
Content-Length: 0


---
   -- Contact header: transport tcp
poking home1: transport TCP, sockfd 7
11 headers, 0 lines
Reliably Transmitting (no NAT) to 67.177.208.191:1864:
OPTIONS sip:@67.177.208.191:1864 SIP/2.0
Via: SIP/2.0/TCP 132.194.22.188:5060;branch=z9hG4bK57277ae7
From: "asterisk" <sip:asterisk@132.194.22.188>;tag=as64a24e83
To: <sip:@67.177.208.191:1864>
Contact: <sip:asterisk@132.194.22.188>
Call-ID: 14a5e6ac33780b7a3b1d1cf739886db7@132.194.22.188
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX
Date: Thu, 04 Aug 2005 23:18:38 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Content-Length: 0


---
   -- Registered SIP 'home1' at 67.177.208.191 port 1864 expires 3600
Transmitting (NAT) to 67.177.208.191:1864:
SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.168.1.110:5065;branch=z9hG4bK031ede41ad4112cec0c597d3f45f935b;received=67.177.208.191;rport=1864
From: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=10054858
To: "Home1" <sip:home1@cudenver.edu:5065;transport=tcp>;tag=as035f3b88
Call-ID: 646a81a0d2c4f204809de88cc4bf5402@192.168.1.110
CSeq: 2 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Expires: 3600
Contact: <sip:192.168.1.110:5065>;expires=3600
Date: Thu, 04 Aug 2005 23:18:38 GMT
Content-Length: 0


---
Scheduling destruction of call '646a81a0d2c4f204809de88cc4bf5402@192.168.1.110' in 15000 ms

<-- Sip read from 67.177.208.191:1864:TCP
SIP/2.0 501 Not implemented
Via: SIP/2.0/TCP 132.194.22.188:5060;branch=z9hG4bK57277ae7
From: "asterisk" <sip:asterisk@132.194.22.188>;tag=as64a24e83
To: <sip:@67.177.208.191:1864>;tag=-2062486396
Call-ID: 14a5e6ac33780b7a3b1d1cf739886db7@132.194.22.188
CSeq: 102 OPTIONS
Content-Length: 0
Comments:By: Hyoungjoo Lee (hjlee) 2005-08-05 00:48:57

Sorry, I mistakenly create the same bug twice. This is same as bug ASTERISK-4778, so please close this bug.