Commit graph

829 commits

Author SHA1 Message Date
mame
a6ae6a8b17 * ext/socket/ifaddr.c (rsock_getifaddrs): fix possible memory leak.
When a system had no interface, this function used xmalloc for root
  but did not return any reference to it.  This patch fixes it by
  immediately returning an empty array if no interface is found.
  Coverity Scan found this bug.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-02 12:41:28 +00:00
glass
0e7c28a1c3 * ext/socket/mkconstants.rb: define MSG_FASTOPEN.
[ruby-core:57138] [Feature #8897]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-15 15:48:38 +00:00
akr
888e5cbbe7 * process.c: Remove spaces between SI prefix and unit to follow
SI brochure.
  http://www.bipm.org/en/si/si_brochure/
  https://www.nmij.jp/library/units/si/

* time.c: Ditto.

* ext/socket/ancdata.c: Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-09 12:33:36 +00:00
akr
dd946739dd * ext/socket/mkconstants.rb (TCP_FASTOPEN): Defined for TCP fast open.
[ruby-core:57048] [Feature #8871] patch by Masaki Matsushita.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 01:41:47 +00:00
zzak
77ca81e465 * ext/socket/unixserver.c: [DOC] Document #accept
* ext/socket/tcpserver.c: ditto
* ext/socket/udpsocket.c: [DOC] Fix indentation of documentation
* ext/socket/socket.c: ditto
  Patches by David Rodríguez [ruby-core:56734] [Bug #8802]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-19 16:54:59 +00:00
akr
8c55a0a6e4 * ext/socket/ipsocket.c (init_inetsock_internal): Don't try mismached
address family if already failed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-01 15:43:21 +00:00
akr
b7fd00c8fa * ext/socket/ipsocket.c (init_inetsock_internal): Use an address
family for local address wihch is different to the remote
  address if no other choice.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-01 11:05:47 +00:00
akr
a5fcce2820 * ext/socket/ipsocket.c (init_inetsock_internal): Don't use local
addresses which address family is different to remote address.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-28 03:16:07 +00:00
drbrain
d341276561 * ext/socket/extconf.rb: Enable RFC 3542 IPV6 socket options for OS X
10.7+.  [ruby-trunk - Bug #8517]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 20:32:42 +00:00
shugo
1f828497d1 * safe.c (rb_set_safe_level, safe_setter): raise an ArgumentError
when $SAFE is set to 4.  $SAFE=4 is now obsolete.
  [ruby-core:55222] [Feature #8468]

* object.c (rb_obj_untrusted, rb_obj_untrust, rb_obj_trust):
  Kernel#untrusted?, untrust, and trust are now deprecated.
  Their behavior is same as tainted?, taint, and untaint,
  respectively.

* include/ruby/ruby.h (OBJ_UNTRUSTED, OBJ_UNTRUST): OBJ_UNTRUSTED()
  and OBJ_UNTRUST() are aliases of OBJ_TAINTED() and OBJ_TAINT(),
  respectively.

* array.c, class.c, debug.c, dir.c, encoding.c, error.c, eval.c,
  ext/curses/curses.c, ext/dbm/dbm.c, ext/dl/cfunc.c,
  ext/dl/cptr.c, ext/dl/dl.c, ext/etc/etc.c, ext/fiddle/fiddle.c,
  ext/fiddle/pointer.c, ext/gdbm/gdbm.c, ext/readline/readline.c,
  ext/sdbm/init.c, ext/socket/ancdata.c, ext/socket/basicsocket.c,
  ext/socket/socket.c, ext/socket/udpsocket.c,
  ext/stringio/stringio.c, ext/syslog/syslog.c, ext/tk/tcltklib.c,
  ext/win32ole/win32ole.c, file.c, gc.c, hash.c, io.c, iseq.c,
  load.c, marshal.c, object.c, proc.c, process.c, random.c, re.c,
  safe.c, string.c, thread.c, transcode.c, variable.c,
  vm_insnhelper.c, vm_method.c, vm_trace.c: remove code for
  $SAFE=4.

* test/dl/test_dl2.rb, test/erb/test_erb.rb,
  test/readline/test_readline.rb,
  test/readline/test_readline_history.rb, test/ruby/test_alias.rb,
  test/ruby/test_array.rb, test/ruby/test_dir.rb,
  test/ruby/test_encoding.rb, test/ruby/test_env.rb,
  test/ruby/test_eval.rb, test/ruby/test_exception.rb,
  test/ruby/test_file_exhaustive.rb, test/ruby/test_hash.rb,
  test/ruby/test_io.rb, test/ruby/test_method.rb,
  test/ruby/test_module.rb, test/ruby/test_object.rb,
  test/ruby/test_pack.rb, test/ruby/test_rand.rb,
  test/ruby/test_regexp.rb, test/ruby/test_settracefunc.rb,
  test/ruby/test_struct.rb, test/ruby/test_thread.rb,
  test/ruby/test_time.rb: remove tests for $SAFE=4.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 14:20:51 +00:00
kou
e214b1b6d3 * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Fix indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 12:51:48 +00:00
kou
f6921a3cd1 * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Add missing return
value assignment.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 12:50:45 +00:00
naruse
52a802a428 * ext/socket/raddrinfo.c (nogvl_getaddrinfo): work around for Ubuntu
13.04's getaddrinfo issue with mdns4. [ruby-list:49420]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41215 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 11:59:36 +00:00
naruse
e2582ca28d * ext/socket/option.c: rename functions introduced in r41009
s/ip/ipv4/g because they are ipv4 functions.
  (there's a policy that the name "ip" is for methods which supports
   both ipv4 and ipv6)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-02 14:24:34 +00:00
nobu
488f478d24 * ext/socket/option.c (inspect_byte): used only on NetBSD.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-31 22:53:58 +00:00
naruse
a78e45b5fe * ext/socket/option.c (sockopt_s_byte): constructor of the sockopt
whose value's is byte.

* ext/socket/option.c (sockopt_byte): getter for above.

* ext/socket/option.c (inspect_byte): inspect for above.

* ext/socket/option.c (sockopt_s_ip_multicast_loop): constructor of
  the sockopt whose optname is IP_MULTICAST_LOOP.

* ext/socket/option.c (sockopt_ip_multicast_loop): getter for above.

* ext/socket/option.c (sockopt_s_ip_multicast_ttl): constructor of
  the sockopt whose optname is IP_MULTICAST_TTL.

* ext/socket/option.c (sockopt_ip_multicast_ttl): getter for above.

* ext/socket/option.c (sockopt_inspect): use above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-31 17:37:55 +00:00
akr
9cc1cc2045 * ext/socket/mkconstants.rb (INTEGER2NUM): Make less comparisons.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-18 11:28:51 +00:00
akr
bfec5ad41f * ext/socket/mkconstants.rb (INTEGER2NUM): Renamed from INTEGER2VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-18 08:17:03 +00:00
akr
2c7c4b2e7b * ext/socket/mkconstants.rb (INTEGER2VALUE): Suppress a warning:
comparison between signed and unsigned integer expressions



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-18 07:58:36 +00:00
akr
94dfc14ed8 * ext/socket/mkconstants.rb (INTEGER2VALUE): Use LONG2FIX if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40802 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-18 00:01:10 +00:00
akr
a7acc99193 * ext/socket/mkconstants.rb: Convert integer constants bigger than int
correctly.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-17 15:39:59 +00:00
akr
9d099423e7 * ext/socket/ifaddr.c: Use unsigned LONG_LONG to represent flags
because SunOS 5.11 (OpenIndiana) defines ifa_flags as uint64_t.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-17 13:04:17 +00:00
akr
d05010f6a4 Enable the document for Socket::Ifaddr#ifindex.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-17 03:11:42 +00:00
akr
8416b57943 Fix a dependency.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-16 10:29:05 +00:00
akr
a84c2941c2 * ext/socket/depend: Add a dependency for ifaddr.o.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-15 17:04:03 +00:00
akr
1e5a64261f * ext/socket/.document: Add ifaddr.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 14:48:00 +00:00
nobu
5ec5c6d52c socket: fix build error and warnings on mingw
* ext/socket/extconf.rb: check for if_nametoindex() for
  i686-w64-mingw32, and check for declarations of if_indextoname() and
  if_nametoindex().
* ext/socket/ifaddr.c (ifaddr_ifindex): not-implement unless
  if_nametoindex() is available.
* ext/socket/rubysocket.h: declare if_indextoname() and
  if_nametoindex() if available but not declared.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 14:24:42 +00:00
akr
b6decf289f Update doc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40735 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 11:35:50 +00:00
akr
2ad4c65b54 * ext/socket/extconf.rb: Check socketpair again.
It is required on Unix.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 12:51:38 +00:00
usa
cb3fcdcdc3 * win32/win32.c, include/ruby/win32.h (getipaddrs): [experimental]
emulate getipaddrs(3) on Unix.

* win32/Makefile.sub, configure.in (LIBS): need iphlpapi.lib for above
  function.

* include/ruby/win32.h (socketpair): rb_w32_socketpair() doesn't
  substitute for any function, so use non-prefixed name.

* ext/socket/extconf.rb (socketpair); follow above change.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 11:29:32 +00:00
ko1
83aba04862 * include/ruby/ruby.h: constify RBasic::klass and add
RBASIC_CLASS(obj) macro which returns a class of `obj'.
  This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
* object.c: add new function rb_obj_reveal().
  This function reveal interal (hidden) object by rb_obj_hide().
  Note that do not change class before and after hiding.
  Only permitted example is:
  klass = RBASIC_CLASS(obj);
  rb_obj_hide(obj);
  ....
  rb_obj_reveal(obj, klass);
  TODO: API design. rb_obj_reveal() should be replaced with others.
  TODO: modify constified variables using cast may be harmful for
  compiler's analysis and optimizaton.
  Any idea to prohibt inserting RBasic::klass directly?
  If rename RBasic::klass and force to use RBASIC_CLASS(obj),
  then all codes such as `RBASIC(obj)->klass' will be
  compilation error. Is it acceptable? (We have similar
  experience at Ruby 1.9,
  for example "RARRAY(ary)->ptr" to "RARRAY_PTR(ary)".
* internal.h: add some macros.
* RBASIC_CLEAR_CLASS(obj) clear RBasic::klass to make it internal
  object.
* RBASIC_SET_CLASS(obj, cls) set RBasic::klass.
* RBASIC_SET_CLASS_RAW(obj, cls) same as RBASIC_SET_CLASS
  without write barrier (planned).
* RCLASS_SET_SUPER(a, b) set super class of a.
* array.c, class.c, compile.c, encoding.c, enum.c, error.c, eval.c,
  file.c, gc.c, hash.c, io.c, iseq.c, marshal.c, object.c,
  parse.y, proc.c, process.c, random.c, ruby.c, sprintf.c,
  string.c, thread.c, transcode.c, vm.c, vm_eval.c, win32/file.c:
  Use above macros and functions to access RBasic::klass.
* ext/coverage/coverage.c, ext/readline/readline.c,
  ext/socket/ancdata.c, ext/socket/init.c,
* ext/zlib/zlib.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 10:49:11 +00:00
naruse
5aa618819b * ext/socket/rubysocket.h (rsock_inspect_sockaddr): as r40646
check HAVE_TYPE_STRUCT_SOCKADDR_DL.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 07:09:26 +00:00
hsbt
b9a34fd717 fixed wrong document for Socket.tcp by @lann [fix GH-302]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 01:44:06 +00:00
nobu
5b20e5e1fe raddrinfo.c: suppress warnings
* ext/socket/raddrinfo.c (rsock_inspect_sockaddr): cast down
  explicitly to suppress warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-11 18:28:32 +00:00
naruse
037ce7f6bc * ext/socket/rubysocket.h (HAVE_TYPE_STRUCT_SOCKADDR_DL):
MSVC has struct sockadddr_dl, but its content is broken.
  20130511T103938Z.log.html.gz

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-11 14:07:20 +00:00
akr
26cb14f846 * ext/socket/raddrinfo.c (rsock_inspect_sockaddr): Add casts to
suppress warnings.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-11 13:04:39 +00:00
akr
b323d7d54c * ext/socket: New method, Socket.getifaddrs, implemented.
[ruby-core:54777] [Feature #8368]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-11 08:32:26 +00:00
akr
2ffbe0345d * ext/socket/ancdata.c (bsock_sendmsg_internal): controls_num should
not be negative.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-09 13:01:08 +00:00
akr
bfb334eefa * file.c, ext/etc/etc.c, ext/socket/unixsocket.c,
ext/openssl/ossl.h, ext/openssl/openssl_missing.c: Use
  HAVE_AGGREGATE_MEMBER instead of HAVE_ST_MEMBER.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-09 12:12:17 +00:00
akr
adb575e21e * ext/socket/ancdata.c (bsock_sendmsg_internal): Always set
controls_num to raise NotImplementedError appropriately.
  (bsock_recvmsg_internal): Raise NotImplementedError if
  :scm_rights=>true is given on platforms which don't have
  4.4BSD style control message.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40624 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-09 11:48:29 +00:00
akr
a5e6d48dfb * ext/socket/rubysocket.h, ext/socket/unixsocket.c,
ext/socket/ancdata.c: Use HAVE_STRUCT_MSGHDR_MSG_CONTROL instead
  of HAVE_ST_MSG_CONTROL.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-09 03:08:58 +00:00
akr
f9feb22f1a error message refined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40619 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-08 19:58:38 +00:00
naruse
bbcf97fad6 * ext/socket/socket.c (socket_s_ip_address_list): fix wrongly filled
sin6_scope_id on KAME introduced by r40593 for OpenIndiana.
  KAME uses fe80:<scope_id>::<interface id> for link-local address
  internally.
  Setting sin6_scope_id causes it leaked.
  see also comments of sockaddr_obj().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-07 22:51:16 +00:00
akr
593c24f87c * ext/socket/ancdata.c (bsock_recvmsg_internal): Add a cast to
suppress warning.
  Bionic defines socklen_t as int.
  Bionic defines msg_controllen as unsigned int (__kernel_size_t)
  instead of socklen_t as POSIX.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-07 03:19:52 +00:00
akr
cb2f3c1b87 * ext/socket/ancdata.c (ancillary_inspect): Don't call
anc_inspect_ipv6_pktinfo if !HAVE_TYPE_STRUCT_IN6_PKTINFO.
  anc_inspect_ipv6_pktinfo is not defined in the case.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-07 03:14:47 +00:00
akr
2b792abd69 * ext/socket/socket.c (socket_s_ip_address_list): Cast EXTRA_SPACE as
int.  This suppress a warning.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-07 03:12:32 +00:00
akr
301821bd45 * ext/socket/extconf.rb: Set close_fds false for Cygwin.
Cygwin doesn't support fd passing.
  This enables socket extension library cross-compilable by default.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-07 03:10:46 +00:00
akr
9e08404b8a * ext/socket/socket.c (socket_s_ip_address_list): Fill sin6_scope_id
if getifaddrs() returns an IPv6 link local address which
  sin6_scope_id is zero, such as on OpenIndiana SunOS 5.11.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-06 11:51:07 +00:00
akr
86d4511fe6 * ext/socket/extconf.rb: Make default_ipv6 true for Cygwin.
Cygwin supports IPv6 since Cygwin 1.7.1 (2009-12).
  http://cygwin.com/ml/cygwin-announce/2009-12/msg00027.html



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 05:11:06 +00:00
nobu
8202d6266f {getaddrinfo,getnameinfo}.c: fix for old platforms
* ext/socket/{getaddrinfo,getnameinfo}.c: define socklen_t if not
  defined, e.g., older VC.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 04:35:37 +00:00