Bryan Drewery 22 лет назад
Родитель
Сommit
8d06de4fc6
1 измененных файлов с 7 добавлено и 15 удалено
  1. 7 15
      src/net.c

+ 7 - 15
src/net.c

@@ -632,7 +632,6 @@ static int proxy_connect(int sock, char *host, int port, int proxy)
 int open_telnet_raw(int sock, char *server, port_t sport)
 {
   static port_t port = 0;
-  static int error = 0;
   union sockaddr_union so;
   char host[121] = "";
   int i, rc;
@@ -654,7 +653,6 @@ int open_telnet_raw(int sock, char *server, port_t sport)
     port = sport;
   }
 
-  error = 0;
   if (!setjmp(alarmret)) {
     alarm(resolve_timeout);
     if (!get_ip(host, &so)) {
@@ -663,20 +661,17 @@ int open_telnet_raw(int sock, char *server, port_t sport)
 #ifdef USE_IPV6
       if (so.sa.sa_family == AF_INET6) {
         if (bind(sock, &cached_myip6_so.sa, SIZEOF_SOCKADDR(cached_myip6_so)) < 0) {
-          if (sock >= 0)
-            killsock(sock);
+          killsock(sock);
           return -1;
         }
       } else {
 #endif /* USE_IPV6 */
         if (bind(sock, &cached_myip4_so.sa, SIZEOF_SOCKADDR(cached_myip4_so)) < 0) {
-          if (sock >= 0)
-            killsock(sock);
+          killsock(sock);
           return -3;
         }
 #ifdef USE_IPV6
       }
-
       if (so.sa.sa_family == AF_INET6)
         so.sin6.sin6_port = htons(port);
       else
@@ -685,15 +680,10 @@ int open_telnet_raw(int sock, char *server, port_t sport)
 
     } else {
       alarm(0);
-      error = 1;
+      killsock(sock);
+      return -2;
     }
   }
-/* FIXME: (error) is unitialized */
-  /* I guess we broke something */
-  if (error) {
-    killsock(sock);
-    return -2;
-  }
 
   for (i = 0; i < MAXSOCKS; i++) {
     if (!(socklist[i].flags & SOCK_UNUSED) && (socklist[i].sock == sock)) {
@@ -709,8 +699,10 @@ int open_telnet_raw(int sock, char *server, port_t sport)
       if (firewall[0])
 	return proxy_connect(sock, server, sport, proxy);
       return sock;		/* async success! */
-    } else
+    } else {
+      killsock(sock);
       return -1;
+    }
   }
   /* Synchronous? :/ */
   if (firewall[0])