[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 04/07: Refactoring: different types for response and req
From: |
gnunet |
Subject: |
[libmicrohttpd] 04/07: Refactoring: different types for response and request headers |
Date: |
Sun, 17 Apr 2022 14:27:01 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit 3ebb98295631a662bdb66b9148f4f43000dc3671
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Sat Apr 16 14:20:24 2022 +0300
Refactoring: different types for response and request headers
Request headers are always read-only (const char *), while response
headers are modifiable. Should help with catching errors in code.
---
src/microhttpd/connection.c | 28 ++++++--------
src/microhttpd/digestauth.c | 4 +-
src/microhttpd/internal.h | 62 ++++++++++++++++++++++++++-----
src/microhttpd/response.c | 28 +++++++-------
src/microhttpd/response.h | 2 +-
src/microhttpd/test_postprocessor.c | 32 ++++++++--------
src/microhttpd/test_postprocessor_amp.c | 4 +-
src/microhttpd/test_postprocessor_large.c | 4 +-
8 files changed, 101 insertions(+), 63 deletions(-)
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 513d6415..798c285c 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -387,7 +387,7 @@ MHD_get_connection_values (struct MHD_Connection
*connection,
void *iterator_cls)
{
int ret;
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Req_Header *pos;
if (NULL == connection)
return -1;
@@ -426,7 +426,7 @@ MHD_get_connection_values_n (struct MHD_Connection
*connection,
void *iterator_cls)
{
int ret;
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Req_Header *pos;
if (NULL == connection)
return -1;
@@ -480,10 +480,10 @@ MHD_set_connection_value_n_nocheck_ (struct
MHD_Connection *connection,
const char *value,
size_t value_size)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Req_Header *pos;
pos = connection_alloc_memory (connection,
- sizeof (struct MHD_HTTP_Header));
+ sizeof (struct MHD_HTTP_Res_Header));
if (NULL == pos)
return MHD_NO;
pos->header = (char *) key;
@@ -653,7 +653,7 @@ MHD_lookup_connection_value_n (struct MHD_Connection
*connection,
const char **value_ptr,
size_t *value_size_ptr)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Req_Header *pos;
if (NULL == connection)
return MHD_NO;
@@ -716,14 +716,10 @@ MHD_lookup_header_token_ci (const struct MHD_Connection
*connection,
const char *token,
size_t token_len)
{
- struct MHD_HTTP_Header *pos;
-
- if ((NULL == connection) || (NULL == header) || (0 == header[0]) || (NULL ==
- token)
||
- (0 ==
- token
- [
- 0]) )
+ struct MHD_HTTP_Req_Header *pos;
+
+ if ((NULL == connection) || (NULL == header) || (0 == header[0]) ||
+ (NULL == token) || (0 == token[0]))
return false;
for (pos = connection->headers_received; NULL != pos; pos = pos->next)
@@ -1934,7 +1930,7 @@ add_user_headers (char *buf,
bool add_keep_alive)
{
struct MHD_Response *const r = response; /**< a short alias */
- struct MHD_HTTP_Header *hdr; /**< Iterates through User-specified headers */
+ struct MHD_HTTP_Res_Header *hdr; /**< Iterates through User-specified
headers */
size_t el_size; /**< the size of current element to be added to the @a buf */
mhd_assert (! add_close || ! add_keep_alive);
@@ -2276,7 +2272,7 @@ build_connection_chunked_response_footer (struct
MHD_Connection *connection)
size_t buf_size; /**< the size of the @a buf */
size_t used_size; /**< the used size of the @a buf */
struct MHD_Connection *const c = connection; /**< a short alias */
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
mhd_assert (connection->rp_props.chunked);
/* TODO: allow combining of the final footer with the last chunk,
@@ -5219,7 +5215,7 @@ MHD_queue_response (struct MHD_Connection *connection,
#ifdef UPGRADE_SUPPORT
if (NULL != response->upgrade_handler)
{
- struct MHD_HTTP_Header *conn_header;
+ struct MHD_HTTP_Res_Header *conn_header;
if (0 == (daemon->options & MHD_ALLOW_UPGRADE))
{
#ifdef HAVE_MESSAGES
diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c
index a3244188..8526ae40 100644
--- a/src/microhttpd/digestauth.c
+++ b/src/microhttpd/digestauth.c
@@ -737,7 +737,7 @@ test_header (struct MHD_Connection *connection,
size_t value_size,
enum MHD_ValueKind kind)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Req_Header *pos;
for (pos = connection->headers_received; NULL != pos; pos = pos->next)
{
@@ -780,7 +780,7 @@ static enum MHD_Result
check_argument_match (struct MHD_Connection *connection,
const char *args)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Req_Header *pos;
char *argb;
unsigned int num_headers;
enum MHD_Result ret;
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index 20a406e3..e3d9a433 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -276,19 +276,19 @@ MHD_DLOG (const struct MHD_Daemon *daemon,
/**
- * Header or cookie in HTTP request or response.
+ * Header or footer for HTTP response.
*/
-struct MHD_HTTP_Header
+struct MHD_HTTP_Res_Header
{
/**
* Headers are kept in a double-linked list.
*/
- struct MHD_HTTP_Header *next;
+ struct MHD_HTTP_Res_Header *next;
/**
* Headers are kept in a double-linked list.
*/
- struct MHD_HTTP_Header *prev;
+ struct MHD_HTTP_Res_Header *prev;
/**
* The name of the header (key), without the colon.
@@ -311,8 +311,50 @@ struct MHD_HTTP_Header
size_t value_size;
/**
- * Type of the header (where in the HTTP protocol is this header
- * from).
+ * Type of the value.
+ */
+ enum MHD_ValueKind kind;
+
+};
+
+
+/**
+ * Header, footer, or cookie for HTTP request.
+ */
+struct MHD_HTTP_Req_Header
+{
+ /**
+ * Headers are kept in a double-linked list.
+ */
+ struct MHD_HTTP_Req_Header *next;
+
+ /**
+ * Headers are kept in a double-linked list.
+ */
+ struct MHD_HTTP_Req_Header *prev;
+
+ /**
+ * The name of the header (key), without the colon.
+ */
+ const char *header;
+
+ /**
+ * The length of the @a header, not including the final zero termination.
+ */
+ size_t header_size;
+
+ /**
+ * The value of the header.
+ */
+ const char *value;
+
+ /**
+ * The length of the @a value, not including the final zero termination.
+ */
+ size_t value_size;
+
+ /**
+ * Type of the value.
*/
enum MHD_ValueKind kind;
@@ -396,12 +438,12 @@ struct MHD_Response
/**
* Head of double-linked list of headers to send for the response.
*/
- struct MHD_HTTP_Header *first_header;
+ struct MHD_HTTP_Res_Header *first_header;
/**
* Tail of double-linked list of headers to send for the response.
*/
- struct MHD_HTTP_Header *last_header;
+ struct MHD_HTTP_Res_Header *last_header;
/**
* Buffer pointing to data that we are supposed
@@ -915,12 +957,12 @@ struct MHD_Connection
/**
* Linked list of parsed headers.
*/
- struct MHD_HTTP_Header *headers_received;
+ struct MHD_HTTP_Req_Header *headers_received;
/**
* Tail of linked list of parsed headers.
*/
- struct MHD_HTTP_Header *headers_received_tail;
+ struct MHD_HTTP_Req_Header *headers_received_tail;
/**
* Response to transmit (initially NULL).
diff --git a/src/microhttpd/response.c b/src/microhttpd/response.c
index c604e14e..8ac0c58e 100644
--- a/src/microhttpd/response.c
+++ b/src/microhttpd/response.c
@@ -159,7 +159,7 @@ add_response_entry (struct MHD_Response *response,
const char *header,
const char *content)
{
- struct MHD_HTTP_Header *hdr;
+ struct MHD_HTTP_Res_Header *hdr;
if ( (NULL == response) ||
(NULL == header) ||
@@ -173,7 +173,7 @@ add_response_entry (struct MHD_Response *response,
(NULL != strchr (content, '\r')) ||
(NULL != strchr (content, '\n')) )
return MHD_NO;
- if (NULL == (hdr = MHD_calloc_ (1, sizeof (struct MHD_HTTP_Header))))
+ if (NULL == (hdr = MHD_calloc_ (1, sizeof (struct MHD_HTTP_Res_Header))))
return MHD_NO;
if (NULL == (hdr->header = strdup (header)))
{
@@ -218,7 +218,7 @@ add_response_header_connection (struct MHD_Response
*response,
size_t buf_size; /**< the size of the buffer */
ssize_t norm_len; /**< the length of the normalised value */
char *buf; /**< the temporal buffer */
- struct MHD_HTTP_Header *hdr; /**< existing "Connection" header */
+ struct MHD_HTTP_Res_Header *hdr; /**< existing "Connection" header */
bool value_has_close; /**< the @a value has "close" token */
bool already_has_close; /**< existing "Connection" header has "close" token
*/
size_t pos = 0; /**< position of addition in the @a buf */
@@ -340,9 +340,9 @@ add_response_header_connection (struct MHD_Response
*response,
if (NULL == hdr)
{
- struct MHD_HTTP_Header *new_hdr; /**< new "Connection" header */
+ struct MHD_HTTP_Res_Header *new_hdr; /**< new "Connection" header */
/* Create new response header entry */
- new_hdr = MHD_calloc_ (1, sizeof (struct MHD_HTTP_Header));
+ new_hdr = MHD_calloc_ (1, sizeof (struct MHD_HTTP_Res_Header));
if (NULL != new_hdr)
{
new_hdr->header = malloc (key_len + 1);
@@ -390,7 +390,7 @@ static enum MHD_Result
del_response_header_connection (struct MHD_Response *response,
const char *value)
{
- struct MHD_HTTP_Header *hdr; /**< existing "Connection" header */
+ struct MHD_HTTP_Res_Header *hdr; /**< existing "Connection" header */
hdr = MHD_get_response_element_n_ (response, MHD_HEADER_KIND,
MHD_HTTP_HEADER_CONNECTION,
@@ -522,7 +522,7 @@ MHD_add_response_header (struct MHD_Response *response,
{
if (0 != (response->flags_auto & MHD_RAF_HAS_DATE_HDR))
{
- struct MHD_HTTP_Header *hdr;
+ struct MHD_HTTP_Res_Header *hdr;
hdr = MHD_get_response_element_n_ (response, MHD_HEADER_KIND,
MHD_HTTP_HEADER_DATE,
MHD_STATICSTR_LEN_ ( \
@@ -615,7 +615,7 @@ MHD_del_response_header (struct MHD_Response *response,
const char *header,
const char *content)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
size_t header_len;
size_t content_len;
@@ -698,7 +698,7 @@ MHD_get_response_headers (struct MHD_Response *response,
void *iterator_cls)
{
int numHeaders = 0;
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
for (pos = response->first_header;
NULL != pos;
@@ -728,7 +728,7 @@ const char *
MHD_get_response_header (struct MHD_Response *response,
const char *key)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
size_t key_size;
if (NULL == key)
@@ -758,13 +758,13 @@ MHD_get_response_header (struct MHD_Response *response,
* @return NULL if header element does not exist
* @ingroup response
*/
-struct MHD_HTTP_Header *
+struct MHD_HTTP_Res_Header *
MHD_get_response_element_n_ (struct MHD_Response *response,
enum MHD_ValueKind kind,
const char *key,
size_t key_len)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
mhd_assert (NULL != key);
mhd_assert (0 != key[0]);
@@ -806,7 +806,7 @@ MHD_check_response_header_token_ci (const struct
MHD_Response *response,
const char *token,
size_t token_len)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
if ( (NULL == key) ||
('\0' == key[0]) ||
@@ -2041,7 +2041,7 @@ MHD_create_response_for_upgrade (MHD_UpgradeHandler
upgrade_handler,
void
MHD_destroy_response (struct MHD_Response *response)
{
- struct MHD_HTTP_Header *pos;
+ struct MHD_HTTP_Res_Header *pos;
if (NULL == response)
return;
diff --git a/src/microhttpd/response.h b/src/microhttpd/response.h
index bc650f66..4d1e84b5 100644
--- a/src/microhttpd/response.h
+++ b/src/microhttpd/response.h
@@ -67,7 +67,7 @@ MHD_response_execute_upgrade_ (struct MHD_Response *response,
* @return NULL if header element does not exist
* @ingroup response
*/
-struct MHD_HTTP_Header *
+struct MHD_HTTP_Res_Header *
MHD_get_response_element_n_ (struct MHD_Response *response,
enum MHD_ValueKind kind,
const char *key,
diff --git a/src/microhttpd/test_postprocessor.c
b/src/microhttpd/test_postprocessor.c
index 44e79c7e..c4744ec3 100644
--- a/src/microhttpd/test_postprocessor.c
+++ b/src/microhttpd/test_postprocessor.c
@@ -222,13 +222,13 @@ test_urlencoding_case (unsigned int want_start,
for (step = 1; size >= step; ++step)
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
unsigned int want_off = want_start;
size_t i;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value = MHD_HTTP_POST_ENCODING_FORM_URLENCODED;
@@ -361,7 +361,7 @@ static int
test_multipart_garbage (void)
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
unsigned int want_off;
size_t size = MHD_STATICSTR_LEN_ (FORM_DATA);
@@ -378,7 +378,7 @@ test_multipart_garbage (void)
{
want_off = FORM_START;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value =
@@ -429,7 +429,7 @@ static int
test_multipart_splits (void)
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
unsigned int want_off;
size_t size;
@@ -440,7 +440,7 @@ test_multipart_splits (void)
{
want_off = FORM_START;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value =
@@ -491,7 +491,7 @@ static int
test_multipart (void)
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
unsigned int want_off = FORM_START;
size_t i;
@@ -499,7 +499,7 @@ test_multipart (void)
size_t size;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value =
@@ -548,7 +548,7 @@ static int
test_nested_multipart (void)
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Res_Header header;
struct MHD_PostProcessor *pp;
unsigned int want_off = FORM_NESTED_START;
size_t i;
@@ -556,7 +556,7 @@ test_nested_multipart (void)
size_t size;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value =
@@ -623,7 +623,7 @@ static int
test_overflow ()
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
size_t i;
size_t j;
@@ -631,7 +631,7 @@ test_overflow ()
char *buf;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value = MHD_HTTP_POST_ENCODING_FORM_URLENCODED;
@@ -686,10 +686,10 @@ test_empty_key (void)
{
size_t i;
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
connection.headers_received_tail = &header;
@@ -738,12 +738,12 @@ test_double_value (void)
{
size_t i;
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
unsigned int results_off = URL_START;
unsigned int results_final = results_off + 1; /* First value is correct */
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
connection.headers_received_tail = &header;
diff --git a/src/microhttpd/test_postprocessor_amp.c
b/src/microhttpd/test_postprocessor_amp.c
index 6710bca8..610a3da3 100644
--- a/src/microhttpd/test_postprocessor_amp.c
+++ b/src/microhttpd/test_postprocessor_amp.c
@@ -29,7 +29,7 @@ int
main (int argc, char *const *argv)
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
const char *post =
"a=xx+xx+xxx+xxxxx+xxxx+xxxxxxxx+xxx+xxxxxx+xxx+xxx+xxxxxxx+xxxxx%0A+++++++xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%0A+++++++--%3E%0A++++++++++++++%3Cxxxxx+xxxxx%3D%22xxx%25%22%3E%0A+++++++++++%3Cxx%3E%0A+++++++++++++++%3Cxx+xxxxxxx%3D%22x%22+xxxxx%3D%22xxxxx%22%3E%0A+++++++++++++++++++%3Cxxxxx+xxxxx%3D%22xxx%25%22%3E%0A+++++++++++++++++++++++%3Cxx%3E%0A+++++++++++++++++++++++++++%3Cxx+xxxxx%3D%22xxxx%22%3E%0A+++++++++++++++++++++++++++++++%3Cx
[...]
@@ -37,7 +37,7 @@ main (int argc, char *const *argv)
num_errors = 0;
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value = MHD_HTTP_POST_ENCODING_FORM_URLENCODED;
diff --git a/src/microhttpd/test_postprocessor_large.c
b/src/microhttpd/test_postprocessor_large.c
index 4d5f1ece..7fcc5d5a 100644
--- a/src/microhttpd/test_postprocessor_large.c
+++ b/src/microhttpd/test_postprocessor_large.c
@@ -63,7 +63,7 @@ static int
test_simple_large ()
{
struct MHD_Connection connection;
- struct MHD_HTTP_Header header;
+ struct MHD_HTTP_Req_Header header;
struct MHD_PostProcessor *pp;
size_t i;
size_t delta;
@@ -76,7 +76,7 @@ test_simple_large ()
memcpy (data, "key=", 4);
data[sizeof (data) - 1] = '\0';
memset (&connection, 0, sizeof (struct MHD_Connection));
- memset (&header, 0, sizeof (struct MHD_HTTP_Header));
+ memset (&header, 0, sizeof (struct MHD_HTTP_Res_Header));
connection.headers_received = &header;
header.header = MHD_HTTP_HEADER_CONTENT_TYPE;
header.value = MHD_HTTP_POST_ENCODING_FORM_URLENCODED;
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [libmicrohttpd] branch master updated (b908403e -> 1907cc2b), gnunet, 2022/04/17
- [libmicrohttpd] 07/07: MHD_Connection: added 'const' qualifiers to some unmodifiable members, gnunet, 2022/04/17
- [libmicrohttpd] 03/07: daemon: muted compiler warning, gnunet, 2022/04/17
- [libmicrohttpd] 06/07: connection: removed drop of 'const' qualifier, gnunet, 2022/04/17
- [libmicrohttpd] 02/07: configure: minor fix, gnunet, 2022/04/17
- [libmicrohttpd] 01/07: configure: fixed broken configure due to the missing value, gnunet, 2022/04/17
- [libmicrohttpd] 04/07: Refactoring: different types for response and request headers,
gnunet <=
- [libmicrohttpd] 05/07: test_postprocessor_amp: fixed code style, gnunet, 2022/04/17