[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 02/08: Added separate internal "responseIcy" flag.
From: |
gnunet |
Subject: |
[libmicrohttpd] 02/08: Added separate internal "responseIcy" flag. |
Date: |
Sun, 13 Mar 2022 18:33:25 +0100 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit b9743114cf6d4584968cfbfd3fdac95c14c1c692
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Thu Mar 10 15:43:25 2022 +0300
Added separate internal "responseIcy" flag.
This simplified the code.
Also fixed some incorrect responseCode processing without ICY mask.
---
src/microhttpd/connection.c | 37 +++++++++++++++++++++----------------
src/microhttpd/internal.h | 6 ++++++
2 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 3a1c3c43..9611e0a7 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -1693,10 +1693,10 @@ is_reply_body_headers_needed (struct MHD_Connection
*connection)
struct MHD_Connection *const c = connection; /**< a short alias */
unsigned rcode; /**< the response code */
- mhd_assert (100 <= (c->responseCode & (~MHD_ICY_FLAG)) && \
- 999 >= (c->responseCode & (~MHD_ICY_FLAG)));
+ mhd_assert (100 <= c->responseCode);
+ mhd_assert (999 >= c->responseCode);
- rcode = (unsigned) (c->responseCode & (~MHD_ICY_FLAG));
+ rcode = (unsigned) c->responseCode;
if (199 >= rcode)
return false;
@@ -1733,8 +1733,8 @@ is_reply_body_needed (struct MHD_Connection *connection)
struct MHD_Connection *const c = connection; /**< a short alias */
unsigned rcode; /**< the response code */
- mhd_assert (100 <= (c->responseCode & (~MHD_ICY_FLAG)) && \
- 999 >= (c->responseCode & (~MHD_ICY_FLAG)));
+ mhd_assert (100 <= c->responseCode);
+ mhd_assert (999 >= c->responseCode);
if (! is_reply_body_headers_needed (c))
return false;
@@ -1742,7 +1742,7 @@ is_reply_body_needed (struct MHD_Connection *connection)
if (MHD_HTTP_MTHD_HEAD == c->http_mthd)
return false;
- rcode = (unsigned) (c->responseCode & (~MHD_ICY_FLAG));
+ rcode = (unsigned) c->responseCode;
if (MHD_HTTP_NOT_MODIFIED == rcode)
return false;
@@ -1831,7 +1831,7 @@ check_connection_reply (struct MHD_Connection *connection)
MHD_DLOG (c->daemon,
_ ("This reply with response code %u cannot use reply body. "
"Non-empty response body is ignored and not used.\n"),
- (unsigned) (c->responseCode & (~MHD_ICY_FLAG)));
+ (unsigned) (c->responseCode));
}
if ( (! c->rp_props.use_reply_body_headers) &&
(0 != (r->flags_auto & MHD_RAF_HAS_CONTENT_LENGTH)) )
@@ -1840,7 +1840,7 @@ check_connection_reply (struct MHD_Connection *connection)
_ ("This reply with response code %u cannot use reply body. "
"Application defined \"Content-Length\" header violates"
"HTTP specification.\n"),
- (unsigned) (c->responseCode & (~MHD_ICY_FLAG)));
+ (unsigned) (c->responseCode));
}
#else
(void) c; /* Mute compiler warning */
@@ -2049,7 +2049,7 @@ build_header_response (struct MHD_Connection *connection)
check_connection_reply (c);
- rcode = (unsigned) (c->responseCode & (~MHD_ICY_FLAG));
+ rcode = (unsigned) c->responseCode;
if (MHD_CONN_MUST_CLOSE == c->keepalive)
{
/* The closure of connection must be always indicated by header
@@ -2091,7 +2091,7 @@ build_header_response (struct MHD_Connection *connection)
/* * The status line * */
/* The HTTP version */
- if (0 == (c->responseCode & MHD_ICY_FLAG))
+ if (! c->responseIcy)
{ /* HTTP reply */
if (0 == (r->flags & MHD_RF_HTTP_1_0_SERVER))
{ /* HTTP/1.1 reply */
@@ -4412,6 +4412,7 @@ connection_reset (struct MHD_Connection *connection,
c->current_chunk_size = 0;
c->current_chunk_offset = 0;
c->responseCode = 0;
+ c->responseIcy = false;
c->response_write_position = 0;
c->method = NULL;
c->http_mthd = MHD_HTTP_MTHD_NO_METHOD;
@@ -5140,7 +5141,10 @@ MHD_queue_response (struct MHD_Connection *connection,
struct MHD_Response *response)
{
struct MHD_Daemon *daemon;
+ bool reply_icy;
+ reply_icy = (0 != (status_code & MHD_ICY_FLAG));
+ status_code &= ~MHD_ICY_FLAG;
if ((NULL == connection) || (NULL == response))
return MHD_NO;
@@ -5225,18 +5229,18 @@ MHD_queue_response (struct MHD_Connection *connection,
}
}
#endif /* UPGRADE_SUPPORT */
- if ( (100 > (status_code & (~MHD_ICY_FLAG))) ||
- (999 < (status_code & (~MHD_ICY_FLAG))) )
+ if ( (100 > status_code) ||
+ (999 < status_code) )
{
#ifdef HAVE_MESSAGES
MHD_DLOG (daemon,
_ ("Refused wrong status code (%u). " \
"HTTP requires three digits status code!\n"),
- (status_code & (~MHD_ICY_FLAG)));
+ status_code);
#endif
return MHD_NO;
}
- if (200 > (status_code & (~MHD_ICY_FLAG)))
+ if (200 > status_code)
{
if (MHD_HTTP_VER_1_0 == connection->http_ver)
{
@@ -5244,7 +5248,7 @@ MHD_queue_response (struct MHD_Connection *connection,
MHD_DLOG (daemon,
_ ("Wrong status code (%u) refused. " \
"HTTP/1.0 clients do not support 1xx status codes!\n"),
- (status_code & (~MHD_ICY_FLAG)));
+ (status_code));
#endif
return MHD_NO;
}
@@ -5255,7 +5259,7 @@ MHD_queue_response (struct MHD_Connection *connection,
MHD_DLOG (daemon,
_ ("Wrong status code (%u) refused. " \
"HTTP/1.0 reply mode does not support 1xx status codes!\n"),
- (status_code & (~MHD_ICY_FLAG)));
+ (status_code));
#endif
return MHD_NO;
}
@@ -5264,6 +5268,7 @@ MHD_queue_response (struct MHD_Connection *connection,
MHD_increment_response_rc (response);
connection->response = response;
connection->responseCode = status_code;
+ connection->responseIcy = reply_icy;
#if defined(_MHD_HAVE_SENDFILE)
if ( (response->fd == -1) ||
(response->is_pipe) ||
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index 2cfe6455..20a406e3 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -1233,6 +1233,12 @@ struct MHD_Connection
*/
unsigned int responseCode;
+ /**
+ * The "ICY" response.
+ * Reply begins with the SHOUTcast "ICY" line instead of "HTTP".
+ */
+ bool responseIcy;
+
/**
* Reply-specific properties
*/
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [libmicrohttpd] branch master updated (1a46bfd6 -> f2565a62), gnunet, 2022/03/13
- [libmicrohttpd] 04/08: Disallowed successful responses for CONNECT requests, gnunet, 2022/03/13
- [libmicrohttpd] 03/08: Added warning in log if application-defined Content-Length is used, gnunet, 2022/03/13
- [libmicrohttpd] 02/08: Added separate internal "responseIcy" flag.,
gnunet <=
- [libmicrohttpd] 01/08: upgrade response: set response size to zero, gnunet, 2022/03/13
- [libmicrohttpd] 06/08: MHD_queue_response(): refuse 101 code when not supported, gnunet, 2022/03/13
- [libmicrohttpd] 05/08: MHD_queue_response(): clarified log message, gnunet, 2022/03/13
- [libmicrohttpd] 07/08: Simplified function for determining needs for reply body and headers, gnunet, 2022/03/13
- [libmicrohttpd] 08/08: MHD_set_response_options(): check whether the new flags could be used, gnunet, 2022/03/13