Skip to content

Commit 67b657d

Browse files
authored
SO_DOMAIN do not support on IBM i, using getsockname instead (dmlc#8437) (dmlc#8500)
1 parent db14e3f commit 67b657d

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

include/xgboost/collective/socket.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,22 @@ class TCPSocket {
287287
#elif defined(__APPLE__)
288288
return domain_;
289289
#elif defined(__unix__)
290+
#ifndef __PASE__
290291
std::int32_t domain;
291292
socklen_t len = sizeof(domain);
292293
xgboost_CHECK_SYS_CALL(
293294
getsockopt(handle_, SOL_SOCKET, SO_DOMAIN, reinterpret_cast<char *>(&domain), &len), 0);
294295
return ret_iafamily(domain);
296+
#else
297+
struct sockaddr sa;
298+
socklen_t sizeofsa = sizeof(sa);
299+
xgboost_CHECK_SYS_CALL(
300+
getsockname(handle_, &sa, &sizeofsa), 0);
301+
if (sizeofsa < sizeof(uchar_t)*2) {
302+
return ret_iafamily(AF_INET);
303+
}
304+
return ret_iafamily(sa.sa_family);
305+
#endif // __PASE__
295306
#else
296307
LOG(FATAL) << "Unknown platform.";
297308
return ret_iafamily(AF_INET);

0 commit comments

Comments
 (0)