Christian Grothoff 15 yıl önce
ebeveyn
işleme
a90ce65429
2 değiştirilmiş dosya ile 13 ekleme ve 2 silme
  1. 3 0
      ChangeLog
  2. 10 2
      src/examples/fileserver_example_dirs.c

+ 3 - 0
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

+ 10 - 2
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);
     }