X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fmeta.c;h=f9b18ca34be2f5374649316a001d4224c8623e80;hp=eb005fdf4dc8b0e6bb5b1b8f3486fc3564867ecf;hb=153fc35e57c0104aa4ea9103bcdbca3665e4934c;hpb=bb2495e569fb161b42efd633eb1c471b8222b1fb diff --git a/src/meta.c b/src/meta.c index eb005fdf..f9b18ca3 100644 --- a/src/meta.c +++ b/src/meta.c @@ -1,7 +1,7 @@ /* meta.c -- handle the meta communication - Copyright (C) 2000 Guus Sliepen , - 2000 Ivo Timmermans + Copyright (C) 2000,2001 Guus Sliepen , + 2000,2001 Ivo Timmermans This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,18 +17,20 @@ 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.10 2000/11/15 01:06:10 zarq Exp $ + $Id: meta.c,v 1.1.2.15 2001/02/25 11:09:29 guus Exp $ */ #include "config.h" #include +#include #include #include #include -#include #include #include +/* This line must be below the rest for FreeBSD */ +#include #ifdef HAVE_OPENSSL_EVP_H # include @@ -37,10 +39,11 @@ #endif #include "net.h" +#include "connection.h" #include "system.h" #include "protocol.h" -int send_meta(conn_list_t *cl, char *buffer, int length) +int send_meta(connection_t *cl, char *buffer, int length) { char outbuf[MAXBUFSIZE]; char *bufp; @@ -70,18 +73,21 @@ cp return 0; } -int broadcast_meta(conn_list_t *cl, char *buffer, int length) +void broadcast_meta(connection_t *cl, char *buffer, int length) { - conn_list_t *p; + avl_node_t *node; + connection_t *p; cp - for(p = conn_list; p != NULL; p = p->next) - if(p != cl && p->status.meta && p->status.active) - send_meta(p, buffer, length); + for(node = connection_tree->head; node; node = node->next) + { + p = (connection_t *)node->data; + if(p != cl && p->status.meta && p->status.active) + send_meta(p, buffer, length); + } cp - return 0; } -int receive_meta(conn_list_t *cl) +int receive_meta(connection_t *cl) { int x, l = sizeof(x); int oldlen, i; @@ -111,17 +117,19 @@ cp if(lenin<=0) { - if(errno==EINTR) - return 0; - if(errno==0) + if(lenin==0) { if(debug_lvl >= DEBUG_CONNECTIONS) syslog(LOG_NOTICE, _("Connection closed by %s (%s)"), cl->name, cl->hostname); } else - syslog(LOG_ERR, _("Metadata socket read error for %s (%s): %m"), - cl->name, cl->hostname); + if(errno==EINTR) + return 0; + else + syslog(LOG_ERR, _("Metadata socket read error for %s (%s): %m"), + cl->name, cl->hostname); + return -1; }