DEVEL15-client-handle-vicetokendead-with-reconnect-20070104
authorDerrick Brashear <shadow@dementia.org>
Thu, 4 Jan 2007 21:56:30 +0000 (21:56 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 4 Jan 2007 21:56:30 +0000 (21:56 +0000)
basically, if the issue is really expired tokens then we force the server to tell us that instead of that our older connection is still using the old tokens for some reason, by letting a new connection happen first

(cherry picked from commit b745079fb276da810e0b96c7b94be5cb77aebee6)

src/afs/afs_analyze.c

index e426321..0053890 100644 (file)
@@ -422,7 +422,10 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode,
 
        tu = afs_FindUser(areq->uid, tsp->cell->cellNum, READ_LOCK);
        if (tu) {
-           if ((acode == VICETOKENDEAD) || (acode == RXKADEXPIRED))
+           if (acode == VICETOKENDEAD) {
+               aconn->forceConnectFS = 1;      /* don't check until new tokens set */
+               shouldRetry = 1;        /* Try again (as root). */
+           } else if (acode == RXKADEXPIRED)
                afs_warnuser
                    ("afs: Tokens for user of AFS id %d for cell %s have expired\n",
                     tu->vid, aconn->srvr->server->cell->cellName);
@@ -433,7 +436,10 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode,
            afs_PutUser(tu, READ_LOCK);
        } else {
            /* The else case shouldn't be possible and should probably be replaced by a panic? */
-           if ((acode == VICETOKENDEAD) || (acode == RXKADEXPIRED))
+           if (acode == VICETOKENDEAD) {
+               aconn->forceConnectFS = 1;      /* don't check until new tokens set */
+               shouldRetry = 1;        /* Try again (as root). */
+           } else if (acode == RXKADEXPIRED)
                afs_warnuser
                    ("afs: Tokens for user %d for cell %s have expired\n",
                     areq->uid, aconn->srvr->server->cell->cellName);