rubysl-socket 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +70 -16
  3. data/lib/rubysl/socket.rb +201 -1396
  4. data/lib/rubysl/socket/ancillary_data.rb +56 -0
  5. data/lib/rubysl/socket/bsd.rb +28 -0
  6. data/lib/rubysl/socket/error.rb +67 -0
  7. data/lib/rubysl/socket/foreign.rb +324 -0
  8. data/lib/rubysl/socket/foreign/addrinfo.rb +10 -0
  9. data/lib/rubysl/socket/foreign/hostent.rb +36 -0
  10. data/lib/rubysl/socket/foreign/ifaddrs.rb +129 -0
  11. data/lib/rubysl/socket/foreign/iovec.rb +18 -0
  12. data/lib/rubysl/socket/foreign/linger.rb +41 -0
  13. data/lib/rubysl/socket/foreign/msghdr.rb +41 -0
  14. data/lib/rubysl/socket/foreign/servent.rb +17 -0
  15. data/lib/rubysl/socket/foreign/sockaddr.rb +21 -0
  16. data/lib/rubysl/socket/foreign/sockaddr_in.rb +25 -0
  17. data/lib/rubysl/socket/foreign/sockaddr_in6.rb +25 -0
  18. data/lib/rubysl/socket/foreign/sockaddr_un.rb +29 -0
  19. data/lib/rubysl/socket/ipv6.rb +38 -0
  20. data/lib/rubysl/socket/linux.rb +16 -0
  21. data/lib/rubysl/socket/socket_options.rb +84 -0
  22. data/lib/rubysl/socket/version.rb +1 -1
  23. data/lib/socket.rb +45 -1
  24. data/lib/socket/addrinfo.rb +453 -0
  25. data/lib/socket/ancillary_data.rb +114 -0
  26. data/lib/socket/basic_socket.rb +295 -0
  27. data/lib/socket/constants.rb +41 -0
  28. data/lib/socket/ifaddr.rb +29 -0
  29. data/lib/socket/ip_socket.rb +37 -0
  30. data/lib/socket/mri.rb +928 -0
  31. data/lib/socket/option.rb +96 -0
  32. data/lib/socket/socket.rb +353 -0
  33. data/lib/socket/socket_error.rb +2 -0
  34. data/lib/socket/tcp_server.rb +78 -0
  35. data/lib/socket/tcp_socket.rb +109 -0
  36. data/lib/socket/udp_socket.rb +73 -0
  37. data/lib/socket/unix_server.rb +35 -0
  38. data/lib/socket/unix_socket.rb +78 -0
  39. data/rubysl-socket.gemspec +15 -10
  40. metadata +78 -293
  41. data/.gitignore +0 -17
  42. data/.travis.yml +0 -9
  43. data/Gemfile +0 -4
  44. data/Rakefile +0 -1
  45. data/spec/addrinfo/afamily_spec.rb +0 -5
  46. data/spec/addrinfo/bind_spec.rb +0 -5
  47. data/spec/addrinfo/canonname_spec.rb +0 -5
  48. data/spec/addrinfo/connect_from_spec.rb +0 -5
  49. data/spec/addrinfo/connect_spec.rb +0 -5
  50. data/spec/addrinfo/connect_to_spec.rb +0 -5
  51. data/spec/addrinfo/family_addrinfo_spec.rb +0 -5
  52. data/spec/addrinfo/foreach_spec.rb +0 -5
  53. data/spec/addrinfo/getaddrinfo_spec.rb +0 -5
  54. data/spec/addrinfo/getnameinfo_spec.rb +0 -5
  55. data/spec/addrinfo/inspect_sockaddr_spec.rb +0 -5
  56. data/spec/addrinfo/inspect_spec.rb +0 -5
  57. data/spec/addrinfo/ip_address_spec.rb +0 -5
  58. data/spec/addrinfo/ip_port_spec.rb +0 -5
  59. data/spec/addrinfo/ip_spec.rb +0 -9
  60. data/spec/addrinfo/ip_unpack_spec.rb +0 -5
  61. data/spec/addrinfo/ipv4_loopback_spec.rb +0 -5
  62. data/spec/addrinfo/ipv4_multicast_spec.rb +0 -5
  63. data/spec/addrinfo/ipv4_private_spec.rb +0 -5
  64. data/spec/addrinfo/ipv4_spec.rb +0 -5
  65. data/spec/addrinfo/ipv6_linklocal_spec.rb +0 -5
  66. data/spec/addrinfo/ipv6_loopback_spec.rb +0 -5
  67. data/spec/addrinfo/ipv6_mc_global_spec.rb +0 -5
  68. data/spec/addrinfo/ipv6_mc_linklocal_spec.rb +0 -5
  69. data/spec/addrinfo/ipv6_mc_nodelocal_spec.rb +0 -5
  70. data/spec/addrinfo/ipv6_mc_orglocal_spec.rb +0 -5
  71. data/spec/addrinfo/ipv6_mc_sitelocal_spec.rb +0 -5
  72. data/spec/addrinfo/ipv6_multicast_spec.rb +0 -5
  73. data/spec/addrinfo/ipv6_sitelocal_spec.rb +0 -5
  74. data/spec/addrinfo/ipv6_spec.rb +0 -5
  75. data/spec/addrinfo/ipv6_to_ipv4_spec.rb +0 -5
  76. data/spec/addrinfo/ipv6_unspecified_spec.rb +0 -5
  77. data/spec/addrinfo/ipv6_v4compat_spec.rb +0 -5
  78. data/spec/addrinfo/ipv6_v4mapped_spec.rb +0 -5
  79. data/spec/addrinfo/listen_spec.rb +0 -5
  80. data/spec/addrinfo/marshal_dump_spec.rb +0 -5
  81. data/spec/addrinfo/marshal_load_spec.rb +0 -5
  82. data/spec/addrinfo/pfamily_spec.rb +0 -5
  83. data/spec/addrinfo/protocol_spec.rb +0 -5
  84. data/spec/addrinfo/socktype_spec.rb +0 -5
  85. data/spec/addrinfo/tcp_spec.rb +0 -5
  86. data/spec/addrinfo/to_s_spec.rb +0 -5
  87. data/spec/addrinfo/to_sockaddr_spec.rb +0 -5
  88. data/spec/addrinfo/udp_spec.rb +0 -5
  89. data/spec/addrinfo/unix_path_spec.rb +0 -5
  90. data/spec/addrinfo/unix_spec.rb +0 -9
  91. data/spec/basicsocket/close_read_spec.rb +0 -42
  92. data/spec/basicsocket/close_write_spec.rb +0 -42
  93. data/spec/basicsocket/do_not_reverse_lookup_spec.rb +0 -78
  94. data/spec/basicsocket/for_fd_spec.rb +0 -37
  95. data/spec/basicsocket/getpeername_spec.rb +0 -24
  96. data/spec/basicsocket/getsockname_spec.rb +0 -27
  97. data/spec/basicsocket/getsockopt_spec.rb +0 -54
  98. data/spec/basicsocket/ioctl_spec.rb +0 -22
  99. data/spec/basicsocket/recv_nonblock_spec.rb +0 -6
  100. data/spec/basicsocket/recv_spec.rb +0 -76
  101. data/spec/basicsocket/send_spec.rb +0 -81
  102. data/spec/basicsocket/setsockopt_spec.rb +0 -333
  103. data/spec/basicsocket/shutdown_spec.rb +0 -5
  104. data/spec/constants/constants_spec.rb +0 -63
  105. data/spec/fixtures/classes.rb +0 -174
  106. data/spec/fixtures/send_io.txt +0 -1
  107. data/spec/ipsocket/addr_spec.rb +0 -72
  108. data/spec/ipsocket/getaddress_spec.rb +0 -26
  109. data/spec/ipsocket/peeraddr_spec.rb +0 -79
  110. data/spec/ipsocket/recvfrom_spec.rb +0 -64
  111. data/spec/option/int_spec.rb +0 -27
  112. data/spec/option/linger_spec.rb +0 -52
  113. data/spec/option/new_spec.rb +0 -32
  114. data/spec/shared/pack_sockaddr.rb +0 -26
  115. data/spec/shared/partially_closable_sockets.rb +0 -13
  116. data/spec/shared/recv_nonblock.rb +0 -33
  117. data/spec/shared/socketpair.rb +0 -35
  118. data/spec/socket/accept_nonblock_spec.rb +0 -27
  119. data/spec/socket/accept_spec.rb +0 -1
  120. data/spec/socket/bind_spec.rb +0 -80
  121. data/spec/socket/connect_nonblock_spec.rb +0 -62
  122. data/spec/socket/connect_spec.rb +0 -1
  123. data/spec/socket/for_fd_spec.rb +0 -29
  124. data/spec/socket/getaddrinfo_spec.rb +0 -120
  125. data/spec/socket/gethostbyaddr_spec.rb +0 -1
  126. data/spec/socket/gethostbyname_spec.rb +0 -26
  127. data/spec/socket/gethostname_spec.rb +0 -9
  128. data/spec/socket/getnameinfo_spec.rb +0 -57
  129. data/spec/socket/getservbyname_spec.rb +0 -24
  130. data/spec/socket/listen_spec.rb +0 -21
  131. data/spec/socket/new_spec.rb +0 -109
  132. data/spec/socket/pack_sockaddr_in_spec.rb +0 -6
  133. data/spec/socket/pack_sockaddr_un_spec.rb +0 -6
  134. data/spec/socket/pair_spec.rb +0 -6
  135. data/spec/socket/recvfrom_nonblock_spec.rb +0 -1
  136. data/spec/socket/recvfrom_spec.rb +0 -1
  137. data/spec/socket/sockaddr_in_spec.rb +0 -6
  138. data/spec/socket/sockaddr_un_spec.rb +0 -6
  139. data/spec/socket/socket_spec.rb +0 -37
  140. data/spec/socket/socketpair_spec.rb +0 -6
  141. data/spec/socket/sysaccept_spec.rb +0 -1
  142. data/spec/socket/unpack_sockaddr_in_spec.rb +0 -16
  143. data/spec/socket/unpack_sockaddr_un_spec.rb +0 -2
  144. data/spec/tcpserver/accept_nonblock_spec.rb +0 -30
  145. data/spec/tcpserver/accept_spec.rb +0 -60
  146. data/spec/tcpserver/gets_spec.rb +0 -17
  147. data/spec/tcpserver/listen_spec.rb +0 -1
  148. data/spec/tcpserver/new_spec.rb +0 -88
  149. data/spec/tcpserver/output_spec.rb +0 -8
  150. data/spec/tcpserver/readpartial_spec.rb +0 -8
  151. data/spec/tcpserver/sysaccept_spec.rb +0 -1
  152. data/spec/tcpsocket/gethostbyname_spec.rb +0 -62
  153. data/spec/tcpsocket/new_spec.rb +0 -5
  154. data/spec/tcpsocket/open_spec.rb +0 -5
  155. data/spec/tcpsocket/partially_closable_spec.rb +0 -20
  156. data/spec/tcpsocket/recv_nonblock_spec.rb +0 -31
  157. data/spec/tcpsocket/setsockopt_spec.rb +0 -49
  158. data/spec/tcpsocket/shared/new.rb +0 -85
  159. data/spec/udpsocket/bind_spec.rb +0 -33
  160. data/spec/udpsocket/connect_spec.rb +0 -1
  161. data/spec/udpsocket/new_spec.rb +0 -1
  162. data/spec/udpsocket/open_spec.rb +0 -12
  163. data/spec/udpsocket/recvfrom_nonblock_spec.rb +0 -1
  164. data/spec/udpsocket/send_spec.rb +0 -57
  165. data/spec/unixserver/accept_nonblock_spec.rb +0 -33
  166. data/spec/unixserver/accept_spec.rb +0 -64
  167. data/spec/unixserver/for_fd_spec.rb +0 -32
  168. data/spec/unixserver/new_spec.rb +0 -5
  169. data/spec/unixserver/open_spec.rb +0 -25
  170. data/spec/unixserver/shared/new.rb +0 -23
  171. data/spec/unixsocket/addr_spec.rb +0 -37
  172. data/spec/unixsocket/new_spec.rb +0 -5
  173. data/spec/unixsocket/open_spec.rb +0 -26
  174. data/spec/unixsocket/pair_spec.rb +0 -38
  175. data/spec/unixsocket/partially_closable_spec.rb +0 -25
  176. data/spec/unixsocket/path_spec.rb +0 -29
  177. data/spec/unixsocket/peeraddr_spec.rb +0 -29
  178. data/spec/unixsocket/recv_io_spec.rb +0 -40
  179. data/spec/unixsocket/recvfrom_spec.rb +0 -48
  180. data/spec/unixsocket/send_io_spec.rb +0 -30
  181. data/spec/unixsocket/shared/new.rb +0 -25
