From a648423e271f7bb24bee730101b3b6d4051cd599 Mon Sep 17 00:00:00 2001 From: nagachika Date: Tue, 12 Mar 2019 12:59:25 +0000 Subject: merge revision(s) 64636,64637: [Backport #15659] AIX doesn't set OptionLength for boolean options https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180904T103302Z.fail.html.gz https://www.ibm.com/support/knowledgecenter/ja/ssw_aix_72/com.ibm.aix.commtrf2/getsockopt.htm fix typo git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@67228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/basicsocket.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ext') diff --git a/ext/socket/basicsocket.c b/ext/socket/basicsocket.c index 2641b4410b..a1065608e6 100644 --- a/ext/socket/basicsocket.c +++ b/ext/socket/basicsocket.c @@ -314,6 +314,18 @@ bsock_getsockopt(VALUE sock, VALUE lev, VALUE optname) level = rsock_level_arg(family, lev); option = rsock_optname_arg(family, level, optname); len = 256; +#ifdef _AIX + switch (option) { + case SO_DEBUG: + case SO_REUSEADDR: + case SO_KEEPALIVE: + case SO_DONTROUTE: + case SO_BROADCAST: + case SO_OOBINLINE: + /* AIX doesn' set len for boolean options */ + len = sizeof(int); + } +#endif buf = ALLOCA_N(char,len); rb_io_check_closed(fptr); -- cgit v1.2.3