From 64e6264676df26b3bd0fd3da6df2e130828b67d1 Mon Sep 17 00:00:00 2001
From: bel The request was:This is an example text from a C++ handler
\r\n");
@@ -51,7 +51,7 @@ class ExitHandler : public CivetHandler
bool
handleGet(CivetServer *server, struct mg_connection *conn)
{
- mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n");
+ mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n");
mg_printf(conn, "Bye!\n");
exitNow = true;
return true;
@@ -67,7 +67,7 @@ class AHandler : public CivetHandler
struct mg_connection *conn)
{
std::string s = "";
- mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n");
+ mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n");
mg_printf(conn, "");
mg_printf(conn, "This is the A handler for \"%s\" !
", method);
if (CivetServer::getParam(conn, "param", s)) {
@@ -98,7 +98,7 @@ class ABHandler : public CivetHandler
bool
handleGet(CivetServer *server, struct mg_connection *conn)
{
- mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n");
+ mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n");
mg_printf(conn, "");
mg_printf(conn, "This is the AB handler!!!
");
mg_printf(conn, "\n");
@@ -115,15 +115,91 @@ class FooHandler : public CivetHandler
/* Handler may access the request info using mg_get_request_info */
const struct mg_request_info *req_info = mg_get_request_info(conn);
- mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n");
- mg_printf(conn, "");
- mg_printf(conn, "This is the Foo handler!!!
");
+ mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n");
+
+ mg_printf(conn, "\n");
+ mg_printf(conn, "This is the Foo GET handler!!!
\n");
mg_printf(conn,
- "%s %s HTTP/%s
The request was:
%s %s HTTP/%s\n", + req_info->request_method, + req_info->uri, + req_info->http_version); + mg_printf(conn, "\n"); + + return true; + } + bool + handlePost(CivetServer *server, struct mg_connection *conn) + { + /* Handler may access the request info using mg_get_request_info */ + const struct mg_request_info *req_info = mg_get_request_info(conn); + size_t rlen, wlen; + size_t nlen = 0; + size_t tlen = (size_t)req_info->content_length; + char buf[1024]; + + mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n"); + + mg_printf(conn, "\n"); + mg_printf(conn, "
The request was:
%s %s HTTP/%s\n", req_info->request_method, req_info->uri, req_info->http_version); + mg_printf(conn, "
Content Length: %li
\n", (long)tlen); + mg_printf(conn, "\n"); + + while (nlen < tlen) { + rlen = tlen - nlen; + if (rlen>sizeof(buf)) {rlen=sizeof(buf);} + rlen = mg_read(conn, buf, rlen); + if (rlen<=0) break; + wlen = mg_write(conn, buf, rlen); + if (rlen!=rlen) break; + nlen += wlen; + } + + mg_printf(conn, "\n\n"); mg_printf(conn, "\n"); + + return true; + } + bool + handlePut(CivetServer *server, struct mg_connection *conn) + { + /* Handler may access the request info using mg_get_request_info */ + const struct mg_request_info *req_info = mg_get_request_info(conn); + size_t rlen, wlen; + size_t nlen = 0; + size_t tlen = (size_t)req_info->content_length; + char buf[1024]; + + mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n"); + + mg_printf(conn, "\n"); + mg_printf(conn, "
The request was:
%s %s HTTP/%s\n", + req_info->request_method, + req_info->uri, + req_info->http_version); + mg_printf(conn, "
Content Length: %li
\n", (long)tlen); + mg_printf(conn, "\n"); + + while (nlen < tlen) { + rlen = tlen - nlen; + if (rlen>sizeof(buf)) {rlen=sizeof(buf);} + rlen = mg_read(conn, buf, rlen); + if (rlen<=0) break; + wlen = mg_write(conn, buf, rlen); + if (rlen!=rlen) break; + nlen += wlen; + } + + mg_printf(conn, "\n\n"); + mg_printf(conn, "\n"); + return true; } };