commit ec8aedc77bbaa293dc76d2aba98fc8ce1243cf68
parent a3a09cb33abca62ec05bd38ae8c84449fd6e6dca
Author: Christian Grothoff <christian@grothoff.org>
Date: Sat, 12 Apr 2008 21:16:28 +0000
msgs
Diffstat:
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,15 @@
+Sat Apr 12 15:14:05 MDT 2008
+ Restructured the code (curl-testcases and zzuf testcases
+ are now in different directories; code examples are in
+ src/examples/).
+ Fixed a problem (introduced in 0.2.3) with handling very
+ large requests (the code did not return proper error code).
+ If "--enable-messages" is specified, the code now includes
+ reasonable default HTML webpages for various build-in
+ errors (such as request too large and malformed requests).
+ Without that flag, the webpages returned will still be
+ empty.
+
Fri Apr 11 20:20:34 MDT 2008
I hereby dub libmicrohttpd a GNU package. -Richard Stallman
diff --git a/src/daemon/connection.c b/src/daemon/connection.c
@@ -50,7 +50,11 @@
* Intentionally empty here to keep our memory footprint
* minimal.
*/
+#if HAVE_MESSAGES
+#define REQUEST_TOO_BIG "<html><head><title>Request too big</title></head><body>Your HTTP header was too big for the memory constraints of this webserver.</body></html>"
+#else
#define REQUEST_TOO_BIG ""
+#endif
/**
* Response text used when the request (http header) does not
@@ -59,7 +63,11 @@
* Intentionally empty here to keep our memory footprint
* minimal.
*/
+#if HAVE_MESSAGES
+#define REQUEST_LACKS_HOST "<html><head><title>"Host:" header required</title></head><body>In HTTP 1.1, requests must include a "Host:" header, and your HTTP 1.1 request lacked such a header.</body></html>"
+#else
#define REQUEST_LACKS_HOST ""
+#endif
/**
* Response text used when the request (http header) is
@@ -68,7 +76,11 @@
* Intentionally empty here to keep our memory footprint
* minimal.
*/
+#if HAVE_MESSAGES
+#define REQUEST_MALFORMED "<html><head><title>Request malformed</title></head><body>Your HTTP request was syntactically incorrect.</body></html>"
+#else
#define REQUEST_MALFORMED ""
+#endif
#define EXTRA_CHECKS MHD_YES
@@ -1627,6 +1639,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
line = get_next_header_line (connection);
if (line == NULL)
{
+ if (connection->state != MHD_CONNECTION_INIT)
+ continue;
if (connection->read_closed)
{
connection->state = MHD_CONNECTION_CLOSED;
@@ -1643,6 +1657,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
line = get_next_header_line (connection);
if (line == NULL)
{
+ if (connection->state != MHD_CONNECTION_URL_RECEIVED)
+ continue;
if (connection->read_closed)
{
connection->state = MHD_CONNECTION_CLOSED;
@@ -1668,6 +1684,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
line = get_next_header_line (connection);
if (line == NULL)
{
+ if (connection->state != MHD_CONNECTION_HEADER_PART_RECEIVED)
+ continue;
if (connection->read_closed)
{
connection->state = MHD_CONNECTION_CLOSED;
@@ -1734,6 +1752,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
line = get_next_header_line (connection);
if (line == NULL)
{
+ if (connection->state != MHD_CONNECTION_BODY_RECEIVED)
+ continue;
if (connection->read_closed)
{
connection->state = MHD_CONNECTION_CLOSED;
@@ -1759,6 +1779,8 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
line = get_next_header_line (connection);
if (line == NULL)
{
+ if (connection->state != MHD_CONNECTION_FOOTER_PART_RECEIVED)
+ continue;
if (connection->read_closed)
{
connection->state = MHD_CONNECTION_CLOSED;
diff --git a/src/testcurl/daemontest_long_header.c b/src/testcurl/daemontest_long_header.c
@@ -99,7 +99,7 @@ testLongUrlGet ()
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
- d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */ ,
+ d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */,
1080,
&apc_all,
NULL,
@@ -219,7 +219,7 @@ testLongHeaderGet ()
MHD_stop_daemon (d);
free (url);
if (code != MHD_HTTP_REQUEST_ENTITY_TOO_LARGE)
- return 128;
+ return 128;
return 0;
}