Browse Source

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

Christian Grothoff 12 years ago
parent
commit
a39c6c5206
2 changed files with 15 additions and 11 deletions
  1. 1 1
      ChangeLog
  2. 14 10
      src/microhttpd/connection.c

+ 1 - 1
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

+ 14 - 10
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)