commit 4facc093e133e66bc9aa49311e522badfb688164
parent 91d5286b59ce4ce912fb23fb786542c69960489e
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date: Sat, 22 Mar 2025 20:37:56 +0300
Refactored MHD_connection_get_info_fixed_sz() and relevant types
Resulting values now are individual for each query value.
Some names have been updated for clarity.
Removed MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME and related types.
Diffstat:
7 files changed, 219 insertions(+), 394 deletions(-)
diff --git a/src/examples2/minimal_auth_digest.c b/src/examples2/minimal_auth_digest.c
@@ -65,7 +65,7 @@ req_cb (void *cls,
res =
MHD_request_get_info_dynamic (request,
- MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME,
+ MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_INFO,
&req_data);
if (MHD_SC_AUTH_ABSENT == res)
return MHD_action_digest_auth_challenge_a (
diff --git a/src/include/microhttpd2.h b/src/include/microhttpd2.h
@@ -7428,7 +7428,7 @@ MHD_FN_PAR_CSTR_ (3) MHD_FN_PAR_OUT_SIZE_ (5,4);
enum MHD_FIXED_ENUM_MHD_SET_ MHD_DigestAuthUsernameType
{
/**
- * No username parameter in in Digest Authorization header.
+ * No username parameter is in Digest Authorization header.
* Not used currently. Value #MHD_SC_REQ_AUTH_DATA_BROKEN is returned
* by #MHD_request_get_info_dynamic_sz() if the request has no username.
*/
@@ -7695,72 +7695,6 @@ struct MHD_AuthDigestInfo
uint_fast32_t nc;
};
-
-/**
- * Information from Digest Authorization client's header.
- *
- * @see #MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME
- */
-struct MHD_AuthDigestUsernameInfo
-{
- /**
- * The algorithm as defined by client.
- * Set automatically to MD5 if not specified by client.
- */
- enum MHD_DigestAuthAlgo algo;
-
- /**
- * The type of username used by client.
- * The 'invalid' and 'missing' types are not used in this structure,
- * instead #MHD_SC_REQ_AUTH_DATA_BROKEN is returned when
- * #MHD_request_get_info_dynamic_sz() called with
- * #MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME and the request has
- * a broken username data.
- */
- enum MHD_DigestAuthUsernameType uname_type;
-
- /**
- * The username string.
- * Used only if username type is standard or extended, always NULL otherwise.
- * If extended notation is used, this string is pct-decoded string
- * with charset and language tag removed (i.e. it is original username
- * extracted from the extended notation).
- * When userhash is used by the client, this member is NULL and
- * @a userhash_hex and @a userhash_bin are set.
- * The buffer pointed by the @a username becomes invalid when a response
- * for the requested is provided (or request is aborted).
- */
- struct MHD_StringNullable username;
-
- /**
- * The userhash string.
- * Valid only if username type is userhash.
- * This is unqoted string without decoding of the hexadecimal
- * digits (as provided by the client).
- * The buffer pointed by the @a userhash_hex becomes invalid when a response
- * for the requested is provided (or request is aborted).
- * @sa #MHD_digest_auth_calc_userhash_hex()
- */
- struct MHD_StringNullable userhash_hex;
-
- /**
- * The userhash decoded to binary form.
- * Used only if username type is userhash, always NULL otherwise.
- * When not NULL, this points to binary sequence @a userhash_hex_len /2 bytes
- * long.
- * The valid size should be #MHD_digest_get_hash_size() bytes.
- * The buffer pointed by the @a userhash_bin becomes invalid when a response
- * for the requested is provided (or request is aborted).
- * @warning This is a binary data, no zero termination.
- * @warning To avoid buffer overruns, always check the size of the data before
- * use, because @a userhash_bin can point even to zero-sized
- * data.
- * @sa #MHD_digest_auth_calc_userhash()
- */
- const uint8_t *userhash_bin;
-};
-
-
/**
* The result of digest authentication of the client.
*
@@ -10320,33 +10254,37 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
{
/**
* Get the HTTP method used for the request (as a MHD_String).
- * The result is placed in @a v_str member.
* The resulting string pointer in valid only until a response is provided.
+ * The result is placed in @a v_http_method_string member.
* @sa #MHD_REQUEST_INFO_FIXED_HTTP_METHOD
* @ingroup request
*/
- MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STR = 1
+ MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STRING = 1
,
/**
* Get the URI used for the request (as a MHD_String), excluding
* the parameter part (anything after '?').
- * The result is placed in @a v_str member.
* The resulting string pointer in valid only until a response is provided.
+ * The result is placed in @a v_uri_string member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_URI = 2
,
/**
- * Get the number of GET parameters (the decoded part of the original
- * URI string after '?')
- * The result is placed in @a v_sizet member.
+ * Get the number of URI parameters (the decoded part of the original
+ * URI string after '?'). Sometimes it is called "GET parameters".
+ * The result is placed in @a v_number_uri_params_sizet member.
* @ingroup request
*/
- MHD_REQUEST_INFO_DYNAMIC_NUMBER_GET_PARAMS = 3
+ MHD_REQUEST_INFO_DYNAMIC_NUMBER_URI_PARAMS = 3
,
/**
* Get the number of cookies in the request.
- * The result is placed in @a v_sizet member.
+ * The result is placed in @a v_number_cookies_sizet member.
+ * If cookies parsing is disabled in MHD build then the function returns
+ * error code #MHD_SC_FEATURE_DISABLED.
+ * If cookies parsing is disabled this daemon then the function returns
+ * error code #MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_NUMBER_COOKIES = 4
@@ -10354,14 +10292,14 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
/**
* Return length of the client's HTTP request header.
* This is a total raw size of the header (after TLS decipher if any)
- * The result is placed in @a v_sizet member.
+ * The result is placed in @a v_header_size_sizet member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_HEADER_SIZE = 5
,
/**
* Get the number of decoded POST entries in the request.
- * The result is placed in @a v_sizet member.
+ * The result is placed in @a v_number_post_params_sizet member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_NUMBER_POST_PARAMS = 6
@@ -10370,7 +10308,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get whether the upload content is present in the request.
* The result is #MHD_YES if any upload content is present, even
* if the upload content size is zero.
- * The result is placed in @a v_bool member.
+ * The result is placed in @a v_upload_present_bool member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_PRESENT = 10
@@ -10378,7 +10316,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
/**
* Get whether the chunked upload content is present in the request.
* The result is #MHD_YES if chunked upload content is present.
- * The result is placed in @a v_bool member.
+ * The result is placed in @a v_upload_chunked_bool member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_CHUNKED = 11
@@ -10387,7 +10325,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get the total content upload size.
* Resulted in zero if no content upload or upload content size is zero,
* #MHD_SIZE_UNKNOWN if size is not known (chunked upload).
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_total_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TOTAL = 12
@@ -10396,7 +10334,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get the total size of the content upload already received from the client.
* This is the total size received, could be not yet fully processed by the
* application.
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_recieved_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_RECIEVED = 13
@@ -10405,7 +10343,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get the total size of the content upload left to be received from
* the client.
* Resulted in #MHD_SIZE_UNKNOWN if total size is not known (chunked upload).
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_to_recieve_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_RECIEVE = 14
@@ -10415,7 +10353,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* called and completed (if any)).
* If the value is requested from #MHD_UploadCallback, then result does NOT
* include the current data being processed by the callback.
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_processed_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_PROCESSED = 15
@@ -10427,24 +10365,12 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* If the value is requested from #MHD_UploadCallback, then result includes
* the current data being processed by the callback.
* Resulted in #MHD_SIZE_UNKNOWN if total size is not known (chunked upload).
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_to_process_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_PROCESS = 16
,
/**
- * Returns pointer to information about username in client's digest auth
- * request.
- * The resulting pointer is NULL if no digest auth header is set by
- * the client, the format of the digest auth header is broken, no
- * username is provided or the format of the username parameter is broken.
- * Pointers in the returned structure (if any) are valid until response
- * is provided for the request.
- * The result is placed in @a v_auth_digest_uname member.
- */
- MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME = 41
- ,
- /**
* Returns pointer to information about digest auth in client request.
* The resulting pointer is NULL if no digest auth header is set by
* the client or the format of the digest auth header is broken.
@@ -10483,36 +10409,77 @@ union MHD_RequestInfoDynamicData
{
/**
- * The MHD String type
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STRING query
*/
- struct MHD_String v_str;
+ struct MHD_String v_http_method_string;
+
/**
- * The size_t type
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_URI query
*/
- size_t v_sizet;
+ struct MHD_String v_uri_string;
+
/**
- * The boolean type
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_NUMBER_URI_PARAMS query
*/
- enum MHD_Bool v_bool;
+ size_t v_number_uri_params_sizet;
+
/**
- * The unsigned 64 bits integer
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_NUMBER_COOKIES query
*/
- uint_fast64_t v_uint64;
+ size_t v_number_cookies_sizet;
/**
- * The information about client provided username for digest auth
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_HEADER_SIZE query
*/
- const struct MHD_AuthDigestUsernameInfo *v_auth_digest_uname;
+ size_t v_header_size_sizet;
/**
- * The information about client's digest auth
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_NUMBER_POST_PARAMS query
+ */
+ size_t v_number_post_params_sizet;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_PRESENT query
+ */
+ enum MHD_Bool v_upload_present_bool;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_CHUNKED query
+ */
+ enum MHD_Bool v_upload_chunked_bool;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TOTAL query
+ */
+ uint_fast64_t v_upload_size_total_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_RECIEVED query
+ */
+ uint_fast64_t v_upload_size_recieved_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_RECIEVE query
+ */
+ uint_fast64_t v_upload_size_to_recieve_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_PROCESSED query
+ */
+ uint_fast64_t v_upload_size_processed_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_PROCESS query
+ */
+ uint_fast64_t v_upload_size_to_process_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_INFO query
*/
const struct MHD_AuthDigestInfo *v_auth_digest_info;
/**
- * The username and password provided by the client's basic auth header.
- * If #MHD_request_get_info_dynamic_sz() returns #MHD_SC_OK then this pointer
- * is NOT NULL and at least the username data is provided.
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_AUTH_BASIC_CREDS query
*/
const struct MHD_AuthBasicCreds *v_auth_basic_creds;
};
@@ -10524,7 +10491,8 @@ union MHD_RequestInfoDynamicData
* Most of the data provided is available only when the request line or complete
* request headers are processed and not available if responding has been
* started.
- * The wrapper macro #MHD_request_get_info_dynamic() could be more convenient.
+ *
+ * The wrapper macro #MHD_request_get_info_dynamic() may be more convenient.
*
* Any pointers in the returned data are valid until any MHD_Action or
* MHD_UploadAction is provided. If the data is needed beyond this point,
@@ -10544,6 +10512,9 @@ union MHD_RequestInfoDynamicData
* is being sent
* #MHD_SC_TOO_EARLY if requested data is not yet ready (for example,
* headers are not yet received),
+ * #MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE if the requested information is
+ * not available for this request
+ * due to used configuration/mode,
* #MHD_SC_FEATURE_DISABLED if requested functionality is not supported
* by this MHD build,
* #MHD_SC_INFO_GET_BUFF_TOO_SMALL if @a output_buf_size is too small,
@@ -10588,6 +10559,9 @@ MHD_FN_PAR_NONNULL_ (3) MHD_FN_PAR_OUT_ (3);
* is being sent
* #MHD_SC_TOO_EARLY if requested data is not yet ready (for example,
* headers are not yet received),
+ * #MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE if the requested information is
+ * not available for this request
+ * due to used configuration/mode,
* #MHD_SC_FEATURE_DISABLED if requested functionality is not supported
* by this MHD build,
* #MHD_SC_AUTH_ABSENT if request does not have particular Auth data,
diff --git a/src/include/microhttpd2_main.h.in b/src/include/microhttpd2_main.h.in
@@ -2806,7 +2806,7 @@ MHD_FN_PAR_CSTR_ (3) MHD_FN_PAR_OUT_SIZE_ (5,4);
enum MHD_FIXED_ENUM_MHD_SET_ MHD_DigestAuthUsernameType
{
/**
- * No username parameter in in Digest Authorization header.
+ * No username parameter is in Digest Authorization header.
* Not used currently. Value #MHD_SC_REQ_AUTH_DATA_BROKEN is returned
* by #MHD_request_get_info_dynamic_sz() if the request has no username.
*/
@@ -3073,72 +3073,6 @@ struct MHD_AuthDigestInfo
uint_fast32_t nc;
};
-
-/**
- * Information from Digest Authorization client's header.
- *
- * @see #MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME
- */
-struct MHD_AuthDigestUsernameInfo
-{
- /**
- * The algorithm as defined by client.
- * Set automatically to MD5 if not specified by client.
- */
- enum MHD_DigestAuthAlgo algo;
-
- /**
- * The type of username used by client.
- * The 'invalid' and 'missing' types are not used in this structure,
- * instead #MHD_SC_REQ_AUTH_DATA_BROKEN is returned when
- * #MHD_request_get_info_dynamic_sz() called with
- * #MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME and the request has
- * a broken username data.
- */
- enum MHD_DigestAuthUsernameType uname_type;
-
- /**
- * The username string.
- * Used only if username type is standard or extended, always NULL otherwise.
- * If extended notation is used, this string is pct-decoded string
- * with charset and language tag removed (i.e. it is original username
- * extracted from the extended notation).
- * When userhash is used by the client, this member is NULL and
- * @a userhash_hex and @a userhash_bin are set.
- * The buffer pointed by the @a username becomes invalid when a response
- * for the requested is provided (or request is aborted).
- */
- struct MHD_StringNullable username;
-
- /**
- * The userhash string.
- * Valid only if username type is userhash.
- * This is unqoted string without decoding of the hexadecimal
- * digits (as provided by the client).
- * The buffer pointed by the @a userhash_hex becomes invalid when a response
- * for the requested is provided (or request is aborted).
- * @sa #MHD_digest_auth_calc_userhash_hex()
- */
- struct MHD_StringNullable userhash_hex;
-
- /**
- * The userhash decoded to binary form.
- * Used only if username type is userhash, always NULL otherwise.
- * When not NULL, this points to binary sequence @a userhash_hex_len /2 bytes
- * long.
- * The valid size should be #MHD_digest_get_hash_size() bytes.
- * The buffer pointed by the @a userhash_bin becomes invalid when a response
- * for the requested is provided (or request is aborted).
- * @warning This is a binary data, no zero termination.
- * @warning To avoid buffer overruns, always check the size of the data before
- * use, because @a userhash_bin can point even to zero-sized
- * data.
- * @sa #MHD_digest_auth_calc_userhash()
- */
- const uint8_t *userhash_bin;
-};
-
-
/**
* The result of digest authentication of the client.
*
@@ -5698,33 +5632,37 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
{
/**
* Get the HTTP method used for the request (as a MHD_String).
- * The result is placed in @a v_str member.
* The resulting string pointer in valid only until a response is provided.
+ * The result is placed in @a v_http_method_string member.
* @sa #MHD_REQUEST_INFO_FIXED_HTTP_METHOD
* @ingroup request
*/
- MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STR = 1
+ MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STRING = 1
,
/**
* Get the URI used for the request (as a MHD_String), excluding
* the parameter part (anything after '?').
- * The result is placed in @a v_str member.
* The resulting string pointer in valid only until a response is provided.
+ * The result is placed in @a v_uri_string member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_URI = 2
,
/**
- * Get the number of GET parameters (the decoded part of the original
- * URI string after '?')
- * The result is placed in @a v_sizet member.
+ * Get the number of URI parameters (the decoded part of the original
+ * URI string after '?'). Sometimes it is called "GET parameters".
+ * The result is placed in @a v_number_uri_params_sizet member.
* @ingroup request
*/
- MHD_REQUEST_INFO_DYNAMIC_NUMBER_GET_PARAMS = 3
+ MHD_REQUEST_INFO_DYNAMIC_NUMBER_URI_PARAMS = 3
,
/**
* Get the number of cookies in the request.
- * The result is placed in @a v_sizet member.
+ * The result is placed in @a v_number_cookies_sizet member.
+ * If cookies parsing is disabled in MHD build then the function returns
+ * error code #MHD_SC_FEATURE_DISABLED.
+ * If cookies parsing is disabled this daemon then the function returns
+ * error code #MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_NUMBER_COOKIES = 4
@@ -5732,14 +5670,14 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
/**
* Return length of the client's HTTP request header.
* This is a total raw size of the header (after TLS decipher if any)
- * The result is placed in @a v_sizet member.
+ * The result is placed in @a v_header_size_sizet member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_HEADER_SIZE = 5
,
/**
* Get the number of decoded POST entries in the request.
- * The result is placed in @a v_sizet member.
+ * The result is placed in @a v_number_post_params_sizet member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_NUMBER_POST_PARAMS = 6
@@ -5748,7 +5686,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get whether the upload content is present in the request.
* The result is #MHD_YES if any upload content is present, even
* if the upload content size is zero.
- * The result is placed in @a v_bool member.
+ * The result is placed in @a v_upload_present_bool member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_PRESENT = 10
@@ -5756,7 +5694,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
/**
* Get whether the chunked upload content is present in the request.
* The result is #MHD_YES if chunked upload content is present.
- * The result is placed in @a v_bool member.
+ * The result is placed in @a v_upload_chunked_bool member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_CHUNKED = 11
@@ -5765,7 +5703,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get the total content upload size.
* Resulted in zero if no content upload or upload content size is zero,
* #MHD_SIZE_UNKNOWN if size is not known (chunked upload).
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_total_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TOTAL = 12
@@ -5774,7 +5712,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get the total size of the content upload already received from the client.
* This is the total size received, could be not yet fully processed by the
* application.
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_recieved_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_RECIEVED = 13
@@ -5783,7 +5721,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* Get the total size of the content upload left to be received from
* the client.
* Resulted in #MHD_SIZE_UNKNOWN if total size is not known (chunked upload).
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_to_recieve_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_RECIEVE = 14
@@ -5793,7 +5731,7 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* called and completed (if any)).
* If the value is requested from #MHD_UploadCallback, then result does NOT
* include the current data being processed by the callback.
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_processed_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_PROCESSED = 15
@@ -5805,24 +5743,12 @@ enum MHD_FIXED_ENUM_APP_SET_ MHD_RequestInfoDynamicType
* If the value is requested from #MHD_UploadCallback, then result includes
* the current data being processed by the callback.
* Resulted in #MHD_SIZE_UNKNOWN if total size is not known (chunked upload).
- * The result is placed in @a v_uint64 member.
+ * The result is placed in @a v_upload_size_to_process_uint64 member.
* @ingroup request
*/
MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_PROCESS = 16
,
/**
- * Returns pointer to information about username in client's digest auth
- * request.
- * The resulting pointer is NULL if no digest auth header is set by
- * the client, the format of the digest auth header is broken, no
- * username is provided or the format of the username parameter is broken.
- * Pointers in the returned structure (if any) are valid until response
- * is provided for the request.
- * The result is placed in @a v_auth_digest_uname member.
- */
- MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME = 41
- ,
- /**
* Returns pointer to information about digest auth in client request.
* The resulting pointer is NULL if no digest auth header is set by
* the client or the format of the digest auth header is broken.
@@ -5861,36 +5787,77 @@ union MHD_RequestInfoDynamicData
{
/**
- * The MHD String type
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STRING query
*/
- struct MHD_String v_str;
+ struct MHD_String v_http_method_string;
+
/**
- * The size_t type
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_URI query
*/
- size_t v_sizet;
+ struct MHD_String v_uri_string;
+
/**
- * The boolean type
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_NUMBER_URI_PARAMS query
*/
- enum MHD_Bool v_bool;
+ size_t v_number_uri_params_sizet;
+
/**
- * The unsigned 64 bits integer
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_NUMBER_COOKIES query
*/
- uint_fast64_t v_uint64;
+ size_t v_number_cookies_sizet;
/**
- * The information about client provided username for digest auth
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_HEADER_SIZE query
*/
- const struct MHD_AuthDigestUsernameInfo *v_auth_digest_uname;
+ size_t v_header_size_sizet;
/**
- * The information about client's digest auth
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_NUMBER_POST_PARAMS query
+ */
+ size_t v_number_post_params_sizet;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_PRESENT query
+ */
+ enum MHD_Bool v_upload_present_bool;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_CHUNKED query
+ */
+ enum MHD_Bool v_upload_chunked_bool;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TOTAL query
+ */
+ uint_fast64_t v_upload_size_total_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_RECIEVED query
+ */
+ uint_fast64_t v_upload_size_recieved_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_RECIEVE query
+ */
+ uint_fast64_t v_upload_size_to_recieve_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_PROCESSED query
+ */
+ uint_fast64_t v_upload_size_processed_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_PROCESS query
+ */
+ uint_fast64_t v_upload_size_to_process_uint64;
+
+ /**
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_INFO query
*/
const struct MHD_AuthDigestInfo *v_auth_digest_info;
/**
- * The username and password provided by the client's basic auth header.
- * If #MHD_request_get_info_dynamic_sz() returns #MHD_SC_OK then this pointer
- * is NOT NULL and at least the username data is provided.
+ * The data for the #MHD_REQUEST_INFO_DYNAMIC_AUTH_BASIC_CREDS query
*/
const struct MHD_AuthBasicCreds *v_auth_basic_creds;
};
@@ -5902,7 +5869,8 @@ union MHD_RequestInfoDynamicData
* Most of the data provided is available only when the request line or complete
* request headers are processed and not available if responding has been
* started.
- * The wrapper macro #MHD_request_get_info_dynamic() could be more convenient.
+ *
+ * The wrapper macro #MHD_request_get_info_dynamic() may be more convenient.
*
* Any pointers in the returned data are valid until any MHD_Action or
* MHD_UploadAction is provided. If the data is needed beyond this point,
@@ -5922,6 +5890,9 @@ union MHD_RequestInfoDynamicData
* is being sent
* #MHD_SC_TOO_EARLY if requested data is not yet ready (for example,
* headers are not yet received),
+ * #MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE if the requested information is
+ * not available for this request
+ * due to used configuration/mode,
* #MHD_SC_FEATURE_DISABLED if requested functionality is not supported
* by this MHD build,
* #MHD_SC_INFO_GET_BUFF_TOO_SMALL if @a output_buf_size is too small,
@@ -5966,6 +5937,9 @@ MHD_FN_PAR_NONNULL_ (3) MHD_FN_PAR_OUT_ (3);
* is being sent
* #MHD_SC_TOO_EARLY if requested data is not yet ready (for example,
* headers are not yet received),
+ * #MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE if the requested information is
+ * not available for this request
+ * due to used configuration/mode,
* #MHD_SC_FEATURE_DISABLED if requested functionality is not supported
* by this MHD build,
* #MHD_SC_AUTH_ABSENT if request does not have particular Auth data,
diff --git a/src/mhd2/auth_digest.c b/src/mhd2/auth_digest.c
@@ -1011,7 +1011,7 @@ get_rq_extended_uname_copy_z (const char *restrict uname_ext,
static size_t
get_rq_uname (const struct mhd_AuthDigesReqParams *restrict params,
enum MHD_DigestAuthUsernameType uname_type,
- struct MHD_AuthDigestUsernameInfo *restrict uname_info,
+ struct MHD_AuthDigestInfo *restrict uname_info,
uint8_t *restrict buf,
size_t buf_size)
{
@@ -1169,95 +1169,6 @@ get_rq_nc (const struct mhd_AuthDigesReqParams *params,
static MHD_FN_MUST_CHECK_RESULT_ MHD_FN_PAR_NONNULL_ALL_
enum MHD_StatusCode
-find_and_parse_auth_digest_uname (struct MHD_Request *restrict req)
-{
- enum MHD_StatusCode res;
- struct MHD_AuthDigestUsernameInfo *uname_info;
- enum MHD_DigestAuthUsernameType uname_type;
- size_t unif_buf_size;
- uint8_t *unif_buf_ptr;
- size_t unif_buf_used;
-
- mhd_assert (NULL == req->auth.digest.info);
- mhd_assert (NULL == req->auth.digest.uname);
-
- res = get_rq_auth_digest_params (req);
- if (MHD_SC_OK != res)
- return res;
-
- mhd_assert (NULL != req->auth.digest.rqp);
-
- uname_type = get_rq_uname_type (req->auth.digest.rqp);
- if ( (MHD_DIGEST_AUTH_UNAME_TYPE_MISSING == uname_type) ||
- (MHD_DIGEST_AUTH_UNAME_TYPE_INVALID == uname_type) )
- return MHD_SC_REQ_AUTH_DATA_BROKEN;
-
- unif_buf_size = get_rq_unames_size (req->auth.digest.rqp, uname_type);
-
- uname_info =
- (struct MHD_AuthDigestUsernameInfo *)
- mhd_stream_alloc_memory (mhd_CNTNR_PTR (req, struct MHD_Connection, rq),
- (sizeof(struct MHD_AuthDigestUsernameInfo))
- + unif_buf_size);
- if (NULL == uname_info)
- return MHD_SC_CONNECTION_POOL_NO_MEM_AUTH_DATA;
- memset (uname_info,
- 0,
- (sizeof(struct MHD_AuthDigestUsernameInfo)) + unif_buf_size);
-#ifndef HAVE_NULL_PTR_ALL_ZEROS
- uname_info->username.cstr = NULL;
- uname_info->userhash_hex.cstr = NULL;
- uname_info->userhash_bin = NULL;
-#endif
-
- uname_info->algo = req->auth.digest.rqp->algo;
- unif_buf_ptr = (uint8_t *) (uname_info + 1);
- unif_buf_used = get_rq_uname (req->auth.digest.rqp,
- uname_type, uname_info,
- unif_buf_ptr,
- unif_buf_size);
- mhd_assert (unif_buf_size >= unif_buf_used);
- (void) unif_buf_used; /* Mute compiler warning on non-debug builds */
- mhd_assert (MHD_DIGEST_AUTH_UNAME_TYPE_MISSING != uname_info->uname_type);
-
- req->auth.digest.uname = uname_info;
- if (MHD_DIGEST_AUTH_UNAME_TYPE_INVALID == uname_info->uname_type)
- return MHD_SC_REQ_AUTH_DATA_BROKEN;
- mhd_assert (uname_type == uname_info->uname_type);
-
- return MHD_SC_OK;
-}
-
-
-MHD_INTERNAL MHD_FN_MUST_CHECK_RESULT_ MHD_FN_PAR_NONNULL_ALL_
-MHD_FN_PAR_OUT_ (2) enum MHD_StatusCode
-mhd_request_get_auth_digest_username (
- struct MHD_Request *restrict req,
- const struct MHD_AuthDigestUsernameInfo **restrict v_auth_digest_uname)
-{
- mhd_assert (mhd_HTTP_STAGE_HEADERS_PROCESSED <= \
- mhd_CNTNR_CPTR (req, struct MHD_Connection, rq)->stage);
- mhd_assert (mhd_HTTP_STAGE_REQ_RECV_FINISHED >= \
- mhd_CNTNR_CPTR (req, struct MHD_Connection, rq)->stage);
-
- if (MHD_SC_OK != req->auth.digest.parse_result)
- return req->auth.digest.parse_result;
-
- if (NULL == req->auth.digest.uname)
- req->auth.digest.parse_result = find_and_parse_auth_digest_uname (req);
-
- if (MHD_SC_OK != req->auth.digest.parse_result)
- return req->auth.digest.parse_result; /* Failure exit point */
-
- mhd_assert (NULL != req->auth.digest.uname);
- *v_auth_digest_uname = req->auth.digest.uname;
-
- return MHD_SC_OK; /* Success exit point */
-}
-
-
-static MHD_FN_MUST_CHECK_RESULT_ MHD_FN_PAR_NONNULL_ALL_
-enum MHD_StatusCode
find_and_parse_auth_digest_info (struct MHD_Request *restrict req)
{
enum MHD_StatusCode res;
@@ -1312,8 +1223,7 @@ find_and_parse_auth_digest_info (struct MHD_Request *restrict req)
if ( (MHD_DIGEST_AUTH_UNAME_TYPE_MISSING != uname_type) &&
(MHD_DIGEST_AUTH_UNAME_TYPE_INVALID != uname_type) )
unif_buf_used +=
- get_rq_uname (req->auth.digest.rqp, uname_type,
- (struct MHD_AuthDigestUsernameInfo *) info,
+ get_rq_uname (req->auth.digest.rqp, uname_type, info,
unif_buf_ptr + unif_buf_used,
unif_buf_size - unif_buf_used);
else
@@ -1363,11 +1273,8 @@ find_and_parse_auth_digest_info (struct MHD_Request *restrict req)
}
req->auth.digest.info = info;
- if (NULL == req->auth.digest.uname)
- req->auth.digest.uname = (struct MHD_AuthDigestUsernameInfo *) info;
mhd_assert (uname_type == info->uname_type);
- mhd_assert (uname_type == req->auth.digest.uname->uname_type);
if ((MHD_DIGEST_AUTH_UNAME_TYPE_MISSING == uname_type) ||
(MHD_DIGEST_AUTH_UNAME_TYPE_INVALID == uname_type) ||
@@ -1399,7 +1306,6 @@ mhd_request_get_auth_digest_info (
return req->auth.digest.parse_result; /* Failure exit point */
mhd_assert (NULL != req->auth.digest.info);
- mhd_assert (NULL != req->auth.digest.uname);
*v_auth_digest_info = req->auth.digest.info;
return MHD_SC_OK; /* Success exit point */
diff --git a/src/mhd2/auth_digest.h b/src/mhd2/auth_digest.h
@@ -57,19 +57,6 @@ mhd_auth_digest_get_new_nonce (struct MHD_Connection *restrict c,
MHD_FN_PAR_NONNULL_ALL_ MHD_FN_PAR_OUT_ (2);
/**
- * Find in request and parse Digest Authentication username information
- * @param req the request to use
- * @param[out] v_auth_digest_username the pointer to set to the found data
- * @return #MHD_SC_OK on success,
- * error code otherwise
- */
-MHD_INTERNAL enum MHD_StatusCode
-mhd_request_get_auth_digest_username (
- struct MHD_Request *restrict req,
- const struct MHD_AuthDigestUsernameInfo **restrict v_auth_digest_uname)
-MHD_FN_MUST_CHECK_RESULT_ MHD_FN_PAR_NONNULL_ALL_ MHD_FN_PAR_OUT_ (2);
-
-/**
* Find in request and parse Digest Authentication information
* @param req the request to use
* @param[out] v_auth_basic_creds the pointer to set to the found data
diff --git a/src/mhd2/mhd_request.h b/src/mhd2/mhd_request.h
@@ -348,12 +348,6 @@ struct mhd_ReqAuthDigestData
* NULL if not yet parsed or not found.
*/
struct MHD_AuthDigestInfo *info;
- /**
- * The information about client's provided username.
- * May point to the same address as @a info.
- * NULL if not yet parsed or not found.
- */
- struct MHD_AuthDigestUsernameInfo *uname;
};
#endif /* MHD_SUPPORT_AUTH_DIGEST */
diff --git a/src/mhd2/request_get_info.c b/src/mhd2/request_get_info.c
@@ -43,6 +43,10 @@
# include "auth_digest.h"
#endif
+#ifdef MHD_SUPPORT_COOKIES
+# include "mhd_daemon.h"
+#endif
+
#include "mhd_public_api.h"
MHD_EXTERN_ MHD_FN_MUST_CHECK_RESULT_
@@ -123,7 +127,7 @@ MHD_request_get_info_dynamic_sz (
{
switch (info_type)
{
- case MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STR:
+ case MHD_REQUEST_INFO_DYNAMIC_HTTP_METHOD_STRING:
if (mhd_HTTP_STAGE_REQ_RECV_FINISHED >
mhd_CNTNR_PTR (request, \
struct MHD_Connection, \
@@ -131,9 +135,9 @@ MHD_request_get_info_dynamic_sz (
return MHD_SC_TOO_LATE;
if (0 == request->method.len)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_str) > output_buf_size)
+ if (sizeof(output_buf->v_http_method_string) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_str = request->method;
+ output_buf->v_http_method_string = request->method;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_URI:
if (mhd_HTTP_STAGE_REQ_LINE_RECEIVED >
@@ -146,12 +150,12 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_LATE;
- if (sizeof(output_buf->v_str) > output_buf_size)
+ if (sizeof(output_buf->v_uri_string) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_str.cstr = request->url;
- output_buf->v_str.len = request->url_len;
+ output_buf->v_uri_string.cstr = request->url;
+ output_buf->v_uri_string.len = request->url_len;
return MHD_SC_OK;
- case MHD_REQUEST_INFO_DYNAMIC_NUMBER_GET_PARAMS:
+ case MHD_REQUEST_INFO_DYNAMIC_NUMBER_URI_PARAMS:
if (mhd_HTTP_STAGE_REQ_LINE_RECEIVED >
mhd_CNTNR_PTR (request, \
struct MHD_Connection, \
@@ -162,15 +166,20 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_LATE;
- if (sizeof(output_buf->v_sizet) > output_buf_size)
+ if (sizeof(output_buf->v_number_uri_params_sizet) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_sizet =
+ output_buf->v_number_uri_params_sizet =
MHD_request_get_values_cb (request,
MHD_VK_GET_ARGUMENT,
NULL,
NULL);
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_NUMBER_COOKIES:
+#ifdef MHD_SUPPORT_COOKIES
+ if (mhd_CNTNR_PTR (request, \
+ struct MHD_Connection, \
+ rq)->daemon->req_cfg.disable_cookies)
+ return MHD_SC_INFO_GET_TYPE_NOT_APPLICABLE;
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
mhd_CNTNR_PTR (request, \
struct MHD_Connection, \
@@ -181,18 +190,18 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_LATE;
- if (sizeof(output_buf->v_sizet) > output_buf_size)
+ if (sizeof(output_buf->v_number_cookies_sizet) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
-#ifdef MHD_SUPPORT_COOKIES
- output_buf->v_sizet =
+ output_buf->v_number_cookies_sizet =
MHD_request_get_values_cb (request,
MHD_VK_COOKIE,
NULL,
NULL);
+ return MHD_SC_OK;
#else
- output_buf->v_sizet = 0;
+ return MHD_SC_FEATURE_DISABLED;
#endif
- return MHD_SC_OK;
+ break;
case MHD_REQUEST_INFO_DYNAMIC_HEADER_SIZE:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
mhd_CNTNR_PTR (request, \
@@ -204,11 +213,12 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_LATE;
- if (sizeof(output_buf->v_sizet) > output_buf_size)
+ if (sizeof(output_buf->v_header_size_sizet) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_sizet = request->header_size;
+ output_buf->v_header_size_sizet = request->header_size;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_NUMBER_POST_PARAMS:
+#ifdef MHD_SUPPORT_POST_PARSER
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
mhd_CNTNR_PTR (request, \
struct MHD_Connection, \
@@ -219,27 +229,28 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_LATE;
- if (sizeof(output_buf->v_sizet) > output_buf_size)
+ if (sizeof(output_buf->v_number_post_params_sizet) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
-#ifdef MHD_SUPPORT_POST_PARSER
- output_buf->v_sizet =
+ output_buf->v_number_post_params_sizet =
MHD_request_get_values_cb (request,
MHD_VK_POSTDATA,
NULL,
NULL);
+ return MHD_SC_OK;
#else
- output_buf->v_sizet = 0;
+ return MHD_SC_FEATURE_DISABLED;
#endif
- return MHD_SC_OK;
+ break;
case MHD_REQUEST_INFO_DYNAMIC_UPLOAD_PRESENT:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
mhd_CNTNR_PTR (request, \
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_bool) > output_buf_size)
+ if (sizeof(output_buf->v_upload_present_bool) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_bool = request->cntn.cntn_present ? MHD_YES : MHD_NO;
+ output_buf->v_upload_present_bool =
+ request->cntn.cntn_present ? MHD_YES : MHD_NO;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_UPLOAD_CHUNKED:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
@@ -247,9 +258,9 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_bool) > output_buf_size)
+ if (sizeof(output_buf->v_upload_chunked_bool) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_bool =
+ output_buf->v_upload_chunked_bool =
(MHD_SIZE_UNKNOWN == request->cntn.cntn_size) ? MHD_YES : MHD_NO;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TOTAL:
@@ -258,9 +269,9 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_uint64) > output_buf_size)
+ if (sizeof(output_buf->v_upload_size_total_uint64) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_uint64 = request->cntn.cntn_size;
+ output_buf->v_upload_size_total_uint64 = request->cntn.cntn_size;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_RECIEVED:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
@@ -268,9 +279,9 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_uint64) > output_buf_size)
+ if (sizeof(output_buf->v_upload_size_recieved_uint64) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_uint64 = request->cntn.recv_size;
+ output_buf->v_upload_size_recieved_uint64 = request->cntn.recv_size;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_RECIEVE:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
@@ -278,9 +289,9 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_uint64) > output_buf_size)
+ if (sizeof(output_buf->v_upload_size_to_recieve_uint64) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_uint64 =
+ output_buf->v_upload_size_to_recieve_uint64 =
(MHD_SIZE_UNKNOWN == request->cntn.cntn_size) ?
MHD_SIZE_UNKNOWN : (request->cntn.cntn_size - request->cntn.recv_size);
return MHD_SC_OK;
@@ -290,9 +301,9 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_uint64) > output_buf_size)
+ if (sizeof(output_buf->v_upload_size_processed_uint64) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_uint64 = request->cntn.proc_size;
+ output_buf->v_upload_size_processed_uint64 = request->cntn.proc_size;
return MHD_SC_OK;
case MHD_REQUEST_INFO_DYNAMIC_UPLOAD_SIZE_TO_PROCESS:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
@@ -300,33 +311,12 @@ MHD_request_get_info_dynamic_sz (
struct MHD_Connection, \
rq)->stage)
return MHD_SC_TOO_EARLY;
- if (sizeof(output_buf->v_uint64) > output_buf_size)
+ if (sizeof(output_buf->v_upload_size_to_process_uint64) > output_buf_size)
return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- output_buf->v_uint64 =
+ output_buf->v_upload_size_to_process_uint64 =
(MHD_SIZE_UNKNOWN == request->cntn.cntn_size) ?
MHD_SIZE_UNKNOWN : (request->cntn.cntn_size - request->cntn.proc_size);
return MHD_SC_OK;
- case MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_USERNAME:
- if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
- mhd_CNTNR_PTR (request, \
- struct MHD_Connection, \
- rq)->stage)
- return MHD_SC_TOO_EARLY;
- if (mhd_HTTP_STAGE_REQ_RECV_FINISHED <
- mhd_CNTNR_PTR (request, \
- struct MHD_Connection, \
- rq)->stage)
- return MHD_SC_TOO_LATE;
-#ifdef MHD_SUPPORT_AUTH_DIGEST
- if (sizeof(output_buf->v_auth_basic_creds) > output_buf_size)
- return MHD_SC_INFO_GET_BUFF_TOO_SMALL;
- return mhd_request_get_auth_digest_username (request,
- &(output_buf->
- v_auth_digest_uname));
-#else /* ! MHD_SUPPORT_AUTH_DIGEST */
- return MHD_SC_FEATURE_DISABLED;
-#endif /* ! MHD_SUPPORT_AUTH_DIGEST */
- break;
case MHD_REQUEST_INFO_DYNAMIC_AUTH_DIGEST_INFO:
if (mhd_HTTP_STAGE_HEADERS_PROCESSED >
mhd_CNTNR_PTR (request, \