diff --git a/src/HttpServer.c b/src/HttpServer.c index e0f3f10..b1ee986 100644 --- a/src/HttpServer.c +++ b/src/HttpServer.c @@ -41,6 +41,7 @@ #include #include #include +#include struct HttpServer { @@ -310,13 +311,18 @@ HttpServerCreate(unsigned short port, unsigned int nThreads, unsigned int maxCon goto error; } - server->sd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0); + server->sd = socket(AF_INET, SOCK_STREAM, 0); if (server->sd < 0) { goto error; } + if (fcntl(server->sd, F_SETFL, O_NONBLOCK) == -1) + { + goto error; + } + sa.sin_family = AF_INET; sa.sin_port = htons(port); sa.sin_addr.s_addr = htonl(INADDR_ANY); diff --git a/src/Log.c b/src/Log.c index 07cc785..33b7600 100644 --- a/src/Log.c +++ b/src/Log.c @@ -23,6 +23,7 @@ */ #include +#include #include #include diff --git a/src/include/NonPosix.h b/src/include/NonPosix.h index 181d789..3949b80 100644 --- a/src/include/NonPosix.h +++ b/src/include/NonPosix.h @@ -30,6 +30,8 @@ #ifndef TELODENDRIA_NONPOSIX_H #define TELODENDRIA_NONPOSIX_H +#include + /* * Pretty much all Unix-like systems have a chroot() function. In fact, * chroot() used to be POSIX, so any operating system claiming to be @@ -40,6 +42,12 @@ */ extern int chroot(const char *); +/* + * Pretty much every syslog interface has a vsyslog(). Unfortuntately, + * it is not POSIX. + */ +extern void vsyslog(int, const char *, va_list); + /* * Telodendria is primarily developed on OpenBSD; as such, you can * expect that it will use some OpenBSD-specific features if OpenBSD @@ -53,16 +61,6 @@ extern int chroot(const char *); #ifdef __OpenBSD__ extern int pledge(const char *, const char *); extern int unveil(const char *, const char *); - -/* - * OpenBSD requires that _BSD_SOURCE be set to use SOCK_NONBLOCK for - * some reason, even though from everything I can tell, SOCK_NONBLOCK - * is POSIX. - */ -#ifndef _BSD_SOURCE -#define _BSD_SOURCE -#endif - #endif #endif