It avoids to subscribe to send events because some may remain in the output
buffer. If the output is closed or if an error occurred, there is no way to send
these data anyway, so it is safe to drain them.
sent = 1;
}
+ if (conn->flags & (CO_FL_ERROR|CO_FL_SOCK_WR_SH)) {
+ /* error or output closed, nothing to send, clear the buffer to release it */
+ b_reset(&h1c->obuf);
+ }
+
end:
if (!(h1c->flags & H1C_F_OUT_FULL) && h1c->h1s && h1c->h1s->send_wait) {
struct h1s *h1s = h1c->h1s;