blob: e04a915090d9f5e4e3eab4f322de143679034aa9 [file] [log] [blame]
Benny Prijono733c67a2006-06-23 01:03:52 +00001/* $Id$ */
2/*
Benny Prijono844653c2008-12-23 17:27:53 +00003 * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
Benny Prijono32177c02008-06-20 22:44:47 +00004 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
Benny Prijono733c67a2006-06-23 01:03:52 +00005 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#include "test.h"
21#include <pjsip.h>
22#include <pjlib.h>
23
24#define THIS_FILE "msg_err_test.c"
25
26
27static pj_bool_t verify_success(pjsip_msg *msg,
28 pjsip_parser_err_report *err_list)
29{
Nanang Izzuddin2e4f03f2009-04-27 19:18:38 +000030 PJ_UNUSED_ARG(msg);
31 PJ_UNUSED_ARG(err_list);
32
Benny Prijono733c67a2006-06-23 01:03:52 +000033 return PJ_TRUE;
34}
35
36static struct test_entry
37{
38 char msg[1024];
39 pj_bool_t (*verify)(pjsip_msg *msg,
40 pjsip_parser_err_report *err_list);
41
42} test_entries[] =
43{
44 /* Syntax error in status line */
45 {
46 "SIP/2.0 200\r\n"
47 "H-Name: H-Value\r\n"
48 "\r\n",
49 &verify_success
50 },
51
52 /* Syntax error in header */
53 {
54 "SIP/2.0 200 OK\r\n"
55 "Via: SIP/2.0\r\n"
56 "H-Name: H-Value\r\n"
57 "\r\n",
58 &verify_success
59 },
60
61 /* Multiple syntax errors in headers */
62 {
63 "SIP/2.0 200 OK\r\n"
64 "Via: SIP/2.0\r\n"
65 "H-Name: H-Value\r\n"
66 "Via: SIP/2.0\r\n"
67 "\r\n",
68 &verify_success
69 }
70};
71
72
73int msg_err_test(void)
74{
75 pj_pool_t *pool;
76 unsigned i;
77
78 PJ_LOG(3,(THIS_FILE, "Testing parsing error"));
79
80 pool = pjsip_endpt_create_pool(endpt, "msgerrtest", 4000, 4000);
81
82 for (i=0; i<PJ_ARRAY_SIZE(test_entries); ++i) {
83 pjsip_parser_err_report err_list, *e;
84 pjsip_msg *msg;
85
86 PJ_LOG(3,(THIS_FILE, " Parsing msg %d", i));
87 pj_list_init(&err_list);
88 msg = pjsip_parse_msg(pool, test_entries[i].msg,
89 strlen(test_entries[i].msg), &err_list);
90
91 e = err_list.next;
92 while (e != &err_list) {
93 PJ_LOG(3,(THIS_FILE,
94 " reported syntax error at line %d col %d for %.*s",
95 e->line, e->col,
96 (int)e->hname.slen,
97 e->hname.ptr));
98 e = e->next;
99 }
100 }
101
102 pj_pool_release(pool);
103 return 0;
104}