windows-rx-ehostunreach-20060116
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 16 Jan 2006 16:22:27 +0000 (16:22 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 16 Jan 2006 16:22:27 +0000 (16:22 +0000)
another location where EHOSTUNREACH can be returned
such that we can timeout the request immediately

src/rx/rx_packet.c

index f31a6c8..15c2380 100644 (file)
@@ -2384,6 +2384,15 @@ 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
+            * we don't sit around waiting for this host to timeout later.
+            */
+           if (call && code == -1 && errno == WSAEHOSTUNREACH)
+               call->lastReceiveTime = 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