]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
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 e426321242120ce09f3a370e03c9b7d74000bd33..0053890f7e11118e21fd5b2537f74bcb9d464861 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);