yahns 1.10.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|