OpenAFS Master Repository branch, openafs-stable-1_8_x, updated. openafs-stable-1_8_7-98-g5bbbbe3

Gerrit Code Review
Fri, 5 Feb 2021 11:10:24 -0500

The following commit has been merged in the openafs-stable-1_8_x branch:
commit 5bbbbe37ac7ffece710f55c471a34e5fc89543a8
Author: Mark Vitale <>
Date:   Thu Aug 8 18:18:22 2019 -0400

    rx: Avoid new server calls for non-DATA packets
    Normally, a client starts a new Rx call by sending DATA packets for
    that call to a server, and rxi_ReceiveServerCall on the server creates
    a new call struct for that call (since we don't recognize it as an
    existing call).
    Under certain circumstances, it's possible for a server to see a
    non-DATA packet as the first packet for a call, and currently
    rxi_ReceiveServerCall will create a new server call for any packet
    type. The call cannot actually proceed until the server receives data
    from the client (and goes through the challenge/response auth
    handshake, if needed), but usually this is harmless, since the
    existence of any packets for a particular call channel indicate that
    the client is trying to run such a call. The server will respond to
    the client with ACKs to indicate that it is missing the needed DATA
    packet(s), and the client will send them and the call can proceed.
    However, if a call is in the middle of running when the server is
    restarted, the client may be sending ACKs for a pre-existing call that
    the server doesn't know about. In this case, the server generates ACKs
    that indicate the server has not received any DATA packets, which may
    appear to violate the protocol, depending on the prior state of the
    call (e.g. the server appears to try to move the window backwards).
    Clients should be able to detect this and kill the call, but many do
    not. For many OpenAFS releases before commit 7b204946 (rx: Avoid
    lastReceiveTime update for invalid ACKs), the client will get confused
    in this situation and will keep the call open forever, never making
    There isn't any benefit to creating a new server call in these
    situations, so just ignore non-DATA packets for unrecognized calls, to
    avoid stalled calls from such clients. Those clients will not get a
    response from the server, and so the call will eventually die from the
    normal Rx call timeout.
    Tested-by: BuildBot <>
    Reviewed-by: Benjamin Kaduk <>
    (cherry picked from commit 3f9a08db86f951df3f6f69f1143f17dd7b43b150)
    Change-Id: Iaf8ee360f8aa634b5a7728866e41de267389e1f3
    Tested-by: BuildBot <>
    Reviewed-by: Andrew Deason <>
    Reviewed-by: Cheyenne Wills <>
    Reviewed-by: Stephan Wiesand <>

 src/rx/rx.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

OpenAFS Master Repository