Hello,

When using krb5 exports, I noticed that TIRPC does not send XID in response
- see xdr_reply_encode() for MSG_DENIED case. Looks like Linux clients
can't decode the message and go in to an infinite loop retrying the same
NFS operation. I tried adding XID back (like it is done for normal case)
and it seems to have fixed the problem. Is this the right thing to do?

diff --git a/src/rpc_dplx_msg.c b/src/rpc_dplx_msg.c
index 01e5a5c..a585e8a 100644
--- a/src/rpc_dplx_msg.c
+++ b/src/rpc_dplx_msg.c
@@ -194,9 +194,12 @@ xdr_reply_encode(XDR *xdrs, struct rpc_msg *dmsg)
                        __warnx(TIRPC_DEBUG_FLAG_RPC_MSG,
                                "%s:%u DENIED AUTH",
                                __func__, __LINE__);
-                       buf = XDR_INLINE(xdrs, 2 * BYTES_PER_XDR_UNIT);
+                       buf = XDR_INLINE(xdrs, 5 * BYTES_PER_XDR_UNIT);

                        if (buf != NULL) {
+                               IXDR_PUT_INT32(buf, dmsg->rm_xid);
+                               IXDR_PUT_ENUM(buf, dmsg->rm_direction);
+                               IXDR_PUT_ENUM(buf, dmsg->rm_reply.rp_stat);
                                IXDR_PUT_ENUM(buf, rr->rj_stat);
                                IXDR_PUT_ENUM(buf, rr->rj_why);
                        } else if (!xdr_putenum(xdrs, rr->rj_stat)) {
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to