我有一个奇怪的问题,pjsip在发送ack时忽略了记录路由信息。下面是来自日志的sip消息流:
INVITE sip:+110@xxx.com;transport=tls SIP/2.0
Via: SIP/2.0/TLS ipv4.addr:38890;rport;branch=z9hG4bKPjdYP6TZrj4w7v8kicC3cBgABBNb47QHH2;alias
Max-Forwards: 70
From: "+558" <sip:+558@xxx.com>;tag=qfc3TEYcpfIBQHVXMOmh.7pyvqgmVdMh
To: sip:+110@xxx.com
Contact: "+558" <sip:+558@xxx.com>
Call-ID: 7FdLGhQ1L5BjAQsUrCPEOB3WbXipRfs1
CSeq: 18162 INVITE
Route: <sip:xxx.com:5061;transport=tls;lr>
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
User-Agent: SecuVOICE BB10 CSE 2.14.0.1 on Z10 10.3.1.2243
Authorization: Digest xxxx
Content-Type: application/x-x509-user-cert
Content-Length:
SIP/2.0 200 OK
Max-Forwards: 10
Via: SIP/2.0/TLS ipv4.addr:38890;rport=38890;received=ipv4.addr;branch=z9hG4bKPjdYP6TZrj4w7v8kicC3cBgABBNb47QHH2;alias
Record-Route:<sip:xxx.com:5061;transport=tls;lr;ftag=qfc3TEYcpfIBQHVXMOmh.7pyvqgmVdMh;cookie_=e43.052768f7>
Call-ID: 7FdLGhQ1L5BjAQsUrCPEOB3WbXipRfs1
From: "+558" <sip:+558@xxx.com>;tag=qfc3TEYcpfIBQHVXMOmh.7pyvqgmVdMh
To: <sip:+110@xxx.com>;tag=RuDb.RX-9YD0V.BKh0rpj61-SK-ORE5B
CSeq: 18162 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Contact: "+110" <sip:+110@ipv4.addr:25365>
Supported: replaces, 100rel, timer, norefersub
Content-Type: multipart/mixed;boundary=SBC1hJLGTAfp3t2j3HYWIvvgUBsC1RpJ
Content-Length: 27
ACK sip:+110@ipv4.addr:25365 SIP/2.0
"+110" <sip:+110@ipv4.addr:25365>
Via: SIP/2.0/TLS ipv4.addr:38890;rport;branch=z9hG4bKPjkp-dUZmmgpXNWrZHe2ykqvrr9CgRvlm2;alias
Max-Forwards: 70
From: "+558" <sip:+558@xxx.com>;tag=qfc3TEYcpfIBQHVXMOmh.7pyvqgmVdMh
To: sip:+110@xxx.com;tag=RuDb.RX-9YD0V.BKh0rpj61-SK-ORE5B
Call-ID: 7FdLGhQ1L5BjAQsUrCPEOB3WbXipRfs1
CSeq: 18162 ACK
Route: <sip:xxx.com:5061;transport=tls;lr;ftag=qfc3TEYcpfIBQHVXMOmh.7pyvqgmVdMh;cookie_=e43.052768f7>
Content-Type: application/sdp
Content-Length: 709
从200 OK查看记录路由,我期望ACK看起来像ACK sip:+110@ipv4.addr:25365;transport=tls;lr SIP2.0
为什么pjsip忽略传输uri参数?
发布于 2015-04-14 04:39:02
接收到的记录-路由在对话框中的一个新的传出请求中被复制为路由。
例外情况是,记录路由URI不带";lr“参数。这是与RFC 2543向后兼容的行为。
传出请求的请求URI设置为接收到的联系人标头。
UAC使用远程目标和路由集来构建请求的请求-URI和路由头字段。 如果路由集为空,则UAC必须将远程目标URI放置到请求URI中。UAC不能向 请求。 如果路由集不是空的,并且路由集中的第一个URI 包含lr参数(见19.1.1节),UAC必须将 请求URI中的远程目标URI,必须包括一个路由 包含按顺序排列的路由集值的标头字段,包括 参数。 如果路由集不是空的,并且它的第一个URI不包含lr参数,那么UAC必须将第一个URI从路由集中放置到Request中,去掉请求URI中不允许的任何参数。UAC必须添加一个路由标头字段,该字段按顺序包含路由集值的其余部分,包括所有参数。然后,UAC必须将远程目标URI作为最后一个值放置到路由标头字段中。
路由集要么是预先配置的,要么是通过记录路由学习的.
当从另一方接收联系人标头时,将更新目标URI。
https://stackoverflow.com/questions/29627471
复制