| /* $Id$ */ |
| /* |
| * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) |
| * Copyright (C) 2003-2008 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) |
| { |
| PJ_UNUSED_ARG(msg); |
| PJ_UNUSED_ARG(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; |
| } |