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:
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: