• David Howells's avatar
    rxrpc: Fix call expiry handling · dcbefc30
    David Howells authored
    Fix call expiry handling in the following ways
    
     (1) If all the request data from a client call is acked, don't send a
         follow up IDLE ACK with firstPacket == 1 and previousPacket == 0 as
         this appears to fool some servers into thinking everything has been
         accepted.
    
     (2) Never send an abort back to the server once it has ACK'd all the
         request packets; rather just try to reuse the channel for the next
         call.  The first request DATA packet of the next call on the same
         channel will implicitly ACK the entire reply of the dead call - even
         if we haven't transmitted it yet.
    
     (3) Don't send RX_CALL_TIMEOUT in an ABORT packet, librx uses abort codes
         to pass local errors to the caller in addition to remote errors, and
         this is meant to be local only.
    
    The following also need to be addressed in future patches:
    
     (4) Service calls should send PING ACKs as 'keep alives' if the server is
         still processing the call.
    
     (5) VERSION REPLY packets should be sent to the peers of service
         connections to act as keep-alives.  This is used to keep firewall
         routes in place.  The AFS CM should enable this.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    dcbefc30
call_event.c 11 KB