From: michael Date: Mon, 29 Dec 2014 15:13:00 +0000 (+0000) Subject: - irc.c:irc_send(): fixed bug where over-length messages were not terminated with... X-Git-Tag: 1.0.0beta2~24 X-Git-Url: http://git.serene-ircd.net/?a=commitdiff_plain;h=8285d719c1886e05d8443f155aecf190f579966f;p=hopm.git - irc.c:irc_send(): fixed bug where over-length messages were not terminated with \n; optimized to not reprint the sendbuffer twice git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5194 82007160-df01-0410-b94d-b575c5fd34c7 --- diff --git a/src/irc.c b/src/irc.c index 572c243..5c08b9c 100644 --- a/src/irc.c +++ b/src/irc.c @@ -304,19 +304,23 @@ void irc_send(const char *data, ...) { va_list arglist; - char data2[MSGLENMAX]; - char tosend[MSGLENMAX]; + char buf[MSGLENMAX]; + int len = 0; va_start(arglist, data); - vsnprintf(data2, MSGLENMAX, data, arglist); + len = vsnprintf(buf, sizeof(buf), data, arglist); va_end(arglist); if (OPT_DEBUG >= 2) - log_printf("IRC SEND -> %s", data2); + log_printf("IRC SEND -> %s", buf); + + if (len > 510) + len = 510; - snprintf(tosend, MSGLENMAX, "%s\n", data2); + buf[len++] = '\r'; + buf[len++] = '\n'; - if (send(IRC_FD, tosend, strlen(tosend), 0) == -1) + if (send(IRC_FD, buf, len, 0) == -1) { /* Return of -1 indicates error sending data; we reconnect. */ log_printf("IRC -> Error sending data to server\n");