X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_packet.c;h=6fea959fc841379368de187183f5725686718214;hb=2f2bda4d1953617b945f1222e008cb53edee162a;hp=2722fb23d208f2abcd3b924c8a9601567e125d60;hpb=cfc9fee931c70554353ce6c4acc3407baac08745;p=tinc diff --git a/src/net_packet.c b/src/net_packet.c index 2722fb23..6fea959f 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -53,6 +53,7 @@ #include "protocol.h" #include "route.h" #include "utils.h" +#include "random.h" /* The minimum size of a probe is 14 bytes, but since we normally use CBC mode encryption, we can add a few extra random bytes without increasing the @@ -1171,6 +1172,7 @@ static void send_udp_probe_packet(node_t *n, size_t len) { len = sizeof(packet.data); } + len = MAX(len, MIN_PROBE_SIZE); packet.offset = DEFAULT_PACKET_OFFSET; memset(DATA(&packet), 0, 14); randomize(DATA(&packet) + 14, len - 14); @@ -1256,7 +1258,7 @@ static length_t choose_initial_maxmtu(node_t *n) { if(connect(sock, &sa->sa, SALEN(sa->sa))) { logger(DEBUG_TRAFFIC, LOG_ERR, "Connecting MTU assessment socket for %s (%s) failed: %s", n->name, n->hostname, sockstrerror(sockerrno)); - close(sock); + closesocket(sock); return MTU; } @@ -1265,11 +1267,11 @@ static length_t choose_initial_maxmtu(node_t *n) { if(getsockopt(sock, IPPROTO_IP, IP_MTU, (void *)&ip_mtu, &ip_mtu_len)) { logger(DEBUG_TRAFFIC, LOG_ERR, "getsockopt(IP_MTU) on %s (%s) failed: %s", n->name, n->hostname, sockstrerror(sockerrno)); - close(sock); + closesocket(sock); return MTU; } - close(sock); + closesocket(sock); if(ip_mtu < MINMTU) { logger(DEBUG_TRAFFIC, LOG_ERR, "getsockopt(IP_MTU) on %s (%s) returned absurdly small value: %d", n->name, n->hostname, ip_mtu); @@ -1641,6 +1643,7 @@ void broadcast_packet(const node_t *from, vpn_packet_t *packet) { break; + case BMODE_NONE: default: break; }