]> 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|account-1000005@unknown>
Thu, 17 Dec 2009 06:39:04 +0000 (22:39 -0800)
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>
(cherry picked from commit 1ddc7fa920213f9b5455e632bbddf05b866af647)
Change-Id: I1c5bdf8f3216f82f32fcf22f1c47a3a43130e071
Reviewed-on: http://gerrit.openafs.org/945

src/rx/rx_packet.c

index 449b8e2405bc6776c4add20ea8e11f8316a24841..c6b5247ad179d6d98b4e05fb77c47de1941d1640 100644 (file)
@@ -2246,10 +2246,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
@@ -2438,10 +2438,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