SIP获得407响应BYE请求

时间:2012-12-28 08:13:43

标签: sip jain-sip sip-server

在我的VOIP应用程序中,我发送邀请请求(INVITEE_NUMBER),并在被邀请者接听电话时获得200 OK响应,

但是当我发送Bye请求终止呼叫时,我从服务器获得407响应代码,我应该将其视为未经认证的响应还是我犯了一些错误。

请参阅SIP Flow,

向INVITEE_NUMBER发送BYE请求

BYE sip:INVITEE_NUMBER@SERVER_ADDRESS:PORT_NO SIP/2.0
Via: SIP/2.0/UDP SERVER_ADDRESS:PORT_NO;branch=z9hG4bKe474296b56f64451ba78152b5ecd2e6c;
To: <sip:INVITEE_NUMBER@SERVER_ADDRESS:PORT_NO>;tag=fe65e252-2245-3d98-cec9-31e2f05efe9d
From: "" <sip:MY_SIP_NO@SERVER_ADDRESS:PORT_NO>;tag=1193168134
Call-ID: 0401186002ac45deaebf746061ec29cc
CSeq: 3 BYE
Max-Forwards: 70
Route: <sip:SERVER_ADDRESS:PORT_NO;lr>
Content-Length: 0

来自服务器的响应

SIP/2.0 407 Proxy Authentication required
Via: SIP/2.0/UDP SERVER_ADDRESS:PORT_NO;branch=z9hG4bKe474296b56f64451ba78152b5ecd2e6c;rport=5061;received=124.40.244.4
To: <sip:INVITEE_NO@SERVER_ADDRESS:PORT_NO>;tag=fe65e252-2245-3d98-cec9-31e2f05efe9d
From: "" <sip:MY_NUMBER@SERVER_ADDRESS:PORT_NO>;tag=1193168134
Call-ID: 0401186002ac45deaebf746061ec29cc
CSeq: 3 BYE
Max-Forwards: 70
Proxy-Authenticate: Digest realm="vo.packet8.net",nonce="cf319a6e81ade8f6be8d658a6a0e86ca",qop=auth,opaque="",algorithm=MD5
Content-Length: 0

这是预期的,还是有问题或客户端或服务器端?

1 个答案:

答案 0 :(得分:2)

理论上,接收用户代理可以挑战任何请求,包括BYE。此外,请求路径中的任何有状态代理也可以质询请求。在这两种情况下,客户端都必须使用其凭据重新提交请求。

我在SIP RFC中找不到任何专门处理BYE请求授权的内容,但“12.2.2 UAS Behavior”的引用确实表明对话内请求确实需要支持授权:

  

如果代理质疑UAC生成的请求,则UAC具有         使用凭据重新提交请求。重新提交的请求         将有一个新的CSeq号码。 UAS永远不会看到第一个         请求,因此,它会注意到CSeq数字空间中的间隙。         这样的差距并不代表任何错误情况。

有人说BYE请求被挑战是非常不寻常的,我怀疑周围有很多SIP堆栈无法正确处理它。正如Frank所暗示的那样,我倾向于通过查看OK响应中的Record-Route头来检查请求路由,并确保将BYE发送到正确的目的地。