]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
In rxi_SendPacket[List], down hosts if ENETUNREACH or equivalent
authorAdam Megacz <megacz@hcoop.net>
Mon, 27 Jul 2009 03:32:07 +0000 (20:32 -0700)
committerDerrick Brashear <shadow@dementia.org>
Mon, 27 Jul 2009 15:39:01 +0000 (08:39 -0700)
This patch causes rxi_SendPacket[List] to "down" a host if
rxi_Sendmsg() returns -ENETUNREACH (or equivalent).  Previous behavior
only did this check if defined(KERNEL) becauase non-defined(KERNEL)
implementations did not return meaningful error codes from
rxi_Sendmsg().

Jeff Altman <jaltman@openafs.org> supplied the logic for the
AFS_NT40_ENV case; I was not able to test this (I do not own a
Windows license) and took him on his word.

Reviewed-on: http://gerrit.openafs.org/59
Reviewed-by: Adam Megacz <megacz@gmail.com>
Tested-by: Adam Megacz <megacz@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx_packet.c

index 707e3086c63ea4d3b957be4f750b5c120e0b38fc..402f78a14b592a7cfebdef62f55d5f588620a47e 100644 (file)
@@ -2283,10 +2283,10 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn,
             */
            if (call && 
 #ifdef AFS_NT40_ENV
-               code == -1 && WSAGetLastError() == WSAEHOSTUNREACH
-#elif defined(AFS_LINUX20_ENV) && defined(KERNEL)
+               (code == -1 && WSAGetLastError() == WSAEHOSTUNREACH) || (code == -WSAEHOSTUNREACH)
+#elif defined(AFS_LINUX20_ENV)
                code == -ENETUNREACH
-#elif defined(AFS_DARWIN_ENV) && defined(KERNEL)
+#elif defined(AFS_DARWIN_ENV)
                code == EHOSTUNREACH
 #else
                0
@@ -2473,10 +2473,10 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn,
             */
            if (call && 
 #ifdef AFS_NT40_ENV
-               code == -1 && WSAGetLastError() == WSAEHOSTUNREACH
-#elif defined(AFS_LINUX20_ENV) && defined(KERNEL)
+               (code == -1 && WSAGetLastError() == WSAEHOSTUNREACH) || (code == -WSAEHOSTUNREACH)
+#elif defined(AFS_LINUX20_ENV)
                code == -ENETUNREACH
-#elif defined(AFS_DARWIN_ENV) && defined(KERNEL)
+#elif defined(AFS_DARWIN_ENV)
                code == EHOSTUNREACH
 #else
                0