我正在使用 mss (mobicents sip servlets) 构建一个 SIP 应用程序。
P-Charging-Vector 具有 icid-value 和 icid-generated-at 参数。
根据 rfc3455 和 rfc3261,icid-value 和 icid-generated-at 参数可以采用以下形式:“["IPv6address "]"。
我正在使用 jain-sip-ri 版本 1.2.242 并面临两个问题:
1) 如果我收到一个 SIP 请求,其 icid-value 格式为“[”IPv6address“]”,
例如:
P-Charging-Vector: icid-value=[2a02:ed0:1000:3033::249];orig-ioi=1223abc4;icid-generated-at=[2a02:ed0:1000:3033::249]
我收到以下异常,并且 header 已被 sip 堆栈删除:
java.text.ParseException: [C@53fad5b4
Expecting >>>;<<< got >>>[<<<
at gov.nist.core.LexerCore.match(LexerCore.java:287)
at gov.nist.javax.sip.parser.ims.PChargingVectorParser.parse(PChargingVectorParser.java:81)
at gov.nist.javax.sip.parser.StringMsgParser.processHeader(StringMsgParser.java:294)
at gov.nist.javax.sip.parser.StringMsgParser.parseSIPMessage(StringMsgParser.java:179)
at gov.nist.javax.sip.stack.UDPMessageChannel.processIncomingDataPacket(UDPMessageChannel.java:357)
at gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:317)
at java.lang.Thread.run(Thread.java:745)
2) 如果我尝试使用 icid-value 或 icid-generated-at 参数以“[”IPv6address“]”格式生成 P-Charging-Vector,我会遇到相同的 Parse 异常。
这似乎没有遵循 rfc。
最佳答案
目前一些 IMS header 解析器不支持完整的 https://www.rfc-editor.org/rfc/rfc3455#section-5.6语法,根据“gen-value”支持(包括 RFC3261 定义的“host”,其中包括您需要的 IPv6reference 定义)。对于其他一些 IMS header (fe P-Charging-Function-Addresses...)也是如此。
我创建了这个问题来跟踪这个偏差 https://github.com/RestComm/jain-sip/issues/105 .如果您有兴趣做出贡献,我将指导您如何在不同的解析器中重用现有代码,以启用此功能。你怎么看?
问候
关于java - jain-sip-ri 的 PChargingVectorParser 不接受 P-Charging-Vector 的 icid-value 中的 IPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37856517/