]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socket.cpp
Partial fix for bug #441
[user/henk/code/inspircd.git] / src / socket.cpp
index 3e9db5fd430fcdf42eea20aaa08e3d0fed48438e..09885eca16d3fd209f1e68f0eaebbbccb8701c1b 100644 (file)
@@ -11,9 +11,9 @@
  * ---------------------------------------------------
  */
 
+/* $Core: libIRCDsocket */
+
 #include "inspircd.h"
-#include <string>
-#include "configreader.h"
 #include "socket.h"
 #include "socketengine.h"
 #include "wildcard.h"
@@ -65,7 +65,7 @@ ListenSocket::~ListenSocket()
        }
 }
 
-void ListenSocket::HandleEvent(EventType et, int errornum)
+void ListenSocket::HandleEvent(EventType, int)
 {
        sockaddr* sock_us = new sockaddr[2];    // our port number
        sockaddr* client = new sockaddr[2];
@@ -117,12 +117,12 @@ void ListenSocket::HandleEvent(EventType et, int errornum)
                        }
                }
                ServerInstance->stats->statsAccept++;
-               userrec::AddClient(ServerInstance, incomingSockfd, in_port, false, this->family, client);
+               User::AddClient(ServerInstance, incomingSockfd, in_port, false, this->family, client);
        }
        else
        {
                ServerInstance->SE->Shutdown(incomingSockfd, 2);
-               close(incomingSockfd);
+               ServerInstance->SE->Close(incomingSockfd);
                ServerInstance->stats->statsRefused++;
        }
        delete[] client;
@@ -426,7 +426,8 @@ int irc::sockets::OpenTCPSocket(char* addr, int socktype)
 {
        int sockfd;
        int on = 1;
-       struct linger linger = { 0 };
+       addr = addr;
+       struct linger linger = { 0, 0 };
 #ifdef IPV6
        if (strchr(addr,':') || (!*addr))
                sockfd = socket (PF_INET6, socktype, 0);
@@ -450,7 +451,7 @@ int irc::sockets::OpenTCPSocket(char* addr, int socktype)
        }
 }
 
-int InspIRCd::BindPorts(bool bail, int &ports_found, FailedPortList &failed_ports)
+int InspIRCd::BindPorts(bool, int &ports_found, FailedPortList &failed_ports)
 {
        char configToken[MAXBUF], Addr[MAXBUF], Type[MAXBUF];
        int bound = 0;
@@ -466,7 +467,10 @@ int InspIRCd::BindPorts(bool bail, int &ports_found, FailedPortList &failed_port
                Config->ConfValue(Config->config_data, "bind", "port", count, configToken, MAXBUF);
                Config->ConfValue(Config->config_data, "bind", "address", count, Addr, MAXBUF);
                Config->ConfValue(Config->config_data, "bind", "type", count, Type, MAXBUF);
-
+               
+               if (strncmp(Addr, "::ffff:", 7) == 0)
+                       this->Log(DEFAULT, "Using 4in6 (::ffff:) isn't recommended. You should bind IPv4 addresses directly instead.");
+               
                if ((!*Type) || (!strcmp(Type,"clients")))
                {
                        irc::portparser portrange(configToken, false);