summaryrefslogtreecommitdiff
path: root/src/listensocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/listensocket.cpp')
-rw-r--r--src/listensocket.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/listensocket.cpp b/src/listensocket.cpp
index 313396ed7..86d36cce0 100644
--- a/src/listensocket.cpp
+++ b/src/listensocket.cpp
@@ -128,15 +128,19 @@ void ListenSocketBase::AcceptInternal()
if (this->family == AF_INET6)
{
inet_ntop(AF_INET6, &((const sockaddr_in6*)client)->sin6_addr, buf, sizeof(buf));
- if (!strncmp(buf, "::ffff:", 7))
- {
- memmove(buf, buf+7, sizeof(buf)-7);
- }
socklen_t raddrsz = sizeof(sockaddr_in6);
if (getsockname(incomingSockfd, (sockaddr*) raddr, &raddrsz) == 0)
inet_ntop(AF_INET6, &((const sockaddr_in6*)raddr)->sin6_addr, target, sizeof(target));
else
ServerInstance->Logs->Log("SOCKET", DEBUG, "Can't get peername: %s", strerror(errno));
+ if (!strncmp(buf, "::ffff:", 7))
+ {
+ memmove(buf, buf+7, sizeof(buf)-7);
+ }
+ if (!strncmp(target, "::ffff:", 7))
+ {
+ memmove(target, target+7, sizeof(target)-7);
+ }
}
else
#endif