gnunet-svn
[Top][All Lists]
Advanced

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

[libmicrohttpd] branch master updated: -add support for ICECAST-style up


From: gnunet
Subject: [libmicrohttpd] branch master updated: -add support for ICECAST-style uploads
Date: Mon, 25 Sep 2023 20:35:34 +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 19e1ed83 -add support for ICECAST-style uploads
19e1ed83 is described below

commit 19e1ed8355744dc2e0c6755e91de43ee335dea31
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Sep 25 20:32:41 2023 +0200

    -add support for ICECAST-style uploads
---
 src/include/microhttpd.h    | 11 ++++++++++-
 src/microhttpd/connection.c | 21 ++++++++++++++++++---
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h
index c850d849..d68fb7c1 100644
--- a/src/include/microhttpd.h
+++ b/src/include/microhttpd.h
@@ -1503,7 +1503,16 @@ enum MHD_FLAG
    * Flag set to enable TLS 1.3 early data.  This has
    * security implications, be VERY careful when using this.
    */
-  MHD_USE_INSECURE_TLS_EARLY_DATA = 1U << 18
+  MHD_USE_INSECURE_TLS_EARLY_DATA = 1U << 18,
+
+  /**
+   * Flag set to allow uploads from clients even if the client supplied no
+   * transfer encoding and no Content-length header.  The upload is expected
+   * to be concluded when the client closes the connection.
+   * This is in violation of RFC 7230 but useful for
+   * Icecast. Use at your own risk.
+   */
+  MHD_USE_ICECAST_CLIENT_UPLOADS = 1U << 19
 
 };
 
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 4d66f497..2f0efea5 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -348,7 +348,7 @@
 #define REQUEST_LACKS_HOST \
   "<html>" \
   "<head><title>&quot;Host:&quot; header required</title></head>" \
-  "<body>HTTP/1.1 request without <b>&quot;Host:&quot;</b>.</body>"\
+  "<body>HTTP/1.1 request without <b>&quot;Host:&quot;</b>.</body>" \
   "</html>"
 
 #else
@@ -457,7 +457,7 @@
 #define ERROR_MSG_DATA_NOT_HANDLED_BY_APP \
   "<html><head><title>Internal server error</title></head>" \
   "<body>Please ask the developer of this Web server to carefully " \
-  "read the GNU libmicrohttpd documentation about connection "\
+  "read the GNU libmicrohttpd documentation about connection " \
   "management and blocking.</body></html>"
 #else
 #define ERROR_MSG_DATA_NOT_HANDLED_BY_APP ""
@@ -4048,7 +4048,22 @@ parse_connection_headers (struct MHD_Connection 
*connection)
     return;
   }
 
-  connection->rq.remaining_upload_size = 0;
+  if ( ((0 == (MHD_USE_ICECAST_CLIENT_UPLOADS & connection->daemon->options)) 
||
+        (! MHD_lookup_header_s_token_ci (connection,
+                                         MHD_HTTP_HEADER_CONNECTION,
+                                         "close")) ) )
+  {
+    /* Normal case: either no upload allowed, or client has to provide
+       headers as per below */
+    connection->rq.remaining_upload_size = 0;
+  }
+  else
+  {
+    /* Special Icecast case: client says nothing, but still uploads until
+       connection close. Only allowed with ICECAST option *and* if the
+       client at least announced that it will close the connection. */
+    connection->rq.remaining_upload_size = MHD_SIZE_UNKNOWN;
+  }
   if (MHD_NO !=
       MHD_lookup_connection_value_n (connection,
                                      MHD_HEADER_KIND,

-- 
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]