libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit b218fd29ff2dbbad26eaecce1abe65ba3e791bdf
parent d4168c4478bd1b1732fad06d7f3a188c5ddea4b7
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Mon,  8 Jun 2015 22:18:30 +0000

fix: send_param_adapter(): do not send chunks larger than requested when using sendfile()

Diffstat:
Msrc/microhttpd/daemon.c | 10+++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -1107,15 +1107,15 @@ send_param_adapter (struct MHD_Connection *connection, /* can use sendfile */ offset = (off_t) connection->response_write_position + connection->response->fd_off; left = connection->response->total_size - connection->response_write_position; - if (left > SSIZE_MAX) - left = SSIZE_MAX; /* cap at return value limit */ - if (-1 != (ret = sendfile (connection->socket_fd, + if (i > left) + i = left; + if (0 < (ret = sendfile (connection->socket_fd, fd, &offset, - (size_t) left))) + i))) { #if EPOLL_SUPPORT - if (ret < left) + if (requested_size > (size_t) ret) { /* partial write --- no longer write-ready */ connection->epoll_state &= ~MHD_EPOLL_STATE_WRITE_READY;