gnunet-svn
[Top][All Lists]
Advanced

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

[taler-challenger] branch master updated: clean up high-level challenger


From: gnunet
Subject: [taler-challenger] branch master updated: clean up high-level challenger dispatcher
Date: Thu, 20 Apr 2023 23:59:31 +0200

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

grothoff pushed a commit to branch master
in repository challenger.

The following commit(s) were added to refs/heads/master by this push:
     new 514c686  clean up high-level challenger dispatcher
514c686 is described below

commit 514c686914b896df996537f24b865d005a8f7b39
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Thu Apr 20 23:59:29 2023 +0200

    clean up high-level challenger dispatcher
---
 src/challenger/Makefile.am               |   1 +
 src/challenger/challenger-httpd.c        | 171 +++++++++++++++++--------------
 src/challenger/challenger-httpd.h        | 111 +++++++++-----------
 src/challenger/challenger-httpd_config.c |  24 ++---
 src/challenger/challenger-httpd_config.h |   8 +-
 src/challenger/challenger-httpd_login.c  |  36 +++++++
 src/challenger/challenger-httpd_login.h  |  41 ++++++++
 src/challenger/challenger-httpd_mhd.c    |  56 +++-------
 src/challenger/challenger-httpd_mhd.h    |  39 +++----
 9 files changed, 257 insertions(+), 230 deletions(-)

diff --git a/src/challenger/Makefile.am b/src/challenger/Makefile.am
index d0c4955..6a2b86f 100644
--- a/src/challenger/Makefile.am
+++ b/src/challenger/Makefile.am
@@ -27,6 +27,7 @@ challenger_admin_LDADD = \
 challenger_httpd_SOURCES = \
   challenger-httpd.c challenger-httpd.h \
   challenger-httpd_config.c challenger-httpd_config.h \
+  challenger-httpd_login.c challenger-httpd_login.h \
   challenger-httpd_mhd.c challenger-httpd_mhd.h
 challenger_httpd_LDADD = \
   $(top_builddir)/src/util/libchallengerutil.la \
diff --git a/src/challenger/challenger-httpd.c 
b/src/challenger/challenger-httpd.c
index 61df81f..059c99a 100644
--- a/src/challenger/challenger-httpd.c
+++ b/src/challenger/challenger-httpd.c
@@ -24,6 +24,7 @@
 #include <gnunet/gnunet_curl_lib.h>
 #include "challenger_util.h"
 #include "challenger-httpd.h"
+#include "challenger-httpd_login.h"
 #include "challenger-httpd_mhd.h"
 #include "challenger_database_lib.h"
 #include "challenger-httpd_config.h"
