Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7206:83a3239808d3 HEAD
Added -b parameter which writes packet boundaries like <<<packet>>>.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 02 Feb 2008 12:12:37 +0200 |
parents | a17e3d81a517 |
children | 2dffefc14e25 |
files | src/util/rawlog.c |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/util/rawlog.c Thu Jan 31 21:50:03 2008 +0200 +++ b/src/util/rawlog.c Sat Feb 02 12:12:37 2008 +0200 @@ -27,7 +27,8 @@ enum rawlog_flags { RAWLOG_FLAG_LOG_INPUT = 0x01, RAWLOG_FLAG_LOG_OUTPUT = 0x02, - RAWLOG_FLAG_LOG_TIMESTAMPS = 0x04 + RAWLOG_FLAG_LOG_TIMESTAMPS = 0x04, + RAWLOG_FLAG_LOG_BOUNDARIES = 0X10 }; struct rawlog_proxy { @@ -79,11 +80,16 @@ if (proxy->fd_in == -1 || size == 0) return; + if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0) + write_full(proxy->fd_in, "<<<", 3); + if (write_full(proxy->fd_in, data, size) < 0) { /* failed, disable logging */ i_error("write(in) failed: %m"); (void)close(proxy->fd_in); proxy->fd_in = -1; + } else if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0) { + write_full(proxy->fd_in, ">>>\n", 4); } } @@ -107,15 +113,20 @@ i_fatal("Can't write to log file: %m"); } + if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0) + write_full(proxy->fd_out, "<<<", 3); if (write_full(proxy->fd_out, data, size) < 0) { /* failed, disable logging */ i_error("write(out) failed: %m"); (void)close(proxy->fd_out); proxy->fd_out = -1; + } else if ((proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0) { + write_full(proxy->fd_out, ">>>\n", 4); } proxy->last_write = ioloop_time; - proxy->last_out_lf = ((const unsigned char *)buf)[size-1] == '\n'; + proxy->last_out_lf = ((const unsigned char *)buf)[size-1] == '\n' || + (proxy->flags & RAWLOG_FLAG_LOG_BOUNDARIES) != 0; } static void server_input(struct rawlog_proxy *proxy) @@ -340,6 +351,8 @@ flags &= ~RAWLOG_FLAG_LOG_OUTPUT; else if (strcmp(argv[0], "-o") == 0) flags &= ~RAWLOG_FLAG_LOG_INPUT; + else if (strcmp(argv[0], "-b") == 0) + flags |= RAWLOG_FLAG_LOG_BOUNDARIES; else { argc = 0; break; @@ -349,7 +362,7 @@ } if (argc < 1) - i_fatal("Usage: rawlog [-i | -o] <binary> <arguments>"); + i_fatal("Usage: rawlog [-i | -o] [-b] <binary> <arguments>"); executable = argv[0]; if (strstr(executable, "/imap") != NULL)