X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprotocol.c;h=31d22064541658082f986741097036a056640744;hp=5e72017ddee8cf212d15ea3ff77a4bd10c18c031;hb=54881faf6fdbf04fb5ee56b7809439fbc50c65cb;hpb=f777c1807d663eaef3e36c395094451214886898 diff --git a/src/protocol.c b/src/protocol.c index 5e72017d..31d22064 100644 --- a/src/protocol.c +++ b/src/protocol.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: protocol.c,v 1.28.4.77 2001/02/06 10:12:51 guus Exp $ + $Id: protocol.c,v 1.28.4.80 2001/02/25 16:34:19 guus Exp $ */ #include "config.h" @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -612,7 +613,7 @@ cp cl->status.active = 1; cl->status.decryptin = 1; cl->nexthop = cl; - cl->cipher_pkttype = EVP_bf_cfb(); + cl->cipher_pkttype = EVP_bf_cbc(); cl->cipher_pktkeylength = cl->cipher_pkttype->key_len + cl->cipher_pkttype->iv_len; if(debug_lvl >= DEBUG_CONNECTIONS) @@ -928,7 +929,7 @@ cp new->nexthop = cl; new->status.active = 1; - new->cipher_pkttype = EVP_bf_cfb(); + new->cipher_pkttype = EVP_bf_cbc(); new->cipher_pktkeylength = cl->cipher_pkttype->key_len + cl->cipher_pkttype->iv_len; cp return 0; @@ -1053,10 +1054,10 @@ cp int error_h(connection_t *cl) { - int errno; + int err; char errorstring[MAX_STRING_SIZE]; cp - if(sscanf(cl->buffer, "%*d %d "MAX_STRING, &errno, errorstring) != 2) + if(sscanf(cl->buffer, "%*d %d "MAX_STRING, &err, errorstring) != 2) { syslog(LOG_ERR, _("Got bad ERROR from %s (%s)"), cl->name, cl->hostname); @@ -1066,7 +1067,7 @@ cp if(debug_lvl >= DEBUG_ERROR) { syslog(LOG_NOTICE, _("Error message from %s (%s): %s: %s"), - cl->name, cl->hostname, strerror(errno), errorstring); + cl->name, cl->hostname, strerror(err), errorstring); } terminate_connection(cl); @@ -1324,9 +1325,17 @@ int tcppacket_h(connection_t *cl) while(todo) { x = read(cl->meta_socket, p, todo); - if(x<0) + + if(x<=0) { - syslog(LOG_ERR, _("Error during reception of PACKET from %s (%s): %m"), cl->name, cl->hostname); + if(x==0) + syslog(LOG_NOTICE, _("Connection closed by %s (%s)"), cl->name, cl->hostname); + else + if(errno==EINTR) + continue; + else + syslog(LOG_ERR, _("Error during reception of PACKET from %s (%s): %m"), cl->name, cl->hostname); + return -1; }