Ticket #842: Error parsing status line in sipfrag message body in call transfer scenario (thanks Tomáš Valenta for the report!)

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2695 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsip/sip_parser.c b/pjsip/src/pjsip/sip_parser.c
index e86cf60..a5a8e03 100644
--- a/pjsip/src/pjsip/sip_parser.c
+++ b/pjsip/src/pjsip/sip_parser.c
@@ -1588,7 +1588,8 @@
     PJ_USE_EXCEPTION;
 
     pj_bzero(status_line, sizeof(*status_line));
-    pj_scan_init(&scanner, buf, size, 0, &on_syntax_error);
+    pj_scan_init(&scanner, buf, size, PJ_SCAN_AUTOSKIP_WS_HEADER, 
+		 &on_syntax_error);
 
     PJ_TRY {
 	int_parse_status_line(&scanner, status_line);
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 746ef0a..5a34d0e 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -3415,7 +3415,7 @@
 	    msg = rdata->msg_info.msg;
 	    body = msg->body;
 	    if (!body) {
-		PJ_LOG(4,(THIS_FILE, 
+		PJ_LOG(2,(THIS_FILE, 
 			  "Warning: received NOTIFY without message body"));
 		return;
 	    }
@@ -3424,7 +3424,7 @@
 	    if (pj_stricmp2(&body->content_type.type, "message") != 0 ||
 		pj_stricmp2(&body->content_type.subtype, "sipfrag") != 0)
 	    {
-		PJ_LOG(4,(THIS_FILE, 
+		PJ_LOG(2,(THIS_FILE, 
 			  "Warning: received NOTIFY with non message/sipfrag "
 			  "content"));
 		return;
@@ -3434,7 +3434,7 @@
 	    status = pjsip_parse_status_line((char*)body->data, body->len, 
 					     &status_line);
 	    if (status != PJ_SUCCESS) {
-		PJ_LOG(4,(THIS_FILE, 
+		PJ_LOG(2,(THIS_FILE, 
 			  "Warning: received NOTIFY with invalid "
 			  "message/sipfrag content"));
 		return;
diff --git a/pjsip/src/test/msg_test.c b/pjsip/src/test/msg_test.c
index 0d922a5..d4a7f14 100644
--- a/pjsip/src/test/msg_test.c
+++ b/pjsip/src/test/msg_test.c
@@ -815,10 +815,17 @@
 
 static pj_status_t simple_test(void)
 {
+    char stbuf[] = "SIP/2.0 180 Ringing like it never rings before";
     unsigned i;
+    pjsip_status_line st_line;
     pj_status_t status;
 
     PJ_LOG(3,(THIS_FILE, "  simple test.."));
+    
+    status = pjsip_parse_status_line(stbuf, pj_ansi_strlen(stbuf), &st_line);
+    if (status != PJ_SUCCESS)
+	return status;
+
     for (i=0; i<PJ_ARRAY_SIZE(test_array); ++i) {
 	pj_pool_t *pool;
 	pool = pjsip_endpt_create_pool(endpt, NULL, POOL_SIZE, POOL_SIZE);