فهرست منبع

Added daemon options for default nonce timeout and max nc values

Evgeny Grin (Karlson2k) 2 سال پیش
والد
کامیت
ce1ea19549
2فایلهای تغییر یافته به همراه49 افزوده شده و 1 حذف شده
  1. 19 1
      src/include/microhttpd.h
  2. 30 0
      src/microhttpd/daemon.c

+ 19 - 1
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;
 

+ 30 - 0
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: