BUG/MEDIUM: tcp: Make sure we keep the polling consistent in tcp_probe_connect.

In tcp_probe_connect(), if the connection is still pending, do not disable
want_recv, we don't have any business to do so, but explicitely use
__conn_xprt_want_send(), otherwise the next time we'll reach tcp_probe_connect,
fd_send_ready() would return 0 and we would never flag the connection as
CO_FL_CONNECTED, which can lead to various problems, such as check not
completing because they consider it is not connected yet.
This commit is contained in:
Olivier Houchard 2019-06-06 18:15:01 +02:00
parent 43091ed161
commit 7b3a79f6c4

View File

@ -691,7 +691,7 @@ int tcp_connect_probe(struct connection *conn)
if (connect(fd, (const struct sockaddr *)addr, get_addr_len(addr)) == -1) {
if (errno == EALREADY || errno == EINPROGRESS) {
__conn_xprt_stop_recv(conn);
__conn_xprt_want_send(conn);
fd_cant_send(fd);
return 0;
}