@@ -121,102 +122,116 @@ url_handler (void *cls,
 {
   static struct CH_RequestHandler handlers[] = {
     /* Landing page, tell humans to go away. */
-    { "/", MHD_HTTP_METHOD_GET, "text/plain",
-      "Hello, I'm challenger. This HTTP server is not for humans.\n", 0,
-      &CH_MHD_handler_static_response, MHD_HTTP_OK },
-    { "/agpl", MHD_HTTP_METHOD_GET, "text/plain",
-      NULL, 0,
-      &CH_handler_config, MHD_HTTP_FOUND },
-    { "/config", MHD_HTTP_METHOD_GET, "text/json",
-      NULL, 0,
-      &CH_handler_config, MHD_HTTP_OK },
-    {NULL, NULL, NULL, NULL, 0, 0 }
-  };
-  static struct CH_RequestHandler h404 = {
-    "", NULL, "text/html",
-    "<html><title>404: not found</title></html>", 0,
-    &CH_MHD_handler_static_response, MHD_HTTP_NOT_FOUND
+    {
+      .url = "/",
+      .method = MHD_HTTP_METHOD_GET,
+      .handler = &CH_MHD_handler_root
+    },
+    {
+      .url = "/agpl",
+      .method = MHD_HTTP_METHOD_GET,
+      .handler = &CH_handler_config
+    },
+    {
+      .url = "/config",
+      .method = MHD_HTTP_METHOD_GET,
+      .handler = &CH_handler_config
+    },
+    {
+      .url = "/login",
+      .method = MHD_HTTP_METHOD_GET,
+      .handler = &CH_handler_login
+    },
+    {
+      NULL, NULL, NULL
+    }
   };
-
-  struct TM_HandlerContext *hc;
-  struct GNUNET_AsyncScopeId aid;
-  const char *correlation_id = NULL;
+  struct CH_HandlerContext *hc;
 
   (void) cls;
   (void) version;
   hc = *con_cls;
   if (NULL == hc)
   {
-    GNUNET_async_scope_fresh (&aid);
+    const char *correlation_id;
+    bool found = false;
+
+    hc = GNUNET_new (struct CH_HandlerContext);
+    hc->connection = connection;
+    GNUNET_async_scope_fresh (&hc->async_scope_id);
+    GNUNET_SCHEDULER_begin_async_scope (&hc->async_scope_id);
     /* We only read the correlation ID on the first callback for every client 
*/
     correlation_id = MHD_lookup_connection_value (connection,
                                                   MHD_HEADER_KIND,
                                                   "Challenger-Correlation-Id");
-    if ((NULL != correlation_id) &&
-        (GNUNET_YES != GNUNET_CURL_is_valid_scope_id (correlation_id)))
+    if ( (NULL != correlation_id) &&
+         (GNUNET_YES != GNUNET_CURL_is_valid_scope_id (correlation_id)) )
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "illegal incoming correlation ID\n");
+                  "Illegal incoming correlation ID\n");
       correlation_id = NULL;
     }
-  }
-  else
-  {
-    aid = hc->async_scope_id;
-  }
-  GNUNET_SCHEDULER_begin_async_scope (&aid);
-
-  if (NULL != correlation_id)
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Handling request for (%s) URL '%s', correlation_id=%s\n",
-                method,
-                url,
-                correlation_id);
-  else
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Handling request (%s) for URL '%s'\n",
-                method,
-                url);
-
-  for (unsigned int i = 0; NULL != handlers[i].url; i++)
-  {
-    struct CH_RequestHandler *rh = &handlers[i];
-
-    if (0 == strcmp (url,
-                     rh->url))
+    if (NULL != correlation_id)
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                  "Handling request for (%s) URL '%s', correlation_id=%s\n",
+                  method,
+                  url,
+                  correlation_id);
+    else
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                  "Handling request (%s) for URL '%s'\n",
+                  method,
+                  url);
+
+    for (unsigned int i = 0; NULL != handlers[i].url; i++)
     {
-      if (0 == strcasecmp (method,
-                           MHD_HTTP_METHOD_OPTIONS))
-      {
-        return TALER_MHD_reply_cors_preflight (connection);
-      }
-      if ( (NULL == rh->method) ||
-           (0 == strcasecmp (method,
-                             rh->method)) )
+      struct CH_RequestHandler *rh = &handlers[i];
+
+      if (0 == strcmp (url,
+                       rh->url))
       {
-        MHD_RESULT ret;
-
-        ret = rh->handler (rh,
-                           connection,
-                           con_cls,
-                           upload_data,
-                           upload_data_size);
-        hc = *con_cls;
-        if (NULL != hc)
+        found = true;
+        if (0 == strcasecmp (method,
+                             MHD_HTTP_METHOD_OPTIONS))
+        {
+          return TALER_MHD_reply_cors_preflight (connection);
+        }
+        if ( (NULL == rh->method) ||
+             (0 == strcasecmp (method,
+                               rh->method)) )
         {
-          /* Store the async context ID, so we can restore it if
-           * we get another callback for this request. */
-          hc->async_scope_id = aid;
+          hc->rh = rh;
+          break;
         }
-        return ret;
       }
     }
