#include <unistd.h>
#include <errno.h>
#include <string.h>
+#include <sys/socket.h>
#include <ashd/req.h>
#include <ashd/resp.h>
#include <ashd/log.h>
}
}
+static void sigterm(int sig)
+{
+ shutdown(0, SHUT_RDWR);
+}
+
+static void closeall(void)
+{
+ struct source *src;
+
+ for(src = sources; src != NULL; src = src->next) {
+ if(src->close)
+ src->close(src);
+ }
+}
+
int main(int argc, char **argv)
{
int c;
}
last = NULL;
while(optind < argc) {
- src = parsesource(argv[optind++]);
+ if((src = parsesource(argv[optind++])) == NULL) {
+ closeall();
+ return(1);
+ }
if(!sources)
sources = src;
if(last)
}
if(!sources) {
usage(stderr);
+ closeall();
return(1);
}
mustart(listenloop, 0);
+ signal(SIGINT, sigterm);
+ signal(SIGTERM, sigterm);
ioloop();
+ closeall();
return(0);
}