diff --git a/examples/embedded_cpp/embedded_cpp.cpp b/examples/embedded_cpp/embedded_cpp.cpp index 07e7e4a5..30f7d91a 100644 --- a/examples/embedded_cpp/embedded_cpp.cpp +++ b/examples/embedded_cpp/embedded_cpp.cpp @@ -25,7 +25,7 @@ class ExampleHandler : 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, "
\r\n"); mg_printf(conn, "The request was:
%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; } };