]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-server-retry-20080502
authorJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 2 May 2008 20:28:18 +0000 (20:28 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 2 May 2008 20:28:18 +0000 (20:28 +0000)
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

index 87c3bc7292e0d7b0701d6d484b032a50343aa89b..a1e940b38a8deba59bd9e8ee39b085ed7af600c0 100644 (file)
@@ -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 )