script updates

This commit is contained in:
Evgeny Grin (Karlson2k)
2024-04-05 18:54:20 +02:00
parent 9a0bcc53f1
commit 9888fd5830
2 changed files with 166 additions and 113 deletions
+162 -66
View File
@@ -15,14 +15,87 @@
%type: Name,Type,Argument1,Member1,Argument2,Member2,Argument3,Member3 line
%unique: Type Value Argument1 Description1 Member1 Argument2 Description2 Member2 Argument3 Description3 Member3
#Name:
#Value:
#Type: enum MHD_Bool
#Comment:
#Argument1:
#Description1:
#Argument2:
#Description2:
Name: SUPPRESS_DATE_HEADER
Value: 41
Type: enum MHD_Bool
Comment: Suppresses use of "Date:" header.
+ According to RFC should be used only if the system has no RTC.
+ The "Date:" is not suppressed (the header is enabled) by default.
Name: TURBO
Value: 42
Type: enum MHD_Bool
Comment: Enable `turbo`.
+ Disables certain calls to `shutdown()`, enables aggressive non-blocking optimistic reads and other potentially unsafe optimisations.
+ Most effects only happen with internal threads with epoll.
+ The 'turbo' mode is not enabled (mode is disabled) by default.
Name: DISABLE_THREAD_SAFETY
Value: 43
Type: enum MHD_Bool
Comment: Disable some internal thread safety.
+ Indicates that MHD daemon will be used by application in single-threaded mode only. When this flag is set then application must call any MHD function only within a single thread.
+ This flag turns off some internal thread-safety and allows MHD making some of the internal optimisations suitable only for single-threaded environment.
+ Not compatible with any internal threads modes.
+ Thread safety is not disabled (safety is enabled) by default.
Name: DISALLOW_UPGRADE
Value: 44
Type: enum MHD_Bool
Comment: You need to set this option if you want to disable use of HTTP "Upgrade".
+ "Upgrade" may require usage of additional internal resources, which we can avoid providing if they will not be used.
+ You should only use this option if you do not use "Upgrade" functionality and need a generally minor boost in performance and resources saving.
+ The "Upgrade" is not disallowed ("upgrade" is allowed) by default.
Name: DISALLOW_SUSPEND_RESUME
Value: 45
Type: enum MHD_Bool
Comment: Disable #MHD_action_suspend() functionality.
+
+ You should only use this function if you do not use suspend functionality and need a generally minor boost in performance.
+ The suspend is not disallowed (suspend is allowed) by default.
Name: ENABLE_SHOUTCAST
Value: 46
Type: enum MHD_Bool
Comment: Use SHOUTcast. This will cause *all* responses to begin with the SHOUTcast "ICY" line instead of "HTTP".
Name: DISABLE_URI_QUERY_PLUS_AS_SPACE
Value: 47
Type: enum MHD_Bool
Comment: Disable converting plus ('+') character to space in GET parameters (URI part after '?').
+ Plus conversion is not required by HTTP RFCs, however it required by HTML specifications,
+ see https://url.spec.whatwg.org/#application/x-www-form-urlencoded for details.
+ By default plus is converted to space in the query part of URI.
Name: listen addr reuse
Value: 48
Comment: Select mode of reusing address:port listen address.
+ Ineffective in conjunction with #MHD_daemon_listen_socket().
Argument1: enum MHD_DaemonOptionBindType reuse_type
Name: LISTEN_BACKLOG
Value: 49
Comment: Use the given backlog for the listen() call.
+ Works only with // FIXME: reference
Argument1: unsigned int backlog_size
Name: GLOBAL_CONNECTION_LIMIT
Value: 50
Comment: Maximum number of (concurrent) network connections served by daemon
Argument1: unsigned int glob_limit
Name: PER_IP_LIMIT
Value: 52
Comment: Limit on the number of (concurrent) network connections made to the server from the same IP address.
+ Can be used to prevent one IP from taking over all of the allowed connections. If the same IP tries to establish more than the specified number of connections, they will be immediately rejected.
Argument1: unsigned int per_ip_limit
Name: DEFAULT_TIMEOUT
Value: 53
Comment: After how many seconds of inactivity should a connection automatically be timed out?
+ Use zero for no timeout, which is also the (unsafe!) default.
Argument1: unsigned int timeout
Name: logger
Value: 100
@@ -40,7 +113,7 @@ Argument2: void *logger_cls
Description2: the closure for logger @a cb callback
Name: bind_socket_address
Name: bind_sa
Value: 201
Type: struct MHD_DaemonOptionValueSA
Comment: Bind to the given socket address.
@@ -80,31 +153,6 @@ Description1: the address family to use
Argument2: uint_fast16_t port
Description2: port to use, 0 to let system assign any free port
Name: LISTEN_BACKLOG
Value: 203
Type: unsigned int
Comment: Use the given backlog for the listen() call.
+ Ineffective in conjunction with #MHD_daemon_listen_socket()
Name: GLOBAL_CONNECTION_LIMIT
Value: 204
Type: unsigned int
Comment: Limit on the number of (concurrent) network connections
+ made to the server from the same IP address.
+ Can be used to prevent one IP from taking over all of
+ the allowed connections. If the same IP tries to establish
+ more than the specified number of connections, they will
+ be immediately rejected.
Argument1: conn_lim
Name: DEFAULT_TIMEOUT
Value: 205
Type: unsigned int
Comment: After how many seconds of inactivity should a
+ connection automatically be timed out?
+ Use zero for no timeout, which is also the (unsafe!) default.
Argument1: def_timeout
Name: listen_socket
Value: 206
Comment: Accept connections from the given socket. Socket
@@ -135,38 +183,86 @@ Description1: the function to call to obtain pre-shared key
Argument2: void *psk_cb_cls
Description2: the closure for @a psk_cb
#Name:
#Value:
#Type: enum MHD_Bool
#Comment:
#Argument1:
#Description1:
#Argument2:
#Description2:
Name: daemon_ready_callback
Value: 212
Type: struct MHD_DaemonOptionValueReadyCB
Comment: Set a callback to be called for pre-start finalisation.
+
+ The specified callback will be called one time, after network initialisation, TLS pre-initialisationб but before the start of the internal threads (if allowed)ю
Argument1: MHD_DaemonReadyCallback cb
Description1: the pre-start callback
Argument2: void *cb_cls
Description2: the closure for the callback
Name: SUPPRESS_DATE_HEADER
Value: 101
Argument1: enum MHD_Bool bool_val
Description1: the value of the parameter
Comment: Suppresses use of "Date:" header.
+ According to RFC should be used only if the system has no RTC.
Name: accept_policy
Value: 213
Type: struct MHD_DaemonOptionValueAcceptPol
Comment: Set a policy callback that accepts/rejects connections based on the client's IP address. This function will be called before a connection object is created.
Argument1: MHD_AcceptPolicyCallback apc
Description1: the accept policy callback
Argument2: void *apc_cls
Description2: the closure for the callback
Name: DISALLOW_SUSPEND_resume
Value: 2
Type: enum MHD_Bool
Comment: Disable #MHD_action_suspend() functionality.
+
+ You should only use this function if you are sure you do
+ satisfy all of its requirements and need a generally minor
+ boost in performance.
Name: early_uri_logger
Value: 214
Type: struct MHD_DaemonOptionValueUriCB
Comment: Set a callback to be called first for every request (before any parsing of the header). This callback is the only way to get raw (unmodified) request URI as URI is parsed and modified by MHD in-place.
+ Mandatory URI modification may apply before this call, like binary zero replacement, as required by RFCs.
Argument1: MHD_EarlyUriLogCallback cb
Description1: the early URI callback
Argument2: void *cls
Description2: the closure for the callback
Name: TURBO
Value: 3
Type: enum MHD_Bool
Argument1: bool_val
Description1: the value of the parameter
Comment: Enable `turbo`. Disables certain calls to `shutdown()`,
+ enables aggressive non-blocking optimistic reads and
+ other potentially unsafe optimisations.
+ Most effects only happen with internal threads with epoll.
+ The 'turbo' mode is not enabled (mode is disabled) by default.
Name: notify_connection
Value: 215
Type: struct MHD_DaemonOptionValueNotifConnCB
Comment: Set a function that should be called whenever a connection is started or closed.
Argument1: MHD_NotifyConnectionCallback ncc
Description1: the callback for notifications
Argument2: void *cls
Description2: the closure for the callback
Name: notify_stream
Value: 216
Type: struct MHD_DaemonOptionValueNotifStreamCB
Comment: Register a function that should be called whenever a stream is started or closed.
+ For HTTP/1.1 this callback is called one time for every connection.
Argument1: MHD_NotifyStreamCallback nsc
Description1: the callback for notifications
Argument2: void *cls
Description2: the closure for the callback
Name: conn memory limit
Value: 217
Type: size_t
Comment: Maximum memory size per connection.
+ Default is 32 kb.
+ Values above 128k are unlikely to result in much performance benefit, as half of the memory will be typically used for IO, and TCP buffersare unlikely to support window sizes above 64k on most systems.
+ The size should be large enough to fit all request headers (together with internal parsing information).
Name: stack size
Value: 218
Type: size_t
Comment: Desired size of the stack for the threads started by MHD.
+ Use 0 for system default, which is also MHD default.
+ Only useful if mode with the internal threads is selected.
Name: random entropy
Value: 219
Type: struct MHD_DaemonOptionValueRand
Comment: Set strong random data to be used by MHD.
+ Currently the data is only needed for Digest Auth module.
+ The recommended size is between 8 and 32. If size is four or less then security could be lowered.
+ Sizes larger then 32 (or, probably, larger than 16 - debatable) will not increase the security.
Argument1: size_t buf_size
Description1: the size of the buffer
Argument2: const void *buf
Description2: the buffer with strong random data, the content will be copied by MHD
Name: digest_auth_map_size
Value: 220
Comment: Specify the size of the internal hash map array that tracks generated digest nonces usage.
+ If the size of the map is too small then a lot of "stale nonce" results will be produced.
+ By default the size is 8 bytes (very small).
Argument1: size_t size
Description1: the size of the map array
+4 -47
View File
@@ -2654,20 +2654,20 @@ typedef void
enum MHD_FIXED_ENUM_APP_SET_ MHD_DaemonOptionBindType
{
/**
* The list socket bind without sharing listen address.
* The listen socket bind to the networks address without sharing the address.
* Default.
*/
MHD_DAEMON_OPTION_BIND_TYPE_NOT_SHARED = 0
,
/**
* The list socket bind with sharing listen address.
* The listen socket bind to the networks address with sharing the address.
* Several sockets can bind to the same address.
*/
MHD_DAEMON_OPTION_BIND_TYPE_SHARED = 1
,
/**
* The list socket bind to the address in explicit exclusive mode.
* Ignored on platforms without support for explicit exclusive socket use.
* The list socket bind to the networks address in explicit exclusive mode.
* Ignored on platforms without support for the explicit exclusive socket use.
*/
MHD_DAEMON_OPTION_BIND_TYPE_EXCLUSIVE = 2
};
@@ -3286,48 +3286,6 @@ MHD_daemon_set_tls_psk_callback (struct MHD_Daemon *daemon,
MHD_FN_PAR_NONNULL_ (1);
/**
* Configure daemon credentials type for GnuTLS.
*
* @param gnutls_credentials must be a value of
* type `gnutls_credentials_type_t`
* @return #MHD_SC_OK upon success; TODO: define failure modes
*
* FIXME: find a way to do this better that is TLS backend independent!
* => replace by exposing TLS library low-level details via
* introspection, see below
*/
MHD_EXTERN_ enum MHD_StatusCode
MHD_daemon_gnutls_credentials (struct MHD_Daemon *daemon,
int gnutls_credentials)
MHD_FN_PAR_NONNULL_ (1);
/**
* Provide TLS key and certificate data via callback.
*
* Use a callback to determine which X.509 certificate should be used
* for a given HTTPS connection. This option provides an alternative
* to #MHD_daemon_tls_key_and_cert_from_memory(). You must use this
* version if multiple domains are to be hosted at the same IP address
* using TLS's Server Name Indication (SNI) extension. In this case,
* the callback is expected to select the correct certificate based on
* the SNI information provided. The callback is expected to access
* the SNI data using `gnutls_server_name_get()`. Using this option
* requires GnuTLS 3.0 or higher.
*
* @param daemon daemon to configure callback for
* @param cb must be of type `gnutls_certificate_retrieve_function2 *`.
* @return #MHD_SC_OK on success
*
* FIXME: find a way to do this better that is TLS backend independent!
* => replace by exposing TLS library low-level details via
* introspection, see below
*/
MHD_EXTERN_ enum MHD_StatusCode
MHD_daemon_gnutls_key_and_cert_from_callback (struct MHD_Daemon *daemon,
void *cb)
MHD_FN_PAR_NONNULL_ (1);
// Callback invoked between full initialization of MHD
// during MHD_daemon_start() and actual event loop
@@ -3460,7 +3418,6 @@ struct MHD_ConnectionNotificationData
* Initially set to NULL (for connections added by MHD) or set by
* @a connection_cntx parameter for connections added by
* #MHD_daemon_add_connection().
* Modified pointer is remembered by MHD.
*/
void *application_context;
/**