projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add support for multicast communication with UML/QEMU/KVM.
[tinc]
/
src
/
net.c
diff --git
a/src/net.c
b/src/net.c
index
759dbe7
..
327bdd3
100644
(file)
--- a/
src/net.c
+++ b/
src/net.c
@@
-1,7
+1,7
@@
/*
net.c -- most of the network code
Copyright (C) 1998-2005 Ivo Timmermans,
/*
net.c -- most of the network code
Copyright (C) 1998-2005 Ivo Timmermans,
- 2000-201
1
Guus Sliepen <guus@tinc-vpn.org>
+ 2000-201
2
Guus Sliepen <guus@tinc-vpn.org>
2006 Scott Lamb <slamb@slamb.org>
2011 Loïc Grenié <loic.grenie@gmail.com>
2006 Scott Lamb <slamb@slamb.org>
2011 Loïc Grenié <loic.grenie@gmail.com>
@@
-204,18
+204,14
@@
void terminate_connection(connection_t *c, bool report) {
}
}
}
}
+ free_connection_partially(c);
+
/* Check if this was our outgoing connection */
if(c->outgoing) {
/* 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;
}
/*
}
/*
@@
-290,9
+286,11
@@
static void check_network_activity(fd_set * readset, fd_set * writeset) {
/* check input from kernel */
if(device_fd >= 0 && FD_ISSET(device_fd, readset)) {
if(devops.read(&packet)) {
/* 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++;
} else {
usleep(errors * 50000);
errors++;