@@ -0,0 +1,78 @@
1
+ class TCPServer < TCPSocket
2
+ def initialize(host, service = nil)
3
+ @no_reverse_lookup = self.class.do_not_reverse_lookup
4
+
5
+ if host.is_a?(Fixnum) and service.nil?
6
+ service = host
7
+ host = nil
8
+ end
9
+
10
+ if host.is_a?(String) and service.nil?
11
+ begin
12
+ service = Integer(host)
13
+ rescue ArgumentError
14
+ raise SocketError, "invalid port number: #{host}"
15
+ end
16
+
17
+ host = nil
18
+ end
19
+
20
+ unless service.is_a?(Fixnum)
21
+ service = RubySL::Socket.coerce_to_string(service)
22
+ end
23
+
24
+ if host
25
+ host = RubySL::Socket.coerce_to_string(host)
26
+ else
27
+ host = ''
28
+ end
29
+
30
+ remote_addrs = Socket
31
+ .getaddrinfo(host, service, :UNSPEC, :STREAM, 0, Socket::AI_PASSIVE)
32
+
33
+ remote_addrs.each do |addrinfo|
34
+ _, port, address, _, family, socktype, protocol = addrinfo
35
+
36
+ descriptor = RubySL::Socket::Foreign.socket(family, socktype, protocol)
37
+
38
+ next if descriptor < 0
39
+
40
+ status = RubySL::Socket::Foreign
41
+ .bind(descriptor, Socket.sockaddr_in(port, address))
42
+
43
+ if status < 0
44
+ RubySL::Socket::Foreign.close(descriptor)
45
+
46
+ Errno.handle('bind(2)')
47
+ else
48
+ IO.setup(self, descriptor, nil, true)
49
+
50
+ setsockopt(:SOCKET, :REUSEADDR, true)
51
+
52
+ break
53
+ end
54
+ end
55
+
56
+ listen(5)
57
+ end
58
+
59
+ def listen(backlog)
60
+ RubySL::Socket.listen(self, backlog)
61
+ end
62
+
63
+ def accept
64
+ socket, _ = RubySL::Socket.accept(self, TCPSocket)
65
+
66
+ socket
67
+ end
68
+
69
+ def accept_nonblock
70
+ socket, _ = RubySL::Socket.accept_nonblock(self, TCPSocket)
71
+
72
+ socket
73
+ end
74
+
75
+ def sysaccept
76
+ accept.fileno
77
+ end
78
+ end
@@ -0,0 +1,109 @@
1
+ class TCPSocket < IPSocket
2
+ def self.gethostbyname(hostname)
3
+ addrinfos = Socket
4
+ .getaddrinfo(hostname, nil, nil, :STREAM, nil, Socket::AI_CANONNAME)
5
+
6
+ hostname = addrinfos[0][2]
7
+ family = addrinfos[0][4]
8
+ addresses = addrinfos.map { |a| a[3] }
9
+ alternatives = []
10
+
11
+ RubySL::Socket.aliases_for_hostname(hostname).each do |name|
12
+ alternatives << name unless name == hostname
13
+ end
14
+
15
+ [hostname, alternatives, family, *addresses]
16
+ end
17
+
18
+ def initialize(host, service, local_host = nil, local_service = nil)
19
+ @no_reverse_lookup = self.class.do_not_reverse_lookup
20
+
21
+ if host
22
+ host = RubySL::Socket.coerce_to_string(host)
23
+ end
24
+
25
+ if service.is_a?(Fixnum)
26
+ service = service.to_s
27
+ else
28
+ service = RubySL::Socket.coerce_to_string(service)
29
+ end
30
+
31
+ local_addrinfo = nil
32
+
33
+ # When a local address and/or service/port are given we should bind the
34
+ # socket to said address (besides also connecting to the remote address).
35
+ if local_host or local_service
36
+ if local_host
37
+ local_host = RubySL::Socket.coerce_to_string(local_host)
38
+ end
39
+
40
+ if local_service.is_a?(Fixnum)
41
+ local_service = local_service.to_s
42
+ elsif local_service
43
+ local_service = RubySL::Socket.coerce_to_string(local_service)
44
+ end
45
+
46
+ local_addrinfo = Socket
47
+ .getaddrinfo(local_host, local_service, :UNSPEC, :STREAM)
48
+ end
49
+
50
+ descriptor = nil
51
+ connect_status = 0
52
+
53
+ # Because we don't know exactly what address family to bind to we'll just
54
+ # grab all the available ones and try every one of them, bailing out on the
55
+ # first address that we can connect to.
56
+ #
57
+ # This code is loosely based on the behaviour of CRuby's
58
+ # "init_inetsock_internal()" function as of Ruby 2.2.
59
+ Socket.getaddrinfo(host, service, :UNSPEC, :STREAM).each do |addrinfo|
60
+ _, port, address, _, family, socktype, protocol = addrinfo
61
+
62
+ descriptor = RubySL::Socket::Foreign.socket(family, socktype, protocol)
63
+
64
+ next if descriptor < 0
65
+
66
+ # If any local address details were given we should bind to one that
67
+ # matches the remote address connected to above.
68
+ if local_addrinfo
69
+ local_info = local_addrinfo.find do |addr|
70
+ addr[4] == family && addr[5] == socktype
71
+ end
72
+
73
+ if local_info
74
+ status = RubySL::Socket::Foreign
75
+ .bind(descriptor, Socket.sockaddr_in(local_info[1], local_info[2]))
76
+
77
+ Errno.handle('bind(2)') if status < 0
78
+ end
79
+ end
80
+
81
+ connect_status = RubySL::Socket::Foreign
82
+ .connect(descriptor, Socket.sockaddr_in(port, address))
83
+
84
+ break if connect_status >= 0
85
+ end
86
+
87
+ if connect_status < 0
88
+ RubySL::Socket::Foreign.close(descriptor)
89
+
90
+ Errno.handle('connect(2)')
91
+ else
92
+ IO.setup(self, descriptor, nil, true)
93
+ end
94
+ end
95
+
96
+ def local_address
97
+ address = addr
98
+ sockaddr = Socket.pack_sockaddr_in(address[1], address[3])
99
+
100
+ Addrinfo.new(sockaddr, address[0], :STREAM)
101
+ end
102
+
103
+ def remote_address
104
+ address = peeraddr
105
+ sockaddr = Socket.pack_sockaddr_in(address[1], address[3])
106
+
107
+ Addrinfo.new(sockaddr, address[0], :STREAM)
108
+ end
109
+ end
@@ -0,0 +1,73 @@
1
+ class UDPSocket < IPSocket
2
+ def initialize(family = Socket::AF_INET)
3
+ @no_reverse_lookup = self.class.do_not_reverse_lookup
4
+ @family = RubySL::Socket.address_family(family)
5
+
6
+ descriptor = RubySL::Socket::Foreign
7
+ .socket(@family, Socket::SOCK_DGRAM, Socket::IPPROTO_UDP)
8
+
9
+ Errno.handle('socket(2)') if descriptor < 0
10
+
11
+ IO.setup(self, descriptor, nil, true)
12
+ end
13
+
14
+ def bind(host, port)
15
+ addr = Socket.sockaddr_in(port.to_i, host)
16
+ status = RubySL::Socket::Foreign.bind(descriptor, addr)
17
+
18
+ Errno.handle('bind(2)') if status < 0
19
+
20
+ 0
21
+ end
22
+
23
+ def connect(host, port)
24
+ sockaddr = RubySL::Socket::Foreign
25
+ .pack_sockaddr_in(host, port.to_i, @family, Socket::SOCK_DGRAM, 0)
26
+
27
+ status = RubySL::Socket::Foreign.connect(descriptor, sockaddr)
28
+
29
+ RubySL::Socket::Error.write_error('connect(2)', self) if status < 0
30
+
31
+ 0
32
+ end
33
+
34
+ def send(message, flags, host = nil, port = nil)
35
+ if host and port
36
+ addr = Socket.sockaddr_in(port.to_i, host)
37
+ elsif host
38
+ addr = host
39
+ else
40
+ addr = nil
41
+ end
42
+
43
+ super(message, flags, addr)
44
+ end
45
+
46
+ def recvfrom_nonblock(maxlen, flags = 0)
47
+ fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
48
+
49
+ flags = 0 if flags.nil?
50
+
51
+ flags |= Socket::MSG_DONTWAIT
52
+
53
+ recvfrom(maxlen, flags)
54
+ end
55
+
56
+ def inspect
57
+ "#<#{self.class}:fd #{fileno}>"
58
+ end
59
+
60
+ def local_address
61
+ address = addr
62
+ sockaddr = Socket.pack_sockaddr_in(address[1], address[3])
63
+
64
+ Addrinfo.new(sockaddr, address[0], :DGRAM)
65
+ end
66
+
67
+ def remote_address
68
+ address = peeraddr
69
+ sockaddr = Socket.pack_sockaddr_in(address[1], address[3])
70
+
71
+ Addrinfo.new(sockaddr, address[0], :DGRAM)
72
+ end
73
+ end
@@ -0,0 +1,35 @@
1
+ class UNIXServer < UNIXSocket
2
+ def initialize(path)
3
+ @no_reverse_lookup = self.class.do_not_reverse_lookup
4
+ @path = path
5
+
6
+ fd = RubySL::Socket::Foreign.socket(Socket::AF_UNIX, Socket::SOCK_STREAM, 0)
7
+
8
+ Errno.handle('socket(2)') if fd < 0
9
+
10
+ IO.setup(self, fd, 'r+', true)
11
+
12
+ sockaddr = Socket.sockaddr_un(@path)
13
+ status = RubySL::Socket::Foreign.bind(descriptor, sockaddr)
14
+
15
+ Errno.handle('bind(2)') if status < 0
16
+
17
+ listen(Socket::SOMAXCONN)
18
+ end
19
+
20
+ def listen(backlog)
21
+ RubySL::Socket.listen(self, backlog)
22
+ end
23
+
24
+ def accept
25
+ RubySL::Socket.accept(self, UNIXSocket)[0]
26
+ end
27
+
28
+ def accept_nonblock
29
+ RubySL::Socket.accept_nonblock(self, UNIXSocket)[0]
30
+ end
31
+
32
+ def sysaccept
33
+ accept.fileno
34
+ end
35
+ end
@@ -0,0 +1,78 @@
1
+ class UNIXSocket < BasicSocket
2
+ include IO::TransferIO
3
+
4
+ def self.socketpair(type = Socket::SOCK_STREAM, protocol = 0)
5
+ family = Socket::AF_UNIX
6
+ type = RubySL::Socket.socket_type(type)
7
+
8
+ fd0, fd1 = RubySL::Socket::Foreign.socketpair(family, type, protocol)
9
+
10
+ [for_fd(fd0), for_fd(fd1)]
11
+ end
12
+
13
+ class << self
14
+ alias_method :pair, :socketpair
15
+ end
16
+
17
+ def initialize(path)
18
+ @no_reverse_lookup = self.class.do_not_reverse_lookup
19
+ @path = '' # empty for client sockets
20
+
21
+ fd = RubySL::Socket::Foreign.socket(Socket::AF_UNIX, Socket::SOCK_STREAM, 0)
22
+
23
+ Errno.handle('socket(2)') if fd < 0
24
+
25
+ IO.setup(self, fd, 'r+', true)
26
+
27
+ sockaddr = Socket.sockaddr_un(path)
28
+ status = RubySL::Socket::Foreign.connect(descriptor, sockaddr)
29
+
30
+ Errno.handle('connect(2)') if status < 0
31
+ end
32
+
33
+ def recvfrom(bytes_read, flags = 0)
34
+ socket_recv(bytes_read, flags, 2)
35
+ end
36
+
37
+ def path
38
+ @path ||= RubySL::Socket::Foreign.getsockname(descriptor).unpack('SZ*')[1]
39
+ end
40
+
41
+ def addr
42
+ ['AF_UNIX', path]
43
+ end
44
+
45
+ def peeraddr
46
+ path = RubySL::Socket::Foreign.getpeername(descriptor).unpack('SZ*')[1]
47
+
48
+ ['AF_UNIX', path]
49
+ end
50
+
51
+ def recv_io(klass = IO, mode = nil)
52
+ begin
53
+ fd = recv_fd
54
+ rescue PrimitiveFailure
55
+ raise SocketError, "file descriptor was not passed"
56
+ end
57
+
58
+ return fd unless klass
59
+
60
+ if klass.is_a?(BasicSocket)
61
+ klass.for_fd(fd)
62
+ else
63
+ klass.for_fd(fd, mode)
64
+ end
65
+ end
66
+
67
+ def local_address
68
+ address = addr
69
+
70
+ Addrinfo.new(Socket.pack_sockaddr_un(address[1]), :UNIX, :STREAM)
71
+ end
72
+
73
+ def remote_address
74
+ address = peeraddr
75
+
76
+ Addrinfo.new(Socket.pack_sockaddr_un(address[1]), :UNIX, :STREAM)
77
+ end
78
+ end
@@ -4,22 +4,27 @@ require './lib/rubysl/socket/version'
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "rubysl-socket"
6
6
  spec.version = RubySL::Socket::VERSION
