/*
net.c -- most of the network code
Copyright (C) 1998-2005 Ivo Timmermans,
- 2000-2011 Guus Sliepen <guus@tinc-vpn.org>
+ 2000-2012 Guus Sliepen <guus@tinc-vpn.org>
2006 Scott Lamb <slamb@slamb.org>
2011 Loïc Grenié <loic.grenie@gmail.com>
}
}
+ free_connection_partially(c);
+
/* Check if this was our outgoing connection */
if(c->outgoing) {
- retry_outgoing(c->outgoing);
- c->outgoing = NULL;
+ c->status.remove = false;
+ do_outgoing_connection(c);
}
-
- free(c->outbuf);
- c->outbuf = NULL;
- c->outbuflen = 0;
- c->outbufsize = 0;
- c->outbufstart = 0;
}
/*
/* check input from kernel */
if(device_fd >= 0 && FD_ISSET(device_fd, readset)) {
if(devops.read(&packet)) {
- errors = 0;
- packet.priority = 0;
- route(myself, &packet);
+ if(packet.len) {
+ errors = 0;
+ packet.priority = 0;
+ route(myself, &packet);
+ }
} else {
usleep(errors * 50000);
errors++;