windows-server-retry-20080502
authorJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 2 May 2008 20:29:43 +0000 (20:29 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 2 May 2008 20:29:43 +0000 (20:29 +0000)
LICENSE MIT

do not retry if there is no server available for the current attempt

src/WINNT/afsd/cm_conn.c

index e81739d..5d5b277 100644 (file)
@@ -177,7 +177,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",
@@ -549,6 +549,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
          * In addition, we log an event to the event log 
          */
 
+        if (serverp) {
         /* Log server being offline for this volume */
         sprintf(addr, "%d.%d.%d.%d", 
                  ((serverp->addr.sin_addr.s_addr & 0xff)),
@@ -564,6 +565,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
         reqp->idleError++;
         retry = 1;
     }
+    }
     else if (errorCode >= -64 && errorCode < 0) {
         /* mark server as down */
         lock_ObtainMutex(&serverp->mx);
@@ -596,9 +598,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) {
+        if (serverp) {
         reqp->tokenIdleErrorServp = serverp;
         reqp->tokenError = errorCode;
         retry = 1;
+        }
     } else if (errorCode == VICECONNBAD || errorCode == VICETOKENDEAD) {
        cm_ForceNewConnections(serverp);
         if ( timeLeft > 2 )