Servlets 为什么在发送寄存器消息时删除了P-Vector头?

Servlets 为什么在发送寄存器消息时删除了P-Vector头?,servlets,sip,telecommunication,jain-sip,Servlets,Sip,Telecommunication,Jain Sip,我尝试向I-CSCF发送注册信息,如下所示。P-Charging-Vector标头添加到消息中,如下面的日志所示。我检查了发送出去的数据包,这个头被删除了。似乎在SipServletRequestImpl.send()之后运行的代码删除了它。 另一个问题与其中的orig ioi参数有关。它被设置为orig ioi=“类型1cscf@homedomain.com“但引号已被删除,正如您在下面的注册消息中所看到的 你知道这个问题吗?这是一个已知的bug还是一个限制 代码如下: sipFactory

我尝试向I-CSCF发送注册信息,如下所示。P-Charging-Vector标头添加到消息中,如下面的日志所示。我检查了发送出去的数据包,这个头被删除了。似乎在SipServletRequestImpl.send()之后运行的代码删除了它。 另一个问题与其中的orig ioi参数有关。它被设置为orig ioi=“类型1cscf@homedomain.com“但引号已被删除,正如您在下面的注册消息中所看到的

你知道这个问题吗?这是一个已知的bug还是一个限制

代码如下:

sipFactory = (SipFactory) envCtx.lookup("sip/wae-base-sipt/SipFactory");
SipApplicationSession appSession = sipFactory.createApplicationSession();
SipServletRequest req = sipFactory.createRequest(appSession, "REGISTER",   "bob@yahoo.com", "bob@yahoo.com");
String icid = java.util.UUID.randomUUID().toString();
req.addHeader("P-Charging-Vector", "icid-value" + "=\"" + icid + "@47.168.150.25\";" +"orig-ioi=\"Type 1cscf@homedomain.com\"");
其产出:

Message:
DEBUG [org.mobicents.servlet.sip.message.SipServletRequestImpl] Sending the request REGISTER sip:kk1ims1.com:5060;transport=TCP SIP/2.0
Call-ID: 754594ab40ed56ac1cfa652f88364594@10.15.3.11
CSeq: 1 REGISTER
From: <sip:u6003@kk1ims1.com>;tag=28124480_0efbfc5e_9721c6b0-76c7-4c86-a352-361f52731204
To: <sip:u6003@kk1ims1.com>
Max-Forwards: 70
Route: <sip:10.15.3.11:5065;lr;transport=udp;node_host=10.15.3.11;node_port=5180>
Route: <sip:27.14.2.1:5060;lr>
P-Charging-Vector: icid-value="18234_1374589491316@27.14.152.1";orig-ioi=Type 1cscf@homedomain.com
User-Agent: WAM 7.0
Expires: 600000
Contact: <sip:u6003@27.14.152.1:5060;domain=kk1ims1.com>;maddr=27.14.152.1;g.3gpp.icsi_ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";video;sip.instance="<urn:uuid:sip:u6003@kk1ims1.comsip:u6003@kk1ims1.com>"
Supported: path
Authorization: Digest username="u6003@kk1ims1.com",uri="sip:u6003@kk1ims1.com:5060",response="",integrity-protected=no
P-Visited-Network-ID: Leia
Require: path
Path: <sip:pcscf@27.14.152.1:5060;lr;net-orig>
Via: SIP/2.0/UDP 27.14.152.1:5060;branch=z9hG4bK9721c6b0-76c7-4c86-a352-361f52731204_0efbfc5e_649047033197297
Content-Length: 0

Packets:
10.15.3.11 (Src Port: 5180) ->  10.15.3.11 (Dst Port: ca-2 (5065)) => Header exists in packet 
27.14.152.1  (Src Port: 5060) ->  27.14.2.1 (Dst Port: ca-2 (5065))  => Header does not exist in packet
输出:

p-Charging-Vector:icid值=“218ace3d-12e7-4eb6-87a2-0bc7a744743d@47.168.150.25";原始ioi=1cscf@homedomain.com

提前谢谢


hozlem

JSIP不喜欢第二个参数周围缺少引号。要传递,标题应如下所示:

P-Charging-Vector: icid-value="18234_1374589491316@27.14.152.1";orig-ioi="Type 1cscf@homedomain.com"

我不确定它是否正式需要,但JSIP需要它。我可以在有更多时间时查看并修复它。

gov.nist.javax.sip.parser.ims.PChargingVectorParser尝试使用gov.nist.core.ParserCore.nameValue()方法解析名称/值对。您可以在两个位置“修复它”,或者干脆跳过标题解析器。您的意思是应该修改PCChargingVectorParser类中的解析方法,并且可以跳过“super.parse(chargingVector);”行?你是否知道这是一个已知的bug,或者我是第一个遇到这个问题的人?谢谢你,hozlemOh,现在我看到你正试图发送带有引号的请求,但是它们在发送时被剥离,在负载平衡器的下一跳中完全丢失。这是有道理的。在这种情况下,我需要看看如何创建P-Charging-Vector报头,因为我在这里做了一个测试,它看起来是正常引用的。请粘贴代码。您好,我通过添加您要求的代码更新了问题。主要问题是,在将SIP寄存器消息从SLB发送到I-CSCF时,从SIP寄存器消息中删除了P-Vector。这可能是它的原因。谢谢,您使用的是哪个版本的JSIP?我认为最新版本没有这个问题。你的意思是应该修改PCChargingVectorParser类中的parse方法,并且可以跳过“super.parse(chargingVector);”行?你是否知道这是一个已知的bug,或者我是第一个遇到这个问题的人?谢谢你,霍兹勒姆
P-Charging-Vector: icid-value="18234_1374589491316@27.14.152.1";orig-ioi="Type 1cscf@homedomain.com"