diff options
author | Reyk Floeter <reyk@esdenera.com> | 2015-01-13 10:13:45 +0100 |
---|---|---|
committer | Reyk Floeter <reyk@esdenera.com> | 2015-01-13 10:13:45 +0100 |
commit | faa9e65a23cdb2e3971b36d7a22fb9d04dabb52c (patch) | |
tree | 39582f9f8ef154889a73a2f602508a8e1b487dfd | |
parent | fe34543bc7df2a1e3de5f05657e10aac355475a9 (diff) | |
download | httpd-faa9e65a23cdb2e3971b36d7a22fb9d04dabb52c.tar.gz httpd-faa9e65a23cdb2e3971b36d7a22fb9d04dabb52c.zip |
server_fcgi.c revision 1.45: Abort if fcgi_chunked is not true to
avoid sending additional garbage after the response.
Found by Erik Lax
ok florian@
-rw-r--r-- | server_fcgi.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/server_fcgi.c b/server_fcgi.c index a6055cd..012e2ea 100644 --- a/server_fcgi.c +++ b/server_fcgi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server_fcgi.c,v 1.44 2015/01/04 22:23:58 chrisz Exp $ */ +/* $OpenBSD: server_fcgi.c,v 1.45 2015/01/13 08:54:01 reyk Exp $ */ /* * Copyright (c) 2014 Florian Obser <florian@openbsd.org> @@ -674,16 +674,15 @@ server_fcgi_writechunk(struct client *clt) } else len = EVBUFFER_LENGTH(evb); - /* If len is 0, make sure to write the end marker only once */ - if (len == 0 && clt->clt_fcgi_end++) - return (0); - if (clt->clt_fcgi_chunked) { + /* If len is 0, make sure to write the end marker only once */ + if (len == 0 && clt->clt_fcgi_end++) + return (0); if (server_bufferevent_printf(clt, "%zx\r\n", len) == -1 || server_bufferevent_write_chunk(clt, evb, len) == -1 || server_bufferevent_print(clt, "\r\n") == -1) return (-1); - } else + } else if (len) return (server_bufferevent_write_buffer(clt, evb)); return (0); |