SUNRPC: Handle -ETIMEDOUT return from tlshd
If the TLS handshake attempt returns -ETIMEDOUT, we currently translate
that error into -EACCES. This becomes problematic for cases where the RPC
layer is attempting to re-connect in paths that don't resonably handle
-EACCES, for example: writeback. The RPC layer can handle -ETIMEDOUT quite
well, however - so if the handshake returns this error let's just pass it
along.
Fixes: 75eb6af7ac
("SUNRPC: Add a TCP-with-TLS RPC transport class")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
This commit is contained in:
parent
8f8df955f0
commit
7a2f6f7687
1 changed files with 9 additions and 1 deletions
|
@ -2581,7 +2581,15 @@ static void xs_tls_handshake_done(void *data, int status, key_serial_t peerid)
|
||||||
struct sock_xprt *lower_transport =
|
struct sock_xprt *lower_transport =
|
||||||
container_of(lower_xprt, struct sock_xprt, xprt);
|
container_of(lower_xprt, struct sock_xprt, xprt);
|
||||||
|
|
||||||
lower_transport->xprt_err = status ? -EACCES : 0;
|
switch (status) {
|
||||||
|
case 0:
|
||||||
|
case -EACCES:
|
||||||
|
case -ETIMEDOUT:
|
||||||
|
lower_transport->xprt_err = status;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lower_transport->xprt_err = -EACCES;
|
||||||
|
}
|
||||||
complete(&lower_transport->handshake_done);
|
complete(&lower_transport->handshake_done);
|
||||||
xprt_put(lower_xprt);
|
xprt_put(lower_xprt);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue