X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fmain.c;h=70358e61ad88ebb71215f4f3041760e546044515;hb=0cd54c5f6e11a98a0f0a5e44fd88e4e7826fa12d;hp=cce178a1ffe458d90de0efd9fcb64aabc4ce580a;hpb=e5078110436f4461a1f70c364bab84e8b82b155d;p=umurmur.git diff --git a/src/main.c b/src/main.c index cce178a..70358e6 100644 --- a/src/main.c +++ b/src/main.c @@ -37,9 +37,12 @@ #include #include #include -#include #include - +#include +#include +#ifdef _POSIX_PRIORITY_SCHEDULING +#include +#endif #include "server.h" #include "ssl.h" #include "channel.h" @@ -49,6 +52,8 @@ #include "version.h" char system_string[64], version_string[64]; +int bindport; +char *bindaddr; void lockfile(const char *pidfile) { @@ -59,7 +64,7 @@ void lockfile(const char *pidfile) if (lfp < 0) Log_fatal("Cannot open PID-file %s for writing", pidfile); - sprintf(str,"%d\n", getpid()); + snprintf(str,16,"%d\n", getpid()); write(lfp, str, strlen(str)); /* record pid to lockfile */ Log_info("PID-file: %s", pidfile); } @@ -107,6 +112,7 @@ void daemonize() } +#ifdef _POSIX_PRIORITY_SCHEDULING void setscheduler() { int rc; @@ -118,15 +124,20 @@ void setscheduler() if (rc < 0) Log_warn("Failed to set scheduler: %s", strerror(errno)); } +#endif void printhelp() { printf("uMurmur version %s. Mumble protocol %d.%d.%d\n", UMURMUR_VERSION, PROTVER_MAJOR, PROTVER_MINOR, PROTVER_PATCH); printf("Usage: umurmurd [-d] [-p ] [-c ] [-h]\n"); - printf(" -d - Do not deamonize\n"); + printf(" -d - Do not daemonize\n"); printf(" -p - Write PID to this file\n"); printf(" -c - Specify configuration file\n"); +#ifdef _POSIX_PRIORITY_SCHEDULING printf(" -r - Run with realtime priority\n"); +#endif + printf(" -a
- Bind to IP address\n"); + printf(" -b - Bind to port\n"); printf(" -h - Print this help\n"); exit(0); } @@ -134,13 +145,19 @@ void printhelp() int main(int argc, char **argv) { bool_t nodaemon = false; +#ifdef _POSIX_PRIORITY_SCHEDULING bool_t realtime = false; +#endif char *conffile = NULL, *pidfile = NULL; int c; struct utsname utsbuf; /* Arguments */ - while ((c = getopt(argc, argv, "drp:c:h")) != EOF) { +#ifdef _POSIX_PRIORITY_SCHEDULING + while ((c = getopt(argc, argv, "drp:c:a:b:h")) != EOF) { +#else + while ((c = getopt(argc, argv, "dp:c:a:b:h")) != EOF) { +#endif switch(c) { case 'c': conffile = optarg; @@ -148,15 +165,23 @@ int main(int argc, char **argv) case 'p': pidfile = optarg; break; + case 'a': + bindaddr = optarg; + break; + case 'b': + bindport = atoi(optarg); + break; case 'd': nodaemon = true; break; case 'h': printhelp(); break; +#ifdef _POSIX_PRIORITY_SCHEDULING case 'r': realtime = true; break; +#endif default: fprintf(stderr, "Unrecognized option\n"); printhelp(); @@ -182,6 +207,7 @@ int main(int argc, char **argv) signal(SIGTSTP, SIG_IGN); /* ignore tty signals */ signal(SIGTTOU, SIG_IGN); signal(SIGTTIN, SIG_IGN); + signal(SIGPIPE, SIG_IGN); signal(SIGHUP, signal_handler); /* catch hangup signal */ signal(SIGTERM, signal_handler); /* catch kill signal */ @@ -196,16 +222,18 @@ int main(int argc, char **argv) } /* Initializing */ - SSL_init(); + SSLi_init(); Chan_init(); Client_init(); +#ifdef _POSIX_PRIORITY_SCHEDULING if (realtime) setscheduler(); +#endif Server_run(); - SSL_deinit(); + SSLi_deinit(); Chan_free(); Log_free(); Conf_deinit();