#endif // #ifdef TCP_DEFER_ACCEPT
#ifdef IPV6_V6ONLY
- if (res->ai_family == AF_INET6) {
+ if (res->ai_family == AF_INET6 && path_.empty()) {
int zero = 0;
if (-1 == setsockopt(serverSocket_, IPPROTO_IPV6, IPV6_V6ONLY,
&zero, sizeof(zero))) {
// Set socket back to normal mode (blocking)
fcntl(socket_, F_SETFL, flags);
- setCachedAddress(res->ai_addr, res->ai_addrlen);
+ if (path_.empty()) {
+ setCachedAddress(res->ai_addr, res->ai_addrlen);
+ }
}
void TSocket::open() {
void TSocket::setNoDelay(bool noDelay) {
noDelay_ = noDelay;
- if (socket_ < 0) {
+ if (socket_ < 0 || !path_.empty()) {
return;
}
}
std::string TSocket::getPeerHost() {
- if (peerHost_.empty()) {
+ if (peerHost_.empty() && path_.empty()) {
struct sockaddr_storage addr;
struct sockaddr* addrPtr;
socklen_t addrLen;
}
std::string TSocket::getPeerAddress() {
- if (peerAddress_.empty()) {
+ if (peerAddress_.empty() && path_.empty()) {
struct sockaddr_storage addr;
struct sockaddr* addrPtr;
socklen_t addrLen;
}
void TSocket::setCachedAddress(const sockaddr* addr, socklen_t len) {
+ if (!path_.empty()) {
+ return;
+ }
+
switch (addr->sa_family) {
case AF_INET:
if (len == sizeof(sockaddr_in)) {