blob: 8a71adcb3c52fc7fbe81446fd19f85c635422d8d [file] [log] [blame]
Benny Prijono85598d92006-01-07 18:44:25 +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 Prijono85598d92006-01-07 18:44:25 +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"
Benny Prijono40f2f642006-01-30 18:40:05 +000021#include <pjsip.h>
Benny Prijono85598d92006-01-07 18:44:25 +000022#include <pjlib.h>
23
24#define THIS_FILE "msg_logger.c"
25
26static pj_bool_t msg_log_enabled;
27
28static pj_bool_t on_rx_msg(pjsip_rx_data *rdata)
29{
30 if (msg_log_enabled) {
Benny Prijonoe93e2872006-06-28 16:46:49 +000031 PJ_LOG(4,(THIS_FILE, "RX %d bytes %s from %s:%s:%d:\n"
32 "%.*s\n"
Benny Prijono85598d92006-01-07 18:44:25 +000033 "--end msg--",
34 rdata->msg_info.len,
35 pjsip_rx_data_get_info(rdata),
Benny Prijonoe93e2872006-06-28 16:46:49 +000036 rdata->tp_info.transport->type_name,
Benny Prijono85598d92006-01-07 18:44:25 +000037 rdata->pkt_info.src_name,
38 rdata->pkt_info.src_port,
Benny Prijonoe93e2872006-06-28 16:46:49 +000039 rdata->msg_info.len,
Benny Prijono85598d92006-01-07 18:44:25 +000040 rdata->msg_info.msg_buf));
41 }
42
43 return PJ_FALSE;
44}
45
46static pj_status_t on_tx_msg(pjsip_tx_data *tdata)
47{
48 if (msg_log_enabled) {
Benny Prijonoe93e2872006-06-28 16:46:49 +000049 PJ_LOG(4,(THIS_FILE, "TX %d bytes %s to %s:%s:%d:\n"
50 "%.*s\n"
Benny Prijono85598d92006-01-07 18:44:25 +000051 "--end msg--",
52 (tdata->buf.cur - tdata->buf.start),
53 pjsip_tx_data_get_info(tdata),
Benny Prijonoe93e2872006-06-28 16:46:49 +000054 tdata->tp_info.transport->type_name,
Benny Prijono85598d92006-01-07 18:44:25 +000055 tdata->tp_info.dst_name,
56 tdata->tp_info.dst_port,
Benny Prijonoe93e2872006-06-28 16:46:49 +000057 (tdata->buf.cur - tdata->buf.start),
Benny Prijono85598d92006-01-07 18:44:25 +000058 tdata->buf.start));
59 }
60 return PJ_SUCCESS;
61}
62
63
64/* Message logger module. */
65static pjsip_module mod_msg_logger =
66{
67 NULL, NULL, /* prev and next */
68 { "mod-msg-logger", 14}, /* Name. */
69 -1, /* Id */
70 PJSIP_MOD_PRIORITY_TRANSPORT_LAYER-1,/* Priority */
Benny Prijono85598d92006-01-07 18:44:25 +000071 NULL, /* load() */
72 NULL, /* start() */
73 NULL, /* stop() */
74 NULL, /* unload() */
75 &on_rx_msg, /* on_rx_request() */
76 &on_rx_msg, /* on_rx_response() */
77 &on_tx_msg, /* on_tx_request() */
78 &on_tx_msg, /* on_tx_response() */
79 NULL, /* on_tsx_state() */
80};
81
82int init_msg_logger(void)
83{
84 pj_status_t status;
85
86 if (mod_msg_logger.id != -1)
87 return 0;
88
89 status = pjsip_endpt_register_module(endpt, &mod_msg_logger);
90 if (status != PJ_SUCCESS) {
91 app_perror(" error registering module", status);
92 return -10;
93 }
94
95 return 0;
96}
97
98int msg_logger_set_enabled(pj_bool_t enabled)
99{
100 int val = msg_log_enabled;
101 msg_log_enabled = enabled;
102 return val;
103}
104