libmicrohttpd

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

commit a39c6c5206d6542e51e032d0fa659a87ad5384ba
parent 76929295b7f283fd763b7c908831e8fcb1216600
Author: Christian Grothoff <christian@grothoff.org>
Date:   Wed, 15 May 2013 20:04:11 +0000

-2nd attempt to fix #2859, this time things look much better

Diffstat:
MChangeLog | 2+-
Msrc/microhttpd/connection.c | 24++++++++++++++----------
2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,4 +1,4 @@ -Mon May 6 12:49:01 CEST 2013 +Mon May 15 12:49:01 CEST 2013 Fixing #2859. -CG Sun May 5 21:44:08 CEST 2013 diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -2034,16 +2034,6 @@ MHD_connection_handle_write (struct MHD_Connection *connection) pthread_mutex_unlock (&response->mutex); break; } -#if 0 - if (response->data_size == connection->response_write_position - response->data_start) - { - /* nothing to transmit, move on */ - if (response->crc != NULL) - pthread_mutex_unlock (&response->mutex); - connection->state = MHD_CONNECTION_BODY_SENT; - return MHD_YES; - } -#endif ret = connection->send_cls (connection, &response->data [connection->response_write_position @@ -2359,6 +2349,13 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) case MHD_CONNECTION_NORMAL_BODY_UNREADY: if (connection->response->crc != NULL) pthread_mutex_lock (&connection->response->mutex); + if (0 == connection->response->total_size) + { + if (connection->response->crc != NULL) + pthread_mutex_unlock (&connection->response->mutex); + connection->state = MHD_CONNECTION_BODY_SENT; + continue; + } if (MHD_YES == try_ready_normal_body (connection)) { if (connection->response->crc != NULL) @@ -2376,6 +2373,13 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) case MHD_CONNECTION_CHUNKED_BODY_UNREADY: if (connection->response->crc != NULL) pthread_mutex_lock (&connection->response->mutex); + if (0 == connection->response->total_size) + { + if (connection->response->crc != NULL) + pthread_mutex_unlock (&connection->response->mutex); + connection->state = MHD_CONNECTION_BODY_SENT; + continue; + } if (MHD_YES == try_ready_chunked_body (connection)) { if (connection->response->crc != NULL)