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.c27
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 */