libmicrohttpd

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

commit ce1ea19549c8e96f43bfd4b007cb8573fbca5be5
parent ff63d75797ddcaf223197e12b12def2b0803588c
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Thu, 28 Dec 2023 13:30:47 +0300

Added daemon options for default nonce timeout and max nc values

Diffstat:
Msrc/include/microhttpd.h | 20+++++++++++++++++++-
Msrc/microhttpd/daemon.c | 30++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h @@ -96,7 +96,7 @@ extern "C" * they are parsed as decimal numbers. * Example: 0x01093001 = 1.9.30-1. */ -#define MHD_VERSION 0x00097708 +#define MHD_VERSION 0x00097709 /* If generic headers don't work on your platform, include headers which define 'va_list', 'size_t', 'ssize_t', 'intptr_t', 'off_t', @@ -2172,6 +2172,24 @@ enum MHD_OPTION * @note Available since #MHD_VERSION 0x00097706 */ MHD_OPTION_SOCK_ADDR_LEN = 40 + , + /** + * Default nonce timeout value used for Digest Auth. + * This option should be followed by an 'unsigned int' argument. + * Silently ignored if followed by zero value. + * @see #MHD_digest_auth_check3(), MHD_digest_auth_check_digest3() + * @note Available since #MHD_VERSION 0x00097709 + */ + MHD_OPTION_DIGEST_AUTH_DEFAULT_NONCE_TIMEOUT = 41 + , + /** + * Default maximum nc (nonce count) value used for Digest Auth. + * This option should be followed by an 'uint32_t' argument. + * Silently ignored if followed by zero value. + * @see #MHD_digest_auth_check3(), MHD_digest_auth_check_digest3() + * @note Available since #MHD_VERSION 0x00097709 + */ + MHD_OPTION_DIGEST_AUTH_DEFAULT_MAX_NC = 42 } _MHD_FIXED_ENUM; diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -6993,6 +6993,26 @@ parse_options_va (struct MHD_Daemon *daemon, if (0 != (daemon->dauth_bind_type & MHD_DAUTH_BIND_NONCE_URI_PARAMS)) daemon->dauth_bind_type |= MHD_DAUTH_BIND_NONCE_URI; break; + case MHD_OPTION_DIGEST_AUTH_DEFAULT_NONCE_TIMEOUT: + if (1) + { + unsigned int val; + val = va_arg (ap, + unsigned int); + if (0 != val) + daemon->dauth_def_nonce_timeout = val; + } + break; + case MHD_OPTION_DIGEST_AUTH_DEFAULT_MAX_NC: + if (1) + { + uint32_t val; + val = va_arg (ap, + uint32_t); + if (0 != val) + daemon->dauth_def_max_nc = val; + } + break; #endif case MHD_OPTION_LISTEN_SOCKET: params->listen_fd = va_arg (ap, @@ -7105,6 +7125,7 @@ parse_options_va (struct MHD_Daemon *daemon, case MHD_OPTION_LISTEN_BACKLOG_SIZE: case MHD_OPTION_SERVER_INSANITY: case MHD_OPTION_DIGEST_AUTH_NONCE_BIND_TYPE: + case MHD_OPTION_DIGEST_AUTH_DEFAULT_NONCE_TIMEOUT: if (MHD_NO == parse_options (daemon, params, opt, @@ -7145,6 +7166,15 @@ parse_options_va (struct MHD_Daemon *daemon, MHD_OPTION_END)) return MHD_NO; break; + /* all options taking 'uint32_t' */ + case MHD_OPTION_DIGEST_AUTH_DEFAULT_MAX_NC: + if (MHD_NO == parse_options (daemon, + params, + opt, + (uint32_t) oa[i].value, + MHD_OPTION_END)) + return MHD_NO; + break; /* all options taking one pointer */ case MHD_OPTION_SOCK_ADDR: case MHD_OPTION_HTTPS_MEM_KEY: