yahns 1.10.0 → 1.11.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.
- checksums.yaml +4 -4
- data/Documentation/yahns.txt +5 -1
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/NEWS +16 -0
- data/README +3 -5
- data/lib/yahns/openssl_client.rb +19 -8
- data/lib/yahns/version.rb +1 -1
- data/lib/yahns/wbuf.rb +1 -1
- data/man/yahns.1 +5 -1
- data/test/test_server.rb +8 -3
- data/test/test_wbuf.rb +11 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 147b339e7cb3eec02dc6e6e482fe8a08bf5d2ad0
|
4
|
+
data.tar.gz: 56e54e9e277aaa32b642a6f7680d5b899ed208d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8427b2bdb6a6ae2d0b8bfd445b6bac230cf40e0675d43365e689896aac769d0cafd201a61215ab1075a91e7e8e09ef6797ae7ae9132ae1da20c48f199350622
|
7
|
+
data.tar.gz: 9e015af7565846e6a913d02fed38ff7ebc040779acb53caf6a7fd417c31e9ebe3a054105ecf1c3a19e9671b7ba7d08ecfe53a20adf15fa1fa26cc46fdded23c4
|
data/Documentation/yahns.txt
CHANGED
@@ -49,6 +49,10 @@ environment variables will also affect it.
|
|
49
49
|
yahns will update the PWD (current working directory) env if the
|
50
50
|
working_directory directive is set (see yahns_config(5)).
|
51
51
|
|
52
|
+
LISTEN_FDS and LISTEN_PID variables are used in our emulation
|
53
|
+
of sd_listen_fds(3) function. See sd_listen_fds(3) manpage
|
54
|
+
for more details.
|
55
|
+
|
52
56
|
# FILES
|
53
57
|
|
54
58
|
See yahns_config(5) for documentation on the configuration file format.
|
@@ -65,4 +69,4 @@ License: GPLv3 or later <http://www.gnu.org/licenses/gpl-3.0.txt>
|
|
65
69
|
|
66
70
|
# SEE ALSO
|
67
71
|
|
68
|
-
yahns-rackup(1), yahns_config(5)
|
72
|
+
yahns-rackup(1), yahns_config(5), sd_listen_fds(3)
|
data/GIT-VERSION-FILE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = 1.
|
1
|
+
VERSION = 1.11.0
|
data/GIT-VERSION-GEN
CHANGED
data/NEWS
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== yahns 1.11.0 - more minor updates / 2015-12-13 02:20 UTC
|
2
|
+
|
3
|
+
There's some minor test case fixes and documentation updates.
|
4
|
+
|
5
|
+
For OpenSSL users running the Ruby 2.3.0 preview releases,
|
6
|
+
we now use `exception: false' for for accept_nonblock to reduce
|
7
|
+
exceptions. Non-SSL I/O still uses kgio for now.
|
8
|
+
|
9
|
+
6 changes since 1.10.0:
|
10
|
+
wbuf: fix typo in bug check for sendfile gem
|
11
|
+
test_wbuf: deal with proper zero-copy for Unix sockets
|
12
|
+
README: clarify and update copyright year
|
13
|
+
doc: document and reference sd_listen_fds(3) behavior
|
14
|
+
test_server: fix race condition in hooks test
|
15
|
+
openssl_client: use `exception: false' for accept_nonblock
|
16
|
+
|
1
17
|
=== yahns 1.10.0 - minor updates / 2015-11-01 09:08 UTC
|
2
18
|
|
3
19
|
* test_client_expire: favor Process.spawn over fork+exec
|
data/README
CHANGED
@@ -55,19 +55,17 @@ Contact
|
|
55
55
|
|
56
56
|
We are happy to see feedback of all types via plain-text email.
|
57
57
|
Please send comments, user/dev discussion, patches, bug reports,
|
58
|
-
and pull requests to the
|
58
|
+
and pull requests to the open-to-all mailing list at:
|
59
59
|
|
60
60
|
yahns-public@yhbt.net
|
61
61
|
|
62
62
|
No subscription is necessary to post. Please Cc: all recipients as
|
63
63
|
subscription is not necessary.
|
64
64
|
|
65
|
-
You may subscribe by sending an email to:
|
65
|
+
You may optionally subscribe by sending an email to:
|
66
66
|
|
67
67
|
yahns-public+subscribe@yhbt.net
|
68
68
|
|
69
|
-
You may also subscribe to the public-inbox at git://yhbt.net/yahns-public
|
70
|
-
using ssoma <http://ssoma.public-inbox.org/>
|
71
69
|
Mailing list archives browsable via HTTP: http://yhbt.net/yahns-public/
|
72
70
|
Or NNTP: nntp://news.public-inbox.org/inbox.comp.lang.ruby.yahns
|
73
71
|
|
@@ -127,7 +125,7 @@ processes to work around low FD limits as well as contention in the:
|
|
127
125
|
Copyright
|
128
126
|
---------
|
129
127
|
|
130
|
-
Copyright 2013-
|
128
|
+
Copyright 2013-2015, all contributors (see git repo).
|
131
129
|
License: GPLv3 or later <https://www.gnu.org/licenses/gpl-3.0.txt>
|
132
130
|
|
133
131
|
yahns is copyrighted Free Software by all contributors, see logs in
|
data/lib/yahns/openssl_client.rb
CHANGED
@@ -53,14 +53,9 @@ module Yahns::OpenSSLClient # :nodoc:
|
|
53
53
|
if @need_accept
|
54
54
|
# most protocols require read before write, so we start the negotiation
|
55
55
|
# process here:
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
return :wait_readable
|
60
|
-
rescue IO::WaitWritable
|
61
|
-
return :wait_writable
|
62
|
-
rescue OpenSSL::SSL::SSLError
|
63
|
-
return nil
|
56
|
+
case rv = accept_nonblock(@ssl)
|
57
|
+
when :wait_readable, :wait_writable, nil
|
58
|
+
return rv
|
64
59
|
end
|
65
60
|
@need_accept = false
|
66
61
|
end
|
@@ -71,4 +66,20 @@ module Yahns::OpenSSLClient # :nodoc:
|
|
71
66
|
@ssl.close # flushes SSLSocket
|
72
67
|
super # IO#close
|
73
68
|
end
|
69
|
+
|
70
|
+
if RUBY_VERSION.to_f >= 2.3
|
71
|
+
def accept_nonblock(ssl)
|
72
|
+
ssl.accept_nonblock(exception: false)
|
73
|
+
end
|
74
|
+
else
|
75
|
+
def accept_nonblock(ssl)
|
76
|
+
ssl.accept_nonblock
|
77
|
+
rescue IO::WaitReadable
|
78
|
+
:wait_readable
|
79
|
+
rescue IO::WaitWritable
|
80
|
+
:wait_writable
|
81
|
+
rescue OpenSSL::SSL::SSLError
|
82
|
+
nil
|
83
|
+
end
|
84
|
+
end
|
74
85
|
end
|
data/lib/yahns/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Yahns::VERSION = '1.
|
1
|
+
Yahns::VERSION = '1.11.0' # :nodoc:
|
data/lib/yahns/wbuf.rb
CHANGED
data/man/yahns.1
CHANGED
@@ -53,6 +53,10 @@ also affect it.
|
|
53
53
|
.PP
|
54
54
|
yahns will update the PWD (current working directory) env if the
|
55
55
|
working_directory directive is set (see yahns_config(5)).
|
56
|
+
.PP
|
57
|
+
LISTEN_FDS and LISTEN_PID variables are used in our emulation of
|
58
|
+
sd_listen_fds(3) function.
|
59
|
+
See sd_listen_fds(3) manpage for more details.
|
56
60
|
.SH FILES
|
57
61
|
.PP
|
58
62
|
See yahns_config(5) for documentation on the configuration file format.
|
@@ -69,4 +73,4 @@ Copyright (C) 2013-2015 all contributors <yahns-public@yhbt.net>
|
|
69
73
|
License: GPLv3 or later <http://www.gnu.org/licenses/gpl-3.0.txt>
|
70
74
|
.SH SEE ALSO
|
71
75
|
.PP
|
72
|
-
yahns-rackup(1), yahns_config(5)
|
76
|
+
yahns-rackup(1), yahns_config(5), sd_listen_fds(3)
|
data/test/test_server.rb
CHANGED
@@ -433,7 +433,7 @@ class TestServer < Testcase
|
|
433
433
|
stderr_path err.path
|
434
434
|
stdout_path out.path
|
435
435
|
end
|
436
|
-
pid = mkserver(cfg)
|
436
|
+
master_pid = pid = mkserver(cfg)
|
437
437
|
c = get_tcp_client(host, port)
|
438
438
|
c.write("GET / HTTP/1.0\r\nHost: example.com\r\n\r\n")
|
439
439
|
buf = Timeout.timeout(10) { c.read }
|
@@ -442,19 +442,24 @@ class TestServer < Testcase
|
|
442
442
|
assert_match(/200 OK/, head)
|
443
443
|
assert_match(/\A\d+\z/, body)
|
444
444
|
worker_pid = body.to_i
|
445
|
+
|
446
|
+
# ensure atfork_parent has run
|
447
|
+
quit_wait(master_pid)
|
448
|
+
master_pid = nil
|
449
|
+
|
445
450
|
lines = out.readlines.map!(&:chomp!)
|
446
451
|
out.close!
|
447
452
|
|
448
453
|
assert_match %r{INFO hihi from app\.atfork_child}, File.read(err.path)
|
449
454
|
|
450
|
-
assert_equal 3, lines.size
|
455
|
+
assert_equal 3, lines.size, lines.join("\n")
|
451
456
|
assert_equal("af #{pid} parent about to spawn", lines.shift)
|
452
457
|
|
453
458
|
# child/parent ordering is not guaranteed
|
454
459
|
assert_equal 1, lines.grep(/\Aaf #{pid} this is probably not useful\z/).size
|
455
460
|
assert_equal 1, lines.grep(/\Aaf #{worker_pid} worker is running\z/).size
|
456
461
|
ensure
|
457
|
-
quit_wait(
|
462
|
+
quit_wait(master_pid)
|
458
463
|
end
|
459
464
|
|
460
465
|
def test_mp_hooks_worker_nr
|
data/test/test_wbuf.rb
CHANGED
@@ -71,8 +71,17 @@ class TestWbuf < Testcase
|
|
71
71
|
end while true
|
72
72
|
end
|
73
73
|
wbuf = Yahns::Wbuf.new([], true, Dir.tmpdir, :wait_writable)
|
74
|
-
|
75
|
-
|
74
|
+
|
75
|
+
rv1 = wbuf.wbuf_write(a, buf)
|
76
|
+
rv2 = wbuf.wbuf_flush(a)
|
77
|
+
case rv1
|
78
|
+
when nil
|
79
|
+
assert_equal true, rv2, 'some kernels succeed with real sendfile'
|
80
|
+
when :wait_writable
|
81
|
+
assert_equal :wait_writable, rv2, 'some block on sendfile'
|
82
|
+
else
|
83
|
+
flunk "unexpected from wbuf_write/flush: #{rv1.inspect} / #{rv2.inspect}"
|
84
|
+
end
|
76
85
|
|
77
86
|
# drain the buffer
|
78
87
|
Timeout.timeout(10) { b.read(b.nread) until b.nread == 0 }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yahns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yahns hackers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kgio
|
@@ -221,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|
223
223
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.5.
|
224
|
+
rubygems_version: 2.5.1
|
225
225
|
signing_key:
|
226
226
|
specification_version: 4
|
227
227
|
summary: sleepy, multi-threaded, non-blocking application server
|