]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
darwin-collect-network-errors-for-fast-timeout-20070618
authorDerrick Brashear <shadow@dementia.org>
Mon, 18 Jun 2007 18:57:31 +0000 (18:57 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 18 Jun 2007 18:57:31 +0000 (18:57 +0000)
same optimization we do on windows, linux

src/rx/rx_packet.c

index 1116ece87fd3b0c938e686e07a0b8214217d28bb..6daca6f8cb5c60a7d5e490e925aaaa0ab0860e3e 100644 (file)
@@ -2226,25 +2226,23 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn,
            p->retryTime = p->timeSent; /* resend it very soon */
            clock_Addmsec(&(p->retryTime),
                          10 + (((afs_uint32) p->backoff) << 8));
-
-#ifdef AFS_NT40_ENV
-           /* Windows is nice -- it can tell us right away that we cannot
-            * reach this recipient by returning an WSAEHOSTUNREACH error
-            * code.  So, when this happens let's "down" the host NOW so
+           /* Some systems are nice and tell us right away that we cannot
+            * reach this recipient by returning an error code. 
+            * So, when this happens let's "down" the host NOW so
             * we don't sit around waiting for this host to timeout later.
             */
-               if (call && code == -1 && WSAGetLastError() == WSAEHOSTUNREACH)
-                       call->lastReceiveTime = 0;
+           if (call && 
+#ifdef AFS_NT40_ENV
+               code == -1 && WSAGetLastError() == WSAEHOSTUNREACH
+#elif defined(AFS_LINUX20_ENV) && defined(KERNEL)
+               code == -ENETUNRECH
+#elif defined(AFS_DARWIN_ENV) && defined(KERNEL)
+               code == EHOSTUNREACH
+#else
+               0
 #endif
-#if defined(KERNEL) && defined(AFS_LINUX20_ENV)
-           /* Linux is nice -- it can tell us right away that we cannot
-            * reach this recipient by returning an ENETUNREACH error
-            * code.  So, when this happens let's "down" the host NOW so
-            * we don't sit around waiting for this host to timeout later.
-            */
-           if (call && code == -ENETUNREACH)
+               )
                call->lastReceiveTime = 0;
-#endif
        }
 #ifdef KERNEL
 #ifdef RX_KERNEL_TRACE
@@ -2420,24 +2418,23 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn,
                clock_Addmsec(&(p->retryTime),
                              10 + (((afs_uint32) p->backoff) << 8));
            }
-#ifdef AFS_NT40_ENV
-           /* Windows is nice -- it can tell us right away that we cannot
-            * reach this recipient by returning an WSAEHOSTUNREACH error
-            * code.  So, when this happens let's "down" the host NOW so
+           /* Some systems are nice and tell us right away that we cannot
+            * reach this recipient by returning an error code. 
+            * So, when this happens let's "down" the host NOW so
             * we don't sit around waiting for this host to timeout later.
             */
-           if (call && code == -1 && errno == WSAEHOSTUNREACH)
-               call->lastReceiveTime = 0;
+           if (call && 
+#ifdef AFS_NT40_ENV
+               code == -1 && WSAGetLastError() == WSAEHOSTUNREACH
+#elif defined(AFS_LINUX20_ENV) && defined(KERNEL)
+               code == -ENETUNRECH
+#elif defined(AFS_DARWIN_ENV) && defined(KERNEL)
+               code == EHOSTUNREACH
+#else
+               0
 #endif
-#if defined(KERNEL) && defined(AFS_LINUX20_ENV)
-           /* Linux is nice -- it can tell us right away that we cannot
-            * reach this recipient by returning an ENETUNREACH error
-            * code.  So, when this happens let's "down" the host NOW so
-            * we don't sit around waiting for this host to timeout later.
-            */
-           if (call && code == -ENETUNREACH)
+               )
                call->lastReceiveTime = 0;
-#endif
        }
 #if    defined(AFS_SUN5_ENV) && defined(KERNEL)
        if (!istack && waslocked)