blob: 45a4cbafc852e884fc0be5714ef244acc9b31a95 [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_logger.c"
static pj_bool_t msg_log_enabled;
static pj_bool_t on_rx_msg(pjsip_rx_data *rdata)
{
if (msg_log_enabled) {
PJ_LOG(4,(THIS_FILE, "RX %d bytes %s from %s:%d:\n"
"%s\n"
"--end msg--",
rdata->msg_info.len,
pjsip_rx_data_get_info(rdata),
rdata->pkt_info.src_name,
rdata->pkt_info.src_port,
rdata->msg_info.msg_buf));
}
return PJ_FALSE;
}
static pj_status_t on_tx_msg(pjsip_tx_data *tdata)
{
if (msg_log_enabled) {
PJ_LOG(4,(THIS_FILE, "TX %d bytes %s to %s:%d:\n"
"%s\n"
"--end msg--",
(tdata->buf.cur - tdata->buf.start),
pjsip_tx_data_get_info(tdata),
tdata->tp_info.dst_name,
tdata->tp_info.dst_port,
tdata->buf.start));
}
return PJ_SUCCESS;
}
/* Message logger module. */
static pjsip_module mod_msg_logger =
{
NULL, NULL, /* prev and next */
{ "mod-msg-logger", 14}, /* Name. */
-1, /* Id */
PJSIP_MOD_PRIORITY_TRANSPORT_LAYER-1,/* Priority */
NULL, /* User data. */
NULL, /* load() */
NULL, /* start() */
NULL, /* stop() */
NULL, /* unload() */
&on_rx_msg, /* on_rx_request() */
&on_rx_msg, /* on_rx_response() */
&on_tx_msg, /* on_tx_request() */
&on_tx_msg, /* on_tx_response() */
NULL, /* on_tsx_state() */
};
int init_msg_logger(void)
{
pj_status_t status;
if (mod_msg_logger.id != -1)
return 0;
status = pjsip_endpt_register_module(endpt, &mod_msg_logger);
if (status != PJ_SUCCESS) {
app_perror(" error registering module", status);
return -10;
}
return 0;
}
int msg_logger_set_enabled(pj_bool_t enabled)
{
int val = msg_log_enabled;
msg_log_enabled = enabled;
return val;
}