From abdcbffef6bf6077955f974b749ed17811c4868b Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 2 May 2008 20:28:18 +0000 Subject: [PATCH] DEVEL15-windows-server-retry-20080502 LICENSE MIT do not retry if there is no server available for the current attempt (cherry picked from commit 98e658b7821f5020c67c05503f9e2c61c945554a) --- src/WINNT/afsd/cm_conn.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index 87c3bc729..a1e940b38 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -183,7 +183,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, int dead_session; long timeUsed, timeLeft; long code; - char addr[16]; + char addr[16]="unknown"; int forcing_new = 0; osi_Log2(afsd_logp, "cm_Analyze connp 0x%p, code 0x%x", @@ -576,22 +576,24 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, * In addition, we log an event to the event log */ - /* Log server being offline for this volume */ - sprintf(addr, "%d.%d.%d.%d", - ((serverp->addr.sin_addr.s_addr & 0xff)), - ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), - ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), - ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); + if (serverp) { + /* Log server being offline for this volume */ + sprintf(addr, "%d.%d.%d.%d", + ((serverp->addr.sin_addr.s_addr & 0xff)), + ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), + ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), + ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); #ifndef DJGPP - LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_HARD_DEAD_TIME_EXCEEDED, addr); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_HARD_DEAD_TIME_EXCEEDED, addr); #endif /* !DJGPP */ - osi_Log1(afsd_logp, "cm_Analyze: hardDeadTime exceeded addr[%s]", - osi_LogSaveString(afsd_logp,addr)); - reqp->tokenIdleErrorServp = serverp; - reqp->idleError++; - retry = 1; + osi_Log1(afsd_logp, "cm_Analyze: hardDeadTime exceeded addr[%s]", + osi_LogSaveString(afsd_logp,addr)); + reqp->tokenIdleErrorServp = serverp; + reqp->idleError++; + retry = 1; + } } else if (errorCode >= -64 && errorCode < 0) { /* mark server as down */ @@ -625,9 +627,11 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, retry = 1; } } else if (errorCode >= ERROR_TABLE_BASE_RXK && errorCode < ERROR_TABLE_BASE_RXK + 256) { - reqp->tokenIdleErrorServp = serverp; - reqp->tokenError = errorCode; - retry = 1; + if (serverp) { + reqp->tokenIdleErrorServp = serverp; + reqp->tokenError = errorCode; + retry = 1; + } } else if (errorCode == VICECONNBAD || errorCode == VICETOKENDEAD) { cm_ForceNewConnections(serverp); if ( timeLeft > 2 ) -- 2.39.5