7
- spec.authors = ["Brian Shirai"]
8
- spec.email = ["brixen@gmail.com"]
9
- spec.description = %q{Ruby standard library socket.}
10
- spec.summary = %q{Ruby standard library socket.}
7
+ spec.authors = ["Brian Shirai", "Yorick Peterse"]
8
+ spec.email = ["brixen@gmail.com", "yorickpeterse@gmail.com"]
9
+ spec.description = %q{Socket standard library for Rubinius.}
10
+ spec.summary = %q{Socket standard library for Rubinius.}
11
11
  spec.homepage = "https://github.com/rubysl/rubysl-socket"
12
12
  spec.license = "BSD"
13
13
 
14
- spec.files = `git ls-files`.split($/)
15
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
- spec.require_paths = ["lib"]
14
+ spec.files = Dir.glob([
15
+ 'lib/**/*.*',
16
+ 'LICENSE',
17
+ 'README.md',
18
+ 'rubysl-socket.gemspec'
19
+ ])
18
20
 
19
- spec.required_ruby_version = "~> 2.0"
21
+ spec.required_ruby_version = '~> 2.0'
22
+
23
+ spec.add_dependency 'rubysl-fcntl', '~> 2.0'
20
24
 
21
25
  spec.add_development_dependency "bundler", "~> 1.3"
