- memcpy(&addr.sin6_addr,&myserver,sizeof(addr.sin6_addr));
- addr.sin6_family = AF_FAMILY;
- addr.sin6_port = htons(DNS::QUERY_PORT);
+ if (this->dnsobj->socketfamily == AF_INET6)
+ {
+ sockaddr_in6 addr;
+ memset(&addr,0,sizeof(addr));
+ memcpy(&addr.sin6_addr,&dnsobj->myserver6,sizeof(addr.sin6_addr));
+ addr.sin6_family = AF_INET6;
+ addr.sin6_port = htons(DNS::QUERY_PORT);
+ if (sendto(dnsobj->GetFd(), payload, length + 12, 0, (sockaddr *) &addr, sizeof(addr)) != length+12)
+ return -1;
+ }
+ else
+ {
+ sockaddr_in addr;
+ memset(&addr,0,sizeof(addr));
+ memcpy(&addr.sin_addr.s_addr,&dnsobj->myserver4,sizeof(addr.sin_addr));
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(DNS::QUERY_PORT);
+ if (sendto(dnsobj->GetFd(), payload, length + 12, 0, (sockaddr *) &addr, sizeof(addr)) != length+12)
+ return -1;
+ }