libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit a90ce65429da20ab34b10623a3c05d3431b3147f
parent 2ff4a9d580afb3cb03a189e18755b6a4938cc697
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 13 Jun 2010 09:04:38 +0000

better

Diffstat:
MChangeLog | 3+++
Msrc/examples/fileserver_example_dirs.c | 12++++++++++--
2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,6 @@ +Sun Jun 13 10:52:34 CEST 2010 + Cleaned up example code. -CG + Fri Apr 23 09:56:37 CEST 2010 Do not return HTTP headers for requests without version numbers. Do return HTTP version 1.0 if client requested diff --git a/src/examples/fileserver_example_dirs.c b/src/examples/fileserver_example_dirs.c @@ -101,7 +101,11 @@ ahc_echo (void *cls, return MHD_YES; } *ptr = NULL; /* reset when done */ - file = fopen (&url[1], "rb"); + if ( (0 == stat (&url[1], &buf)) && + (S_ISREG (buf.st_mode)) ) + file = fopen (&url[1], "rb"); + else + file = NULL; if (file == NULL) { dir = opendir ("."); @@ -140,11 +144,15 @@ ahc_echo (void *cls, } else { - stat (&url[1], &buf); response = MHD_create_response_from_callback (buf.st_size, 32 * 1024, /* 32k page size */ &file_reader, file, &file_free_callback); + if (response == NULL) + { + fclose (file); + return MHD_NO; + } ret = MHD_queue_response (connection, MHD_HTTP_OK, response); MHD_destroy_response (response); }