gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [libmicrohttpd] branch master updated: more fixes from disc


From: gnunet
Subject: [GNUnet-SVN] [libmicrohttpd] branch master updated: more fixes from discussion with EG
Date: Sun, 24 Sep 2017 23:12:01 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository libmicrohttpd.

The following commit(s) were added to refs/heads/master by this push:
     new 697b4af5 more fixes from discussion with EG
697b4af5 is described below

commit 697b4af5fc205ffa6ed517756f5806ad56c2734f
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Sep 24 23:11:59 2017 +0200

    more fixes from discussion with EG
---
 src/include/microhttpd2.h | 168 +++++++++++++++++++++++++++++++---------------
 1 file changed, 114 insertions(+), 54 deletions(-)

diff --git a/src/include/microhttpd2.h b/src/include/microhttpd2.h
index 49b866e1..8255e8e1 100644
--- a/src/include/microhttpd2.h
+++ b/src/include/microhttpd2.h
@@ -28,7 +28,7 @@
  *
  * Main goals:
  * - simplify application callbacks by splitting header/upload/post
- *   functionality currently provided by calling the same 
+ *   functionality currently provided by calling the same
  *   MHD_AccessHandlerCallback 3+ times into separate callbacks.
  * - keep the API very simple for simple requests, but allow
  *   more complex logic to be incrementally introduced
@@ -55,12 +55,12 @@
  * - use more consistent prefixes for related functions
  *   by using MHD_subject_verb_object naming convention, also
  *   at the same time avoid symbol conflict with legacy names
- *   (so we can have one binary implementing old and new 
+ *   (so we can have one binary implementing old and new
  *   library API at the same time via compatibility layer).
  * - make it impossible to queue a response at the wrong time
  * - make it impossible to suspend a connection/request at the
  *   wrong time (improves thread-safety)
- * - make it clear which response status codes are "properly" 
+ * - make it clear which response status codes are "properly"
  *   supported (include the descriptive string) by using an enum;
  * - simplify API for common-case of one-shot responses by
  *   eliminating need for destroy response in most cases;
@@ -106,7 +106,7 @@ struct MHD_Request;
 
 /**
  * Return values for reporting errors, also used
- * for logging. 
+ * for logging.
  *
  * A value of 0 indicates success (as a return value).
  * Values between 1 and 10000 must not be used.
@@ -123,7 +123,7 @@ enum MHD_StatusCode
    * Successful operation (not used for logging).
    */
   MHD_SC_OK = 0,
-  
+
   /**
    * Informational event, MHD started.
    */
@@ -141,11 +141,11 @@ enum MHD_StatusCode
   MHD_TLS_BACKEND_UNSUPPORTED = 50001,
 
   /**
-   * The application requested a TLS cipher suite which is not 
+   * The application requested a TLS cipher suite which is not
    * supported by the selected backend.
    */
   MHD_TLS_CIPHERS_INVALID = 50002
-  
+
 };
 
 
@@ -157,6 +157,55 @@ struct MHD_Action;
 
 
 /**
+ * HTTP methods explicitly supported by MHD.  Note that for
+ * non-canonical methods, MHD will return #MHD_METHOD_UNKNOWN
+ * and you can use #MHD_REQUEST_INFORMATION_HTTP_METHOD to get
+ * the original string.
+ */
+enum MHD_Method
+{
+
+  /**
+   * Method did not match any of the methods given below.
+   */
+  MHD_METHOD_UNKNOWN = 0,
+
+  /**
+   * "GET" method.
+   */
+  MHD_METHOD_GET = 1,
+
+  /**
+   * "HEAD" method.
+   */
+  MHD_METHOD_HEAD = 2,
+
+  /**
+   * "PUT" method.
+   */
+  MHD_METHOD_PUT = 3,
+
+  /**
+   * "POST" method.
+   */
+  MHD_METHOD_POST = 4,
+
+  /**
+   * "OPTIONS" method.
+   */
+  MHD_METHOD_OPTIONS = 5,
+
+  /**
+   * "TRACE" method.
+   */
+  MHD_METHOD_TRACE = 6,
+
+  // more?
+
+};
+
+
+/**
  * A client has requested the given url using the given method
  * (#MHD_HTTP_METHOD_GET, #MHD_HTTP_METHOD_PUT,
  * #MHD_HTTP_METHOD_DELETE, #MHD_HTTP_METHOD_POST, etc).  The callback
@@ -177,7 +226,7 @@ typedef struct MHD_Action *
 (*MHD_RequestCallback) (void *cls,
                        struct MHD_Request *request,
                        const char *url,
-                       const char *method);
+                       enum MHD_Method method);
 
 
 /**
@@ -304,7 +353,7 @@ MHD_daemon_suppress_date_no_clock (struct MHD_Daemon 
*daemon);
  * 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.
- * 
+ *
  * @param daemon which instance to disable itc for
  */
 _MHD_EXTERN void
