]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socket.cpp
Fix resolved hostname not being changed when WEBIRC passes a hostname longer than...
[user/henk/code/inspircd.git] / src / socket.cpp
index 3ee9961935d2c1b8260c131e6180c6cd30ce2523..a04523ddf0b68c6bf814fd04a5a3df539374ad1c 100644 (file)
@@ -239,6 +239,17 @@ int irc::sockets::sockaddrs::sa_size() const
        return 0;
 }
 
+bool irc::sockets::sockaddrs::operator==(const irc::sockets::sockaddrs& other) const
+{
+       if (sa.sa_family != other.sa.sa_family)
+               return false;
+       if (sa.sa_family == AF_INET)
+               return (in4.sin_port == other.in4.sin_port) && (in4.sin_addr.s_addr == other.in4.sin_addr.s_addr);
+       if (sa.sa_family == AF_INET6)
+               return (in6.sin6_port == other.in6.sin6_port) && !memcmp(in6.sin6_addr.s6_addr, other.in6.sin6_addr.s6_addr, 16);
+       return !memcmp(this, &other, sizeof(*this));
+}
+
 static void sa2cidr(irc::sockets::cidr_mask& cidr, const irc::sockets::sockaddrs& sa, int range)
 {
        const unsigned char* base;