windows-conn-analyze-20061128
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 28 Nov 2006 09:05:10 +0000 (09:05 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 28 Nov 2006 09:05:10 +0000 (09:05 +0000)
force an rx connection reset if VICECONNBAD or VICETOKENDEAD are
received

src/WINNT/afsd/cm_conn.c

index f725ce3..b0aad90 100644 (file)
@@ -464,8 +464,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
         if ( timeLeft > 2 )
             retry = 1;
     }
-    else if (errorCode == RXKADEXPIRED || 
-             errorCode == RXKADBADTICKET) {
+    else if (errorCode == RXKADEXPIRED || errorCode == RXKADBADTICKET) {
         if (!dead_session) {
             lock_ObtainMutex(&userp->mx);
             ucellp = cm_GetUCell(userp, serverp->cellp);
@@ -479,6 +478,10 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
             if ( timeLeft > 2 )
                 retry = 1;
         }
+    } else if (errorCode == VICECONNBAD || errorCode == VICETOKENDEAD) {
+       cm_ForceNewConnections(serverp);
+        if ( timeLeft > 2 )
+            retry = 1;
     } else {
         if (errorCode) {
             char * s = "unknown error";
@@ -519,6 +522,8 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
            case UAEACCES          : s = "UAEACCES";           break;
            case ENOENT            : s = "ENOENT";             break;
            case UAENOENT          : s = "UAENOENT";           break;
+           case VICECONNBAD       : s = "VICECONNBAD";        break;
+           case VICETOKENDEAD     : s = "VICETOKENDEAD";      break;
            case CM_ERROR_NOSUCHCELL        : s = "CM_ERROR_NOSUCHCELL";         break;                         
            case CM_ERROR_NOSUCHVOLUME      : s = "CM_ERROR_NOSUCHVOLUME";       break;                         
            case CM_ERROR_TIMEDOUT          : s = "CM_ERROR_TIMEDOUT";           break;