aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/connection.c')
-rw-r--r--src/microhttpd/connection.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index c5f86cc2..bd96b1cf 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -2126,7 +2126,7 @@ transmit_error_response_len (struct MHD_Connection *connection,
2126 struct MHD_Response *response; 2126 struct MHD_Response *response;
2127 enum MHD_Result iret; 2127 enum MHD_Result iret;
2128 2128
2129 connection->state = MHD_CONNECTION_FOOTERS_RECEIVED; 2129 connection->state = MHD_CONNECTION_FULL_REQ_RECEIVED;
2130 connection->stop_with_error = true; 2130 connection->stop_with_error = true;
2131 if (0 != connection->read_buffer_size) 2131 if (0 != connection->read_buffer_size)
2132 { 2132 {
@@ -2316,6 +2316,9 @@ MHD_connection_update_event_loop_info (struct MHD_Connection *connection)
2316 happens in read handler */ 2316 happens in read handler */
2317 break; 2317 break;
2318 case MHD_CONNECTION_FOOTERS_RECEIVED: 2318 case MHD_CONNECTION_FOOTERS_RECEIVED:
2319 mhd_assert (0);
2320 break;
2321 case MHD_CONNECTION_FULL_REQ_RECEIVED:
2319 connection->event_loop_info = MHD_EVENT_LOOP_INFO_BLOCK; 2322 connection->event_loop_info = MHD_EVENT_LOOP_INFO_BLOCK;
2320 break; 2323 break;
2321 case MHD_CONNECTION_HEADERS_SENDING: 2324 case MHD_CONNECTION_HEADERS_SENDING:
@@ -3329,7 +3332,7 @@ parse_connection_headers (struct MHD_Connection *connection)
3329 enum MHD_Result iret; 3332 enum MHD_Result iret;
3330 3333
3331 /* die, http 1.1 request without host and we are pedantic */ 3334 /* die, http 1.1 request without host and we are pedantic */
3332 connection->state = MHD_CONNECTION_FOOTERS_RECEIVED; 3335 connection->state = MHD_CONNECTION_FULL_REQ_RECEIVED;
3333 connection->stop_with_error = true; 3336 connection->stop_with_error = true;
3334#ifdef HAVE_MESSAGES 3337#ifdef HAVE_MESSAGES
3335 MHD_DLOG (connection->daemon, 3338 MHD_DLOG (connection->daemon,
@@ -3640,6 +3643,7 @@ MHD_connection_handle_write (struct MHD_Connection *connection)
3640 case MHD_CONNECTION_BODY_RECEIVED: 3643 case MHD_CONNECTION_BODY_RECEIVED:
3641 case MHD_CONNECTION_FOOTER_PART_RECEIVED: 3644 case MHD_CONNECTION_FOOTER_PART_RECEIVED:
3642 case MHD_CONNECTION_FOOTERS_RECEIVED: 3645 case MHD_CONNECTION_FOOTERS_RECEIVED:
3646 case MHD_CONNECTION_FULL_REQ_RECEIVED:
3643 mhd_assert (0); 3647 mhd_assert (0);
3644 return; 3648 return;
3645 case MHD_CONNECTION_HEADERS_SENDING: 3649 case MHD_CONNECTION_HEADERS_SENDING:
@@ -4229,7 +4233,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
4229 connection->stop_with_error = true; 4233 connection->stop_with_error = true;
4230 } 4234 }
4231 connection->state = (0 == connection->remaining_upload_size) 4235 connection->state = (0 == connection->remaining_upload_size)
4232 ? MHD_CONNECTION_FOOTERS_RECEIVED 4236 ? MHD_CONNECTION_FULL_REQ_RECEIVED
4233 : MHD_CONNECTION_CONTINUE_SENT; 4237 : MHD_CONNECTION_CONTINUE_SENT;
4234 if (connection->suspended) 4238 if (connection->suspended)
4235 break; 4239 break;
@@ -4258,7 +4262,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
4258 (! connection->stop_with_error) ) 4262 (! connection->stop_with_error) )
4259 connection->state = MHD_CONNECTION_BODY_RECEIVED; 4263 connection->state = MHD_CONNECTION_BODY_RECEIVED;
4260 else 4264 else
4261 connection->state = MHD_CONNECTION_FOOTERS_RECEIVED; 4265 connection->state = MHD_CONNECTION_FULL_REQ_RECEIVED;
4262 if (connection->suspended) 4266 if (connection->suspended)
4263 break; 4267 break;
4264 continue; 4268 continue;
@@ -4277,6 +4281,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
4277 NULL); 4281 NULL);
4278 continue; 4282 continue;
4279 } 4283 }
4284 if (0 < connection->read_buffer_offset)
4285 connection->state = MHD_CONNECTION_FOOTER_PART_RECEIVED;
4280 break; 4286 break;
4281 } 4287 }
4282 if (0 == line[0]) 4288 if (0 == line[0])
@@ -4325,6 +4331,11 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
4325 } 4331 }
4326 continue; 4332 continue;
4327 case MHD_CONNECTION_FOOTERS_RECEIVED: 4333 case MHD_CONNECTION_FOOTERS_RECEIVED:
4334 /* The header, the body, and the footers of the request has been received,
4335 * switch to the final processing of the request. */
4336 connection->state = MHD_CONNECTION_FULL_REQ_RECEIVED;
4337 continue;
4338 case MHD_CONNECTION_FULL_REQ_RECEIVED:
4328 call_connection_handler (connection); /* "final" call */ 4339 call_connection_handler (connection); /* "final" call */
4329 if (connection->state == MHD_CONNECTION_CLOSED) 4340 if (connection->state == MHD_CONNECTION_CLOSED)
4330 continue; 4341 continue;
@@ -4760,7 +4771,7 @@ MHD_queue_response (struct MHD_Connection *connection,
4760 (NULL == response) || 4771 (NULL == response) ||
4761 (NULL != connection->response) || 4772 (NULL != connection->response) ||
4762 ( (MHD_CONNECTION_HEADERS_PROCESSED != connection->state) && 4773 ( (MHD_CONNECTION_HEADERS_PROCESSED != connection->state) &&
4763 (MHD_CONNECTION_FOOTERS_RECEIVED != connection->state) ) ) 4774 (MHD_CONNECTION_FULL_REQ_RECEIVED != connection->state) ) )
4764 return MHD_NO; 4775 return MHD_NO;
4765 4776
4766#ifdef UPGRADE_SUPPORT 4777#ifdef UPGRADE_SUPPORT
@@ -4893,7 +4904,7 @@ MHD_queue_response (struct MHD_Connection *connection,
4893 /* response was queued "early", refuse to read body / footers or 4904 /* response was queued "early", refuse to read body / footers or
4894 further requests! */ 4905 further requests! */
4895 connection->stop_with_error = true; 4906 connection->stop_with_error = true;
4896 connection->state = MHD_CONNECTION_FOOTERS_RECEIVED; 4907 connection->state = MHD_CONNECTION_FULL_REQ_RECEIVED;
4897 connection->remaining_upload_size = 0; 4908 connection->remaining_upload_size = 0;
4898 } 4909 }
4899 if (! connection->in_idle) 4910 if (! connection->in_idle)