From 7654154a6a023407adb4af05b906f90226625ad2 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sun, 6 Jan 2019 19:40:04 -0500 Subject: Swallow writes after the connection is closed It was not okay. --- image.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/image.c b/image.c index 7934396..2cfc340 100644 --- a/image.c +++ b/image.c @@ -174,11 +174,20 @@ static noreturn void errkcgi(int eval, enum kcgi_err code, const char *str) { errx(eval, "%s: %s", str, kcgi_strerror(code)); } +struct Stream { + struct kreq *req; + bool hup; +}; + +// XXX: Swallow writes after the connection is closed. static int streamWrite(void *cookie, const char *buf, int len) { - struct kreq *req = cookie; - enum kcgi_err error = khttp_write(req, buf, (size_t)len); - if (error == KCGI_HUP) return -1; - if (error) errkcgi(EX_IOERR, error, "khttp_write"); + struct Stream *stream = cookie; + if (stream->hup) return len; + enum kcgi_err error = khttp_write(stream->req, buf, (size_t)len); + if (error) { + if (error != KCGI_HUP) errkcgi(EX_IOERR, error, "khttp_write"); + stream->hup = true; + } return len; } @@ -219,7 +228,8 @@ static void worker(void) { if (error == KCGI_HUP) goto next; if (error) errkcgi(EX_IOERR, error, "khttp_body"); - FILE *stream = fwopen(&req, streamWrite); + struct Stream cookie = { .req = &req }; + FILE *stream = fwopen(&cookie, streamWrite); if (!stream) err(EX_OSERR, "fwopen"); render(stream, tileX, tileY); -- cgit 1.4.1 '>
path: root/bin/1sh (unfollow)
Commit message (Collapse)Author
2019-08-28Remove wakeJune McEnroe
RIP again, thursday. I don't think the RPi3 even knows how to suspend.
2019-08-28Add The Fated SkyJune McEnroe
2019-08-28Factor out cap_rights_limit error handlingJune McEnroe
2019-08-27Cast %lc parameter to wint_tJune McEnroe
I hadn't realized that's what type %lc takes and suddenly started seeing warnings about it for some reason.
2019-08-27Remove host thursdayJune McEnroe
RIP.
2019-08-22Add cards to causal.agencyJune McEnroe
2019-08-20Add Record of a Spaceborn FewJune McEnroe
2019-08-13Add The Calculating StarsJune McEnroe
2019-08-12Make dtch one command, add sinkingJune McEnroe
2019-08-03Add ImagoJune McEnroe
2019-07-29Add KindredJune McEnroe
2019-07-27Clean up home filesJune McEnroe
2019-07-27Fix shell script style in ~/.local/binJune McEnroe
2019-07-27Shell script style passJune McEnroe
2019-07-27Add c11.pdfJune McEnroe
2019-07-27Move pdf script to MakefileJune McEnroe
2019-07-27Update macOS neovim to 0.3.8June McEnroe
Which somehow still doesn't include my man fix.
2019-07-27Rewrite port makefiles consistentlyJune McEnroe
2019-07-27Rewrite Makefile once more with more organizationJune McEnroe
2019-07-27Reference png.h in bin.7June McEnroe
2019-07-27Revert "Use scheme to style HTMLs"June McEnroe
This reverts commit 4b7d5161a30645b0a23691687ef1aafdda62d3bb. I don't know why but I don't like it.
2019-07-27Remove scheme text linkJune McEnroe
No standard base64 encoder so no way to maintain it.
2019-07-26Update Dark.terminalJune McEnroe
Why are the blobs so much bigger now?
2019-07-26Lighten dark whiteJune McEnroe
2019-07-25Add png.3 man pageJune McEnroe
2019-07-25Use scheme to style HTMLsJune McEnroe
2019-07-25Don't match comments in strings in makeJune McEnroe
2019-07-25Generate index.html with links from bin.7June McEnroe
2019-07-24Warn when date has changedJune McEnroe
2019-07-24Add whenJune McEnroe
When? Now.
2019-07-24Remove histedit from bitJune McEnroe