diff options
Diffstat (limited to 'src/microhttpd/connection.c')
-rw-r--r-- | src/microhttpd/connection.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c index cc6192ad..798052da 100644 --- a/src/microhttpd/connection.c +++ b/src/microhttpd/connection.c | |||
@@ -4842,6 +4842,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
4842 | case MHD_CONNECTION_REQ_LINE_RECEIVING: | 4842 | case MHD_CONNECTION_REQ_LINE_RECEIVING: |
4843 | line = get_next_header_line (connection, | 4843 | line = get_next_header_line (connection, |
4844 | &line_len); | 4844 | &line_len); |
4845 | if (MHD_CONNECTION_REQ_LINE_RECEIVING < connection->state) | ||
4846 | continue; | ||
4845 | if (NULL != line) | 4847 | if (NULL != line) |
4846 | { | 4848 | { |
4847 | /* Check for empty string, as we might want | 4849 | /* Check for empty string, as we might want |
@@ -4876,10 +4878,10 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
4876 | case MHD_CONNECTION_URL_RECEIVED: | 4878 | case MHD_CONNECTION_URL_RECEIVED: |
4877 | line = get_next_header_line (connection, | 4879 | line = get_next_header_line (connection, |
4878 | NULL); | 4880 | NULL); |
4881 | if (MHD_CONNECTION_URL_RECEIVED != connection->state) | ||
4882 | continue; | ||
4879 | if (NULL == line) | 4883 | if (NULL == line) |
4880 | { | 4884 | { |
4881 | if (MHD_CONNECTION_URL_RECEIVED != connection->state) | ||
4882 | continue; | ||
4883 | if (connection->read_closed) | 4885 | if (connection->read_closed) |
4884 | { | 4886 | { |
4885 | CONNECTION_CLOSE_ERROR (connection, | 4887 | CONNECTION_CLOSE_ERROR (connection, |
@@ -4908,6 +4910,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
4908 | case MHD_CONNECTION_HEADER_PART_RECEIVED: | 4910 | case MHD_CONNECTION_HEADER_PART_RECEIVED: |
4909 | line = get_next_header_line (connection, | 4911 | line = get_next_header_line (connection, |
4910 | NULL); | 4912 | NULL); |
4913 | if (MHD_CONNECTION_HEADER_PART_RECEIVED != connection->state) | ||
4914 | continue; | ||
4911 | if (NULL == line) | 4915 | if (NULL == line) |
4912 | { | 4916 | { |
4913 | if (connection->state != MHD_CONNECTION_HEADER_PART_RECEIVED) | 4917 | if (connection->state != MHD_CONNECTION_HEADER_PART_RECEIVED) |
@@ -4935,7 +4939,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
4935 | continue; | 4939 | continue; |
4936 | case MHD_CONNECTION_HEADERS_RECEIVED: | 4940 | case MHD_CONNECTION_HEADERS_RECEIVED: |
4937 | parse_connection_headers (connection); | 4941 | parse_connection_headers (connection); |
4938 | if (MHD_CONNECTION_CLOSED == connection->state) | 4942 | if (MHD_CONNECTION_HEADERS_RECEIVED != connection->state) |
4939 | continue; | 4943 | continue; |
4940 | connection->state = MHD_CONNECTION_HEADERS_PROCESSED; | 4944 | connection->state = MHD_CONNECTION_HEADERS_PROCESSED; |
4941 | if (connection->suspended) | 4945 | if (connection->suspended) |
@@ -4943,7 +4947,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
4943 | continue; | 4947 | continue; |
4944 | case MHD_CONNECTION_HEADERS_PROCESSED: | 4948 | case MHD_CONNECTION_HEADERS_PROCESSED: |
4945 | call_connection_handler (connection); /* first call */ | 4949 | call_connection_handler (connection); /* first call */ |
4946 | if (MHD_CONNECTION_CLOSED == connection->state) | 4950 | if (MHD_CONNECTION_HEADERS_PROCESSED != connection->state) |
4947 | continue; | 4951 | continue; |
4948 | if (connection->suspended) | 4952 | if (connection->suspended) |
4949 | continue; | 4953 | continue; |
@@ -4983,11 +4987,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
4983 | if (0 != connection->read_buffer_offset) | 4987 | if (0 != connection->read_buffer_offset) |
4984 | { | 4988 | { |
4985 | process_request_body (connection); /* loop call */ | 4989 | process_request_body (connection); /* loop call */ |
4986 | if (connection->discard_request) | 4990 | if (MHD_CONNECTION_BODY_RECEIVING != connection->state) |
4987 | { | ||
4988 | mhd_assert (MHD_CONNECTION_BODY_RECEIVING != connection->state); | ||
4989 | continue; | 4991 | continue; |
4990 | } | ||
4991 | } | 4992 | } |
4992 | if ( (0 == connection->rq.remaining_upload_size) || | 4993 | if ( (0 == connection->rq.remaining_upload_size) || |
4993 | ( (MHD_SIZE_UNKNOWN == connection->rq.remaining_upload_size) && | 4994 | ( (MHD_SIZE_UNKNOWN == connection->rq.remaining_upload_size) && |
@@ -5007,10 +5008,10 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
5007 | case MHD_CONNECTION_BODY_RECEIVED: | 5008 | case MHD_CONNECTION_BODY_RECEIVED: |
5008 | line = get_next_header_line (connection, | 5009 | line = get_next_header_line (connection, |
5009 | NULL); | 5010 | NULL); |
5011 | if (connection->state != MHD_CONNECTION_BODY_RECEIVED) | ||
5012 | continue; | ||
5010 | if (NULL == line) | 5013 | if (NULL == line) |
5011 | { | 5014 | { |
5012 | if (connection->state != MHD_CONNECTION_BODY_RECEIVED) | ||
5013 | continue; | ||
5014 | if (connection->read_closed) | 5015 | if (connection->read_closed) |
5015 | { | 5016 | { |
5016 | CONNECTION_CLOSE_ERROR (connection, | 5017 | CONNECTION_CLOSE_ERROR (connection, |
@@ -5041,10 +5042,10 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
5041 | case MHD_CONNECTION_FOOTER_PART_RECEIVED: | 5042 | case MHD_CONNECTION_FOOTER_PART_RECEIVED: |
5042 | line = get_next_header_line (connection, | 5043 | line = get_next_header_line (connection, |
5043 | NULL); | 5044 | NULL); |
5045 | if (connection->state != MHD_CONNECTION_FOOTER_PART_RECEIVED) | ||
5046 | continue; | ||
5044 | if (NULL == line) | 5047 | if (NULL == line) |
5045 | { | 5048 | { |
5046 | if (connection->state != MHD_CONNECTION_FOOTER_PART_RECEIVED) | ||
5047 | continue; | ||
5048 | if (connection->read_closed) | 5049 | if (connection->read_closed) |
5049 | { | 5050 | { |
5050 | CONNECTION_CLOSE_ERROR (connection, | 5051 | CONNECTION_CLOSE_ERROR (connection, |
@@ -5073,7 +5074,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) | |||
5073 | continue; | 5074 | continue; |
5074 | case MHD_CONNECTION_FULL_REQ_RECEIVED: | 5075 | case MHD_CONNECTION_FULL_REQ_RECEIVED: |
5075 | call_connection_handler (connection); /* "final" call */ | 5076 | call_connection_handler (connection); /* "final" call */ |
5076 | if (connection->state == MHD_CONNECTION_CLOSED) | 5077 | if (connection->state != MHD_CONNECTION_FULL_REQ_RECEIVED) |
5077 | continue; | 5078 | continue; |
5078 | if (NULL == connection->rp.response) | 5079 | if (NULL == connection->rp.response) |
5079 | break; /* try again next time */ | 5080 | break; /* try again next time */ |