In 2.6, do_connect_server() was introduced by commit
0a4dcb65f ("MINOR:
stream-int/backend: Move si_connect() in the backend scope") and changed
the approach to work with a stream instead of a stream-interface. However
si_oc(si) was wrongly turned to &s->res instead of &s->req, which breaks
TFO by always inspecting the response channel to figure whether there are
data pending.
This fix can be backported to all versions till 2.6.
if (unlikely(!conn || !conn->ctrl || !conn->ctrl->connect))
return SF_ERR_INTERNAL;
- if (co_data(&s->res))
+ if (co_data(&s->req))
conn_flags |= CONNECT_HAS_DATA;
if (s->conn_retries == 0)
conn_flags |= CONNECT_CAN_USE_TFO;