22
26
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "mspec", "~> 1.5"
27
+ spec.add_development_dependency "mspec", "~> 1.9"
24
28
  spec.add_development_dependency "rubysl-prettyprint", "~> 2.0"
29
+ spec.add_development_dependency "rubysl-ipaddr", "~> 2.0"
25
30
  end
metadata CHANGED
@@ -1,225 +1,147 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysl-socket
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Shirai
8
+ - Yorick Peterse
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-10-14 00:00:00.000000000 Z
12
+ date: 2016-01-08 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ name: rubysl-fcntl
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ type: :runtime
28
+ - !ruby/object:Gem::Dependency
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
33
  version: '1.3'
20
- type: :development
34
+ name: bundler
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
40
  version: '1.3'
41
+ type: :development
27
42
  - !ruby/object:Gem::Dependency
28
- name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
47
  version: '10.0'
34
- type: :development
48
+ name: rake
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '10.0'
55
+ type: :development
41
56
  - !ruby/object:Gem::Dependency
42
- name: mspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.5'
48
- type: :development
61
+ version: '1.9'
62
+ name: mspec
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.5'
68
+ version: '1.9'
69
+ type: :development
55
70
  - !ruby/object:Gem::Dependency
56
- name: rubysl-prettyprint
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
75
  version: '2.0'
