doc: Documented htpipe.
[ashd.git] / src / psendfile.c
index 52ec9dc..464440a 100644 (file)
@@ -25,6 +25,7 @@
 #include <sys/stat.h>
 #include <stdint.h>
 #include <time.h>
+#include <signal.h>
 #include <magic.h>
 #include <locale.h>
 #include <langinfo.h>
@@ -227,7 +228,7 @@ static void serve(struct muth *muth, va_list args)
     
     sfile = NULL;
     contype = NULL;
-    out = mtstdopen(fd, 1, 60, "r+");
+    out = mtstdopen(fd, 1, 60, "r+", NULL);
     
     if((file = getheader(req, "X-Ash-File")) == NULL) {
        flog(LOG_ERR, "psendfile: needs to be called with the X-Ash-File header");
@@ -238,7 +239,7 @@ static void serve(struct muth *muth, va_list args)
        simpleerror2(out, 404, "Not Found", "The requested URL has no corresponding resource.");
        goto out;
     }
-    if(((sfile = fopen(file, "r")) < 0) || fstat(fileno(sfile), &sb)) {
+    if(((sfile = fopen(file, "r")) == NULL) || fstat(fileno(sfile), &sb)) {
        flog(LOG_ERR, "psendfile: could not stat input file %s: %s", file, strerror(errno));
        simpleerror2(out, 500, "Internal Error", "The server could not access its own data.");
        goto out;
@@ -268,7 +269,8 @@ static void serve(struct muth *muth, va_list args)
 out:
     if(sfile != NULL)
        fclose(sfile);
-    free(contype);
+    if(contype != NULL)
+       free(contype);
     fclose(out);
     freehthead(req);
 }