]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Fixed a permissions error, was doing work as root!
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 018bdf133adcf387c136c36725b4f620097085d8..a71cf08ab83b5ba48b2ae44b4eadfbef2e153989 100644 (file)
@@ -174,7 +174,7 @@ address_cache IP;
 ClassVector Classes;
 
 struct linger linger = { 0 };
-char bannerBuffer[MAXBUF];
+char MyExecutable[1024];
 int boundPortCount = 0;
 int portCount = 0, UDPportCount = 0, ports[MAXSOCKS];
 int defaultRoute = 0;
@@ -959,7 +959,7 @@ void WriteWallOps(userrec *source, bool local_only, char* text, ...)
                {
                        if (strchr(i->second->modes,'w'))
                        {
-                               WriteTo(source,i->second,"WALLOPS %s",textbuffer);
+                               WriteTo(source,i->second,"WALLOPS :%s",textbuffer);
                        }
                 }
        }
@@ -2000,7 +2000,7 @@ void Error(int status)
 }
 
 
-int main(int argc, char *argv[])
+int main(int argc, char **argv)
 {
        Start();
        srand(time(NULL));
@@ -2013,10 +2013,18 @@ int main(int argc, char *argv[])
                Exit(ERROR);
        }
        if (argc > 1) {
-               if (!strcmp(argv[1],"-nofork")) {
-                       nofork = true;
+               for (int i = 1; i < argc; i++)
+               {
+                       if (!strcmp(argv[i],"-nofork")) {
+                               nofork = true;
+                       }
+                       if (!strcmp(argv[i],"-wait")) {
+                               sleep(6);
+                       }
                }
        }
+       strcpy(MyExecutable,argv[0]);
+       
        if (InspIRCd() == ERROR)
        {
                log(DEBUG,"main: daemon function bailed");
@@ -3119,11 +3127,11 @@ int reap_counter = 0;
 
 int InspIRCd(void)
 {
-       struct sockaddr_in client, server;
+       struct sockaddr_in client,server;
        char addrs[MAXBUF][255];
        int openSockfd[MAXSOCKS], incomingSockfd, result = TRUE;
        socklen_t length;
-       int count = 0, scanDetectTrigger = TRUE, showBanner = FALSE;
+       int count = 0;
        int selectResult = 0, selectResult2 = 0;
        char *temp, configToken[MAXBUF], stuff[MAXBUF], Addr[MAXBUF], Type[MAXBUF];
        char resolvedHost[MAXBUF];
@@ -3174,8 +3182,14 @@ int InspIRCd(void)
                                log(DEBUG,"InspIRCd: startup: binding '%s:%s' is default server route",Addr,configToken);
                        }
                        me[count3] = new serverrec(ServerName,100L,false);
-                       me[count3]->CreateListener(Addr,atoi(configToken));
-                       count3++;
+                       if (!me[count3]->CreateListener(Addr,atoi(configToken)))
+                       {
+                               log(DEFAULT,"Error! Failed to bind port %d",atoi(configToken));
+                       }
+                       else
+                       {
+                               count3++;
+                       }
                }
                else
                {
@@ -3333,7 +3347,8 @@ int InspIRCd(void)
                
                for (int x = 0; x != UDPportCount; x++)
                {
-                       FD_SET(me[x]->fd, &serverfds);
+                       if (me[x])
+                               FD_SET(me[x]->fd, &serverfds);
                }
                
                tvs.tv_usec = 0;                
@@ -3344,7 +3359,7 @@ int InspIRCd(void)
                {
                        for (int x = 0; x != UDPportCount; x++)
                        {
-                               if (FD_ISSET (me[x]->fd, &serverfds))
+                               if ((me[x]) && (FD_ISSET (me[x]->fd, &serverfds)))
                                {
                                        char remotehost[MAXBUF],resolved[MAXBUF];
                                        length = sizeof (client);
@@ -3365,7 +3380,7 @@ int InspIRCd(void)
                {
                        std::deque<std::string> msgs;
                        msgs.clear();
-                       if (me[x]->RecvPacket(msgs, tcp_host))
+                       if ((me[x]) && (me[x]->RecvPacket(msgs, tcp_host)))
                        {
                                for (int ctr = 0; ctr < msgs.size(); ctr++)
                                {