Browse Source

daemon: added user options counter

Evgeny Grin (Karlson2k) 4 years ago
parent
commit
1717035dfb
2 changed files with 13 additions and 0 deletions
  1. 4 0
      src/microhttpd/daemon.c
  2. 9 0
      src/microhttpd/internal.h

+ 4 - 0
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))

+ 9 - 0
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;
 };