diff --git a/src/stream.c b/src/stream.c index 10038268d..0cd5bb63e 100644 --- a/src/stream.c +++ b/src/stream.c @@ -1987,6 +1987,14 @@ struct task *process_stream(struct task *t) */ if (!(req->flags & (CF_SHUTR|CF_SHUTW_NOW))) channel_forward(req, CHN_INFINITE_FORWARD); + + /* Just in order to support fetching HTTP contents after start + * of forwarding when the HTTP forwarding analyser is not used, + * we simply reset msg->sov so that HTTP rewinding points to the + * headers. + */ + if (s->txn) + s->txn->req.sov = s->txn->req.eoh + s->txn->req.eol - req->buf->o; } /* check if it is wise to enable kernel splicing to forward request data */ @@ -2150,6 +2158,14 @@ struct task *process_stream(struct task *t) if (!(res->flags & (CF_SHUTR|CF_SHUTW_NOW))) channel_forward(res, CHN_INFINITE_FORWARD); + /* Just in order to support fetching HTTP contents after start + * of forwarding when the HTTP forwarding analyser is not used, + * we simply reset msg->sov so that HTTP rewinding points to the + * headers. + */ + if (s->txn) + s->txn->rsp.sov = s->txn->rsp.eoh + s->txn->rsp.eol - res->buf->o; + /* if we have no analyser anymore in any direction and have a * tunnel timeout set, use it now. Note that we must respect * the half-closed timeouts as well.