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