diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-08-20 18:02:50 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-08-20 18:02:50 +0000 |
commit | 959e902e57403148e556200568ff3e58408201de (patch) | |
tree | d2579247551783aa5f6b62fe0e20d66d8535c016 /src/inspsocket.cpp | |
parent | 96b776fd2729a482d1aff783c39e209fe7e58fde (diff) |
The only possibility for the issue sts found is that a socket is deleted but also ends up in the socket cull list somehow.
To ensure that the socket does not get deleted, remove the delete and replace with an explicit call to insert into the socket cull list.
We were grappling with these issues in early 1.1 with the userrec cull list, too.
NOTE for later 1.2's consider making CullList a base class which we can derive from to delete lists of other items than userrecs.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7775 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/inspsocket.cpp')
-rw-r--r-- | src/inspsocket.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/inspsocket.cpp b/src/inspsocket.cpp index 96f07b6e4..e43da50a5 100644 --- a/src/inspsocket.cpp +++ b/src/inspsocket.cpp @@ -186,7 +186,7 @@ bool InspSocket::BindAddr(const std::string &ip) in6_addr n; if (inet_pton(AF_INET6, IP.c_str(), &n) > 0) { - memcpy(&((sockaddr_in6*)s)->sin6_addr, &n, sizeof(n)); + memcpy(&((sockaddr_in6*)s)->sin6_addr, &n, sizeof(sockaddr_in6)); ((sockaddr_in6*)s)->sin6_port = 0; ((sockaddr_in6*)s)->sin6_family = AF_INET6; size = sizeof(sockaddr_in6); @@ -284,7 +284,7 @@ bool InspSocket::DoConnect() if (inet_pton(AF_INET6, this->host, &addy) > 0) { ((sockaddr_in6*)addr)->sin6_family = AF_INET6; - memcpy(&((sockaddr_in6*)addr)->sin6_addr, &addy, sizeof(addy)); + memcpy(&((sockaddr_in6*)addr)->sin6_addr, &addy, sizeof(sockaddr_in6)); ((sockaddr_in6*)addr)->sin6_port = htons(this->port); size = sizeof(sockaddr_in6); } |