X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fnet_packet.c;h=a985390ca905ddbe70e737e94c97510b0208c1e1;hp=2856c616bb99b9cdb3cdbfe7ab363dec1e416795;hb=6834b882015a9323672e9fce8811aa4283f196f0;hpb=95d8811c2cef8bcde78e1f172f6c57c25cd487aa diff --git a/src/net_packet.c b/src/net_packet.c index 2856c616..a985390c 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -599,23 +599,26 @@ void handle_incoming_vpn_data(void *arg) { sockaddrunmap(&from); /* Some braindead IPv6 implementations do stupid things. */ + mutex_lock(&mutex); n = lookup_node_udp(&from); if(!n) { n = try_harder(&from, &pkt); if(n) update_node_udp(n, &from); - else ifdebug(PROTOCOL) { + } + + if(n) { + receive_udppacket(n, &pkt); + } else { + ifdebug(PROTOCOL) { hostname = sockaddr2hostname(&from); logger(LOG_WARNING, "Received UDP packet from unknown source %s", hostname); free(hostname); - continue; } - else - continue; } - receive_udppacket(n, &pkt); + mutex_unlock(&mutex); } }