mptcp: fastclose msk when cleaning unaccepted sockets
When cleaning up unaccepted mptcp socket still laying inside the listener queue at listener close time, such sockets will go through a regular close, waiting for a timeout before shutting down the subflows. There is no need to keep the kernel resources in use for such a possibly long time: short-circuit to fast-close. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
ddb1a072f8
Коммит
8d547809a5
|
@ -2953,10 +2953,13 @@ bool __mptcp_close(struct sock *sk, long timeout)
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
if (mptcp_check_readable(msk)) {
|
||||
/* the msk has read data, do the MPTCP equivalent of TCP reset */
|
||||
if (mptcp_check_readable(msk) || timeout < 0) {
|
||||
/* If the msk has read data, or the caller explicitly ask it,
|
||||
* do the MPTCP equivalent of TCP reset, aka MPTCP fastclose
|
||||
*/
|
||||
inet_sk_state_store(sk, TCP_CLOSE);
|
||||
mptcp_do_fastclose(sk);
|
||||
timeout = 0;
|
||||
} else if (mptcp_close_state(sk)) {
|
||||
__mptcp_wr_shutdown(sk);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче