Add comments on Daniel's work

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10780 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
w00t 2008-11-01 20:20:12 +00:00
parent ab65273f9f
commit 622a6b263a

View File

@ -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))
{