]> sjero.net Git - wget/blobdiff - src/connect.c
[svn] Don't reuse IP addresses proven to be faulty, unless only such ones remain.
[wget] / src / connect.c
index c90c214d2c49ee55cb17af43385ffc0f258ade55..28d2f6aa3395a5b37c904a0717286ed562490661 100644 (file)
@@ -146,9 +146,10 @@ connect_to_one (const unsigned char *addr, unsigned short port, int silent)
 int
 connect_to_many (struct address_list *al, unsigned short port, int silent)
 {
-  int i;
+  int i, start, end;
 
-  for (i = 0; i < address_list_count (al); i++)
+  address_list_get_bounds (al, &start, &end);
+  for (i = start; i < end; i++)
     {
       unsigned char addr[4];
       int sock;
@@ -156,10 +157,10 @@ connect_to_many (struct address_list *al, unsigned short port, int silent)
 
       sock = connect_to_one (addr, port, silent);
       if (sock >= 0)
+       /* Success. */
        return sock;
 
-      /* Perhaps we should have a way of removing the failing entry
-        from the address list?  */
+      address_list_set_faulty (al, i);
 
       /* The attempt to connect has failed.  Continue with the loop
         and try next address. */