Correct close() function when building with MSVC
[tinc] / src / net_setup.c
index d4993fa..60fc692 100644 (file)
@@ -28,6 +28,7 @@
 #include "connection.h"
 #include "compression.h"
 #include "control.h"
+#include "crypto.h"
 #include "device.h"
 #include "digest.h"
 #include "ecdsa.h"
@@ -142,7 +143,7 @@ static timeout_t keyexpire_timeout;
 static void keyexpire_handler(void *data) {
        regenerate_key();
        timeout_set(data, &(struct timeval) {
-               keylifetime, rand() % 100000
+               keylifetime, jitter()
        });
 }
 #endif
@@ -605,7 +606,7 @@ static bool add_listen_address(char *address, bool bindto) {
                int udp_fd = setup_vpn_in_socket((sockaddr_t *) aip->ai_addr);
 
                if(udp_fd < 0) {
-                       close(tcp_fd);
+                       closesocket(tcp_fd);
                        continue;
                }
 
@@ -820,16 +821,21 @@ static bool setup_myself(void) {
 
        if(!strcasecmp(cipher, "none")) {
                myself->incipher = NULL;
-       } else if(!(myself->incipher = cipher_open_by_name(cipher))) {
-               logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized cipher type!");
-               free(cipher);
-               return false;
+       } else {
+               myself->incipher = cipher_alloc();
+
+               if(!cipher_open_by_name(myself->incipher, cipher)) {
+                       logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized cipher type!");
+                       cipher_free(&myself->incipher);
+                       free(cipher);
+                       return false;
+               }
        }
 
        free(cipher);
 
        timeout_add(&keyexpire_timeout, keyexpire_handler, &keyexpire_timeout, &(struct timeval) {
-               keylifetime, rand() % 100000
+               keylifetime, jitter()
        });
 
        /* Check if we want to use message authentication codes... */
@@ -850,10 +856,15 @@ static bool setup_myself(void) {
 
        if(!strcasecmp(digest, "none")) {
                myself->indigest = NULL;
-       } else if(!(myself->indigest = digest_open_by_name(digest, maclength))) {
-               logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized digest type!");
-               free(digest);
-               return false;
+       } else {
+               myself->indigest = digest_alloc();
+
+               if(!digest_open_by_name(myself->indigest, digest, maclength)) {
+                       logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized digest type!");
+                       digest_free(&myself->indigest);
+                       free(digest);
+                       return false;
+               }
        }
 
        free(digest);
@@ -1169,8 +1180,8 @@ void close_network_connections(void) {
        for(int i = 0; i < listen_sockets; i++) {
                io_del(&listen_socket[i].tcp);
                io_del(&listen_socket[i].udp);
-               close(listen_socket[i].tcp.fd);
-               close(listen_socket[i].udp.fd);
+               closesocket(listen_socket[i].tcp.fd);
+               closesocket(listen_socket[i].udp.fd);
        }
 
        exit_requests();