summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2009-05-12 15:55:09 +0000
committerBenny Prijono <bennylp@teluu.com>2009-05-12 15:55:09 +0000
commit563c9c9854f072e3162bea977ced8b7ac40cf57b (patch)
tree8569d2d1d275dd0f20796957ee273e35d88af752 /pjsip
parentcd3fb1c8385ed3eb7568e6d0281e0d1faa92536b (diff)
Ticket #842: Error parsing status line in sipfrag message body in call transfer scenario (thanks Tomáš Valenta for the report!)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2695 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip/sip_parser.c3
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c6
-rw-r--r--pjsip/src/test/msg_test.c7
3 files changed, 12 insertions, 4 deletions
diff --git a/pjsip/src/pjsip/sip_parser.c b/pjsip/src/pjsip/sip_parser.c
index e86cf601..a5a8e033 100644
--- a/pjsip/src/pjsip/sip_parser.c
+++ b/pjsip/src/pjsip/sip_parser.c
@@ -1588,7 +1588,8 @@ PJ_DEF(pj_status_t) pjsip_parse_status_line( char *buf, pj_size_t size,
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 746ef0ad..5a34d0ea 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -3415,7 +3415,7 @@ static void xfer_client_on_evsub_state( pjsip_evsub *sub, pjsip_event *event)
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 @@ static void xfer_client_on_evsub_state( pjsip_evsub *sub, pjsip_event *event)
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 @@ static void xfer_client_on_evsub_state( pjsip_evsub *sub, pjsip_event *event)
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 0d922a5b..d4a7f14b 100644
--- a/pjsip/src/test/msg_test.c
+++ b/pjsip/src/test/msg_test.c
@@ -815,10 +815,17 @@ static pjsip_msg *create_msg1(pj_pool_t *pool)
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);