4bc39bb46ca908fb5075f6042f2aad6281169f4a
galt
  Tue Apr 12 11:57:55 2011 -0700
fixing complaint from Italy mirror that socket is already connected.
diff --git src/lib/net.c src/lib/net.c
index 1149afa..3e00091 100644
--- src/lib/net.c
+++ src/lib/net.c
@@ -86,35 +86,44 @@
 	    FD_ZERO(&mySet);
 	    FD_SET(sd, &mySet);
 	    res = select(sd+1, NULL, &mySet, &mySet, &lTime);
 	    if (res < 0) 
 		{
 		if (errno != EINTR) 
 		    {
 		    warn("Error in select() during TCP non-blocking connect %d - %s\n", errno, strerror(errno));
 		    close(sd);
 		    return -1;
 		    }
 		}
 	    else if (res > 0)
 		{
 		// Socket selected for write when it is ready
-		// We simply re-do the connect call and get the result
-		res = connect(sd, (struct sockaddr*) &sai, sizeof(sai));
-		if (res < 0)
+		int valOpt;
+		socklen_t lon;
+                // But check the socket for any errors
+                lon = sizeof(valOpt);
+                if (getsockopt(sd, SOL_SOCKET, SO_ERROR, (void*) (&valOpt), &lon) < 0)
+                    {
+                    warn("Error in getsockopt() %d - %s\n", errno, strerror(errno));
+                    close(sd);
+                    return -1;
+                    }
+                // Check the value returned...
+                if (valOpt)
 		    {
-		    warn("Error in TCP non-blocking connect() %d - %s\n", errno, strerror(errno));
+                    warn("Error in TCP non-blocking connect() %d - %s\n", valOpt, strerror(valOpt));
 		    close(sd);
 		    return -1;
 		    }
 		break;
 		}
 	    else
 		{
 		warn("TCP non-blocking connect() timed-out in select() after %ld milliseconds - Cancelling!\n", msTimeout);
 		close(sd);
 		return -1;
 		}
 	    }
 	}
     else
 	{