diff options
Diffstat (limited to 'src/microhttpd/connection.c')
-rw-r--r-- | src/microhttpd/connection.c | 23 |
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) |