+    if (NULL == hc->rh)
+    {
+      GNUNET_break_op (0);
+      if (found)
+      {
+        /* TOOD: return which methods are allowed ... */
+        return TALER_MHD_reply_static (hc->connection,
+                                       MHD_HTTP_METHOD_NOT_ALLOWED,
+                                       "text/plain",
+                                       NULL,
+                                       0);
+      }
+      return TALER_MHD_reply_static (hc->connection,
+                                     MHD_HTTP_NOT_FOUND,
+                                     "text/plain",
+                                     NULL,
+                                     0);
+    }
+  }
+  else
+  {
+    GNUNET_SCHEDULER_begin_async_scope (&hc->async_scope_id);
   }
-  return CH_MHD_handler_static_response (&h404,
-                                         connection,
-                                         con_cls,
-                                         upload_data,
-                                         upload_data_size);
+  GNUNET_assert (NULL != hc->rh);
+  return hc->rh->handler (hc,
+                          upload_data,
+                          upload_data_size);
 }
 
 
@@ -278,16 +293,18 @@ handle_mhd_completion_callback (void *cls,
                                 void **con_cls,
                                 enum MHD_RequestTerminationCode toe)
 {
-  struct TM_HandlerContext *hc = *con_cls;
+  struct CH_HandlerContext *hc = *con_cls;
 
   (void) cls;
-  (void) connection;
   if (NULL == hc)
     return;
+  GNUNET_assert (hc->connection == connection);
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Finished handling request with status %d\n",
               (int) toe);
-  hc->cc (hc);
+  if (NULL != hc->cc)
+    hc->cc (hc->ctx);
+  GNUNET_free (hc);
   *con_cls = NULL;
 }
 
diff --git a/src/challenger/challenger-httpd.h 
b/src/challenger/challenger-httpd.h
index cadc443..6578507 100644
--- a/src/challenger/challenger-httpd.h
+++ b/src/challenger/challenger-httpd.h
@@ -27,99 +27,88 @@
 #include "challenger_database_lib.h"
 #include <gnunet/gnunet_mhd_compat.h>
 
+
 /**
  * @brief Struct describing an URL and the handler for it.
  */
