}
}
-InspSocket::InspSocket(const std::string &ahost, int aport, bool listening, unsigned long maxtime) : fd(-1)
+InspSocket::InspSocket(const std::string &ipaddr, int aport, bool listening, unsigned long maxtime) : fd(-1)
{
- strlcpy(host,ahost.c_str(),MAXBUF);
+ strlcpy(host,ipaddr.c_str(),MAXBUF);
this->ClosePending = false;
if (listening) {
if ((this->fd = OpenTCPSocket()) == ERROR)
}
else
{
- if (!BindSocket(this->fd,this->client,this->server,aport,(char*)ahost.c_str()))
+ if (!BindSocket(this->fd,this->client,this->server,aport,(char*)ipaddr.c_str()))
{
log(DEBUG,"BindSocket() error %s",strerror(errno));
this->Close();
}
else
{
- strlcpy(this->host,ahost.c_str(),MAXBUF);
+ strlcpy(this->host,ipaddr.c_str(),MAXBUF);
this->port = aport;
if (insp_aton(host,&addy) < 1)
if ((IP != "*") && (IP != "127.0.0.1") && (IP != ""))
{
insp_sockaddr s;
- char resolved_addr[MAXBUF];
-
- if (insp_aton(IP.c_str(),&n) < 1)
- {
- /* If they gave a hostname, bind to the IP it resolves to */
- log(DEBUG,"Resolving host %s",IP.c_str());
- if (CleanAndResolve(resolved_addr, IP.c_str(), true, 1))
- {
- log(DEBUG,"Resolved host %s to %s",IP.c_str(),resolved_addr);
- IP = resolved_addr;
- }
- }
if (insp_aton(IP.c_str(),&n) > 0)
{
return false;
}
- if (!this->BindAddr())
- return false;
+ if ((strstr(this->IP,"::ffff:") != (char*)&this->IP) && (strstr(this->IP,"::FFFF:") != (char*)&this->IP))
+ {
+ if (!this->BindAddr())
+ return false;
+ }
log(DEBUG,"Part 2 DoConnect() %s",this->IP);
insp_aton(this->IP,&addy);
#ifdef IPV6
addr.sin6_family = AF_FAMILY;
- memcpy(&addy, &addr.sin6_addr, sizeof(insp_inaddr));
+ memcpy(&addr.sin6_addr, &addy, sizeof(insp_inaddr));
addr.sin6_port = htons(this->port);
#else
addr.sin_family = AF_FAMILY;