У меня возникла проблема в случае изменения SDP сообщения, содержащего
- Content-Length: 0
- \ r \ n \ r \ n в конце сообщения
- строгий установлен на true
В этом случае метод StringMsgParser библиотеки JSIP не обнаруживает неправильное сообщение.Ниже приведен пример:
INVITE sip:mrwhite@10.101.5.120 SIP/2.0
From: \"company\" <sip:company@10.101.6.120>;tag=35b8d8a74ca0f4e34e0adfa7_F10.101.6.120
To: sip:mrwhite@10.101.5.120
Call-ID: f_169eac17a017b0a4e0adfa8_I@10.101.6.120
CSeq: 15 INVITE
Via: SIP/2.0/UDP 10.101.6.120;branch=z9hG4bKf_169eac12baa17054e0adfb3_I
Content-Length: 0
Max-Forwards: 70
Contact: sip:company@10.101.6.120;transport=udp
Content-Type: application/sdp
User-Agent: SIP
Supported: replaces
v=0
o=sip:company@10.101.6.120 1 16 IN IP4 10.101.6.120
s=sip:company@10.101.6.120
c=IN IP4 10.101.6.120
t=0 0
m=audio 5000 RTP/AVP 0 8 18 4 120
a=rtpmap:0 PCMU/8000/1
a=rtpmap:8 PCMA/8000/1
a=rtpmap:18 G729/8000/1
a=fmtp:18 annexb=no
a=rtpmap:4 G723/8000/1
a=rtpmap:120 telephone-event/8000/1
"\r\n at the end"
Нужно ли выполнить какие-либо настройки или это ошибка в библиотеке?
Код StringMsgParser в StringMsgParser.java
// Check for content legth header
if (readBody && message.getContentLength() != null ) {
if ( message.getContentLength().getContentLength() != 0) {
int bodyLength = msgBuffer.length - i;
byte[] body = new byte[bodyLength];
System.arraycopy(msgBuffer, i, body, 0, bodyLength);
message.setMessageContent(body,!strict,computeContentLengthFromMessage,message.getContentLength().getContentLength());
} else if (!computeContentLengthFromMessage && message.getContentLength().getContentLength() == 0 & strict) {
String last4Chars = new String(msgBuffer, msgBuffer.length - 4, 4);
if(!"\r\n\r\n".equals(last4Chars)) {
throw new ParseException("Extraneous characters at the end of the message ",i);
}
}
не обнаруживает неправильное сообщение.Есть что-то, что должно быть установлено, или это ошибка библиотеки?Спасибо