• Nils Goroll's avatar
    respect `send_timeout` for "dripping" http1 writes · 62db2484
    Nils Goroll authored
    Previously, we only checked `v1l->deadline` (which gets initialized
    from the `send_timeout` session attribute or parameter) only for short
    writes, so for successful "dripping" http1 writes (streaming from a
    backend busy object with small chunks), we did not respect the
    timeout.
    
    This patch restructures `V1L_Flush()` to always check the deadline
    before a write by turning a `while() { ... }` into a `do { ... }
    while` with the same continuation criteria: `while (i != v1l->liov)`
    is turned into `if (i == v1l->liov) break;` and `while (i > 0 || errno
    == EWOULDBLOCK)` is kept to retry short writes.
    
    This also reduces the `writev()` call sites to one.
    
    Fixes #3189
    
     Conflicts:
    	bin/varnishd/http1/cache_http1_line.c
    	bin/varnishtest/tests/s00011.vtc
    62db2484
Name
Last commit
Last update
..
tests Loading commit data...
tests.disabled Loading commit data...
Makefile.am Loading commit data...
cmds.h Loading commit data...
flint.lnt Loading commit data...
flint.sh Loading commit data...
gensequences Loading commit data...
hpack.h Loading commit data...
huffman_gen.py Loading commit data...
huffman_input Loading commit data...
programs.h Loading commit data...
sequences Loading commit data...
teken.3 Loading commit data...
teken.c Loading commit data...
teken.h Loading commit data...
teken_scs.h Loading commit data...
teken_subr.h Loading commit data...
teken_subr_compat.h Loading commit data...
teken_wcwidth.h Loading commit data...
vmods.h Loading commit data...
vtc.c Loading commit data...
vtc.h Loading commit data...
vtc_barrier.c Loading commit data...
vtc_client.c Loading commit data...
vtc_h2_enctbl.h Loading commit data...
vtc_h2_hpack.c Loading commit data...
vtc_h2_priv.h Loading commit data...
vtc_h2_stattbl.h Loading commit data...
vtc_h2_tbl.c Loading commit data...
vtc_haproxy.c Loading commit data...
vtc_http.c Loading commit data...
vtc_http.h Loading commit data...
vtc_http2.c Loading commit data...
vtc_log.c Loading commit data...
vtc_logexp.c Loading commit data...
vtc_main.c Loading commit data...
vtc_misc.c Loading commit data...
vtc_process.c Loading commit data...
vtc_proxy.c Loading commit data...
vtc_server.c Loading commit data...
vtc_subr.c Loading commit data...
vtc_syslog.c Loading commit data...
vtc_varnish.c Loading commit data...
witness.py Loading commit data...