From b91e7e86b429b6182d8ee23c471bef4f48af560f Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Fri, 3 Sep 2010 08:18:41 -0400 Subject: [PATCH 1/1] rx msgsize retry logic change only rewrite to RX_MSGSIZE if the MTU changed. otherwise, leave well enough alone Change-Id: If7311c623c61064c52b42fbb131aa8ff007c3741 Reviewed-on: http://gerrit.openafs.org/2664 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/rx/rx.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index 8f47522..344d4c6 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -5976,9 +5976,7 @@ rxi_CheckCall(struct rx_call *call) return 0; mtuout: if (conn->msgsizeRetryErr && cerror != RX_CALL_TIMEOUT) { - /* if we never succeeded, let the error pass out as-is */ - if (conn->peer->maxPacketSize) - cerror = conn->msgsizeRetryErr; + int oldMTU = conn->peer->ifMTU; /* if we thought we could send more, perhaps things got worse */ if (call->conn->peer->maxPacketSize > conn->lastPacketSize) @@ -5996,6 +5994,11 @@ mtuout: /* needed so ResetCall doesn't clobber us. */ call->MTU = conn->peer->ifMTU; + + /* if we never succeeded, let the error pass out as-is */ + if (conn->peer->maxPacketSize && oldMTU != conn->peer->ifMTU) + cerror = conn->msgsizeRetryErr; + } rxi_CallError(call, cerror); return -1; -- 1.9.4