-struct CH_RequestHandler
-{
+struct CH_RequestHandler;
 
-  /**
-   * URL the handler is for.
-   */
-  const char *url;
+/**
+ * Signature of a function used to clean up the context
+ * of this handler.
+ *
+ * @param cls closure to clean up.
+ */
+typedef void
+(*CH_ContextCleanup)(void *cls);
 
-  /**
-   * Method the handler is for, NULL for "all".
-   */
-  const char *method;
+
+/**
+ * Each MHD response handler that sets the "connection_cls" to a
+ * non-NULL value must use a struct that has this struct as its first
+ * member.  This struct contains a single callback, which will be
+ * invoked to clean up the memory when the connection is completed.
+ */
+struct CH_HandlerContext
+{
 
   /**
-   * Mime type to use in reply (hint, can be NULL).
+   * Function to execute the handler-specific cleanup of the
+   * (typically larger) context.
    */
-  const char *mime_type;
+  CH_ContextCleanup cc;
 
   /**
-   * Raw data for the @e handler
+   * Handler-specific context, will be passed to @e cc
+   * upon completion.
    */
-  const void *data;
+  void *ctx;
 
   /**
-   * Number of bytes in @e data, 0 for 0-terminated.
+   * Connection being processed.
    */
-  size_t data_size;
+  struct MHD_Connection *connection;
 
   /**
-   * Function to call to handle the request.
-   *
-   * @param rh this struct
-   * @param mime_type the @e mime_type for the reply (hint, can be NULL)
-   * @param connection the MHD connection to handle
-   * @param[in,out] connection_cls the connection's closure (can be updated)
-   * @param upload_data upload data
-   * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
-   * @return MHD result code
+   * Request handler for this request.
    */
-  MHD_RESULT (*handler)(struct CH_RequestHandler *rh,
-                        struct MHD_Connection *connection,
-                        void **connection_cls,
-                        const char *upload_data,
-                        size_t *upload_data_size);
+  const struct CH_RequestHandler *rh;
 
   /**
-   * Default response code.
+   * Asynchronous request context id.
    */
-  unsigned int response_code;
+  struct GNUNET_AsyncScopeId async_scope_id;
 };
 
 
 /**
- * Each MHD response handler that sets the "connection_cls" to a
- * non-NULL value must use a struct that has this struct as its first
- * member.  This struct contains a single callback, which will be
- * invoked to clean up the memory when the contection is completed.
- */
-struct TM_HandlerContext;
-
-/**
- * Signature of a function used to clean up the context
- * we keep in the "connection_cls" of MHD when handling
- * a request.
- *
- * @param hc header of the context to clean up.
- */
-typedef void
-(*TM_ContextCleanup)(struct TM_HandlerContext *hc);
-
-
-/**
- * Each MHD response handler that sets the "connection_cls" to a
- * non-NULL value must use a struct that has this struct as its first
- * member.  This struct contains a single callback, which will be
- * invoked to clean up the memory when the connection is completed.
+ * @brief Struct describing an URL and the handler for it.
  */
-struct TM_HandlerContext
+struct CH_RequestHandler
 {
 
   /**
-   * Function to execute the handler-specific cleanup of the
-   * (typically larger) context.
+   * URL the handler is for.
    */
-  TM_ContextCleanup cc;
+  const char *url;
 
   /**
-   * Asynchronous request context id.
+   * Method the handler is for, NULL for "all".
    */
-  struct GNUNET_AsyncScopeId async_scope_id;
+  const char *method;
+
+  /**
+   * Function to call to handle the request.
+   *
+   * @param hc handler context
+   * @param upload_data upload data
+   * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
+   * @return MHD result code
+   */
+  MHD_RESULT (*handler)(struct CH_HandlerContext *hc,
+                        const char *upload_data,
+                        size_t *upload_data_size);
+
 };
 
 
diff --git a/src/challenger/challenger-httpd_config.c 
b/src/challenger/challenger-httpd_config.c
index f17627f..ec71df7 100644
--- a/src/challenger/challenger-httpd_config.c
+++ b/src/challenger/challenger-httpd_config.c
@@ -1,6 +1,6 @@
 /*
   This file is part of Challenger
-  Copyright (C) 2020 Taler Systems SA
+  Copyright (C) 2023 Taler Systems SA
 
   Challenger is free software; you can redistribute it and/or modify it under 
the
   terms of the GNU Lesser General Public License as published by the Free 
Software
@@ -27,30 +27,18 @@
  * Protocol version history:
  *
  * 0: original design
- * 1: adds ?fresh=y to POST backup operation to force fresh contract
- *    to be created
  */
 
-/**
- * Manages a /config call.
- *
- * @param rh context of the handler
- * @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
- * @param upload_data upload data
- * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
- * @param mi merchant backend instance, never NULL
- * @return MHD result code
- */
+
 MHD_RESULT
-CH_handler_config (struct CH_RequestHandler *rh,
-                   struct MHD_Connection *connection,
-                   void **connection_cls,
+CH_handler_config (struct CH_HandlerContext *hc,
                    const char *upload_data,
                    size_t *upload_data_size)
 {
+  (void) upload_data;
+  (void) upload_data_size;
   return TALER_MHD_REPLY_JSON_PACK (
-    connection,
+    hc->connection,
     MHD_HTTP_OK,
     GNUNET_JSON_pack_string ("name",
                              "challenger"),
diff --git a/src/challenger/challenger-httpd_config.h 
b/src/challenger/challenger-httpd_config.h
index d448af0..5c33a67 100644
--- a/src/challenger/challenger-httpd_config.h
+++ b/src/challenger/challenger-httpd_config.h
@@ -26,17 +26,13 @@
 /**
  * Manages a /config call.
  *
- * @param rh context of the handler
- * @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
+ * @param[in,out] hc context of the connection
  * @param upload_data upload data
  * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
  * @return MHD result code
  */
 MHD_RESULT
-CH_handler_config (struct CH_RequestHandler *rh,
-                   struct MHD_Connection *connection,
-                   void **connection_cls,
+CH_handler_config (struct CH_HandlerContext *hc,
                    const char *upload_data,
                    size_t *upload_data_size);
 
diff --git a/src/challenger/challenger-httpd_login.c 
b/src/challenger/challenger-httpd_login.c
new file mode 100644
index 0000000..cf394f3
--- /dev/null
+++ b/src/challenger/challenger-httpd_login.c
@@ -0,0 +1,36 @@
+/*
+  This file is part of Challenger
+  Copyright (C) 2023 Taler Systems SA
+
+  Challenger is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 3, or (at your option) any later version.
+
+  Challenger is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Challenger; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file challenger-httpd_login.c
+ * @brief functions to handle incoming requests for logins
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "challenger-httpd.h"
+#include <gnunet/gnunet_util_lib.h>
+#include "challenger-httpd_login.h"
+
+
+MHD_RESULT
+CH_handler_login (struct CH_HandlerContext *hc,
+                  const char *upload_data,
+                  size_t *upload_data_size)
+{
+  return TALER_MHD_reply_with_error (hc->connection,
+                                     MHD_HTTP_INTERNAL_SERVER_ERROR,
+                                     
TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE,
+                                     NULL);
+}
diff --git a/src/challenger/challenger-httpd_login.h 
b/src/challenger/challenger-httpd_login.h
new file mode 100644
index 0000000..6201bc7
--- /dev/null
+++ b/src/challenger/challenger-httpd_login.h
@@ -0,0 +1,41 @@
+/*
+  This file is part of TALER
+  Copyright (C) 2023 Taler Systems SA
+
+  TALER is free software; you can redistribute it and/or modify it under the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 3, or (at your option) any later version.
+
+  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file challenger-httpd_policy.h
+ * @brief functions to handle incoming requests on /login
+ * @author Christian Grothoff
+ */
+#ifndef CHALLENGER_HTTPD_LOGIN_H
+#define CHALLENGER_HTTPD_LOGIN_H
+
+#include <microhttpd.h>
+
+
+/**
+ * Handle request on @a connection for /login.
+ *
+ * @param hc context of the connection
+ * @param upload_data upload data, if any
+ * @param[in,out] upload_data_size remaining data in @a upload_data, to be 
updated
+ * @return MHD result code
+ */
+MHD_RESULT
+CH_handler_login (struct CH_HandlerContext *hc,
+                  const char *upload_data,
+                  size_t *upload_data_size);
+
+
+#endif
diff --git a/src/challenger/challenger-httpd_mhd.c 
b/src/challenger/challenger-httpd_mhd.c
index 9827111..f870132 100644
--- a/src/challenger/challenger-httpd_mhd.c
+++ b/src/challenger/challenger-httpd_mhd.c
@@ -16,8 +16,6 @@
 /**
  * @file challenger-httpd_mhd.c
  * @brief helpers for MHD interaction
- * @author Florian Dold
- * @author Benedikt Mueller
  * @author Christian Grothoff
  */
 #include "platform.h"
@@ -25,60 +23,32 @@
 #include "challenger-httpd_mhd.h"
 
 
-/**
- * Function to call to handle the request by sending
- * back static data from the @a rh.
- *
- * @param rh context of the handler
- * @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
- * @param upload_data upload data
- * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
- * @return MHD result code
- */
 MHD_RESULT
-CH_MHD_handler_static_response (struct CH_RequestHandler *rh,
-                                struct MHD_Connection *connection,
-                                void **connection_cls,
-                                const char *upload_data,
-                                size_t *upload_data_size)
+CH_MHD_handler_root (struct CH_HandlerContext *hc,
+                     const char *upload_data,
+                     size_t *upload_data_size)
 {
-  (void) connection_cls;
+  const char *msg =
+    "Hello, I'm challenger. This HTTP server is not for humans.\n";
+
   (void) upload_data;
   (void) upload_data_size;
-  if (0 == rh->data_size)
-    rh->data_size = strlen ((const char *) rh->data);
-  return TALER_MHD_reply_static (connection,
-                                 rh->response_code,
-                                 rh->mime_type,
-                                 (void *) rh->data,
-                                 rh->data_size);
+  return TALER_MHD_reply_static (hc->connection,
+                                 MHD_HTTP_OK,
+                                 "text/plain",
+                                 msg,
+                                 strlen (msg));
 }
 
 
-/**
- * Function to call to handle the request by sending
- * back a redirect to the AGPL source code.
- *
- * @param rh context of the handler
- * @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
- * @param upload_data upload data
- * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
- * @return MHD result code
- */
 MHD_RESULT
-CH_MHD_handler_agpl_redirect (struct CH_RequestHandler *rh,
-                              struct MHD_Connection *connection,
-                              void **connection_cls,
+CH_MHD_handler_agpl_redirect (struct CH_HandlerContext *hc,
                               const char *upload_data,
                               size_t *upload_data_size)
 {
-  (void) rh;
-  (void) connection_cls;
   (void) upload_data;
   (void) upload_data_size;
-  return TALER_MHD_reply_agpl (connection,
+  return TALER_MHD_reply_agpl (hc->connection,
                                "https://git.taler.net/challenger.git";);
 }
 
diff --git a/src/challenger/challenger-httpd_mhd.h 
b/src/challenger/challenger-httpd_mhd.h
index a997a0e..de91e37 100644
--- a/src/challenger/challenger-httpd_mhd.h
+++ b/src/challenger/challenger-httpd_mhd.h
@@ -1,17 +1,17 @@
 /*
-  This file is part of TALER
-  Copyright (C) 2014, 2015 GNUnet e.V. and INRIA
+  This file is part of Challenger
+  Copyright (C) 2023 Taler Systems SA
 
-  TALER is free software; you can redistribute it and/or modify it under the
+  Challenger is free software; you can redistribute it and/or modify it under 
the
   terms of the GNU Affero General Public License as published by the Free 
Software
   Foundation; either version 3, or (at your option) any later version.
 
-  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+  Challenger is distributed in the hope that it will be useful, but WITHOUT ANY
   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
   A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
 
   You should have received a copy of the GNU Affero General Public License 
along with
-  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+  Challenger; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 */
 
 /**
@@ -21,49 +21,38 @@
  * @author Benedikt Mueller
  * @author Christian Grothoff
  */
-#ifndef challenger_HTTPD_MHD_H
-#define challenger_HTTPD_MHD_H
+#ifndef CHALLENGER_HTTPD_MHD_H
+#define CHALLENGER_HTTPD_MHD_H
 #include <gnunet/gnunet_util_lib.h>
 #include <microhttpd.h>
 #include "challenger-httpd.h"
 
 
 /**
- * Function to call to handle the request by sending
- * back static data from the @a rh.
+ * Function to call to for "/" requests.
  *
- * @param rh context of the handler
- * @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
- * @param upload_data upload data
+ * @param[in,out] hc handler context
  * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
  * @param mi merchant backend instance, NULL is allowed in this case!
  * @return MHD result code
  */
 MHD_RESULT
-CH_MHD_handler_static_response (struct CH_RequestHandler *rh,
-                                struct MHD_Connection *connection,
-                                void **connection_cls,
-                                const char *upload_data,
-                                size_t *upload_data_size);
+CH_MHD_handler_root (struct CH_HandlerContext *hc,
+                     const char *upload_data,
+                     size_t *upload_data_size);
 
 
 /**
  * Function to call to handle the request by sending
  * back a redirect to the AGPL source code.
  *
- * @param rh context of the handler
- * @param connection the MHD connection to handle
- * @param[in,out] connection_cls the connection's closure (can be updated)
+ * @param hc handler context
  * @param upload_data upload data
  * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
- * @param mi merchant backend instance, never NULL
  * @return MHD result code
  */
 MHD_RESULT
-CH_MHD_handler_agpl_redirect (struct CH_RequestHandler *rh,
-                              struct MHD_Connection *connection,
-                              void **connection_cls,
+CH_MHD_handler_agpl_redirect (struct CH_HandlerContext *hc,
                               const char *upload_data,
                               size_t *upload_data_size);
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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