commit 1717035dfbe31add394e414e4016cc3cee5f7fb4
parent 4c0247d46b9cbe48b4a48c8cd045c03cc3dd41b9
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Mon, 15 Mar 2021 15:54:54 +0300
daemon: added user options counter
Diffstat:
2 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
@@ -5403,6 +5403,9 @@ parse_options_va (struct MHD_Daemon *daemon,
while (MHD_OPTION_END != (opt = (enum MHD_OPTION) va_arg (ap, int)))
{
+ /* Increase counter at start, so resulting value is number of
+ * processed options, including any failed ones. */
+ daemon->num_opts++;
switch (opt)
{
case MHD_OPTION_CONNECTION_MEMORY_LIMIT:
@@ -5784,6 +5787,7 @@ parse_options_va (struct MHD_Daemon *daemon,
#endif /* HAVE_MESSAGES */
break;
case MHD_OPTION_ARRAY:
+ daemon->num_opts--; /* Do not count MHD_OPTION_ARRAY */
oa = va_arg (ap, struct MHD_OptionItem*);
i = 0;
while (MHD_OPTION_END != (opt = oa[i].option))
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
@@ -1920,6 +1920,15 @@ struct MHD_Daemon
* The size of queue for listen socket.
*/
unsigned int listen_backlog_size;
+
+ /**
+ * The number of user options used.
+ *
+ * Contains number of only meaningful options, i.e. #MHD_OPTION_END
+ * and #MHD_OPTION_ARRAY are not counted, while options inside
+ * #MHD_OPTION_ARRAY are counted.
+ */
+ size_t num_opts;
};