Rx: Do not stop keepalives on ACKALL receipt
authorAndrew Deason <adeason@sinenomine.net>
Mon, 31 Jan 2011 21:00:09 +0000 (15:00 -0600)
committerDerrick Brashear <shadow@dementia.org>
Wed, 2 Feb 2011 03:25:55 +0000 (19:25 -0800)
We need to still keep sending periodic keepalives after receiving an
ACKALL, since the call is not done yet. ACKALLs can be received when
the peer has received all data from us, well before the call has
finished. This is particularly noticeable for long-lived calls that
have little data transfer, such as AFSVolForward and
AFSVolForwardMultiple.

This reverts commit b1549f29a9515de09d4a64bfb28bf5afdfee2615, which
was intended to be part of a fix for RT 20727.

FIXES 128848

Change-Id: I319e6e95d699ea87ecc72888452b5e1e6fcd88b0
Reviewed-on: http://gerrit.openafs.org/3876
Tested-by: Andrew Deason <adeason@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/rx/rx.c

index fa9c9a1..3d4d7be 100644 (file)
@@ -3419,7 +3419,6 @@ rxi_ReceivePacket(struct rx_packet *np, osi_socket socket,
        }
 #endif /* AFS_GLOBAL_RXLOCK_KERNEL */
        rxi_ClearTransmitQueue(call, 0);
-       rxevent_Cancel(call->keepAliveEvent, call, RX_CALL_REFCOUNT_ALIVE);
        break;
     default:
        /* Should not reach here, unless the peer is broken: send an abort