From 0b23a93cb22c5e1af1a3bfbf76aeae974bacfeaf Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 13 Jun 2010 09:05:57 +0000 Subject: [PATCH] better --- src/examples/https_fileserver_example.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/examples/https_fileserver_example.c b/src/examples/https_fileserver_example.c index c07e274a..6fb1d9d8 100644 --- a/src/examples/https_fileserver_example.c +++ b/src/examples/https_fileserver_example.c @@ -131,7 +131,11 @@ http_ahc (void *cls, } *ptr = NULL; /* reset when done */ - file = fopen (&url[1], "rb"); + if ( (0 == stat (url, &buf)) && + (S_ISREG (buf.st_mode)) ) + file = fopen (&url[1], "rb"); + else + file = NULL; if (file == NULL) { response = MHD_create_response_from_data (strlen (EMPTY_PAGE), @@ -142,11 +146,15 @@ http_ahc (void *cls, } else { - stat (url, &buf); response = MHD_create_response_from_callback (buf.st_size, 32 * 1024, /* 32k PAGE_NOT_FOUND size */ &file_reader, file, (MHD_ContentReaderFreeCallback) & fclose); + if (response == NULL) + { + fclose (file); + return MHD_NO; + } ret = MHD_queue_response (connection, MHD_HTTP_OK, response); MHD_destroy_response (response); }