我目前正在尝试将两个 Lync 域与中间的一个自定义 SIP 代理联合起来。问题是,通过代理后,前端服务器将回复“413 - 实体太大”以订阅来自另一个 Lync 域的请求。
但是,当我使用 SIP 模拟器 SIPp 发送类似消息时,即使通过代理,订阅也会被接受。
这两个消息非常相似。代理添加了一条记录路由,并在 From 标签的末尾附加了一个 ID。它不会触及正文。
content-length 的差异是因为 SIPp 在主体末尾添加了 CRLF,而 Lync 没有。
我看不出该请求有什么问题。目标域的 Lync Edge 上记录了以下消息。
LYNC 订阅 - 被拒绝
Start-Line: SUBSCRIBE sip:[email protected] SIP/2.0
From: <sip:[email protected]>;epid=75bdd22553;tag=vl57cpy2rb72lu15i7awk22h0100003f1410
To: <sip:[email protected]>
CSeq: 1 SUBSCRIBE
Call-ID: 3ad1662aa2d84bc5a7de15f5d2ecd0be
Record-Route: <sip:smf1.testucfed.com:5061;lr>
Max-Forwards: 68
Via: SIP/2.0/TLS smf1.testucfed.com:5061;branch=z9hG4bKfspbWpOjnrsr3kELP8S9
Via: SIP/2.0/TCP 10.0.0.6:5060;branch=z9hG4bKfspbkK8M7FQrQmqN99a9
User-Agent: UCCAPI/4.0.7577.4103 OC/4.0.7577.4109 (Microsoft Lync 2010)
Event: presence
Accept: application/msrtc-event-categories+xml, application/xpidf+xml, text/xml+msrtc.pidf, application/pidf+xml, application/rlmi+xml, multipart/related
Supported: com.microsoft.autoextend
Supported: ms-piggyback-first-notify
ms-asserted-verification-level: ms-source-verified-user=verified
Content-Type: application/msrtc-adrl-categorylist+xml
Content-Length: 464
Contact: <sip:smf1.testucfed.com:5061>
Message-Body:
<batchSub xmlns="http://schemas.microsoft.com/2006/01/sip/batch-subscribe" uri="sip:[email protected]" name="">
<action name="subscribe" id="104999392">
<adhocList>
<resource uri="sip:[email protected]"/>
</adhocList>
<categoryList xmlns="http://schemas.microsoft.com/2006/09/sip/categorylist">
<category name="state"/>
<category name="note"/>
<category name="services"/>
<category name="contactCard"/>
<category name="calendarData"/>
</categoryList>
</action>
</batchSub>
SIPp 订阅 - 已接受
Start-Line: SUBSCRIBE sip:[email protected] SIP/2.0
From: <sip:[email protected]>;epid=75bdd22553;tag=1iy5s1s4humjf184oeqyeitztd0100003f1410
To: <sip:[email protected]>
CSeq: 1 SUBSCRIBE
Call-ID: [email protected]
Record-Route: <sip:smf1.testucfed.com:5061;lr>
Max-Forwards: 68
Via: SIP/2.0/TLS smf1.testucfed.com:5061;branch=z9hG4bKfspbIP0PgNyO4vZelNvG
Via: SIP/2.0/TCP 10.0.0.6:5060;branch=z9hG4bKfspbWS366kCidcbxJt9m
Event: presence
Accept: application/msrtc-event-categories+xml, application/xpidf+xml, text/xml+msrtc.pidf, application/pidf+xml, application/rlmi+xml, multipart/related
User-Agent: UCCAPI/4.0.7577.4103 OC/4.0.7577.4109 (Microsoft Lync 2010)
Supported: com.microsoft.autoextend
Supported: ms-piggyback-first-notify
ms-asserted-verification-level: ms-source-verified-user=verified
Content-Type: application/msrtc-adrl-categorylist+xml
Content-Length: 466
Contact: <sip:smf1.testucfed.com:5061>
Message-Body:
<batchSub xmlns="http://schemas.microsoft.com/2006/01/sip/batch-subscribe" uri="sip:[email protected]" name="">
<action name="subscribe" id="104999648">
<adhocList>
<resource uri="sip:[email protected]"/>
</adhocList>
<categoryList xmlns="http://schemas.microsoft.com/2006/09/sip/categorylist">
<category name="state"/>
<category name="note"/>
<category name="services"/>
<category name="contactCard"/>
<category name="calendarData"/>
</categoryList>
</action>
</batchSub>
回复
Start-Line: SIP/2.0 413 Request entity too large
From: <sip:[email protected]>;epid=75bdd22553;tag=vl57cpy2rb72lu15i7awk22h0100003f1410
To: <sip:[email protected]>;tag=5F72F2201902C33E22FE6C4063EC56AD
CSeq: 1 SUBSCRIBE
Call-ID: 3ad1662aa2d84bc5a7de15f5d2ecd0be
Via: SIP/2.0/TLS 10.0.0.7:38020;branch=z9hG4bKDA21D3D8.2E84E1112774D915;branched=FALSE;ms-received- port=38020;ms-received-cid=400
Via: SIP/2.0/TLS smf1.testucfed.com:5061;branch=z9hG4bKfspbWpOjnrsr3kELP8S9;received=212.166.45.124;ms-received-port=51456;ms-received-cid=A3300
Via: SIP/2.0/TCP 10.0.0.6:5060;branch=z9hG4bKfspbkK8M7FQrQmqN99a9
ms-diagnostics: 4008;reason="Input data too large - One of the paramaters to the sproc exceeds limit";source="ARIW002.lync2.com"
Server: RTC/4.0
Content-Length: 0
Message-Body: –
有人知道什么会引发此错误吗?错误消息在这里确实没有太大帮助...
如能得到帮助我将非常感激!
谢谢
答案1
我终于发现了问题所在。
Lync 服务器存储的“Dialog ID”是“Call-ID”+“From tag”+“To tag”。由于在“From tag”末尾附加了一些额外数据,“Dialog ID”的大小超出了其限制大小。