Skip to content

Commit

Permalink
SO_DOMAIN do not support on AIX, using getsockname instead
Browse files Browse the repository at this point in the history
  • Loading branch information
GavinGZhang committed Nov 8, 2022
1 parent 8e76f5f commit 875e757
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions include/xgboost/collective/socket.h
Expand Up @@ -287,11 +287,22 @@ class TCPSocket {
#elif defined(__APPLE__)
return domain_;
#elif defined(__unix__)
#ifndef __PASE__
std::int32_t domain;
socklen_t len = sizeof(domain);
xgboost_CHECK_SYS_CALL(
getsockopt(handle_, SOL_SOCKET, SO_DOMAIN, reinterpret_cast<char *>(&domain), &len), 0);
return ret_iafamily(domain);
#else
struct sockaddr sa;
socklen_t sizeofsa = sizeof(sa);
xgboost_CHECK_SYS_CALL(
getsockname(handle_,&sa,&sizeofsa), 0);
if(sizeofsa < sizeof(uchar_t)*2){
return ret_iafamily(AF_INET);
}
return ret_iafamily(sa.sa_family);
#endif //__PASE__
#else
LOG(FATAL) << "Unknown platform.";
return ret_iafamily(AF_INET);
Expand Down

0 comments on commit 875e757

Please sign in to comment.