diff options
author | David Howells <dhowells@redhat.com> | 2020-10-01 00:54:44 +0200 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2020-10-15 14:28:00 +0200 |
commit | ddc7834af8d56c2c0e805f05493ba4a650c0344f (patch) | |
tree | 9d7b2fadb5667f2badd180de1759f33dcf80218b /net/rxrpc/conn_client.c | |
parent | rxrpc: Fix bundle counting for exclusive connections (diff) | |
download | linux-ddc7834af8d56c2c0e805f05493ba4a650c0344f.tar.xz linux-ddc7834af8d56c2c0e805f05493ba4a650c0344f.zip |
rxrpc: Fix loss of final ack on shutdown
Fix the loss of transmission of a call's final ack when a socket gets shut
down. This means that the server will retransmit the last data packet or
send a ping ack and then get an ICMP indicating the port got closed. The
server will then view this as a failure.
Fixes: 3136ef49a14c ("rxrpc: Delay terminal ACK transmission on a client call")
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net/rxrpc/conn_client.c')
-rw-r--r-- | net/rxrpc/conn_client.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/rxrpc/conn_client.c b/net/rxrpc/conn_client.c index 5d9adfd4c84f..7e574c75be8e 100644 --- a/net/rxrpc/conn_client.c +++ b/net/rxrpc/conn_client.c @@ -906,6 +906,9 @@ static void rxrpc_unbundle_conn(struct rxrpc_connection *conn) _enter("C=%x", conn->debug_id); + if (conn->flags & RXRPC_CONN_FINAL_ACK_MASK) + rxrpc_process_delayed_final_acks(conn, true); + spin_lock(&bundle->channel_lock); bindex = conn->bundle_shift / RXRPC_MAXCALLS; if (bundle->conns[bindex] == conn) { |