From d673627c79cf9863382a03b4500a4cd3aeb2358d Mon Sep 17 00:00:00 2001 From: "roberto@freebsd64" Date: Sun, 26 Jun 2011 11:35:18 +0200 Subject: [PATCH] FreeBSD fix and applied riccardo's patch --- spooler.c | 8 ++++++++ utils.c | 10 +++++----- uwsgi.h | 3 ++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/spooler.c b/spooler.c index 8809d5e2..c5cd7eda 100644 --- a/spooler.c +++ b/spooler.c @@ -4,7 +4,9 @@ extern struct uwsgi_server uwsgi; static void spooler_readdir(char *); +#ifdef __linux__ static void spooler_scandir(char *); +#endif void spooler_manage_task(char *, char *); pid_t spooler_start() { @@ -163,7 +165,9 @@ void spooler() { } if (uwsgi.spooler_ordered) { +#ifdef __linux__ spooler_scandir(uwsgi.spool_dir); +#endif } else { spooler_readdir(uwsgi.spool_dir); @@ -174,6 +178,7 @@ void spooler() { } } +#ifdef __linux__ static void spooler_scandir(char *dir) { struct dirent **tasklist; @@ -192,6 +197,7 @@ static void spooler_scandir(char *dir) { free(tasklist); } +#endif static void spooler_readdir(char *dir) { @@ -226,6 +232,7 @@ void spooler_manage_task(char *dir, char *task) { return; } +#ifdef __linux__ if (S_ISDIR(sf_lstat.st_mode) && uwsgi.spooler_ordered) { if (chdir(task)) { uwsgi_error("chdir()"); @@ -237,6 +244,7 @@ void spooler_manage_task(char *dir, char *task) { chdir(dir); return; } +#endif if (!S_ISREG(sf_lstat.st_mode)) { return; } diff --git a/utils.c b/utils.c index 8c8e28ac..8f9d03df 100644 --- a/utils.c +++ b/utils.c @@ -2401,16 +2401,16 @@ int *uwsgi_attach_fd(int fd, int count, char *code, size_t code_len) { return NULL; } + if ((size_t) (cmsg->cmsg_len - ((char *)CMSG_DATA(cmsg)- (char *)cmsg)) > (size_t) (sizeof(int) * (count + 1))) { + uwsgi_log("not enough space for sockets data, consider increasing it\n"); + return NULL; + } + ret = uwsgi_malloc(sizeof(int) * (count + 1)); for(i=0;icmsg_len - ((char *)CMSG_DATA(cmsg)- (char *)cmsg)) > (size_t) (sizeof(int) * (count + 1))) { - uwsgi_log("not enough space for sockets data, consider increasing it\n"); - return NULL; - } - memcpy(ret, CMSG_DATA(cmsg), cmsg->cmsg_len - ((char *)CMSG_DATA(cmsg)- (char *)cmsg)); free(msg_control); diff --git a/uwsgi.h b/uwsgi.h index e95debba..45e7e7be 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -116,7 +116,6 @@ #define __USE_GNU #endif -#include #include #include #include @@ -131,6 +130,8 @@ extern int pivot_root(const char * new_root, const char * put_old); #include #endif +#include + #ifdef UWSGI_SCTP #include #endif