tcp: Don't reset connection from ESTABLISHED state on EPOLLHUP
That might just mean we shut down the socket -- but we still have to go through the other states to ensure a orderly shutdown guest-side. While at it, drop the EPOLLHUP check for unhandled states: we should never hit that, but if we do, resetting the connection at that point is probably the wrong thing to do. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
62bace390b
commit
9b6769d53b
1 changed files with 1 additions and 6 deletions
7
tcp.c
7
tcp.c
|
@ -2825,9 +2825,7 @@ void tcp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events,
|
|||
case ESTABLISHED_SOCK_FIN_SENT:
|
||||
case ESTABLISHED:
|
||||
tcp_data_from_sock(c, conn, now);
|
||||
if (events & EPOLLHUP) {
|
||||
tcp_rst(c, conn);
|
||||
} else if (events & EPOLLRDHUP) {
|
||||
if (events & EPOLLRDHUP) {
|
||||
if (conn->state == ESTABLISHED)
|
||||
tcp_tap_state(conn, ESTABLISHED_SOCK_FIN);
|
||||
tcp_data_from_sock(c, conn, now);
|
||||
|
@ -2870,9 +2868,6 @@ void tcp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events,
|
|||
case CLOSED:
|
||||
break;
|
||||
}
|
||||
|
||||
if (events & EPOLLHUP)
|
||||
tcp_rst(c, conn);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue