blob: c52c6ebf8998119f631f3dc80bc091d2e7c15fbd [file] [log] [blame]
/* $Id$ */
/*
* Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "test.h"
#include <pjsip.h>
#include <pjlib.h>
#define THIS_FILE "msg_err_test.c"
static pj_bool_t verify_success(pjsip_msg *msg,
pjsip_parser_err_report *err_list)
{
return PJ_TRUE;
}
static struct test_entry
{
char msg[1024];
pj_bool_t (*verify)(pjsip_msg *msg,
pjsip_parser_err_report *err_list);
} test_entries[] =
{
/* Syntax error in status line */
{
"SIP/2.0 200\r\n"
"H-Name: H-Value\r\n"
"\r\n",
&verify_success
},
/* Syntax error in header */
{
"SIP/2.0 200 OK\r\n"
"Via: SIP/2.0\r\n"
"H-Name: H-Value\r\n"
"\r\n",
&verify_success
},
/* Multiple syntax errors in headers */
{
"SIP/2.0 200 OK\r\n"
"Via: SIP/2.0\r\n"
"H-Name: H-Value\r\n"
"Via: SIP/2.0\r\n"
"\r\n",
&verify_success
}
};
int msg_err_test(void)
{
pj_pool_t *pool;
unsigned i;
PJ_LOG(3,(THIS_FILE, "Testing parsing error"));
pool = pjsip_endpt_create_pool(endpt, "msgerrtest", 4000, 4000);
for (i=0; i<PJ_ARRAY_SIZE(test_entries); ++i) {
pjsip_parser_err_report err_list, *e;
pjsip_msg *msg;
PJ_LOG(3,(THIS_FILE, " Parsing msg %d", i));
pj_list_init(&err_list);
msg = pjsip_parse_msg(pool, test_entries[i].msg,
strlen(test_entries[i].msg), &err_list);
e = err_list.next;
while (e != &err_list) {
PJ_LOG(3,(THIS_FILE,
" reported syntax error at line %d col %d for %.*s",
e->line, e->col,
(int)e->hname.slen,
e->hname.ptr));
e = e->next;
}
}
pj_pool_release(pool);
return 0;
}