summaryrefslogtreecommitdiff
path: root/accel-pptpd/log.c
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2010-09-12 23:13:10 +0400
committerDmitry Kozlov <xeb@mail.ru>2010-09-12 23:13:27 +0400
commit65a665f6c655766a6d990e8aba47a811d0c3fecc (patch)
treed1dd7a9b01ac49382500fc97de4f69cd713d8952 /accel-pptpd/log.c
parent417ef849f1adcb3b655fbb2382e126b0b17aabbe (diff)
downloadaccel-ppp-xebd-65a665f6c655766a6d990e8aba47a811d0c3fecc.tar.gz
accel-ppp-xebd-65a665f6c655766a6d990e8aba47a811d0c3fecc.zip
log: implemented 'log_pgsql' loggin target
lcp: fixed incorrect echo reply ppp_fsm: fixed incorrect timeout timer initialization
Diffstat (limited to 'accel-pptpd/log.c')
-rw-r--r--accel-pptpd/log.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/accel-pptpd/log.c b/accel-pptpd/log.c
index 76603d4..5012cba 100644
--- a/accel-pptpd/log.c
+++ b/accel-pptpd/log.c
@@ -13,8 +13,6 @@
#include "log.h"
-#define LOG_MAX_SIZE 4096
-
struct log_pd_t
{
struct ppp_pd_t pd;
@@ -33,6 +31,8 @@ struct _log_msg_t
};
static int log_level=10;
+static int conf_copy = 0;
+
static LIST_HEAD(targets);
static mempool_t msg_pool;
static mempool_t _msg_pool;
@@ -80,8 +80,6 @@ static void do_log(int level, const char *fmt, va_list ap, struct ppp_t *ppp)
if (ppp && !ppp->username) {
lpd = find_pd(ppp);
list_add_tail(&cur_msg->entry, &lpd->msgs);
- cur_msg = NULL;
- return;
}
list_for_each_entry(t, &targets, entry) {
@@ -92,7 +90,8 @@ static void do_log(int level, const char *fmt, va_list ap, struct ppp_t *ppp)
break;
t->session_log(ppp, m);
}
- } else {
+ }
+ if (!ppp || conf_copy) {
if (t->log) {
m = clone_msg(cur_msg);
if (!m)
@@ -103,7 +102,8 @@ static void do_log(int level, const char *fmt, va_list ap, struct ppp_t *ppp)
}
out:
- _log_free_msg(cur_msg);
+ if (!ppp || ppp->username)
+ _log_free_msg(cur_msg);
cur_msg = NULL;
}
@@ -412,6 +412,10 @@ static void __init log_init(void)
fprintf(stderr, "log:open: %s\n", strerror(errno));
}
+ opt = conf_get_opt("log", "copy");
+ if (opt && atoi(opt) > 0)
+ conf_copy = 1;
+
msg_pool = mempool_create(sizeof(struct log_msg_t));
_msg_pool = mempool_create(sizeof(struct _log_msg_t));
chunk_pool = mempool_create(sizeof(struct log_chunk_t) + LOG_CHUNK_SIZE + 1);