JSIP - StringMsgParser сообщения SDP с Content-Lenght = 0 и \ r \ n \ r \ n в конце сообщения - PullRequest
0 голосов
/ 19 ноября 2018

У меня возникла проблема в случае изменения 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);
           }
       } 

не обнаруживает неправильное сообщение.Есть что-то, что должно быть установлено, или это ошибка библиотеки?Спасибо

...