76
+ name: rubysl-prettyprint
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.0'
62
83
  type: :development
84
+ - !ruby/object:Gem::Dependency
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
90
+ name: rubysl-ipaddr
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
96
  version: '2.0'
69
- description: Ruby standard library socket.
97
+ type: :development
98
+ description: Socket standard library for Rubinius.
70
99
  email:
71
100
  - brixen@gmail.com
101
+ - yorickpeterse@gmail.com
72
102
  executables: []
73
103
  extensions: []
74
104
  extra_rdoc_files: []
75
105
  files:
76
- - ".gitignore"
77
- - ".travis.yml"
78
- - Gemfile
79
106
  - LICENSE
80
107
  - README.md
81
- - Rakefile
82
108
  - lib/rubysl/socket.rb
109
+ - lib/rubysl/socket/ancillary_data.rb
110
+ - lib/rubysl/socket/bsd.rb
111
+ - lib/rubysl/socket/error.rb
112
+ - lib/rubysl/socket/foreign.rb
113
+ - lib/rubysl/socket/foreign/addrinfo.rb
114
+ - lib/rubysl/socket/foreign/hostent.rb
115
+ - lib/rubysl/socket/foreign/ifaddrs.rb
116
+ - lib/rubysl/socket/foreign/iovec.rb
117
+ - lib/rubysl/socket/foreign/linger.rb
118
+ - lib/rubysl/socket/foreign/msghdr.rb
119
+ - lib/rubysl/socket/foreign/servent.rb
120
+ - lib/rubysl/socket/foreign/sockaddr.rb
121
+ - lib/rubysl/socket/foreign/sockaddr_in.rb
122
+ - lib/rubysl/socket/foreign/sockaddr_in6.rb
123
+ - lib/rubysl/socket/foreign/sockaddr_un.rb
124
+ - lib/rubysl/socket/ipv6.rb
125
+ - lib/rubysl/socket/linux.rb
126
+ - lib/rubysl/socket/socket_options.rb
83
127
  - lib/rubysl/socket/version.rb
