From 668388e6604f65009809f31f97e08315c380dc41 Mon Sep 17 00:00:00 2001 From: Trumeet Date: Thu, 18 Nov 2021 16:54:46 -0800 Subject: fix: no Content-Length sent --- main.c | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/main.c b/main.c index 3790332..335e889 100644 --- a/main.c +++ b/main.c @@ -5,22 +5,30 @@ #include static void print_error(const char *error, ...) { - printf("Status: 500 Internal Server Error\r\n" - "Content-Type: text/html\r\n" - "\r\n" - "" - "" - "" - "Error" - "" - "" - "

The server encountered the following error(s) rendering your document:
"); + char fmt[512]; + char buffer[128]; va_list args; va_start(args, error); - vprintf(error, args); + vsprintf(buffer, error, args); va_end(args); - printf("

" - ""); + sprintf(fmt, "" + "" + "" + "Error" + "" + "" + "

The server encountered the following error(s) rendering your document:
" + "%s" + "

" + "", + buffer); + printf("Status: 500 Internal Server Error\r\n" + "Content-Type: text/html\r\n" + "Content-Length: %d\r\n" + "\r\n" + "%s", + strlen(fmt) * sizeof(char), + fmt); } int main() { @@ -49,7 +57,10 @@ int main() { if (file == NULL) { int r = errno; if (r == ENOENT) { - printf("Status: 404 Not Found\r\nContent-Type: text/plain\r\n\r\n"); + printf("Status: 404 Not Found\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: 0\r\n" + "\r\n"); free(uri); goto end; } @@ -69,9 +80,13 @@ int main() { } cmark_node *document = cmark_parser_finish(parser); cmark_parser_free(parser); - char *html = cmark_render_html(document, CMARK_OPT_DEFAULT); //cmark_markdown_to_html(buffer, strlen(buffer), 0); + char *html = cmark_render_html(document, CMARK_OPT_DEFAULT); cmark_node_free(document); - printf("Content-Type: text/html\r\n\r\n%s", html); + printf("Content-Type: text/html\r\n" + "Content-Length: %d\r\n" + "\r\n%s", + strlen(html) * sizeof(char), + html); free(html); fclose(file); goto end; -- cgit v1.2.3