diff --git a/src/backend.c b/src/backend.c index 4d75df6fe..d40202885 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1061,16 +1061,12 @@ int connect_server(struct stream *s) struct server *srv; int reuse = 0; int err; - void *send_wait = NULL, *recv_wait = NULL; srv = objt_server(s->target); srv_cs = objt_cs(s->si[1].end); srv_conn = cs_conn(srv_cs); - if (srv_conn) { + if (srv_conn) reuse = s->target == srv_conn->target; - send_wait = srv_conn->send_wait; - recv_wait = srv_conn->recv_wait; - } if (srv && !reuse) { old_cs = srv_cs; @@ -1171,9 +1167,6 @@ int connect_server(struct stream *s) if (!srv_cs) return SF_ERR_RESOURCE; - srv_conn->send_wait = send_wait; - srv_conn->recv_wait = recv_wait; - if (!(s->flags & SF_ADDR_SET)) { err = assign_server_address(s); if (err != SRV_STATUS_OK) diff --git a/src/stream.c b/src/stream.c index f4473e86d..7b601ac44 100644 --- a/src/stream.c +++ b/src/stream.c @@ -862,6 +862,12 @@ static void sess_establish(struct stream *s) /* real connections have timeouts */ req->wto = s->be->timeout.server; rep->rto = s->be->timeout.server; + /* The connection is now established, try to read data from the + * underlying layer, and subscribe to recv events. We use a + * delayed recv here to give a chance to the data to flow back + * by the time we process other tasks. + */ + si_chk_rcv(si); } req->wex = TICK_ETERNITY; }