84
128
  - lib/socket.rb
129
+ - lib/socket/addrinfo.rb
130
+ - lib/socket/ancillary_data.rb
131
+ - lib/socket/basic_socket.rb
132
+ - lib/socket/constants.rb
133
+ - lib/socket/ifaddr.rb
134
+ - lib/socket/ip_socket.rb
135
+ - lib/socket/mri.rb
136
+ - lib/socket/option.rb
137
+ - lib/socket/socket.rb
138
+ - lib/socket/socket_error.rb
139
+ - lib/socket/tcp_server.rb
140
+ - lib/socket/tcp_socket.rb
141
+ - lib/socket/udp_socket.rb
142
+ - lib/socket/unix_server.rb
143
+ - lib/socket/unix_socket.rb
85
144
  - rubysl-socket.gemspec
86
- - spec/addrinfo/afamily_spec.rb
87
- - spec/addrinfo/bind_spec.rb
88
- - spec/addrinfo/canonname_spec.rb
89
- - spec/addrinfo/connect_from_spec.rb
90
- - spec/addrinfo/connect_spec.rb
91
- - spec/addrinfo/connect_to_spec.rb
92
- - spec/addrinfo/family_addrinfo_spec.rb
93
- - spec/addrinfo/foreach_spec.rb
94
- - spec/addrinfo/getaddrinfo_spec.rb
95
- - spec/addrinfo/getnameinfo_spec.rb
96
- - spec/addrinfo/inspect_sockaddr_spec.rb
97
- - spec/addrinfo/inspect_spec.rb
98
- - spec/addrinfo/ip_address_spec.rb
99
- - spec/addrinfo/ip_port_spec.rb
100
- - spec/addrinfo/ip_spec.rb
101
- - spec/addrinfo/ip_unpack_spec.rb
102
- - spec/addrinfo/ipv4_loopback_spec.rb
103
- - spec/addrinfo/ipv4_multicast_spec.rb
104
- - spec/addrinfo/ipv4_private_spec.rb
105
- - spec/addrinfo/ipv4_spec.rb
106
- - spec/addrinfo/ipv6_linklocal_spec.rb
107
- - spec/addrinfo/ipv6_loopback_spec.rb
108
- - spec/addrinfo/ipv6_mc_global_spec.rb
109
- - spec/addrinfo/ipv6_mc_linklocal_spec.rb
110
- - spec/addrinfo/ipv6_mc_nodelocal_spec.rb
111
- - spec/addrinfo/ipv6_mc_orglocal_spec.rb
112
- - spec/addrinfo/ipv6_mc_sitelocal_spec.rb
113
- - spec/addrinfo/ipv6_multicast_spec.rb
114
- - spec/addrinfo/ipv6_sitelocal_spec.rb
115
- - spec/addrinfo/ipv6_spec.rb
116
- - spec/addrinfo/ipv6_to_ipv4_spec.rb
117
- - spec/addrinfo/ipv6_unspecified_spec.rb
118
- - spec/addrinfo/ipv6_v4compat_spec.rb
119
- - spec/addrinfo/ipv6_v4mapped_spec.rb
120
- - spec/addrinfo/listen_spec.rb
121
- - spec/addrinfo/marshal_dump_spec.rb
122
- - spec/addrinfo/marshal_load_spec.rb
123
- - spec/addrinfo/pfamily_spec.rb
124
- - spec/addrinfo/protocol_spec.rb
125
- - spec/addrinfo/socktype_spec.rb
126
- - spec/addrinfo/tcp_spec.rb
127
- - spec/addrinfo/to_s_spec.rb
128
- - spec/addrinfo/to_sockaddr_spec.rb
129
- - spec/addrinfo/udp_spec.rb
130
- - spec/addrinfo/unix_path_spec.rb
131
- - spec/addrinfo/unix_spec.rb
132
- - spec/basicsocket/close_read_spec.rb
133
- - spec/basicsocket/close_write_spec.rb
134
- - spec/basicsocket/do_not_reverse_lookup_spec.rb
135
- - spec/basicsocket/for_fd_spec.rb
136
- - spec/basicsocket/getpeername_spec.rb
137
- - spec/basicsocket/getsockname_spec.rb
138
- - spec/basicsocket/getsockopt_spec.rb
139
- - spec/basicsocket/ioctl_spec.rb
140
- - spec/basicsocket/recv_nonblock_spec.rb
141
- - spec/basicsocket/recv_spec.rb
142
- - spec/basicsocket/send_spec.rb
143
- - spec/basicsocket/setsockopt_spec.rb
144
- - spec/basicsocket/shutdown_spec.rb
145
- - spec/constants/constants_spec.rb
146
- - spec/fixtures/classes.rb
147
- - spec/fixtures/send_io.txt
148
- - spec/ipsocket/addr_spec.rb
149
- - spec/ipsocket/getaddress_spec.rb
150
- - spec/ipsocket/peeraddr_spec.rb
151
- - spec/ipsocket/recvfrom_spec.rb
152
- - spec/option/int_spec.rb
153
- - spec/option/linger_spec.rb
154
- - spec/option/new_spec.rb
155
- - spec/shared/pack_sockaddr.rb
156
- - spec/shared/partially_closable_sockets.rb
157
- - spec/shared/recv_nonblock.rb
158
- - spec/shared/socketpair.rb
159
- - spec/socket/accept_nonblock_spec.rb
160
- - spec/socket/accept_spec.rb
161
- - spec/socket/bind_spec.rb
162
- - spec/socket/connect_nonblock_spec.rb
163
- - spec/socket/connect_spec.rb
164
- - spec/socket/for_fd_spec.rb
165
- - spec/socket/getaddrinfo_spec.rb
166
- - spec/socket/gethostbyaddr_spec.rb
167
- - spec/socket/gethostbyname_spec.rb
168
- - spec/socket/gethostname_spec.rb
169
- - spec/socket/getnameinfo_spec.rb
170
- - spec/socket/getservbyname_spec.rb
171
- - spec/socket/listen_spec.rb
172
- - spec/socket/new_spec.rb
173
- - spec/socket/pack_sockaddr_in_spec.rb
174
- - spec/socket/pack_sockaddr_un_spec.rb
175
- - spec/socket/pair_spec.rb
176
- - spec/socket/recvfrom_nonblock_spec.rb
177
- - spec/socket/recvfrom_spec.rb
178
- - spec/socket/sockaddr_in_spec.rb
179
- - spec/socket/sockaddr_un_spec.rb
180
- - spec/socket/socket_spec.rb
181
- - spec/socket/socketpair_spec.rb
182
- - spec/socket/sysaccept_spec.rb
183
- - spec/socket/unpack_sockaddr_in_spec.rb
184
- - spec/socket/unpack_sockaddr_un_spec.rb
185
- - spec/tcpserver/accept_nonblock_spec.rb
186
- - spec/tcpserver/accept_spec.rb
187
- - spec/tcpserver/gets_spec.rb
188
- - spec/tcpserver/listen_spec.rb
189
- - spec/tcpserver/new_spec.rb
190
- - spec/tcpserver/output_spec.rb
191
- - spec/tcpserver/readpartial_spec.rb
192
- - spec/tcpserver/sysaccept_spec.rb
193
- - spec/tcpsocket/gethostbyname_spec.rb
194
- - spec/tcpsocket/new_spec.rb
195
- - spec/tcpsocket/open_spec.rb
196
- - spec/tcpsocket/partially_closable_spec.rb
197
- - spec/tcpsocket/recv_nonblock_spec.rb
198
- - spec/tcpsocket/setsockopt_spec.rb
199
- - spec/tcpsocket/shared/new.rb
200
- - spec/udpsocket/bind_spec.rb
201
- - spec/udpsocket/connect_spec.rb
202
- - spec/udpsocket/new_spec.rb
203
- - spec/udpsocket/open_spec.rb
204
- - spec/udpsocket/recvfrom_nonblock_spec.rb
205
- - spec/udpsocket/send_spec.rb
206
- - spec/unixserver/accept_nonblock_spec.rb
207
- - spec/unixserver/accept_spec.rb
208
- - spec/unixserver/for_fd_spec.rb
209
- - spec/unixserver/new_spec.rb
210
- - spec/unixserver/open_spec.rb
211
- - spec/unixserver/shared/new.rb
212
- - spec/unixsocket/addr_spec.rb
213
- - spec/unixsocket/new_spec.rb
214
- - spec/unixsocket/open_spec.rb
215
- - spec/unixsocket/pair_spec.rb
216
- - spec/unixsocket/partially_closable_spec.rb
217
- - spec/unixsocket/path_spec.rb
218
- - spec/unixsocket/peeraddr_spec.rb
219
- - spec/unixsocket/recv_io_spec.rb
220
- - spec/unixsocket/recvfrom_spec.rb
221
- - spec/unixsocket/send_io_spec.rb
222
- - spec/unixsocket/shared/new.rb
223
145
  homepage: https://github.com/rubysl/rubysl-socket
