我正在编写SIP客户端,在将SUBSCRIBE
用于现有客户端(不同的免费软件)时,我遇到了一些奇怪的问题
我正在使用自己的服务器,但这不是问题,因为如果我从不同的客户端(pjsip)做SUBSCRIBE
,那一切都运行正常。
我发送了这条SUBSCRIBE
消息:
SUBSCRIBE sip:3009@10.0.0.4 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.7:5060;rport;branch=z9hG4bKPj3893ccd****************
Max-Forwards: 70
From: <sip:10.0.0.7>;tag=023a965a14a143eb8*******
To: sip:3009@10.0.0.5;tag=8cfb7*********
Contact: <sip:10.0.0.7:5060;ob>
Call-ID: bf5d48fe8ca0***************
CSeq: 14388 SUBSCRIBE
Route: <sip:10.0.0.5;lr;ftag=023a965a14a143eb8*********>
Event: presence
Expires: 600
Supported: replaces, 100rel, timer, norefersub
Accept: application/pidf+xml, application/xpidf+xml
Allow-Events: presence, message-summary, refer
Content-Length: 0
在该消息之后,收到了OK
,但随后我收到了NOTIFY
消息,表示自从他注册到服务器后其他客户端所做的每次状态更改。
不同的客户不会发生这个问题..
如果重要,我正在Windows 7 64bit上Visual Studio 2008
开发
有什么想法吗?
谢谢!
答案 0 :(得分:3)
从评论中看,问题似乎是您没有向客户发送有效的回复,因此它正在发送每个NOTIFY请求的多次重传。
要生成有效的响应,关键方面是您必须将Via分支参数和CSeq设置为与请求相同的值,请参阅RFC 3261, section 17.1.3。