channel_auto_read(req);
channel_auto_connect(req);
channel_auto_close(req);
- c_adv(req, ci_data(req));
- if (IS_HTX_STRM(s) && s->txn) {
+ if (IS_HTX_STRM(s)) {
+ struct htx *htx = htxbuf(&req->buf);
+
/* We'll let data flow between the producer (if still connected)
- * to the consumer (which might possibly not be connected yet).
+ * to the consumer.
*/
+ co_set_data(req, htx->data);
if (!(req->flags & (CF_SHUTR|CF_SHUTW_NOW)))
- channel_htx_forward_forever(req, htxbuf(&req->buf));
+ channel_htx_forward_forever(req, htx);
}
else {
/* We'll let data flow between the producer (if still connected)
* to the consumer (which might possibly not be connected yet).
*/
+ c_adv(req, ci_data(req));
if (!(req->flags & (CF_SHUTR|CF_SHUTW_NOW)))
channel_forward_forever(req);
*/
channel_auto_read(res);
channel_auto_close(res);
- c_adv(res, ci_data(res));
+ if (IS_HTX_STRM(s)) {
+ struct htx *htx = htxbuf(&res->buf);
- if (IS_HTX_STRM(s) && s->txn) {
/* We'll let data flow between the producer (if still connected)
* to the consumer.
*/
+ co_set_data(res, htx->data);
if (!(res->flags & (CF_SHUTR|CF_SHUTW_NOW)))
- channel_htx_forward_forever(res, htxbuf(&res->buf));
+ channel_htx_forward_forever(res, htx);
}
else {
/* We'll let data flow between the producer (if still connected)
* to the consumer.
*/
+ c_adv(res, ci_data(res));
if (!(res->flags & (CF_SHUTR|CF_SHUTW_NOW)))
channel_forward_forever(res);