]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspsocket.cpp
Fix invalid iterator in select socketengine, clean up its memory use a bit too
[user/henk/code/inspircd.git] / src / inspsocket.cpp
index e42990a748615c4f02238d6e7480560f0fb7297c..1ec32742e8fa8bdab8e7017eac3a66df4059d042 100644 (file)
@@ -89,7 +89,7 @@ void BufferedSocket::SetQueues()
        }
 }
 
-bool BufferedSocket::DoBindMagic(const std::string &current_ip, bool v6)
+bool BufferedSocket::DoBindMagic(const std::string &current_ip)
 {
        irc::sockets::sockaddrs s;
        if (!irc::sockets::aptosa(current_ip.c_str(), 0, &s))
@@ -98,7 +98,7 @@ bool BufferedSocket::DoBindMagic(const std::string &current_ip, bool v6)
                return false;
        }
 
-       if (ServerInstance->SE->Bind(this->fd, &s.sa, sizeof(s)) < 0)
+       if (ServerInstance->SE->Bind(this->fd, &s.sa, sa_size(s)) < 0)
        {
                this->state = I_ERROR;
                this->OnError(I_ERR_BIND);
@@ -119,18 +119,12 @@ bool BufferedSocket::DoBindMagic(const std::string &current_ip, bool v6)
 bool BufferedSocket::BindAddr(const std::string &ip_to_bind)
 {
        ConfigReader Conf(this->ServerInstance);
-       bool v6 = false;
 
        // Case one: If they provided an IP, try bind it
        if (!ip_to_bind.empty())
        {
-#ifdef IPV6
-               // Check whether or not they are binding to an IPv6 IP..
-               if (ip_to_bind.find(':') != std::string::npos)
-                       v6 = true;
-#endif
                // And if it fails, don't do anything.
-               return this->DoBindMagic(ip_to_bind, v6);
+               return this->DoBindMagic(ip_to_bind);
        }
 
        for (int j = 0; j < Conf.Enumerate("bind"); j++)
@@ -142,20 +136,12 @@ bool BufferedSocket::BindAddr(const std::string &ip_to_bind)
                // set current IP to the <bind> tag
                std::string current_ip = Conf.ReadValue("bind","address",j);
 
-#ifdef IPV6
-               // Check whether this <bind> is for an ipv6 address
-               if (current_ip.find(':') != std::string::npos)
-                       v6 = true;
-               else
-                       v6 = false;
-#endif
-
                // Make sure IP is nothing local
                if (current_ip == "*" || current_ip == "127.0.0.1" || current_ip.empty() || current_ip == "::1")
                        continue;
 
                // Try bind, don't fail if it doesn't bind though.
-               if (this->DoBindMagic(current_ip, v6))
+               if (this->DoBindMagic(current_ip))
                        return true;
        }