X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Finspircd_io.cpp;h=fcbb83aaeb18a57cbc495f68cfda81a436b5f471;hb=d5fed3976bba0f1082522da9b79b6b1cc93d4c56;hp=00842b697d0d6f098857f18d7d9c7b39bd6b07d1;hpb=f4046a61e7fb5e017a19a0308bfa42fa5abe68d5;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp index 00842b697..fcbb83aae 100644 --- a/src/inspircd_io.cpp +++ b/src/inspircd_io.cpp @@ -26,6 +26,7 @@ #include "inspircd_io.h" #include "inspircd_util.h" #include "inspstring.h" +#include "helperfuncs.h" using namespace std; @@ -42,13 +43,6 @@ void Exit (int status) if (log_file) fclose(log_file); send_error("Server shutdown."); - - // close down all listening sockets - for (int count = 0; count < boundPortCount; count++) - { - shutdown(openSockfd[count], 2); - } - exit (status); } @@ -57,11 +51,6 @@ void Killed(int status) if (log_file) fclose(log_file); send_error("Server terminated."); - // close down all listening sockets - for (int count = 0; count < boundPortCount; count++) - { - shutdown(openSockfd[count], 2); - } exit(status); } @@ -75,12 +64,12 @@ void Rehash(int status) void Start (void) { - printf("\033[1mInspire Internet Relay Chat Server, compiled " __DATE__ " at " __TIME__ "\n"); - printf("(C) ChatSpike Development team.\033[0;37m\n\n"); - printf("Developers:\033[1m Brain, FrostyCoolSlug\n"); - printf("Documentation:\033[1m FrostyCoolSlug, w00t\n"); - printf("Testers:\033[1m typobox43, piggles, Lord_Zathras, CC\n"); - printf("Name concept:\033[1m Lord_Zathras\n\n"); + printf("\033[1;32mInspire Internet Relay Chat Server, compiled %s at %s\n",__DATE__,__TIME__); + printf("(C) ChatSpike Development team.\033[0m\n\n"); + printf("Developers:\033[1;32m Brain, FrostyCoolSlug\033[0m\n"); + printf("Documentation:\033[1;32m FrostyCoolSlug, w00t\033[0m\n"); + printf("Testers:\033[1;32m typobox43, piggles, Lord_Zathras, CC\033[0m\n"); + printf("Name concept:\033[1;32m Lord_Zathras\033[0m\n\n"); } void WritePID(std::string filename) @@ -99,33 +88,26 @@ void WritePID(std::string filename) } } -void DeadPipe(int status) -{ - signal (SIGPIPE, DeadPipe); -} int DaemonSeed (void) { int childpid; signal (SIGALRM, SIG_IGN); signal (SIGHUP, Rehash); - signal (SIGPIPE, DeadPipe); + signal (SIGPIPE, SIG_IGN); signal (SIGTERM, Exit); - signal (SIGABRT, Exit); signal (SIGSEGV, Error); - signal (SIGURG, Exit); - signal (SIGKILL, Exit); if ((childpid = fork ()) < 0) return (ERROR); else if (childpid > 0) exit (0); setsid (); umask (007); - /* close stdin, stdout, stderr */ + printf("InspIRCd Process ID: \033[1;32m%lu\033[0m\n",(unsigned long)getpid()); freopen("/dev/null","w",stdout); freopen("/dev/null","w",stderr); - setpriority(PRIO_PROCESS,(int)getpid(),15); /* ircd sets to low process priority so it doesnt hog the box */ + setpriority(PRIO_PROCESS,(int)getpid(),15); if (unlimitcore) { @@ -351,8 +333,7 @@ int EnumConf(std::stringstream *config, const char* tag) { int ptr = 0; char buffer[MAXBUF], c_tag[MAXBUF], c, lastc; - int in_token, in_quotes, tptr, j, idx = 0; - char* key; + int in_token, in_quotes, tptr, idx = 0; const char* buf = config->str().c_str(); long bptr = 0; @@ -422,8 +403,7 @@ int EnumValues(std::stringstream *config, const char* tag, int index) { int ptr = 0; char buffer[MAXBUF], c_tag[MAXBUF], c, lastc; - int in_token, in_quotes, tptr, j, idx = 0; - char* key; + int in_token, in_quotes, tptr, idx = 0; bool correct_tag = false; int num_items = 0; @@ -526,7 +506,7 @@ int ReadConf(std::stringstream *config, const char* tag, const char* var, int in const char* buf = config->str().c_str(); long bptr = 0; - long len = strlen(buf); + long len = config->str().length(); ptr = 0; in_token = 0; @@ -667,7 +647,7 @@ int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server int OpenTCPSocket (void) { int sockfd; - int on = 0; + int on = 1; struct linger linger = { 0 }; if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) @@ -677,7 +657,7 @@ int OpenTCPSocket (void) setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(on)); /* This is BSD compatible, setting l_onoff to 0 is *NOT* http://web.irc.org/mla/ircd-dev/msg02259.html */ linger.l_onoff = 1; - linger.l_linger = 0; + linger.l_linger = 1; setsockopt(sockfd, SOL_SOCKET, SO_LINGER, (const char*)&linger,sizeof(linger)); return (sockfd); }