From 622a6b263a6c180bf9d1301efc2cb9378f743f11 Mon Sep 17 00:00:00 2001 From: w00t Date: Sat, 1 Nov 2008 20:20:12 +0000 Subject: Add comments on Daniel's work git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10780 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/listensocket.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/listensocket.cpp b/src/listensocket.cpp index 6fa6785bd..e4b568235 100644 --- a/src/listensocket.cpp +++ b/src/listensocket.cpp @@ -134,6 +134,18 @@ void ListenSocketBase::AcceptInternal() else ServerInstance->Logs->Log("SOCKET", DEBUG, "Can't get peername: %s", strerror(errno)); + /* + * This case is the be all and end all patch to catch and nuke 4in6 + * instead of special-casing shit all over the place and wreaking merry + * havoc with crap, instead, we just recreate sockaddr and strip ::ffff: prefix + * if it's a 4in6 IP. + * + * This is, of course, much improved over the older way of handling this + * (pretend it doesn't exist + hack around it -- yes, both were done!) + * + * Big, big thanks to danieldg for his work on this. + * -- w00t + */ static const unsigned char prefix4in6[12] = { 0,0,0,0, 0,0,0,0, 0,0,0xFF,0xFF }; if (!memcmp(prefix4in6, &((const sockaddr_in6*)client)->sin6_addr, 12)) { -- cgit v1.2.3