From: Guus Sliepen Date: Sun, 22 May 2011 10:56:51 +0000 (+0200) Subject: Compact input buffer before trying to read instead of after. X-Git-Tag: import-tinc-1.1~525 X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=90c7fafe594cf6d03c15a072a3d749f3e4d78482;p=meshlink Compact input buffer before trying to read instead of after. Also log an error when the input buffer contains more than MAXBUFSIZE bytes already, instead of silently claiming the other side closed the connection. --- diff --git a/src/meta.c b/src/meta.c index ac937750..cf6b9d44 100644 --- a/src/meta.c +++ b/src/meta.c @@ -85,6 +85,13 @@ bool receive_meta(connection_t *c) { - If not, keep stuff in buffer and exit. */ + buffer_compact(&c->inbuf); + + if(sizeof inbuf <= c->inbuf.len) { + logger(LOG_ERR, "Input buffer full for %s (%s)\n"); + return false; + } + inlen = recv(c->socket, inbuf, sizeof inbuf - c->inbuf.len, 0); if(inlen <= 0) { @@ -151,7 +158,5 @@ bool receive_meta(connection_t *c) { } } while(inlen); - buffer_compact(&c->inbuf); - return true; }