]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-conn-analyze-20061128
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 28 Nov 2006 09:08:04 +0000 (09:08 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 28 Nov 2006 09:08:04 +0000 (09:08 +0000)
force an rx connection reset if VICECONNBAD or VICETOKENDEAD are
received

(cherry picked from commit cb1997aad8a62b31f1e890dfe093a2d4845e0086)

src/WINNT/afsd/cm_conn.c

index 5494fa1e34f6aec6dad6caf998c3a357b48440e5..0465bdc6357470356261cbbdef351a0274daeb62 100644 (file)
@@ -493,8 +493,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);
@@ -508,6 +507,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";
@@ -548,6 +551,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;