@@ -356,11 +405,11 @@ MHD_daemon_disallow_upgrade (struct MHD_Daemon *daemon);
  */
 enum MHD_FastOpenMethod
 {
-  /** 
+  /**
    * Disable use of TCP_FASTOPEN.
    */
   MHD_FOM_DISABLE = -1,
-  
+
   /**
    * Enable TCP_FASTOPEN where supported (Linux with a kernel >= 3.6).
    * This is the default.
@@ -377,12 +426,12 @@ enum MHD_FastOpenMethod
 
 
 /**
- * Configure TCP_FASTOPEN option, including setting a 
+ * Configure TCP_FASTOPEN option, including setting a
  * custom @a queue_length.
  *
  * Note that having a larger queue size can cause resource exhaustion
  * attack as the TCP stack has to now allocate resources for the SYN
- * packet along with its DATA. 
+ * packet along with its DATA.
  *
  * @param daemon which instance to configure TCP_FASTOPEN for
  * @param fom under which conditions should we use TCP_FASTOPEN?
@@ -414,7 +463,7 @@ enum MHD_AddressFamily
 
   /**
    * Use IPv6.
-   */ 
+   */
   MHD_AF_INET6,
 
   /**
@@ -425,7 +474,7 @@ enum MHD_AddressFamily
 
 
 /**
- * Bind to the given TCP port and address family.  
+ * Bind to the given TCP port and address family.
  *
  * Ineffective in conjunction with #MHD_daemon_listen_socket().
  * Ineffective in conjunction with #MHD_daemon_bind_sa().
@@ -488,7 +537,7 @@ MHD_daemon_listen_allow_address_reuse (struct MHD_Daemon 
*daemon);
 /**
  * Accept connections from the given socket.  Socket
  * must be a TCP or UNIX domain (stream) socket.
- * 
+ *
  * Unless -1 is given, this disables other listen options, including
  * #MHD_daemon_bind_sa(), #MHD_daemon_bind_port(),
  * #MHD_daemon_listen_queue() and
@@ -512,19 +561,19 @@ enum MHD_EventLoopSyscall
   /**
    * Automatic selection of best-available method. This is also the
    * default.
-   */ 
+   */
   MHD_ELS_AUTO = 0,
 
   /**
    * Use select().
    */
   MHD_ELS_SELECT = 1,
-  
+
   /**
    * Use poll().
    */
   MHD_ELS_POLL = 2,
-  
+
   /**
    * Use epoll().
    */
@@ -534,7 +583,7 @@ enum MHD_EventLoopSyscall
 
 /**
  * Force use of a particular event loop system call.
- * 
+ *
  * @param daemon daemon to set event loop style for
  * @param els event loop syscall to use
  * @return #MHD_NO on failure, #MHD_YES on success
@@ -579,7 +628,7 @@ enum MHD_ProtocolStrictLevel
 
 /**
  * Set how strictly MHD will enforce the HTTP protocol.
- * 
+ *
  * @param daemon daemon to configure strictness for
  * @param sl how strict should we be
  */
@@ -601,7 +650,7 @@ MHD_daemon_protocol_strict_level (struct MHD_Daemon *daemon,
  *     #MHD_TLS_BACKEND_UNSUPPORTED if the @a backend is unknown
  *     #MHD_TLS_DISABLED if this build of MHD does not support TLS
  *     #MHD_TLS_CIPHERS_INVALID if the given @a ciphers are not supported
- *     by this backend 
+ *     by this backend
  */
 _MHD_EXTERN enum MHD_StatusCode
 MHD_daemon_set_tls_backend (struct MHD_Daemon *daemon,
@@ -630,7 +679,7 @@ MHD_daemon_tls_key_and_cert_from_memory (struct MHD_Daemon 
*daemon,
 
 /**
  * Configure DH parameters (dh.pem) to use for the TLS key
- * exchange. 
+ * exchange.
  *
  * @param daemon daemon to configure tls for
  * @param dh parameters to use
@@ -643,7 +692,7 @@ _MHD_EXTERN enum MHD_StatusCode
 
 /**
  * Memory pointer for the certificate (ca.pem) to be used by the
- * HTTPS daemon for client authentification.  
+ * HTTPS daemon for client authentification.
  *
  * @param daemon daemon to configure tls for
  * @param mem_trust memory pointer to the certificate
@@ -652,7 +701,7 @@ _MHD_EXTERN enum MHD_StatusCode
 _MHD_EXTERN enum MHD_StatusCode
 MHD_daemon_tls_mem_trust (struct MHD_Daemon *daemon,
                          const char *mem_trust);
-  
+
 
 /**
  * Configure daemon credentials type for GnuTLS.
@@ -703,8 +752,8 @@ enum MHD_ThreadingModel
   MHD_TM_THREAD_PER_CONNECTION = -1,
 
   /**
-   * Use an external event loop. This is the default.  
-   */ 
+   * Use an external event loop. This is the default.
+   */
   MHD_TM_EXTERNAL_EVENT_LOOP = 0,
 
   /**
@@ -721,7 +770,7 @@ enum MHD_ThreadingModel
    * #MHD_daemon_run_from_select() cannot be used.
    */
   MHD_TM_WORKER_THREADS = 1
-  
+
 };
 
 
@@ -730,7 +779,7 @@ enum MHD_ThreadingModel
  *
  * @return an `enum MHD_ThreadingModel` for a thread pool of size @a n
  */
-#define MHD_TM_THREAD_POOL(n) ((enum MHD_ThreadingModel)(n))  
+#define MHD_TM_THREAD_POOL(n) ((enum MHD_ThreadingModel)(n))
 
 
 /**
@@ -776,7 +825,7 @@ MHD_daemon_accept_policy (struct MHD_Daemon *daemon,
 
 
 typedef void *
-(MHD_EarlyUriLogCallback)(void *cls,                    
+(MHD_EarlyUriLogCallback)(void *cls,
                          const char *uri,
                          struct MHD_Request *request);
 
@@ -866,7 +915,7 @@ MHD_daemon_thread_stack_size (struct MHD_Daemon *daemon,
  * @param daemon daemon to configure
  * @param global_connection_limit maximum number of (concurrent)
           connections
- * @param ip_connection_limit limit on the number of (concurrent) 
+ * @param ip_connection_limit limit on the number of (concurrent)
  *        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
@@ -881,7 +930,7 @@ MHD_daemon_connection_limits (struct MHD_Daemon *daemon,
 
 /**
  * After how many seconds of inactivity should a
- * connection automatically be timed out? 
+ * connection automatically be timed out?
  * Use zero for no timeout, which is also the (unsafe!) default.
  *
  * @param daemon daemon to configure
@@ -897,7 +946,7 @@ MHD_daemon_connection_default_timeout (struct MHD_Daemon 
*daemon,
  * The return value must be "strlen(s)" and @a s  should be
  * updated.  Note that the unescape function must not lengthen @a s
  * (the result must be shorter than the input and still be
- * 0-terminated).  
+ * 0-terminated).
  *
  * @param cls closure
  * @param req the request for which unescaping is performed
@@ -915,7 +964,7 @@ MHD_UnescapeCallback (void *cls,
  * sequences in URIs and URI arguments.  Note that this function
  * will NOT be used by the `struct MHD_PostProcessor`.  If this
  * option is not specified, the default method will be used which
- * decodes escape sequences of the form "%HH". 
+ * decodes escape sequences of the form "%HH".
  *
  * @param daemon daemon to configure
  * @param unescape_cb function to use, NULL for default
@@ -944,7 +993,7 @@ MHD_daemon_digest_auth_random (struct MHD_Daemon *daemon,
 
 /**
  * Size of the internal array holding the map of the nonce and
- * the nonce counter. 
+ * the nonce counter.
  *
  * @param daemon daemon to configure
  * @param nc_length desired array length
@@ -962,7 +1011,7 @@ MHD_daemon_digest_auth_nc_size (struct MHD_Daemon *daemon,
  * Specified as the number of seconds.  Use zero for no timeout.  If
  * timeout was set to zero (or unset) before, setting of a new value
  * by MHD_connection_set_option() will reset timeout timer.
- * 
+ *
  * @param connection connection to configure timeout for
  * @param timeout_s new timeout in seconds
  */
@@ -1082,7 +1131,7 @@ enum MHD_HTTP_StatusCode {
   MHD_HTTP_NOT_ACCEPTABLE = 406,
 /** @deprecated */
 #define MHD_HTTP_METHOD_NOT_ACCEPTABLE \
-  _MHD_DEPR_IN_MACRO("Value MHD_HTTP_METHOD_NOT_ACCEPTABLE is deprecated, use 
MHD_HTTP_NOT_ACCEPTABLE") MHD_HTTP_NOT_ACCEPTABLE 
+  _MHD_DEPR_IN_MACRO("Value MHD_HTTP_METHOD_NOT_ACCEPTABLE is deprecated, use 
MHD_HTTP_NOT_ACCEPTABLE") MHD_HTTP_NOT_ACCEPTABLE
   MHD_HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
   MHD_HTTP_REQUEST_TIMEOUT = 408,
   MHD_HTTP_CONFLICT = 409,
@@ -1200,17 +1249,17 @@ MHD_request_resume (struct MHD_Request *request);
  * must no longer be modified (i.e. by setting headers).
  *
  * @param response response to convert, not NULL
- * @param consume should the response object be consumed?
+ * @param destroy_after_use should the response object be consumed?
  * @return corresponding action, never returns NULL
  *
  * Implementation note: internally, this is largely just
- * a cast (and possibly an RC increment operation), 
+ * a cast (and possibly an RC increment operation),
  * as a response *is* an action.  As no memory is
  * allocated, this operation cannot fail.
- */ 
+ */
 struct MHD_Action *
 MHD_action_from_response (struct MHD_Response *response,
-                         enum MHD_bool consume);
+                         enum MHD_bool destroy_after_use);
 
 
 /**
@@ -1224,8 +1273,7 @@ _MHD_EXTERN void
 MHD_response_option_v10_only (struct MHD_Response *response);
 
 
-/**
- * Signature of the callback used by MHD to notify the
+/** * Signature of the callback used by MHD to notify the
  * application about completed requests.
  *
  * @param cls client-defined closure
@@ -1505,7 +1553,7 @@ MHD_response_for_upgrade (MHD_UpgradeHandler 
upgrade_handler,
  * @ingroup response
  */
 _MHD_EXTERN void
-MHD_response_decref (struct MHD_Response *response);
+MHD_response_queue_for_destroy (struct MHD_Response *response);
 
 
 /**
@@ -1525,7 +1573,7 @@ MHD_response_add_header (struct MHD_Response *response,
 
 
 /**
- * Add a footer line to the response.
+ * Add a tailer line to the response.
  *
  * @param response response to add a footer to
  * @param footer the footer to add
@@ -1535,9 +1583,9 @@ MHD_response_add_header (struct MHD_Response *response,
  * @ingroup response
  */
 _MHD_EXTERN enum MHD_Bool
-MHD_response_add_footer (struct MHD_Response *response,
-                         const char *footer,
-                        const char *content);
+MHD_response_add_trailer (struct MHD_Response *response,
+                          const char *footer,
+                          const char *content);
 
 
 /**
@@ -1608,7 +1656,7 @@ MHD_action_continue (void);
  *        value to the number of bytes NOT processed;
  * @return action specifying how to proceed, often
  *         #MHD_action_continue() if all is well,
- *         #MHD_action_suspend() to stop reading the upload until 
+ *         #MHD_action_suspend() to stop reading the upload until
  *              the request is resumed,
  *         NULL to close the socket, or a response
  *         to discard the rest of the upload and return the data given
@@ -1650,7 +1698,7 @@ MHD_action_process_upload (MHD_UploadCallback uc,
  * @param size number of bytes in @a data available
  * @return action specifying how to proceed, often
  *         #MHD_action_continue() if all is well,
- *         #MHD_action_suspend() to stop reading the upload until 
+ *         #MHD_action_suspend() to stop reading the upload until
  *              the request is resumed,
  *         NULL to close the socket, or a response
  *         to discard the rest of the upload and return the data given
@@ -1892,7 +1940,13 @@ union MHD_RequestInformation
    * HTTP version requested by the client.
    */
   const char *http_version;
-  
+
+  /**
+   * HTTP method of the request, as a string.  Particularly useful if
+   * #MHD_HTTP_METHOD_UNKNOWN was given.
+   */
+  const char *http_method;
+
   /**
    * Size of the client's HTTP header.
    */
@@ -1911,19 +1965,25 @@ enum MHD_RequestInformationType
    * Return which connection the request is associated with.
    */
   MHD_REQUEST_INFORMATION_CONNECTION,
-  
+
   /**
    * Check whether the connection is suspended.
    * @ingroup request
    */
   MHD_REQUEST_INFORMATION_SUSPENDED,
-  
+
   /**
    * Return the HTTP version string given by the client.
    * @ingroup request
    */
   MHD_REQUEST_INFORMATION_HTTP_VERSION,
-  
+
+  /**
+   * Return the HTTP method used by the request.
+   * @ingroup request
+   */
+  MHD_REQUEST_INFORMATION_HTTP_METHOD,
+
   /**
    * Return length of the client's HTTP request header.
    * @ingroup request

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]