Commit b48633bd authored by Trond Myklebust's avatar Trond Myklebust

SUNRPC: Invalidate the RPCSEC_GSS session if the server dropped the request

RFC 2203 requires the server to drop the request if it believes the
RPCSEC_GSS context is out of sequence. The problem is that we have no way
on the client to know why the server dropped the request. In order to avoid
spinning forever trying to resend the request, the safe approach is
therefore to always invalidate the RPCSEC_GSS context on every major
timeout.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent a3dab293
...@@ -1173,6 +1173,11 @@ call_timeout(struct rpc_task *task) ...@@ -1173,6 +1173,11 @@ call_timeout(struct rpc_task *task)
clnt->cl_protname, clnt->cl_server); clnt->cl_protname, clnt->cl_server);
} }
rpc_force_rebind(clnt); rpc_force_rebind(clnt);
/*
* Did our request time out due to an RPCSEC_GSS out-of-sequence
* event? RFC2203 requires the server to drop all such requests.
*/
rpcauth_invalcred(task);
retry: retry:
clnt->cl_stats->rpcretrans++; clnt->cl_stats->rpcretrans++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment