为什么我得到SIP响应400:会话描述错误?

时间:2013-11-19 09:42:58

标签: sip freeswitch sdp

我使用wireshark将以下来自Linphone的SIP INVITE数据报转储到具有CR-LF换行符的文件中:

INVITE sip:1002@172.16.76.21 SIP/2.0 
Via: SIP/2.0/UDP 172.16.76.21:5060;rport;branch=z9hG4bK1936726928 
From: <sip:1555@172.16.76.21>;tag=1350138383 
To: <sip:1002@172.16.76.21> 
Call-ID: 1393698667 
CSeq: 20 INVITE 
Contact: <sip:1555@172.16.76.20> 
Content-Type: application/sdp 
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO 
Max-Forwards: 70 
User-Agent: Linphone/3.5.2 (eXosip2/3.6.0) 
Subject: Phone call 
Content-Length:   205 

v=0 
o=1555 1125 1125 IN IP4 172.16.76.21 
s=Talk 
c=IN IP4 172.16.76.21
t=0 0 
m=audio 7078 RTP/AVP 8 0 101 
a=rtpmap:8 PCMA/8000 
a=rtpmap:0 PCMU/8000 
a=rtpmap:101 telephone-event/8000 
a=fmtp:101 0-11

我编写了一个简单的Python脚本,它读取文件二进制文件,放入UDP数据报并通过绑定到端口5060的套接字发送。当我将其发送到运行用户代理的客户端时,我得到200 OK。当我尝试将它发送到我们的SIP代理FreeSwitch时,我收到了400个错误的会话描述。

当Linphone最初发送此消息时,FreeSwitch以200 OK回复。

2 个答案:

答案 0 :(得分:1)

  

显然FreeSwitch不会容忍它们。

这不是FreeSwitch的问题。正如@Stanislav在评论中所建议的那样,你的“内容长度”值是错误的。对于您的会话描述,它必须是“Content-Length:213”。

答案 1 :(得分:0)

这些行中的大多数都有额外的空格。显然FreeSwitch不容忍他们。删除尾随空格有效。

内容长度也是错误的。它应该是213。