ident over ipv6 fixes, and fixes to inspsocket BindAddr which wasnt doing ipv6 outbound connects properly. You'll need to restart to apply this one, dmb

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6702 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
brain 2007-03-23 20:14:43 +00:00
parent c61b20a310
commit c4953ea1f5
2 changed files with 14 additions and 9 deletions

View File

@ -166,14 +166,13 @@ void InspSocket::SetQueues(int nfd)
*/
bool InspSocket::BindAddr(const std::string &ip)
{
Instance->Log(DEBUG,"BindAddr(%s)", ip.c_str());
ConfigReader Conf(this->Instance);
bool bindfail = false;
socklen_t size = sizeof(sockaddr_in);
#ifdef IPV6
bool v6 = false;
/* Are we looking for a binding to fit an ipv6 host? */
if ((!*this->host) || strchr(this->host, ':'))
if ((ip.empty()) || (ip.find(':') != std::string::npos))
v6 = true;
#endif
int j = 0;
@ -196,7 +195,11 @@ bool InspSocket::BindAddr(const std::string &ip)
size = sizeof(sockaddr_in6);
}
else
bindfail = true;
{
delete[] s;
j++;
continue;
}
}
else
{
@ -207,7 +210,11 @@ bool InspSocket::BindAddr(const std::string &ip)
((sockaddr_in*)s)->sin_family = AF_INET;
}
else
bindfail = true;
{
delete[] s;
j++;
continue;
}
}
#else
in_addr n;
@ -217,13 +224,12 @@ bool InspSocket::BindAddr(const std::string &ip)
((sockaddr_in*)s)->sin_family = AF_INET;
}
else
bindfail = true;
#endif
if (bindfail)
{
delete[] s;
return false;
j++;
continue;
}
#endif
if (bind(this->fd, s, size) < 0)
{

View File

@ -159,7 +159,6 @@ class RFC1413 : public InspSocket
#endif
if (success)
{
Instance->Log(DEBUG,"BUG: Ident: failed to get socket names");
delete[] sock_us;
delete[] sock_them;
return false;