libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 100b8f2fc4a8d3c040cb7707832ff7753bf3ff72
parent d270741b49d6c380e1e964838ba9f5b58f10553d
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Fri,  3 May 2019 20:08:19 +0300

Use new MHD_lookup_connection_value_n() function

Diffstat:
Msrc/microhttpd/basicauth.c | 9++++++---
Msrc/microhttpd/connection.c | 56+++++++++++++++++++++++++++++++++++---------------------
Msrc/microhttpd/digestauth.c | 20++++++++++++--------
Msrc/microhttpd/postprocessor.c | 10++++++----
Msrc/testcurl/test_get.c | 11++++++++---
5 files changed, 67 insertions(+), 39 deletions(-)

diff --git a/src/microhttpd/basicauth.c b/src/microhttpd/basicauth.c @@ -52,9 +52,12 @@ MHD_basic_auth_get_username_password (struct MHD_Connection *connection, const char *separator; char *user; - if ( (NULL == (header = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_AUTHORIZATION))) || + if ( (MHD_NO == MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_AUTHORIZATION, + MHD_STATICSTR_LEN_ (MHD_HTTP_HEADER_AUTHORIZATION), + &header, + NULL)) || (0 != strncmp (header, _BASIC_BASE, MHD_STATICSTR_LEN_ (_BASIC_BASE))) ) diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -1070,9 +1070,12 @@ need_100_continue (struct MHD_Connection *connection) (NULL != connection->version) && (MHD_str_equal_caseless_(connection->version, MHD_HTTP_VERSION_1_1)) && - (NULL != (expect = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_EXPECT))) && + (MHD_NO != MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_EXPECT, + MHD_STATICSTR_LEN_(MHD_HTTP_HEADER_EXPECT), + &expect, + NULL)) && (MHD_str_equal_caseless_(expect, "100-continue")) && (connection->continue_message_write_offset < @@ -2306,6 +2309,7 @@ static int parse_cookie_header (struct MHD_Connection *connection) { const char *hdr; + size_t hdr_len; char *cpy; char *pos; char *sce; @@ -2316,13 +2320,15 @@ parse_cookie_header (struct MHD_Connection *connection) char old; int quotes; - hdr = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_COOKIE); - if (NULL == hdr) + if (MHD_NO == MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_COOKIE, + MHD_STATICSTR_LEN_(MHD_HTTP_HEADER_COOKIE), + &hdr, + &hdr_len)) return MHD_YES; cpy = MHD_pool_allocate (connection->pool, - strlen (hdr) + 1, + hdr_len + 1, MHD_YES); if (NULL == cpy) { @@ -2337,7 +2343,8 @@ parse_cookie_header (struct MHD_Connection *connection) } memcpy (cpy, hdr, - strlen (hdr) + 1); + hdr_len); + cpy[hdr_len] = '\0'; pos = cpy; while (NULL != pos) { @@ -2982,10 +2989,13 @@ parse_connection_headers (struct MHD_Connection *connection) (NULL != connection->version) && (MHD_str_equal_caseless_(MHD_HTTP_VERSION_1_1, connection->version)) && - (NULL == - MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_HOST)) ) + (MHD_NO == + MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_HOST, + MHD_STATICSTR_LEN_(MHD_HTTP_HEADER_HOST), + NULL, + NULL)) ) { int iret; @@ -3022,10 +3032,12 @@ parse_connection_headers (struct MHD_Connection *connection) } connection->remaining_upload_size = 0; - enc = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_TRANSFER_ENCODING); - if (NULL != enc) + if (MHD_NO != MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_TRANSFER_ENCODING, + MHD_STATICSTR_LEN_(MHD_HTTP_HEADER_TRANSFER_ENCODING), + &enc, + NULL)) { connection->remaining_upload_size = MHD_SIZE_UNKNOWN; if (MHD_str_equal_caseless_(enc, @@ -3034,10 +3046,12 @@ parse_connection_headers (struct MHD_Connection *connection) } else { - clen = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_CONTENT_LENGTH); - if (NULL != clen) + if (MHD_NO != MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_CONTENT_LENGTH, + MHD_STATICSTR_LEN_(MHD_HTTP_HEADER_CONTENT_LENGTH), + &clen, + NULL)) { end = clen + MHD_str_to_uint64_ (clen, &connection->remaining_upload_size); diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c @@ -629,10 +629,12 @@ MHD_digest_auth_get_username(struct MHD_Connection *connection) char user[MAX_USERNAME_LENGTH]; const char *header; - if (NULL == (header = - MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_AUTHORIZATION))) + if (MHD_NO == MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_AUTHORIZATION, + MHD_STATICSTR_LEN_ (MHD_HTTP_HEADER_AUTHORIZATION), + &header, + NULL)) return NULL; if (0 != strncmp (header, _BASE, @@ -875,10 +877,12 @@ digest_auth_check_all (struct MHD_Connection *connection, char *qmark; VLA_CHECK_LEN_DIGEST(da->digest_size); - header = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_AUTHORIZATION); - if (NULL == header) + if (MHD_NO == MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_AUTHORIZATION, + MHD_STATICSTR_LEN_ (MHD_HTTP_HEADER_AUTHORIZATION), + &header, + NULL)) return MHD_NO; if (0 != strncmp (header, _BASE, diff --git a/src/microhttpd/postprocessor.c b/src/microhttpd/postprocessor.c @@ -288,10 +288,12 @@ MHD_create_post_processor (struct MHD_Connection *connection, __FILE__, __LINE__, NULL); - encoding = MHD_lookup_connection_value (connection, - MHD_HEADER_KIND, - MHD_HTTP_HEADER_CONTENT_TYPE); - if (NULL == encoding) + if (MHD_NO == MHD_lookup_connection_value_n (connection, + MHD_HEADER_KIND, + MHD_HTTP_HEADER_CONTENT_TYPE, + MHD_STATICSTR_LEN_(MHD_HTTP_HEADER_CONTENT_TYPE), + &encoding, + NULL)) return NULL; boundary = NULL; if (! MHD_str_equal_caseless_n_ (MHD_HTTP_POST_ENCODING_FORM_URLENCODED, diff --git a/src/testcurl/test_get.c b/src/testcurl/test_get.c @@ -130,9 +130,14 @@ ahc_echo (void *cls, (0 != strcmp ("&", v)) ) abort (); - v = MHD_lookup_connection_value (connection, - MHD_GET_ARGUMENT_KIND, - "b"); + v = NULL; + if (MHD_YES != MHD_lookup_connection_value_n (connection, + MHD_GET_ARGUMENT_KIND, + "b", + 1, + &v, + NULL)) + abort (); if ( (NULL == v) || (0 != strcmp ("c", v)) )