900 Commits
Author SHA1 Message Date
usa 47165eed26 merge revision(s) 62991,63000:
unixsocket.c: check NUL bytes

	* ext/socket/unixsocket.c (rsock_init_unixsock): check NUL bytes.
	  https://hackerone.com/reports/302997

	unixsocket.c: abstract namespace

	* ext/socket/unixsocket.c (unixsock_path_value): fix r62991 for
	  Linux abstract namespace.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 14:36:23 +00:00
usa b2248a008f merge revision(s) 55797: [Backport #12645]
* ext/socket/option.c, ext/socket/rubysocket.h (inet_ntop): share
	  the fallback definition.  [ruby-core:76646] [Bug #12645]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 05:03:20 +00:00
nagachika a9b42f1744 merge revision(s) 54139: [Backport #12185]
* ext/socket/option.c (inspect_tcpi_msec): more accurate condition
	  for TCPI msec member inspection function.
	  [ruby-core:74388] [Bug #12185]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-24 11:52:00 +00:00
nagachika f548ea1f4f merge revision(s) 53677: [Backport #11877]
* ext/socket/socket.c (sock_gethostname): support unlimited size
	  hostname.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54070 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 15:14:30 +00:00
nagachika 7d25771f17 merge revision(s) 53561: [Backport #11958]
* ext/socket/option.c (sockopt_bool): relax boolean size to be one
	  too not only sizeof(int).  Winsock getsockopt() returns a single
	  byte as a boolean socket option.  [ruby-core:72730] [Bug #11958]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 13:45:33 +00:00
nagachika cb37e4013e merge revision(s) 53259: [Backport #11862]
* ext/socket/init.c (rsock_init_sock): reject reserved FDs
	  [ruby-core:72445] [Bug #11862]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-08 18:51:58 +00:00
nagachika f429ee01d2 merge revision(s) 52605,53231,53244: [Backport #11854]
init.c: is_socket

	* ext/socket/init.c (is_socket): extract predicate to see if the
  given fd is a socket.
	* ext/socket/init.c (rsock_init_sock): check FD after validating

	* test/socket/test_basicsocket.rb (test_for_fd): new
	  [ruby-core:72418] [Bug #11854]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-08 18:49:52 +00:00
nagachika 23f12a0660 merge revision(s) 50089: [Backport #11342]
* ext/socket/extconf.rb: Solaris 11 has struct tcp_info.tcpi_ca_state,
	  but it is a dummy.

	* ext/socket/option.c: Solaris 11 doesn't have u_intN_t.

	* ext/socket/option.c: Solaris 11 needs inspect_tcpi_msec.

	* ext/socket/raddrinfo.c: Solaris 11 has AF_PACKET but doesn't have
	  related macros.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-10 15:33:59 +00:00
nagachika 7ebca22266 merge revision(s) 50685: [Backport #11198]
* ext/socket/ancdata.c: use RB_GC_GUARD instead of volatile
	  [ruby-core:69419] [Feature #11198]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-11 17:18:12 +00:00
nagachika 55849b02bd merge revision(s) 50449: [Backport #11123]
* ext/socket/ancdata.c (bsock_recvmsg_internal): GC guard
	  [Bug #11123]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-23 18:53:48 +00:00
nagachika 3a35a8e9dc merge revision(s) 50404,50405: [Backport #10975]
* ext/socket/ipsocket.c (init_inetsock_internal): preserve errno
	  before other library calls and use rb_syserr_fail.
	  [ruby-core:68531] [Bug #10975]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-23 18:31:26 +00:00
nagachika 645b4e1130 merge revision(s) 50187,50202: [Backport #11051]
* ext/socket/raddrinfo.c (addrinfo_mload): fix memory leak of
	  addrinfo.  [ruby-dev:48923] [Bug #11051]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-23 17:42:42 +00:00
naruse 4aacaf216c merge revision(s) 49543: [Backport #10854]
* ext/socket/getaddrinfo.c (get_addr): reject too long hostname to
	  get rid of GHOST vulnerability on very old platforms.

	* ext/socket/raddrinfo.c (make_hostent_internal): ditto, paranoic
	  check for the canonnical name.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-15 04:16:03 +00:00
akr ecedd3b224 Update dependencies.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-19 13:34:54 +00:00
ktsj eebb6bfc79 * ext/socket/basicsocket.c, ext/socket/sockssocket.c:
remove code for $SAFE=4.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-07 10:40:27 +00:00
nobu c2fb27ac4a socket/option.c: fix inet_ntop link error on mswin
* ext/socket/option.c (inet_ntop): link aliased inet_ntop in
  libruby on mswin not rb_w32_inet_ntop which fails to link for
  unknown reason.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-05 08:09:12 +00:00
nobu 10cd530e40 socket/option.c: use rb_w32_inet_ntop
* ext/socket/option.c (inet_ntop): the fallback implementaion is
  always available on Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48709 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-04 17:09:52 +00:00
akr 6ca202fcee Update dependency.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-21 03:04:44 +00:00
akr 7cd76ab0c5 * internal.h: Include ruby.h and ruby/encoding.h to be
includable without prior inclusion.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-15 11:49:06 +00:00
akr dd547e1b22 Mark auogenerated part.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-15 11:14:08 +00:00
akr 57682b05e1 * common.mk: Remove comments in Dependency lines.
Notified by usa.

* enc/depend: Ditto.

* ext/**/depend: Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48434 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-15 10:28:25 +00:00
akr 8727eb77be * tool/update-deps: Extend to fix dependencies.
* common.mk: Dependencies updated by tool/update-deps.

* enc/depend: Ditto.

* ext/**/depend: Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-15 05:15:49 +00:00
zzak f21431e574 * ext/socket/unixsocket.c: [DOC] Fix example to render in HTML
properly, with a patch by @eval [Fixes GH-733]
  https://github.com/ruby/ruby/pull/733


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-11 00:33:08 +00:00
nobu 28b9f11d5a protoize no-arguments functions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-30 05:25:32 +00:00
normal 4d10c2b91d ext/socket/*.c: trivial struct packing for 64-bit
* ext/socket/ancdata.c ({send,recv}msg_args_struct): 24 => 16 bytes
* ext/socket/init.c (connect_arg): ditto
* ext/socket/raddrinfo.c (getnameinfo_arg): 56 => 48 bytes

Other big stack reductions are less trivial.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-22 00:46:25 +00:00
normal 7914a8726e socket (rsock_connect): fix and refactor for blocking
* ext/socket/init.c (rsock_connect): refactor for blocking
  (wait_connectable): clear error before wait
  [Bug #9356]

We no longer use non-blocking sockets to emulate blocking behavior,
so eliminate error-prone and confusing platform-dependent code.
According to POSIX, connect() only needs to be called once in the
face of EINTR, so do not loop on it.

Before waiting on connect, drop any pending errors, since
rb_wait_for_single_fd may not clear the existing error
properly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-17 21:20:58 +00:00
normal 48a2b96d2b introduce ZALLOC{,_N} to replace ALLOC{,_N}+MEMZERO use
Using calloc where possible reduces code and binary sizes.

* include/ruby/ruby.h (ZALLOC, ZALLOC_N): implement
  (Data_Make_Struct, TypedData_Make_Struct):
  ZALLOC replaces ALLOC+memset
* compile.c (iseq_seq_sequence): ZALLOC_N replaces ALLOC_N+MEMZERO
* cont.c (fiber_t_alloc): ZALLOC replaces ALLOC+MEMZERO
* io.c (rb_io_reopen): ditto
* iseq.c (prepare_iseq_build): ditto
* parse.y (new_args_tail_gen, parser_new, ripper_s_allocate): ditto
* re.c (match_alloc): ditto
* variable.c (rb_const_set): ditto
* ext/socket/raddrinfo.c (get_addrinfo): ditto
* ext/strscan/strscan.c (strscan_s_allocate): ditto
* gc.c (rb_objspace_alloc): calloc replaces malloc+MEMZERO

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-25 21:34:35 +00:00
charliesome 73ac899b7f * ext/socket/socket.c (sock_gethostname): Use NI_MAXHOST to support
hostnames longer than 64 characters if the system supports it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-25 04:17:50 +00:00
akr eb9f446ebf * ext/socket/unixsocket.c (rsock_init_unixsock): Open a socket
after path length check.
  This fixes a fd leak by TestSocket_UNIXSocket#test_too_long_path.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-28 15:42:09 +00:00
naruse 313fa18033 * ext/socket/ifaddr.c (ifaddr_inspect_flags): support IFF_SIMPLEX.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-27 12:29:19 +00:00
akr b54f42c93f * ext/socket/mkconstants.rb: More constants
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-23 20:54:40 +00:00
akr 35cd72172c * ext/socket/mkconstants.rb: More TCP option constants.
Describe Linux and glibc versions.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-22 14:08:17 +00:00
akr 5b629a7b8a * ext/socket/option.c: Fix complation error on Android.
Bionic doesn't define TCP state constants.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-21 03:22:18 +00:00
akr 7a1972ab9c * ext/socket/extconf.rb: Don't check fields of struct tcp_info if the
structure is not available.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-19 20:00:00 +00:00
akr b9a178e56c * ext/socket/option.c (inspect_tcp_info): Permit longer data. (glibc
2.7 adds tcpi_rcv_rtt, tcpi_rcv_space and tcpi_total_retrans to
  struct tcp_info.)



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-19 14:28:26 +00:00
akr 3aacf88500 * ext/socket/option.c (inspect_tcp_info): New function to inspect struct tcp_info.
(sockopt_inspect): Use inspect_tcp_info.

* ext/socket/extconf.rb: Check tcp_info related things.

* ext/socket/rubysocket.h: Include netinet/tcp_fsm.h if available.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-19 11:52:03 +00:00
akr 543b402f38 * ext/socket/ifaddr.c (IS_IFADDRS): Unused macro removed.
* ext/strscan/strscan.c (BUFSIZE): Ditto.

* ext/zlib/zlib.c (OBJ_IS_FREED): Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-11 16:31:51 +00:00
akr 17a2f1ecc3 * ext/socket/mkconstants.rb: Add IP_TRANSPARENT.
IP_TRANSPARENT is provieded since glibc-2.12.
  Reported by Eliezer Croitoru.  [ruby-core:50372] [Bug #7476]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-05 15:15:20 +00:00
akr 1aa54bebaf * ext/socket/socket.c (sock_s_getnameinfo): Save errno for EAI_SYSTEM.
Reported by Saravana kumar.  [ruby-core:61820] [Bug #9697]
  Fixed by Heesob Park.  [ruby-core:61868]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-07 12:14:29 +00:00
nobu 82eeaadc5d option.c: use rb_w32_inet_pton
* ext/socket/option.c (inet_pton): use rb_w32_inet_pton, instead of
  inet_ntop directly, which is unavailable on older version Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-23 03:18:56 +00:00
nobu 95be5381ec raddrinfo.c: suppress warnings
* ext/socket/raddrinfo.c (numeric_getaddrinfo): move conditionally
  used variables inside the block, to suppress warnings on platforms
  where inet_pton() is not available.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-23 01:29:25 +00:00
akr a6da4b274d Fix a filename.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-22 04:02:43 +00:00
kazu fedc3a4b5f fix second argument of MEMZERO
* ext/socket/raddrinfo.c (rb_getaddrinfo): second argument of
  MEMZERO is type.  Coverity Scan found this bug.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-21 16:04:50 +00:00
shugo 139d06c34f * ext/socket/init.c (wait_connectable): break if the socket is
writable to avoid infinite loops on FreeBSD and other platforms
  which conforms to SUSv3.  This problem cannot be reproduced with
  loopback interfaces, so it's hard to write test code.
  rsock_connect() and wait_connectable() are overly complicated, so
  they should be refactored, but I commit this fix as a workaround
  for the release of Ruby 1.9.3 scheduled on Feb 24.
  [ruby-core:60940] [Bug #9547]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-21 14:59:44 +00:00
normal d691a28d91 socket: sendmsg/recvmsg only retries blocking on errors
* ext/socket/ancdata.c (bsock_sendmsg_internal): only retry on error
  (bsock_recvmsg_internal): ditto
* test/socket/test_unix.rb: test above for infinite loop

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-21 00:55:13 +00:00
akr 81dfa8b397 * ext/socket/raddrinfo.c (numeric_getaddrinfo): Use xcalloc.
Suggested by Eric Wong.
  https://bugs.ruby-lang.org/issues/9525#note-14



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-20 13:22:44 +00:00
akr 2e6b97a45d * ext/socket: Bypass getaddrinfo() if node and serv are numeric.
Reporeted by Naotoshi Seo.  [ruby-core:60801] [Bug #9525]

* ext/socket/extconf.rb: Detect struct sockaddr_in6.sin6_len.

* ext/socket/sockport.h (SET_SIN6_LEN): New macro.
  (INIT_SOCKADDR_IN6): Ditto.

* ext/socket/rubysocket.h (struct rb_addrinfo): Add
  allocated_by_malloc field.

* ext/socket/raddrinfo.c (numeric_getaddrinfo): New function.
  (rb_getaddrinfo): Call numeric_getaddrinfo at first.
  (rb_freeaddrinfo): Free struct addrinfo properly when it is
  allocated by numeric_getaddrinfo.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-19 10:37:43 +00:00
akr dd1c3a7509 * ext/socket: Wrap struct addrinfo by struct rb_addrinfo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-19 09:38:24 +00:00
akr 948ce9decb * ext/socket/ipsocket.c (ip_s_getaddress): Don't access freed memory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-19 08:51:33 +00:00
akr 6f8b0e9bb0 * include/ruby/intern.h,
include/ruby/io.h,
  include/ruby/ruby.h,
  include/ruby/win32.h,
  include/ruby/backward/rubysig.h,
  bignum.c,
  gc.c,
  io.c,
  process.c,
  safe.c,
  struct.c,
  thread.c,
  ext/socket/rubysocket.h,
  ext/-test-/old_thread_select: Remove deprecated definitions
  [ruby-core:60581] [Feature #9502]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-14 15:16:31 +00:00