projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update copyright information.
[tinc]
/
src
/
net.c
diff --git
a/src/net.c
b/src/net.c
index
41b3fb9
..
82b0ede
100644
(file)
--- a/
src/net.c
+++ b/
src/net.c
@@
-149,7
+149,8
@@
static int build_fdset(fd_set *readset, fd_set *writeset)
max = listen_socket[i].udp;
}
max = listen_socket[i].udp;
}
- FD_SET(device_fd, readset);
+ if(device_fd >= 0)
+ FD_SET(device_fd, readset);
if(device_fd > max)
max = device_fd;
if(device_fd > max)
max = device_fd;
@@
-251,7
+252,7
@@
static void check_dead_connections(void)
} else {
if(c->status.remove) {
logger(LOG_WARNING, _("Old connection_t for %s (%s) status %04x still lingering, deleting..."),
} else {
if(c->status.remove) {
logger(LOG_WARNING, _("Old connection_t for %s (%s) status %04x still lingering, deleting..."),
- c->name, c->hostname,
c->status.value
);
+ c->name, c->hostname,
bitfield_to_int(&c->status, sizeof c->status)
);
connection_del(c);
continue;
}
connection_del(c);
continue;
}
@@
-294,7
+295,7
@@
static void check_network_activity(fd_set * readset, fd_set * writeset)
cp();
/* check input from kernel */
cp();
/* check input from kernel */
- if(FD_ISSET(device_fd, readset)) {
+ if(
device_fd >= 0 &&
FD_ISSET(device_fd, readset)) {
if(read_packet(&packet)) {
packet.priority = 0;
route(myself, &packet);
if(read_packet(&packet)) {
packet.priority = 0;
route(myself, &packet);
@@
-378,7
+379,13
@@
int main_loop(void)
maxfd = build_fdset(&readset, &writeset);
maxfd = build_fdset(&readset, &writeset);
+#ifdef HAVE_MINGW
+ LeaveCriticalSection(&mutex);
+#endif
r = select(maxfd + 1, &readset, &writeset, NULL, &tv);
r = select(maxfd + 1, &readset, &writeset, NULL, &tv);
+#ifdef HAVE_MINGW
+ EnterCriticalSection(&mutex);
+#endif
if(r < 0) {
if(errno != EINTR && errno != EAGAIN) {
if(r < 0) {
if(errno != EINTR && errno != EAGAIN) {
@@
-413,11
+420,19
@@
int main_loop(void)
/* Should we regenerate our key? */
if(keyexpires < now) {
/* Should we regenerate our key? */
if(keyexpires < now) {
- ifdebug(STATUS) logger(LOG_INFO, _("Regenerating symmetric key"));
+ avl_node_t *node;
+ node_t *n;
+
+ ifdebug(STATUS) logger(LOG_INFO, _("Expiring symmetric keys"));
+
+ for(node = node_tree->head; node; node = node->next) {
+ n = node->data;
+ if(n->inkey) {
+ free(n->inkey);
+ n->inkey = NULL;
+ }
+ }
- RAND_pseudo_bytes((unsigned char *)myself->key, myself->keylength);
- if(myself->cipher)
- EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, (unsigned char *)myself->key, (unsigned char *)myself->key + myself->cipher->key_len);
send_key_changed(broadcast, myself);
keyexpires = now + keylifetime;
}
send_key_changed(broadcast, myself);
keyexpires = now + keylifetime;
}
@@
-457,7
+472,7
@@
int main_loop(void)
for(node = connection_tree->head; node; node = node->next) {
c = node->data;
for(node = connection_tree->head; node; node = node->next) {
c = node->data;
- asprintf(&fname, "%s/hosts/%s", confbase, c->name);
+
x
asprintf(&fname, "%s/hosts/%s", confbase, c->name);
if(stat(fname, &s) || s.st_mtime > last_config_check)
terminate_connection(c, c->status.active);
free(fname);
if(stat(fname, &s) || s.st_mtime > last_config_check)
terminate_connection(c, c->status.active);
free(fname);