X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fmeta.c;h=f7450fdfd959be45820bad2c652995aa9eeef1db;hp=0025dd83e01c23a88eaca1bd79173609c0bb3c3f;hb=1401faf608e1c8af0d0754e545b0ec79d2bd5d93;hpb=161f917dd03c174742fb8c6722f430a93b506cb1 diff --git a/src/meta.c b/src/meta.c index 0025dd83..f7450fdf 100644 --- a/src/meta.c +++ b/src/meta.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: meta.c,v 1.1.2.31 2002/09/10 09:40:25 guus Exp $ + $Id: meta.c,v 1.1.2.34 2003/07/06 22:11:31 guus Exp $ */ #include "config.h" @@ -25,7 +25,6 @@ #include #include -#include #include #include /* This line must be below the rest for FreeBSD */ @@ -38,17 +37,18 @@ #include "connection.h" #include "system.h" #include "protocol.h" +#include "logger.h" int send_meta(connection_t *c, char *buffer, int length) { char *bufp; int outlen; char outbuf[MAXBUFSIZE]; + int result; cp(); - if(debug_lvl >= DEBUG_META) - syslog(LOG_DEBUG, _("Sending %d bytes of metadata to %s (%s)"), length, + logger(DEBUG_META, LOG_DEBUG, _("Sending %d bytes of metadata to %s (%s)"), length, c->name, c->hostname); if(c->status.encryptout) { @@ -58,12 +58,19 @@ int send_meta(connection_t *c, char *buffer, int length) } else bufp = buffer; - if(write(c->socket, bufp, length) < 0) { - syslog(LOG_ERR, _("Sending meta data to %s (%s) failed: %s"), c->name, - c->hostname, strerror(errno)); - return -1; + while(length) { + result = write(c->socket, bufp, length); + if(result <= 0) { + if(errno == EINTR) + continue; + logger(DEBUG_ALWAYS, LOG_ERR, _("Sending meta data to %s (%s) failed: %s"), c->name, + c->hostname, strerror(errno)); + return -1; + } + bufp += result; + length -= result; } - + return 0; } @@ -94,13 +101,13 @@ int receive_meta(connection_t *c) cp(); if(getsockopt(c->socket, SOL_SOCKET, SO_ERROR, &x, &l) < 0) { - syslog(LOG_ERR, _("This is a bug: %s:%d: %d:%s %s (%s)"), __FILE__, + logger(DEBUG_ALWAYS, LOG_ERR, _("This is a bug: %s:%d: %d:%s %s (%s)"), __FILE__, __LINE__, c->socket, strerror(errno), c->name, c->hostname); return -1; } if(x) { - syslog(LOG_ERR, _("Metadata socket error for %s (%s): %s"), + logger(DEBUG_ALWAYS, LOG_ERR, _("Metadata socket error for %s (%s): %s"), c->name, c->hostname, strerror(x)); return -1; } @@ -118,13 +125,12 @@ int receive_meta(connection_t *c) if(lenin <= 0) { if(lenin == 0) { - if(debug_lvl >= DEBUG_CONNECTIONS) - syslog(LOG_NOTICE, _("Connection closed by %s (%s)"), + logger(DEBUG_CONNECTIONS, LOG_NOTICE, _("Connection closed by %s (%s)"), c->name, c->hostname); } else if(errno == EINTR) return 0; else - syslog(LOG_ERR, _("Metadata socket read error for %s (%s): %s"), + logger(DEBUG_ALWAYS, LOG_ERR, _("Metadata socket read error for %s (%s): %s"), c->name, c->hostname, strerror(errno)); return -1; @@ -187,7 +193,7 @@ int receive_meta(connection_t *c) } if(c->buflen >= MAXBUFSIZE) { - syslog(LOG_ERR, _("Metadata read buffer overflow for %s (%s)"), + logger(DEBUG_ALWAYS, LOG_ERR, _("Metadata read buffer overflow for %s (%s)"), c->name, c->hostname); return -1; }