diff options
author | Jo-Philipp Wich <jo@mein.io> | 2022-08-03 00:23:54 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2022-08-03 00:47:03 +0200 |
commit | 290ff883c69ac935ee3f22733d77d2a5a932f585 (patch) | |
tree | e70a80dc6470273a8fd4e07a2f07cc77b4c0cff9 | |
parent | 145a309c54b7a9ff46fc588783f58804c23b09ab (diff) |
relay: trigger close if in header read state with pending data
In case a relay process exits without printing at least one newline,
relay_close_if_done() will not close the relay context because there's
still pending data in the ustream.
Extend the relevant condition to only consider pending data if the relay
context is not in the header parsing state anymore.
Without this fix, requests triggering such a behaviour will never conclude.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | relay.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -155,7 +155,7 @@ static void relay_close_if_done(struct uloop_timeout *timeout) while (ustream_poll(&r->sfd.stream)); - if (!(r->process_done || s->eof) || ustream_pending_data(s, false)) + if (!(r->process_done || s->eof) || (ustream_pending_data(s, false) && !r->header_cb)) return; uh_relay_close(r, r->ret); |