224
146
  licenses:
225
147
  - BSD
@@ -240,146 +162,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
240
162
  version: '0'
241
163
  requirements: []
242
164
  rubyforge_project:
243
- rubygems_version: 2.0.7
165
+ rubygems_version: 2.5.1
244
166
  signing_key:
245
167
  specification_version: 4
246
- summary: Ruby standard library socket.
247
- test_files:
248
- - spec/addrinfo/afamily_spec.rb
249
- - spec/addrinfo/bind_spec.rb
250
- - spec/addrinfo/canonname_spec.rb
251
- - spec/addrinfo/connect_from_spec.rb
252
- - spec/addrinfo/connect_spec.rb
253
- - spec/addrinfo/connect_to_spec.rb
254
- - spec/addrinfo/family_addrinfo_spec.rb
255
- - spec/addrinfo/foreach_spec.rb
256
- - spec/addrinfo/getaddrinfo_spec.rb
257
- - spec/addrinfo/getnameinfo_spec.rb
258
- - spec/addrinfo/inspect_sockaddr_spec.rb
259
- - spec/addrinfo/inspect_spec.rb
260
- - spec/addrinfo/ip_address_spec.rb
261
- - spec/addrinfo/ip_port_spec.rb
262
- - spec/addrinfo/ip_spec.rb
263
- - spec/addrinfo/ip_unpack_spec.rb
264
- - spec/addrinfo/ipv4_loopback_spec.rb
265
- - spec/addrinfo/ipv4_multicast_spec.rb
266
- - spec/addrinfo/ipv4_private_spec.rb
267
- - spec/addrinfo/ipv4_spec.rb
268
- - spec/addrinfo/ipv6_linklocal_spec.rb
269
- - spec/addrinfo/ipv6_loopback_spec.rb
270
- - spec/addrinfo/ipv6_mc_global_spec.rb
271
- - spec/addrinfo/ipv6_mc_linklocal_spec.rb
272
- - spec/addrinfo/ipv6_mc_nodelocal_spec.rb
273
- - spec/addrinfo/ipv6_mc_orglocal_spec.rb
274
- - spec/addrinfo/ipv6_mc_sitelocal_spec.rb
275
- - spec/addrinfo/ipv6_multicast_spec.rb
276
- - spec/addrinfo/ipv6_sitelocal_spec.rb
277
- - spec/addrinfo/ipv6_spec.rb
278
- - spec/addrinfo/ipv6_to_ipv4_spec.rb
279
- - spec/addrinfo/ipv6_unspecified_spec.rb
280
- - spec/addrinfo/ipv6_v4compat_spec.rb
281
- - spec/addrinfo/ipv6_v4mapped_spec.rb
282
- - spec/addrinfo/listen_spec.rb
283
- - spec/addrinfo/marshal_dump_spec.rb
284
- - spec/addrinfo/marshal_load_spec.rb
285
- - spec/addrinfo/pfamily_spec.rb
286
- - spec/addrinfo/protocol_spec.rb
287
- - spec/addrinfo/socktype_spec.rb
288
- - spec/addrinfo/tcp_spec.rb
289
- - spec/addrinfo/to_s_spec.rb
290
- - spec/addrinfo/to_sockaddr_spec.rb
291
- - spec/addrinfo/udp_spec.rb
292
- - spec/addrinfo/unix_path_spec.rb
293
- - spec/addrinfo/unix_spec.rb
294
- - spec/basicsocket/close_read_spec.rb
295
- - spec/basicsocket/close_write_spec.rb
296
- - spec/basicsocket/do_not_reverse_lookup_spec.rb
297
- - spec/basicsocket/for_fd_spec.rb
298
- - spec/basicsocket/getpeername_spec.rb
299
- - spec/basicsocket/getsockname_spec.rb
300
- - spec/basicsocket/getsockopt_spec.rb
301
- - spec/basicsocket/ioctl_spec.rb
302
- - spec/basicsocket/recv_nonblock_spec.rb
303
- - spec/basicsocket/recv_spec.rb
304
- - spec/basicsocket/send_spec.rb
305
- - spec/basicsocket/setsockopt_spec.rb
306
- - spec/basicsocket/shutdown_spec.rb
307
- - spec/constants/constants_spec.rb
308
- - spec/fixtures/classes.rb
309
- - spec/fixtures/send_io.txt
310
- - spec/ipsocket/addr_spec.rb
311
- - spec/ipsocket/getaddress_spec.rb
312
- - spec/ipsocket/peeraddr_spec.rb
313
- - spec/ipsocket/recvfrom_spec.rb
314
- - spec/option/int_spec.rb
315
- - spec/option/linger_spec.rb
316
- - spec/option/new_spec.rb
317
- - spec/shared/pack_sockaddr.rb
318
- - spec/shared/partially_closable_sockets.rb
319
- - spec/shared/recv_nonblock.rb
320
- - spec/shared/socketpair.rb
321
- - spec/socket/accept_nonblock_spec.rb
322
- - spec/socket/accept_spec.rb
323
- - spec/socket/bind_spec.rb
324
- - spec/socket/connect_nonblock_spec.rb
325
- - spec/socket/connect_spec.rb
326
- - spec/socket/for_fd_spec.rb
327
- - spec/socket/getaddrinfo_spec.rb
328
- - spec/socket/gethostbyaddr_spec.rb
329
- - spec/socket/gethostbyname_spec.rb
330
- - spec/socket/gethostname_spec.rb
331
- - spec/socket/getnameinfo_spec.rb
332
- - spec/socket/getservbyname_spec.rb
333
- - spec/socket/listen_spec.rb
334
- - spec/socket/new_spec.rb
335
- - spec/socket/pack_sockaddr_in_spec.rb
336
- - spec/socket/pack_sockaddr_un_spec.rb
337
- - spec/socket/pair_spec.rb
338
- - spec/socket/recvfrom_nonblock_spec.rb
339
- - spec/socket/recvfrom_spec.rb
340
- - spec/socket/sockaddr_in_spec.rb
341
- - spec/socket/sockaddr_un_spec.rb
342
- - spec/socket/socket_spec.rb
343
- - spec/socket/socketpair_spec.rb
344
- - spec/socket/sysaccept_spec.rb
345
- - spec/socket/unpack_sockaddr_in_spec.rb
346
- - spec/socket/unpack_sockaddr_un_spec.rb
347
- - spec/tcpserver/accept_nonblock_spec.rb
348
- - spec/tcpserver/accept_spec.rb
349
- - spec/tcpserver/gets_spec.rb
350
- - spec/tcpserver/listen_spec.rb
351
- - spec/tcpserver/new_spec.rb
352
- - spec/tcpserver/output_spec.rb
353
- - spec/tcpserver/readpartial_spec.rb
354
- - spec/tcpserver/sysaccept_spec.rb
355
- - spec/tcpsocket/gethostbyname_spec.rb
356
- - spec/tcpsocket/new_spec.rb
357
- - spec/tcpsocket/open_spec.rb
358
- - spec/tcpsocket/partially_closable_spec.rb
359
- - spec/tcpsocket/recv_nonblock_spec.rb
360
- - spec/tcpsocket/setsockopt_spec.rb
361
- - spec/tcpsocket/shared/new.rb
362
- - spec/udpsocket/bind_spec.rb
363
- - spec/udpsocket/connect_spec.rb
364
- - spec/udpsocket/new_spec.rb
365
- - spec/udpsocket/open_spec.rb
366
- - spec/udpsocket/recvfrom_nonblock_spec.rb
367
- - spec/udpsocket/send_spec.rb
368
- - spec/unixserver/accept_nonblock_spec.rb
369
- - spec/unixserver/accept_spec.rb
370
- - spec/unixserver/for_fd_spec.rb
371
- - spec/unixserver/new_spec.rb
372
- - spec/unixserver/open_spec.rb
373
- - spec/unixserver/shared/new.rb
374
- - spec/unixsocket/addr_spec.rb
375
- - spec/unixsocket/new_spec.rb
376
- - spec/unixsocket/open_spec.rb
377
- - spec/unixsocket/pair_spec.rb
378
- - spec/unixsocket/partially_closable_spec.rb
379
- - spec/unixsocket/path_spec.rb
380
- - spec/unixsocket/peeraddr_spec.rb
381
- - spec/unixsocket/recv_io_spec.rb
382
- - spec/unixsocket/recvfrom_spec.rb
383
- - spec/unixsocket/send_io_spec.rb
384
- - spec/unixsocket/shared/new.rb
168
+ summary: Socket standard library for Rubinius.
169
+ test_files: []
385
170
  has_rdoc: