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:
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;