]> git.meshlink.io Git - meshlink/blobdiff - src/net_socket.c
Remove unused support for proxies.
[meshlink] / src / net_socket.c
index 931f21d111ee9625047d6e35737656611d41df32..30ff016917bee18e4383fbe5b420fdaa01b66f6f 100644 (file)
@@ -72,95 +72,6 @@ static void configure_tcp(connection_t *c) {
 #endif
 }
 
-bool setup_listen_socket(meshlink_handle_t *mesh, int nfd, int sa_family) {
-#ifdef FD_CLOEXEC
-       fcntl(nfd, F_SETFD, FD_CLOEXEC);
-#endif
-
-       int option = 1;
-       setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, (void *)&option, sizeof(option));
-
-#if defined(IPV6_V6ONLY)
-
-       if(sa_family == AF_INET6) {
-               setsockopt(nfd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&option, sizeof(option));
-       }
-
-#else
-#warning IPV6_V6ONLY not defined
-#endif
-
-       if(listen(nfd, 3)) {
-               logger(mesh, MESHLINK_ERROR, "System call `%s' failed: %s", "listen", sockstrerror(sockerrno));
-               return false;
-       }
-
-       return true;
-}
-
-bool setup_vpn_in_socket(meshlink_handle_t *mesh, int nfd, int sa_family) {
-#ifdef FD_CLOEXEC
-       fcntl(nfd, F_SETFD, FD_CLOEXEC);
-#endif
-
-#ifdef O_NONBLOCK
-       {
-               int flags = fcntl(nfd, F_GETFL);
-
-               if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0) {
-                       closesocket(nfd);
-                       logger(mesh, MESHLINK_ERROR, "System call `%s' failed: %s", "fcntl",
-                              strerror(errno));
-                       return false;
-               }
-       }
-#elif defined(WIN32)
-       {
-               unsigned long arg = 1;
-
-               if(ioctlsocket(nfd, FIONBIO, &arg) != 0) {
-                       closesocket(nfd);
-                       logger(mesh, MESHLINK_ERROR, "Call to `%s' failed: %s", "ioctlsocket", sockstrerror(sockerrno));
-                       return false;
-               }
-       }
-#endif
-
-       int option = 1;
-       setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, (void *)&option, sizeof(option));
-       setsockopt(nfd, SOL_SOCKET, SO_BROADCAST, (void *)&option, sizeof(option));
-
-#if defined(IPV6_V6ONLY)
-
-       if(sa_family == AF_INET6) {
-               setsockopt(nfd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&option, sizeof(option));
-       }
-
-#endif
-
-#if defined(IP_DONTFRAG) && !defined(IP_DONTFRAGMENT)
-#define IP_DONTFRAGMENT IP_DONTFRAG
-#endif
-
-#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DO)
-       option = IP_PMTUDISC_DO;
-       setsockopt(nfd, IPPROTO_IP, IP_MTU_DISCOVER, (void *)&option, sizeof(option));
-#elif defined(IP_DONTFRAGMENT)
-       option = 1;
-       setsockopt(nfd, IPPROTO_IP, IP_DONTFRAGMENT, (void *)&option, sizeof(option));
-#endif
-
-#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DO)
-       option = IPV6_PMTUDISC_DO;
-       setsockopt(nfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, (void *)&option, sizeof(option));
-#elif defined(IPV6_DONTFRAG)
-       option = 1;
-       setsockopt(nfd, IPPROTO_IPV6, IPV6_DONTFRAG, (void *)&option, sizeof(option));
-#endif
-
-       return true;
-} /* int setup_vpn_in_socket */
-
 static void retry_outgoing_handler(event_loop_t *loop, void *data) {
        assert(data);
 
@@ -180,7 +91,7 @@ void retry_outgoing(meshlink_handle_t *mesh, outgoing_t *outgoing) {
                outgoing->timeout = mesh->maxtimeout;
        }
 
-       timeout_add(&mesh->loop, &outgoing->ev, retry_outgoing_handler, outgoing, &(struct timeval) {
+       timeout_add(&mesh->loop, &outgoing->ev, retry_outgoing_handler, outgoing, &(struct timespec) {
                outgoing->timeout, prng(mesh, TIMER_FUDGE)
        });
 
@@ -422,9 +333,6 @@ static bool get_next_outgoing_address(meshlink_handle_t *mesh, outgoing_t *outgo
 }
 
 void do_outgoing_connection(meshlink_handle_t *mesh, outgoing_t *outgoing) {
-       struct addrinfo *proxyai = NULL;
-       int result;
-
 begin:
 
        if(!get_next_outgoing_address(mesh, outgoing)) {
@@ -443,35 +351,26 @@ begin:
 
        memcpy(&c->address, outgoing->aip->ai_addr, outgoing->aip->ai_addrlen);
 
-       char *hostname = sockaddr2hostname(&c->address);
+       if(mesh->log_level <= MESHLINK_INFO) {
+               char *hostname = sockaddr2hostname(&c->address);
+               logger(mesh, MESHLINK_INFO, "Trying to connect to %s at %s", outgoing->node->name, hostname);
+               free(hostname);
+       }
 
-       logger(mesh, MESHLINK_INFO, "Trying to connect to %s at %s", outgoing->node->name, hostname);
+       c->socket = socket(c->address.sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
 
-       if(!mesh->proxytype) {
-               c->socket = socket(c->address.sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
-               configure_tcp(c);
-       } else {
-               proxyai = str2addrinfo(mesh->proxyhost, mesh->proxyport, SOCK_STREAM);
-
-               if(!proxyai) {
-                       free_connection(c);
+       if(c->socket == -1) {
+               if(mesh->log_level <= MESHLINK_ERROR) {
+                       char *hostname = sockaddr2hostname(&c->address);
+                       logger(mesh, MESHLINK_ERROR, "Creating socket for %s at %s failed: %s", c->name, hostname, sockstrerror(sockerrno));
                        free(hostname);
-                       goto begin;
                }
 
-               logger(mesh, MESHLINK_INFO, "Using proxy at %s port %s", mesh->proxyhost, mesh->proxyport);
-               c->socket = socket(proxyai->ai_family, SOCK_STREAM, IPPROTO_TCP);
-               configure_tcp(c);
-       }
-
-       if(c->socket == -1) {
-               logger(mesh, MESHLINK_ERROR, "Creating socket for %s at %s failed: %s", c->name, hostname, sockstrerror(sockerrno));
                free_connection(c);
-               free(hostname);
                goto begin;
        }
 
-       free(hostname);
+       configure_tcp(c);
 
 #ifdef FD_CLOEXEC
        fcntl(c->socket, F_SETFD, FD_CLOEXEC);
@@ -488,17 +387,16 @@ begin:
 
        /* Connect */
 
-       if(!mesh->proxytype) {
-               result = connect(c->socket, &c->address.sa, SALEN(c->address.sa));
-       } else {
-               result = connect(c->socket, proxyai->ai_addr, proxyai->ai_addrlen);
-               freeaddrinfo(proxyai);
-       }
+       int result = connect(c->socket, &c->address.sa, SALEN(c->address.sa));
 
        if(result == -1 && !sockinprogress(sockerrno)) {
-               logger(mesh, MESHLINK_ERROR, "Could not connect to %s: %s", outgoing->node->name, sockstrerror(sockerrno));
-               free_connection(c);
+               if(mesh->log_level <= MESHLINK_ERROR) {
+                       char *hostname = sockaddr2hostname(&c->address);
+                       logger(mesh, MESHLINK_ERROR, "Could not connect to %s: %s", outgoing->node->name, sockstrerror(sockerrno));
+                       free(hostname);
+               }
 
+               free_connection(c);
                goto begin;
        }