libmicrohttpd

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

commit 1ff4b273acc0221fb89b922f16d636adc0ea9116
parent 341b9db92e91d9ddcf8230a0329c52e319bdee1f
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sat,  8 Aug 2015 12:29:34 +0000

connection.c: try_ready_chunked_body(): fix VS compiler warning, small refactoring for readability

Diffstat:
Msrc/microhttpd/connection.c | 15++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -411,7 +411,7 @@ try_ready_chunked_body (struct MHD_Connection *connection) response = connection->response; if (0 == connection->write_buffer_size) { - size = connection->daemon->pool_size; + size = MHD_MIN(connection->daemon->pool_size, 2 * (0xFFFFFF + sizeof(cbuf) + 2)); do { size /= 2; @@ -433,17 +433,18 @@ try_ready_chunked_body (struct MHD_Connection *connection) ret = 0; /* response must be empty, don't bother calling crc */ else if ( (response->data_start <= connection->response_write_position) && - (response->data_size + response->data_start > + (response->data_start + response->data_size > connection->response_write_position) ) { + /* difference between response_write_position and data_start is less + than data_size which is size_t type, no need to check for overflow */ + const size_t data_write_offset = (size_t)(connection->response_write_position - response->data_start); /* buffer already ready, use what is there for the chunk */ - ret = response->data_size + response->data_start - connection->response_write_position; - if ( (ret > 0) && - (((size_t) ret) > connection->write_buffer_size - sizeof (cbuf) - 2) ) + ret = response->data_size - data_write_offset; + if ( ((size_t) ret) > connection->write_buffer_size - sizeof (cbuf) - 2 ) ret = connection->write_buffer_size - sizeof (cbuf) - 2; memcpy (&connection->write_buffer[sizeof (cbuf)], - &response->data[connection->response_write_position - response->data_start], - ret); + &response->data[data_write_offset], ret); } else {