SIP SUBSCRIBE收到多个NOTIFY

时间:2013-01-06 23:35:04

标签: sip voip pjsip subscribe

我正在编写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开发

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

从评论中看,问题似乎是您没有向客户发送有效的回复,因此它正在发送每个NOTIFY请求的多次重传。

要生成有效的响应,关键方面是您必须将Via分支参数和CSeq设置为与请求相同的值,请参阅RFC 3261, section 17.1.3