Increased resilience and added some more logging
This commit is contained in:
@@ -6,8 +6,8 @@ key domain.key 8001
|
|||||||
cert domain.crt 8001
|
cert domain.crt 8001
|
||||||
# Port 8001 can have TLS, but it's self signed and very bad.
|
# Port 8001 can have TLS, but it's self signed and very bad.
|
||||||
|
|
||||||
timeout 2000 8000
|
timeout 200000 8000
|
||||||
timeout 2000 8001
|
timeout 200000 8001
|
||||||
# Set these values for the ports
|
# Set these values for the ports
|
||||||
|
|
||||||
set port 8000
|
set port 8000
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ static void createProcess(int id) {
|
|||||||
for (i = 0; i < sizeof(signals) / sizeof(signals[0]); i++)
|
for (i = 0; i < sizeof(signals) / sizeof(signals[0]); i++)
|
||||||
unsetsignal(signals[i]);
|
unsetsignal(signals[i]);
|
||||||
unsetsignal(SIGCHLD);
|
unsetsignal(SIGCHLD);
|
||||||
|
setsignal(SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
connfd = socket(AF_UNIX, SOCK_STREAM, 0);
|
connfd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if (connfd < 0) {
|
if (connfd < 0) {
|
||||||
@@ -125,9 +126,10 @@ static void createProcess(int id) {
|
|||||||
|
|
||||||
static void remakeChild(int signal) {
|
static void remakeChild(int signal) {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int i;
|
int i, status;
|
||||||
pid = wait(NULL);
|
pid = wait(&status);
|
||||||
createLog("A child has died, recreating");
|
createFormatLog("A child has died, recreating: %s",
|
||||||
|
strsignal(WTERMSIG(status)));
|
||||||
for (i = 0; i < processes - 1; i++) {
|
for (i = 0; i < processes - 1; i++) {
|
||||||
if (runners[i].pid == pid) {
|
if (runners[i].pid == pid) {
|
||||||
close(runners[i].fd);
|
close(runners[i].fd);
|
||||||
|
|||||||
@@ -117,8 +117,8 @@ remove:
|
|||||||
int portind;
|
int portind;
|
||||||
newfd = recvFd(connfd);
|
newfd = recvFd(connfd);
|
||||||
if (newfd < 0) {
|
if (newfd < 0) {
|
||||||
createLog("Message received that included an invalid fd");
|
createLog("Message received that included an invalid fd, quitting");
|
||||||
continue;
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
while (conninfo->valid == 0) ;
|
while (conninfo->valid == 0) ;
|
||||||
portind = conninfo->portind;
|
portind = conninfo->portind;
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ char *xstrdup(char *str);
|
|||||||
|
|
||||||
int createLog(char *msg);
|
int createLog(char *msg);
|
||||||
int createErrorLog(char *msg, int err);
|
int createErrorLog(char *msg, int err);
|
||||||
|
int createFormatLog(char *fmt, ...);
|
||||||
int istrcmp(char *s1, char *s2);
|
int istrcmp(char *s1, char *s2);
|
||||||
/* case insensitive strcmp */
|
/* case insensitive strcmp */
|
||||||
RequestType getType(char *str);
|
RequestType getType(char *str);
|
||||||
|
|||||||
17
src/util.c
17
src/util.c
@@ -20,6 +20,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@@ -125,6 +126,22 @@ int createErrorLog(char *msg, int err) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int createFormatLog(char *fmt, ...) {
|
||||||
|
va_list ap;
|
||||||
|
char *log;
|
||||||
|
int code;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
log = malloc(vsnprintf(NULL, 0, fmt, ap) + 1);
|
||||||
|
va_end(ap);
|
||||||
|
if (log == NULL)
|
||||||
|
return 1;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vsprintf(log, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
code = createLog(log);
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
int istrcmp(char *s1, char *s2) {
|
int istrcmp(char *s1, char *s2) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0;; i++) {
|
for (i = 0;; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user