[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>"Host:" header required</title></head>" \
- "<body>HTTP/1.1 request without <b>"Host:"</b>.</body>"\
+ "<body>HTTP/1.1 request without <b>"Host:"</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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libmicrohttpd] branch master updated: -add support for ICECAST-style uploads,
gnunet <=