Hi, Slightly reordered some of the CGI fixes from Dec.
- Lauri
>From 2b3753014454afadf3fc17806ef97a7b53006927 Mon Sep 17 00:00:00 2001 From: Lauri Kasanen <[email protected]> Date: Mon, 17 Dec 2012 18:14:15 +0200 Subject: [PATCH] cgi: More swrite error checks Signed-off-by: Lauri Kasanen <[email protected]> --- plugins/cgi/cgi.c | 9 +++++---- plugins/cgi/event.c | 11 +++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/cgi/cgi.c b/plugins/cgi/cgi.c index 57c7eb0..c6a07ec 100644 --- a/plugins/cgi/cgi.c +++ b/plugins/cgi/cgi.c @@ -37,14 +37,15 @@ int swrite(const int fd, const void *buf, const size_t count) while (pos > 0 && ret >= 0) { ret = write(fd, buf, pos); + + if (ret < 0) + return ret; + pos -= ret; buf += ret; } - if (ret < 0) - return 0; - - return 1; + return count; } static void cgi_write_post(void *p) diff --git a/plugins/cgi/event.c b/plugins/cgi/event.c index ff1d48f..67d79c9 100644 --- a/plugins/cgi/event.c +++ b/plugins/cgi/event.c @@ -135,14 +135,21 @@ int _mkp_event_write(int socket) } } + int ret; + if (r->chunked) { char tmp[16]; int len = snprintf(tmp, 16, "%x%s", r->in_len, MK_CRLF); - swrite(socket, tmp, len); + ret = swrite(socket, tmp, len); + if (ret < 0) + return MK_PLUGIN_RET_EVENT_CLOSE; } - swrite(socket, outptr, r->in_len); + ret = swrite(socket, outptr, r->in_len); + if (ret < 0) + return MK_PLUGIN_RET_EVENT_CLOSE; + r->in_len = 0; mk_api->event_socket_change_mode(socket, MK_EPOLL_SLEEP, MK_EPOLL_LEVEL_TRIGGERED); mk_api->event_socket_change_mode(r->fd, MK_EPOLL_READ, MK_EPOLL_LEVEL_TRIGGERED); -- 1.7.2.1
_______________________________________________ Monkey mailing list [email protected] http://lists.monkey-project.com/listinfo/monkey
