【问题标题】:Why am I getting SIP response 400: Bad Session Description?为什么我收到 SIP 响应 400:错误的会话描述?
【发布时间】:2013-12-02 19:09:57
【问题描述】:

我使用 wireshark 将以下 SIP INVITE 数据报从 Linphone 转储到带有 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 Bad Session Description。

当这条消息最初由 Linphone 发送时,FreeSwitch 以 200 OK 响应。

【问题讨论】:

    标签: sip freeswitch sdp


    【解决方案1】:

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

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

    【讨论】:

    • 可能“Content-Length: 205”不是真正的长度
    • 谢谢@StanislavSinyagin,你总是很快回答。这一次,删除多余的空格解决了问题。
    【解决方案2】:

    显然 FreeSwitch 不能容忍它们。

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

    【讨论】:

    • 我不是在责怪 FreeSwitch,我是在陈述一个事实。我的 SIP 消息有额外的空格,删除它们可以解决问题。诚然,内容长度也是错误的,但在这种情况下并不重要。
    • Atilla,不完全正确:您错误的内容长度告诉接收者在 205 个字节后切断所有内容。所以,最后一行在中间被剪掉了,这确实是会话描述的错误格式
    • @AtillaFiliz 您的 SDP 有 213 个字符。因此,将 Content-Length 设置为 213 即可。删除空格是有效的,因为在删除尾随空格后,SDP 确实包含 205 个字符。
    • 非常感谢你们。
    猜你喜欢
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多