diff --git a/src/log.c b/src/log.c index 5d672942c..622f7f90e 100644 --- a/src/log.c +++ b/src/log.c @@ -1571,6 +1571,10 @@ static inline void __do_send_log(struct logsrv *logsrv, int nblogger, char *pid_ dataptr = message; + /* historically some messages used to already contain the trailing LF */ + if (size && (dataptr[size-1] == '\n')) + size--; + if (logsrv->type == LOG_TARGET_FD) { /* the socket's address is a file descriptor */ plogfd = (int *)&((struct sockaddr_in *)&logsrv->addr)->sin_addr.s_addr; @@ -1625,7 +1629,7 @@ static inline void __do_send_log(struct logsrv *logsrv, int nblogger, char *pid_ hdr_ptr = hdr; hdr_max = 3; maxlen = logsrv->maxlen - hdr_max; - max = MIN(size, maxlen) - 1; + max = MIN(size, maxlen - 1); goto send; case LOG_FORMAT_RAW: @@ -1633,7 +1637,7 @@ static inline void __do_send_log(struct logsrv *logsrv, int nblogger, char *pid_ hdr_ptr = hdr = ""; hdr_max = 0; maxlen = logsrv->maxlen; - max = MIN(size, maxlen) - 1; + max = MIN(size, maxlen - 1); goto send; default: @@ -1717,7 +1721,7 @@ static inline void __do_send_log(struct logsrv *logsrv, int nblogger, char *pid_ goto send; } - max = MIN(size, maxlen - sd_max) - 1; + max = MIN(size, maxlen - sd_max - 1); send: if (logsrv->addr.ss_family == AF_UNSPEC) { /* the target is a file descriptor or a ring buffer */