sws: close sockets properly
authorJoe Mason <jmason@rim.com>
Mon, 6 Aug 2012 17:44:38 +0000 (13:44 -0400)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 6 Aug 2012 22:28:21 +0000 (00:28 +0200)
Fix a bug where closed sockets (fd -1) were left in the all_sockets
list, because of missing parens in a pointer arithmetic expression

Reenable the tests that were locking up due to this bug.

tests/data/DISABLED
tests/server/sws.c

index 3765b79..5a0f2bf 100644 (file)
@@ -5,6 +5,3 @@
 594
 1209
 1211
-2025
-2028
-2031
index bff4a87..151e064 100644 (file)
@@ -2065,9 +2065,9 @@ int main(int argc, char *argv[])
     /* Clear out closed sockets */
     for (socket_idx = num_sockets - 1; socket_idx >= 1; --socket_idx) {
       if (CURL_SOCKET_BAD == all_sockets[socket_idx]) {
-        char* dst = (char *) all_sockets + socket_idx;
-        char* src = (char *) all_sockets + socket_idx + 1;
-        char* end = (char *) all_sockets + num_sockets;
+        char* dst = (char *) (all_sockets + socket_idx);
+        char* src = (char *) (all_sockets + socket_idx + 1);
+        char* end = (char *) (all_sockets + num_sockets);
         memmove(dst, src, end - src);
         num_sockets -= 1;
       }