yahns 1.9.0 → 1.10.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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.olddoc.yml +7 -0
  4. data/Documentation/.gitignore +1 -1
  5. data/Documentation/GNUmakefile +1 -1
  6. data/Documentation/yahns-rackup.txt +1 -1
  7. data/Documentation/yahns.txt +1 -1
  8. data/Documentation/yahns_config.txt +1 -1
  9. data/GIT-VERSION-FILE +1 -1
  10. data/GIT-VERSION-GEN +2 -2
  11. data/GNUmakefile +1 -1
  12. data/HACKING +1 -1
  13. data/NEWS +494 -504
  14. data/README +2 -1
  15. data/Rakefile +5 -69
  16. data/bin/yahns +1 -1
  17. data/bin/yahns-rackup +1 -1
  18. data/extras/README +1 -1
  19. data/extras/autoindex.rb +1 -1
  20. data/extras/exec_cgi.rb +1 -1
  21. data/extras/try_gzip_static.rb +4 -2
  22. data/lib/yahns/acceptor.rb +1 -1
  23. data/lib/yahns/cap_input.rb +1 -1
  24. data/lib/yahns/client_expire_generic.rb +1 -1
  25. data/lib/yahns/client_expire_tcpi.rb +1 -1
  26. data/lib/yahns/config.rb +5 -2
  27. data/lib/yahns/daemon.rb +2 -2
  28. data/lib/yahns/fdmap.rb +1 -1
  29. data/lib/yahns/http_client.rb +1 -1
  30. data/lib/yahns/http_context.rb +1 -1
  31. data/lib/yahns/http_response.rb +1 -1
  32. data/lib/yahns/log.rb +2 -2
  33. data/lib/yahns/max_body/rewindable_wrapper.rb +1 -1
  34. data/lib/yahns/max_body/wrapper.rb +1 -1
  35. data/lib/yahns/max_body.rb +1 -1
  36. data/lib/yahns/proxy_http_response.rb +2 -2
  37. data/lib/yahns/proxy_pass.rb +4 -1
  38. data/lib/yahns/queue_egg.rb +1 -1
  39. data/lib/yahns/queue_epoll.rb +1 -1
  40. data/lib/yahns/queue_kqueue.rb +1 -1
  41. data/lib/yahns/queue_quitter.rb +1 -1
  42. data/lib/yahns/queue_quitter_pipe.rb +1 -1
  43. data/lib/yahns/rack.rb +1 -1
  44. data/lib/yahns/sendfile_compat.rb +1 -1
  45. data/lib/yahns/server.rb +6 -6
  46. data/lib/yahns/server_mp.rb +1 -1
  47. data/lib/yahns/sigevent.rb +1 -1
  48. data/lib/yahns/sigevent_efd.rb +1 -1
  49. data/lib/yahns/sigevent_pipe.rb +1 -1
  50. data/lib/yahns/socket_helper.rb +1 -1
  51. data/lib/yahns/stream_file.rb +1 -1
  52. data/lib/yahns/stream_input.rb +1 -1
  53. data/lib/yahns/tcp_server.rb +1 -1
  54. data/lib/yahns/tee_input.rb +1 -1
  55. data/lib/yahns/tmpio.rb +1 -1
  56. data/lib/yahns/unix_server.rb +1 -1
  57. data/lib/yahns/version.rb +1 -1
  58. data/lib/yahns/wbuf_common.rb +1 -1
  59. data/lib/yahns/wbuf_str.rb +1 -1
  60. data/lib/yahns/worker.rb +1 -1
  61. data/lib/yahns.rb +1 -1
  62. data/man/yahns-rackup.1 +1 -4
  63. data/man/yahns.1 +1 -4
  64. data/man/yahns_config.5 +1 -4
  65. data/test/covshow.rb +1 -1
  66. data/test/helper.rb +1 -1
  67. data/test/server_helper.rb +1 -1
  68. data/test/test_bin.rb +1 -1
  69. data/test/test_buffer_tmpdir.rb +1 -1
  70. data/test/test_client_expire.rb +3 -4
  71. data/test/test_client_max_body_size.rb +1 -1
  72. data/test/test_config.rb +1 -1
  73. data/test/test_expect_100.rb +1 -1
  74. data/test/test_extras_autoindex.rb +1 -1
  75. data/test/test_extras_exec_cgi.rb +1 -1
  76. data/test/test_extras_exec_cgi.sh +1 -1
  77. data/test/test_extras_try_gzip_static.rb +1 -1
  78. data/test/test_fdmap.rb +1 -1
  79. data/test/test_input.rb +1 -1
  80. data/test/test_mt_accept.rb +1 -1
  81. data/test/test_output_buffering.rb +1 -1
  82. data/test/test_rack.rb +1 -1
  83. data/test/test_rack_hijack.rb +1 -1
  84. data/test/test_reopen_logs.rb +1 -1
  85. data/test/test_response.rb +1 -1
  86. data/test/test_serve_static.rb +1 -1
  87. data/test/test_server.rb +1 -1
  88. data/test/test_stream_file.rb +1 -1
  89. data/test/test_unix_socket.rb +1 -1
  90. data/test/test_wbuf.rb +1 -1
  91. data/yahns.gemspec +4 -4
  92. metadata +10 -9
data/NEWS CHANGED
@@ -1,505 +1,495 @@
1
- yahns 1.9.0 - minor updates / 2015-07-21
2
- ----------------------------------------
3
-
4
- This release improves socket inheritance support. TCP socket
5
- options are now applied to inherited sockets. We also emulate
6
- the sd_listen_fds function to allow inheriting sockets from
7
- systemd.
8
-
9
- HTTP status strings are now generated dynamically, allowing
10
- applications to modify Rack::Utils::HTTP_STATUS_CODES to
11
- apply changes in the Rack response. Unfortunately, this leads
12
- to minor (likely unnoticeable) performance regressions.
13
-
14
- However, our code is not optimized for Ruby 2.2+, so users on
15
- the latest released Ruby will benefit from reduced inline cache
16
- and constant lookups as we reduced our constant footprint.
17
- Expect further minor performance regressions if you are running
18
- Ruby 2.2 and earlier.
1
+ === yahns 1.10.0 - minor updates / 2015-11-01 09:08 UTC
2
+
3
+ * test_client_expire: favor Process.spawn over fork+exec
4
+ * extras/try_gzip_static: require readability on HEAD requests
5
+ * proxy_pass: quiet down ECONNRESET and EPIPE, too
6
+ * copyright updates
7
+ * update various comments
8
+ * proxy_http_response: use frozen string literal optimization
9
+ * README: add link to NNTP archive endpoint
10
+ * use olddoc 1.1.0 for generating NEWS + NEWS.atom.xml
11
+ * gemspec fixes for various RubyGems versions
12
+ * bytecode golfing to cut a few bytes of memory
13
+ * simplify sd_listen_fds emulation
14
+ * gemspec: allow compatibility with unicorn 5
15
+
16
+ === yahns 1.9.0 - minor updates / 2015-07-21 20:29 UTC
17
+
18
+ This release improves socket inheritance support. TCP socket
19
+ options are now applied to inherited sockets. We also emulate
20
+ the sd_listen_fds function to allow inheriting sockets from
21
+ systemd.
22
+
23
+ HTTP status strings are now generated dynamically, allowing
24
+ applications to modify Rack::Utils::HTTP_STATUS_CODES to
25
+ apply changes in the Rack response. Unfortunately, this leads
26
+ to minor (likely unnoticeable) performance regressions.
27
+
28
+ However, our code is not optimized for Ruby 2.2+, so users on
29
+ the latest released Ruby will benefit from reduced inline cache
30
+ and constant lookups as we reduced our constant footprint.
31
+ Expect further minor performance regressions if you are running
32
+ Ruby 2.2 and earlier.
33
+
34
+ For Ruby 2.2 users, overall performance should be largely
35
+ unchanged from 1.7.0 to 1.8.0
36
+
37
+ shortlog of changes since 1.7.0:
38
+
39
+ * use opt_str_freeze for Hash#delete
40
+ * test/helper: warn atomically
41
+ * generate response status strings dynamically
42
+ * reduce constants and optimize for Ruby 2.2+
43
+ * http_response: reduce bytecode size
44
+ * apply TCP socket options on inherited sockets
45
+ * test/test_rack_hijack.rb: try to increase test reliability
46
+ * emulate sd_listen_fds for systemd support
47
+ * test/test_rack_hijack: ensure proper ordering of log messages
48
+
49
+ === yahns 1.8.0 - minor updates / 2015-06-11 19:54 UTC
50
+
51
+ Most notably, the Rack response body is now closed during rack.hijack.
52
+
53
+ Middlewares such as Rack::Lock (used by Rails) break badly unless
54
+ the response body is closed on hijack, so we will close it to follow
55
+ the lead of other popular Rack servers.
56
+
57
+ While it's unclear if there's anybody using rack.hijack besides
58
+ yahns/proxy_pass we'll try to emulate the behavior of other servers
59
+ as much as possible.
60
+
61
+ ref: https://github.com/ngauthier/tubesock/issues/10
62
+
63
+ We'll also support SIGWINCH if not daemonized
64
+
65
+ This has no effect for the (default) single process case with
66
+ no master/worker relationship as that does not support SIGWINCH.
67
+
68
+ Some process managers such as foreman and daemontools rely on
69
+ yahnsnot daemonizing, but we still want to be able to process
70
+ SIGWINCH in that case.
71
+
72
+ stdout and stderr may be redirected to a pipe (for cronolog or
73
+ similar process), so those are less likely to be attached to a TTY
74
+ than stdin. This also allows users to process SIGWINCH when running
75
+ inside a regular terminal if they redirect stdin to /dev/null.
76
+
77
+ This follows unicorn commit a6077391bb62d0b13016084b0eea36b987afe8f0
78
+ Thanks to Dan Moore for suggesting it on the unicorn list.
79
+
80
+ A few more minor changes, more memory reduction changes coming...
81
+
82
+ * proxy_pass: no point in closing StringIO
83
+ * proxy_pass: allow filtering or overriding response headers
84
+ * support SIGWINCH even if not daemonized
85
+ * use Unicorn::HttpParser#response_start_sent accessor
86
+ * reduce inline constant cache overheads
87
+ * proxy_pass: skip tests if kcar is missing
88
+ * ensure body is closed during hijack
89
+
90
+ === yahns 1.7.0 - rack.hijack improvements and more / 2015-05-11 01:38 UTC
91
+
92
+ Nothing really significant, so there's no need to upgrade if
93
+ you're not affected by the minor fixes and changes in this
94
+ release.
95
+
96
+ For all users, LoadError and SyntaxError exceptions are now
97
+ logged and non-fatal within worker threads serving application
98
+ code. Thanks to Lin Jen-Shin <godfat@godfat.org> for bringing
99
+ this up on the mailing list.
100
+
101
+ Additionally, temporary files buffered to the filesystem will
102
+ now support the Rack::TempfileReaper middleware in rack 1.6+
103
+
104
+ For rack.hijack users, there are some changes and improvements.
105
+ rack.hijack should return a usable IO-like object for SSL users,
106
+ now. The rack.input object is no longer closed on hijacking,
107
+ allowing apps to continue using buffered input after hijacking.
108
+ There is also a bugfix for the rare apps which hijack requests
109
+ after emitting 100-continue responses.
110
+
111
+ Note: there is also a work-in-progress and under-documented
112
+ asynchronous Yayns::ProxyPass Rack app which uses rack.hijack
113
+ internally. This will allow yahns to act as a fully-buffering
114
+ reverse proxy to upstream servers which cannot handle slow
115
+ clients. Yahns::ProxyPass NOT production-ready as of this
116
+ release. The old, synchronous extras/proxy_pass.rb code
117
+ remains usable.
118
+
119
+ There's also the usual round of minor code bloat reduction.
120
+
121
+ === yahns 1.6.0 - reduced allocations and bugfixes / 2015-03-09 09:33 UTC
122
+
123
+ This release fixes a bug where previously-configured-but-now-removed
124
+ listeners were inherited across USR2 upgrades are not shutdown
125
+ immediately in the child.
126
+
127
+ There are also minor reductions in allocations which can save a few
128
+ hundred bytes statically and also whenever write buffering is necessary
129
+ for large responses.
130
+
131
+ Some minor documentation updates improvements in extras, too.
132
+
133
+ shortlog of changes since 1.5.0:
134
+ README: add link to mailing list archives
135
+ test_ssl: factor out server SSLContext creation
136
+ doc: add design_notes document
137
+ reduce File::Stat object allocations
138
+ update comments about wbuf_close return values
139
+ wbuf: lazily (re)create temporary file
140
+ fix compatibility with unicorn.git
141
+ skip tests requiring String#b on 1.9.3
142
+ use the monotonic clock under Ruby 2.1+
143
+ favor Class.new for method-less classes
144
+ extras/proxy_pass: save memory in String#split arg
145
+ extras/proxy_pass: do not name unused variable
146
+ extras/proxy_pass: log exceptions leading to 502
147
+ extras/proxy_pass: flesh out upload support + tests
148
+ acceptor: close inherited-but-unneeded sockets
149
+
150
+ See the git repository for more: git clone git://yhbt.net/yahns
151
+
152
+ === yahns 1.5.0 - initial OpenSSL support and bugfixes / 2014-12-21 02:22 UTC
153
+
154
+ This release adds basic OpenSSL support for HTTPS connections.
155
+
156
+ Users must supply a OpenSSL::SSL::SSLContext object which yahns will use
157
+ as-is. yahns will only support HTTPS on Ruby 2.1 and later, as we rely
158
+ on "exception: false" in the read_nonblock and write_nonblock methods in
159
+ OpenSSL::SSL::SSLSocket.
160
+
161
+ See the Ruby standard library documentation on how to configure
162
+ OpenSSL::SSL::SSLContext objects to pass to the yahns "listen" directive
163
+ Editing the yahns config file to use OpenSSL goes something like this:
164
+
165
+ require 'openssl' # we will not do this for the user, even
166
+ ctx = OpenSSL::SSL::SSLContext.new
167
+ # user must configure ctx here...
168
+
169
+ listen 443, ssl_ctx: ctx
170
+
171
+ Note: yahns developers are not responsible for bugs in OpenSSL itself
172
+ or misconfigured SSLContext objects created by users. However, our
173
+ support of OpenSSL sockets is barely-tested and likely buggy, too.
174
+
175
+ Furthermore, the "sendfile" (or "kgio-sendfile") gem is no longer a
176
+ required dependency. It is currently impossible to use zero-copy
177
+ system calls with TLS sockets.
178
+
179
+ There are also minor cleanups and a bugfix to ensure body#close is
180
+ called for folks using body#to_path where `body' is the Rack
181
+ response body. This bug affected logging using the 'clogger' gem
182
+ when serving static files.
183
+
184
+ Shortlog of changes since 1.4.0
185
+
186
+ save around 1500 bytes of memory on x86-64
187
+ http_response: remove arg for Array#join
188
+ remove unused client_max_header_size config
189
+ config: use literal symbol array for now
190
+ http_response: reduce constants for 100 responses
191
+ favor Array#map! for freshly-split arrays
192
+ sendfile_compat: remove dependency on pread
193
+ extras/autoindex: simplify checking non-.gz
194
+ Rakefile: kill more useless gsub use
195
+ initial cut at OpenSSL support
196
+ test/test_ssl: skip test if SSL on older Rubies
197
+ wbuf_common: close body proxies on sendfile abort
198
+ bump published Ruby version requirement to 2.0
199
+ make sendfile an optional dependency
200
+ openssl_client: ignore SSL_accept errors during negotiation
201
+
202
+ Disclaimer: the yahns project does not and will never endorse
203
+ any commercial entities, including certificate authorities.
204
+
205
+ Shpx Nhgubevgl.
206
+
207
+ === yahns 1.4.0 / 2014-11-16 11:05 UTC
208
+
209
+ Minor internal cleanups and bugfixes.
210
+
211
+ * http_client: clear some internal ivars on rack.hijack
212
+ * README: minor updates
213
+ * extras/autoindex: do not link beyond top-level
214
+ * extras/autoindex: fix misnamed variable
215
+ * extras/autoindex: integrate with TryGzipStatic
216
+ * queue: remove TODO comment for kqueue
217
+ * switch to require_relative for internal requires
218
+ * README: add OpenSSL exception
219
+ * stream_input: favor str.clear instead of str.replace('')
220
+ * http_response: skip Date header case-insensitively
221
+
222
+ === yahns 1.3.1 - fix large response corruption / 2014-07-16 20:03 UTC
223
+
224
+ This release contains a major bug fix noticeable on FreeBSD VMs, but
225
+ should affect Linux systems making large responses which require
226
+ output buffering, too.
227
+
228
+ * test_server: avoid multiple workers for dead parent check
229
+ * wbuf: avoid corrupted large responses with zero-copy sendfile
230
+
231
+ === yahns 1.3.0 - new mailing list + fixups / 2014-05-12 01:44 UTC
232
+
233
+ Since RubyForge is going away, this release updates the
234
+ documentation to point to the new public-inbox and mailing list
235
+ at at:
236
+
237
+ yahns-public@yhbt.net
238
+ (no subscription required, plain text only)
239
+
240
+ ssoma[1] git archives: git://yhbt.net/yahns-public
241
+ browser-friendly archives: http://yhbt.net/yahns-public/
242
+ Traditional mailing list subscription is possible by sending
243
+ a blank email to: yahns-public+subscribe@yhbt.net
244
+
245
+ This also reworks master->worker signalling to use a pipe,
246
+ avoiding problems with libraries which do not respond well
247
+ to being interrupted by signals. There are also minor
248
+ bugfixes and cleanups, see "git log -p" for full details.
249
+
250
+ [1] http://ssoma.public-inbox.org/
251
+
252
+ === yahns 1.2.0 - preliminary kqueue/FreeBSD support / 2014-03-15 07:43 UTC
253
+
254
+ This release now depends on "kgio-sendfile", a (hopefully temporary)
255
+ fork of the original sendfile gem for mainline ruby trunk
256
+ compatibility and a (probably correct) FreeBSD-related bugfix.
257
+
258
+ kqueue/FreeBSD support is considered highly experimental. Of course;
259
+ you should never rely on anything in production unless you can get bugs
260
+ fixed in every part of your stack; even the kernel. yahns (ab)uses
261
+ kqueue and epoll in uncommon ways, so you may encounter subtle kernel
262
+ bugs along the way.
263
+
264
+ Because yahns has been self-hosting its own website for months without
265
+ crashes or major problems (BORING! :P), I've decided to start hosting the
266
+ yahns website <http://yahns.YHBT.net/README> with ruby trunk (currently
267
+ r45341).
268
+
269
+ yahns - dangerous by design (and sleepy!)
270
+
271
+ === yahns 1.1.0 - MOAR SLEEPY / 2014-02-04 22:14 UTC
272
+
273
+ On responses with a known, non-zero Content-Length, yahns will now
274
+ automatically use the MSG_MORE flag when sending HTTP headers. This
275
+ reduces TCP packet transmits and allows clients to wake up and read
276
+ one less time.
277
+
278
+ This is similar to the TCP_NOPUSH/TCP_CORK functionality of other
279
+ servers, but requires no additional syscalls. It is only supported
280
+ on the Linux kernel, however (but yahns is currently epoll-only
281
+ with kqueue support on the horizon).
282
+
283
+ Eric Wong (5):
284
+ quiet down EHOSTUNREACH errors
285
+ http_response: use kgio_syssend with MSG_MORE
286
+ load yahns/version file
287
+ socket_helper: remove SO_REUSEPORT define for untested arches
288
+ response: do not use MSG_MORE on empty bodies
289
+
290
+ === yahns 1.0.0 / 2014-01-02 01:37 UTC
291
+
292
+ Mostly fixes for the extras/* stuff running on yahns.YHBT.net and
293
+ documentation/packaging fixes. Anyways, this is hosting the
294
+ yahns website for a while now (running rack.git) without any
295
+ major issues.
296
+
297
+ Also, the mailing list will need to move/change because Rubyforge is
298
+ going away. Everything I said for the unicorn ML applies to this list,
299
+ too: http://mid.gmane.org/20131217015614.GB1125@dcvr.yhbt.net
300
+
301
+ === yahns 0.0.3 - more bugfixes, still working! / 2013-11-10 21:42 UTC
302
+
303
+ There are several important bugfixes around graceful shutdown.
304
+ The shutdown_timeout directive should work more consistently
305
+ and work even if an app is streaming/trickling slowly to
306
+ a client.
307
+
308
+ This also plugs an odd FD leak in response buffering.
309
+
310
+ There's also some internal comments/documentation for folks
311
+ reviewing the strange internals of yahns.
312
+
313
+ Otherwise, it seems to be capable of serving its own website,
314
+ http://yahns.yhbt.net/README quite well.
315
+
316
+ Rack application authors merely need to write code as if they have a
317
+ gun to their head if they expect to keep code running on yahns.
318
+ Again, yahns is extremely intolerant of bugs in the applications
319
+ it hosts. Otherwise I'm comfortable in the stability of yahns
320
+ itself.
321
+
322
+ Eric Wong (17):
323
+ http_client: do not dump backtrace on ETIMEDOUT
324
+ ensure we close response body if buffering caught up
325
+ http_response: reorder wbuf_maybe on successful early flush
326
+ wbuf: document reasoning for the design of these clases
327
+ build: improve NEWS generation, add atom feed
328
+ exec_cgi: release pipe/pid sooner
329
+ SIGWINCH works after SIGUSR2 upgrades
330
+ shutdown_timeout works around long-running response/apps
331
+ doc: recommend worker_processes if the app uses SIGCHLD
332
+ fdmap: simplify IO expiry interface
333
+ fdmap: document + fix for level-trigger
334
+ queue_epoll: document epoll concurrency caveats
335
+ doc: caution users against disabling buffering
336
+ queue: eliminate :wait_readwrite
337
+ test: exec_cgi test uses worker_processes
338
+ test_server: remove unneccessary IO#wait call
339
+ test: workaround sockets not being binary on rbx
340
+
341
+ === yahns 0.0.2 - barely working! / 2013-11-06 03:24 UTC
342
+
343
+ Lots of bugfixes and tweaks, but everything appears to mostly work
344
+ for Rack and HTTP. We are self-hosting our site:
345
+
346
+ http://yahns.yhbt.net/README
347
+ (And if you can't access it, I screwed something up!)
348
+
349
+ There is a yahns-rackup(1) wrapper for quick-starting Rack
350
+ applications without having to read any documentation,
351
+ as it works exactly like rackup(1) (just leave "-s/--server"
352
+ out)
353
+
354
+ New manpages: yahns(1), yahns_config(5), yahns-rackup(1)
355
+
356
+ Eric Wong (110):
357
+ test/helper: correctly handle exit code in test runner
358
+ log: workaround atomicity issues for stdio vs non-stdio descriptors
359
+ tests: improve output to show RUBY_DESCRIPTION and full path
360
+ tests: support disabling parallelization env
361
+ test_output_buffering: workaround a rbx bug
362
+ socket_helper: do not log sizes on rbx for now
363
+ config: do not set cloexec on stdout/stderr
364
+ test_wbuf: avoid floating point arg to read_nonblock
365
+ rework shutdown for systems w/o rb_thread_fd_close
366
+ SIGUSR2 uses fork + exec again instead of Process.spawn
367
+ wip for EADDRINUSE failure
368
+ test_bin: shutdown socket when not inheriting
369
+ README: update with support status for MRI/RBX
370
+ server: skip killing acceptors on rbx for now
371
+ server (cleanup): avoid interning word for log message
372
+ server: abort loudly if we have old threads running
373
+ reinstate retry delay for binding new listeners
374
+ test/helper: Dir.mktmpdir works without blocks
375
+ rework acceptor thread shutdown (again)
376
+ server (minor cleanup): use Symbol#to_proc
377
+ test_server: remove skipped multi-process balance test
378
+ tests: do not lose exceptions on quit timeouts
379
+ tests: enforce close_on_exec on all client sockets
380
+ server: switch abort to raise on BUG
381
+ config: implement atfork handlers
382
+ test/server_helper: fix undefined variable
383
+ favor client timeout if lower than desperate timeout
384
+ tests: enable checks for desperate client expiry
385
+ implement + test Expect: 100-continue handling
386
+ quitter: save one syscall and implement for non-eventfd
387
+ enforce FD_CLOEXEC on all pipes, including tests
388
+ test_expect_100: cleanup unused var
389
+ http_client: reduce the size of the yahns_step method
390
+ output_buffering handles odd EAGAIN cases
391
+ fix output buffer corner-case for static files
392
+ tests: increase mkserver use to reduce LoC
393
+ fix SIGCHLD w/o workers + PID file renames
394
+ test_client_expire: disable output buffering in test
395
+ StreamFile and TmpIO attempt expiry on EMFILE/ENFILE
396
+ server: avoid metaclass for acceptors
397
+ support SO_REUSEPORT on new listeners (:reuseport)
398
+ doc: ignore RDoc for all internal classes
399
+ rack: leave RACK_ENV unset by us
400
+ associate private/anonymous queues correctly
401
+ queue_epoll: remove check for closed descriptor
402
+ config: disallow defining new, named queues inside app
403
+ doc: preliminary manpages for yahns(1), yahns_config(5)
404
+ config: comment for atfork_* hook definitions
405
+ implement user switching
406
+ configurator: validate :reuseport for boolean-ess
407
+ config: working_directory is only called at top-level
408
+ server: fix out-of-date comment regarding bind/pid order
409
+ config: reject negative float for client_expire_ratio
410
+ lower client_body_buffer_size to 8K (from 114K)
411
+ implement client_timeout for streaming inputs
412
+ gem: install manpages in the RubyGems package
413
+ stream_input: use thread-local rbuf to avoid some garbage
414
+ test output_buffering with hijacked responses
415
+ test_input: close client when we're done with it
416
+ allow multiple blocking threads per listen socket
417
+ acceptor: account for inheriting dead descriptors
418
+ server: fix incorrect receiver of method call
419
+ socket_helper: account for undefined options
420
+ test for binding Unix stream sockets
421
+ Rack hijack issues EPOLL_CTL_DEL
422
+ config: raise ArgumentError for consistency
423
+ tests for SIGTTIN and SIGTTOU
424
+ use Hash#each instead of Hash#each_pair
425
+ add test for working_directory config parameter
426
+ test_unix_socket: remember to close IO when done
427
+ test for overriding rack.errors destination
428
+ test_server: improve working_directory test robustness
429
+ fdmap: prevent possible/theoretical race
430
+ implement shutdown_timeout and expiry on graceful shutdown
431
+ doc: fix client_timeout documentation in yahns_config
432
+ implement before_exec hook
433
+ comment to explain YAHNS_FD env
434
+ remove "worker_" prefix from atfork hooks
435
+ remove arity enforcement for atfork_* hooks
436
+ allow atfork_* hooks inside app blocks for ease-of-management
437
+ doc: disambiguate threads: option for listen directive
438
+ yahns-rackup launcher
439
+ enable client expiry for non-TCP sockets
440
+ config: allow Float for timeouts
441
+ tests: more intelligent waiting for output buffering
442
+ doc: add HACKING/INSTALL docs + minitest dependency
443
+ wbuf: bypass buffering if buffers are caught up
444
+ wbuf: reset FS (sendfile) buffer if caught up
445
+ wbuf: only enable bypass if we've truncated
446
+ input and output buffers support tmpdir: arguments
447
+ tests: further speed up output buffering test
448
+ test trysendfile usage with UNIX sockets
449
+ client_expire_generic: drop kgio_write wrapper
450
+ remove unnecessary map(&:to_s) before Array#join
451
+ account for truncated/expanded static files
452
+ http: do not drop Content-Range from response headers
453
+ worker-less server should not waitpid indiscriminately
454
+ stream_file: only close FDs we opened ourselves
455
+ tests: smaller buffer for big header test
456
+ add extras for exec_cgi and try_gzip_static
457
+ http_response: fix app-controlled close + test
458
+ examples: flesh out the example configs a bit
459
+ README: add disclaimer
460
+ server: improve shutdown messages
461
+ extras: add README
462
+ extras: add autoindex module
463
+ extras: add proxy_pass Rack app
464
+ rackup_handler: fix ordering of working_directory
465
+ worker: avoid double SIGQUIT on unexpected parent death
466
+ server: log error instead of raising for leftover socks
467
+
468
+ === yahns 0.0.1 - many small fixes and test coverage / 2013-10-20 01:00 UTC
469
+
470
+ Just a bunch of improvements found while running tests.
471
+ It's still incomplete and missing a bunch of features from
472
+ existing servers, but maybe it works...
473
+
474
+ Clone git://yhbt.net/yahns.git for full details
475
+
476
+ Eric Wong (18):
477
+ test/helper: fix __covmerge race for forked processes
478
+ wire up client_max_body_size limits
479
+ fix and test Rack hijack support
480
+ SIGUSR2 handling uses Process.spawn + tests
481
+ fix USR1 log reopening when using worker_processes
482
+ test_bin: add additional tests for SIGHUP
483
+ test_server: skip test_mp_balance for now
484
+ test/server_helper: dump entire log on errors
485
+ ensure we stop all threads at exit
486
+ GNUmakefile: avoid calling exit in test-mt
487
+ test_bin: set close-on-exec for Ruby 1.9.3 compatibility
488
+ test_server: bigger delays for graceful shutdown test
489
+ tests: disable $-w on 1.9.3 to quiet down warnings
490
+ test/helper: prevent minitest at_exit from running in children
491
+ recheck IO#closed? on thread pools after a short delay
492
+ test_config: isolate directories with logs
493
+ test_reopen_logs: workaround timing problem with worker_processes
494
+ set close-on-exec on all long-lived descriptors
19
495
 
20
- For Ruby 2.2 users, overall performance should be largely
21
- unchanged from 1.7.0 to 1.8.0
22
-
23
- shortlog of changes since 1.7.0:
24
-
25
- * use opt_str_freeze for Hash#delete
26
- * test/helper: warn atomically
27
- * generate response status strings dynamically
28
- * reduce constants and optimize for Ruby 2.2+
29
- * http_response: reduce bytecode size
30
- * apply TCP socket options on inherited sockets
31
- * test/test_rack_hijack.rb: try to increase test reliability
32
- * emulate sd_listen_fds for systemd support
33
- * test/test_rack_hijack: ensure proper ordering of log messages
34
-
35
- yahns 1.8.0 - minor updates / 2015-06-11
36
- ----------------------------------------
37
-
38
- Most notably, the Rack response body is now closed during rack.hijack.
39
-
40
- Middlewares such as Rack::Lock (used by Rails) break badly unless
41
- the response body is closed on hijack, so we will close it to follow
42
- the lead of other popular Rack servers.
43
-
44
- While it's unclear if there's anybody using rack.hijack besides
45
- yahns/proxy_pass we'll try to emulate the behavior of other servers
46
- as much as possible.
47
-
48
- ref: https://github.com/ngauthier/tubesock/issues/10
49
-
50
- We'll also support SIGWINCH if not daemonized
51
-
52
- This has no effect for the (default) single process case with
53
- no master/worker relationship as that does not support SIGWINCH.
54
-
55
- Some process managers such as foreman and daemontools rely on
56
- yahnsnot daemonizing, but we still want to be able to process
57
- SIGWINCH in that case.
58
-
59
- stdout and stderr may be redirected to a pipe (for cronolog or
60
- similar process), so those are less likely to be attached to a TTY
61
- than stdin. This also allows users to process SIGWINCH when running
62
- inside a regular terminal if they redirect stdin to /dev/null.
63
-
64
- This follows unicorn commit a6077391bb62d0b13016084b0eea36b987afe8f0
65
- Thanks to Dan Moore for suggesting it on the unicorn list.
66
-
67
- A few more minor changes, more memory reduction changes coming...
68
-
69
- * proxy_pass: no point in closing StringIO
70
- * proxy_pass: allow filtering or overriding response headers
71
- * support SIGWINCH even if not daemonized
72
- * use Unicorn::HttpParser#response_start_sent accessor
73
- * reduce inline constant cache overheads
74
- * proxy_pass: skip tests if kcar is missing
75
- * ensure body is closed during hijack
76
-
77
- yahns 1.7.0 - rack.hijack improvements and more / 2015-05-11
78
- ------------------------------------------------------------
79
-
80
- Nothing really significant, so there's no need to upgrade if
81
- you're not affected by the minor fixes and changes in this
82
- release.
83
-
84
- For all users, LoadError and SyntaxError exceptions are now
85
- logged and non-fatal within worker threads serving application
86
- code. Thanks to Lin Jen-Shin <godfat@godfat.org> for bringing
87
- this up on the mailing list.
88
-
89
- Additionally, temporary files buffered to the filesystem will
90
- now support the Rack::TempfileReaper middleware in rack 1.6+
91
-
92
- For rack.hijack users, there are some changes and improvements.
93
- rack.hijack should return a usable IO-like object for SSL users,
94
- now. The rack.input object is no longer closed on hijacking,
95
- allowing apps to continue using buffered input after hijacking.
96
- There is also a bugfix for the rare apps which hijack requests
97
- after emitting 100-continue responses.
98
-
99
- Note: there is also a work-in-progress and under-documented
100
- asynchronous Yayns::ProxyPass Rack app which uses rack.hijack
101
- internally. This will allow yahns to act as a fully-buffering
102
- reverse proxy to upstream servers which cannot handle slow
103
- clients. Yahns::ProxyPass NOT production-ready as of this
104
- release. The old, synchronous extras/proxy_pass.rb code
105
- remains usable.
106
-
107
- There's also the usual round of minor code bloat reduction.
108
-
109
- yahns 1.6.0 - reduced allocations and bugfixes / 2015-03-09
110
- -----------------------------------------------------------
111
-
112
- This release fixes a bug where previously-configured-but-now-removed
113
- listeners were inherited across USR2 upgrades are not shutdown
114
- immediately in the child.
115
-
116
- There are also minor reductions in allocations which can save a few
117
- hundred bytes statically and also whenever write buffering is necessary
118
- for large responses.
119
-
120
- Some minor documentation updates improvements in extras, too.
121
-
122
- shortlog of changes since 1.5.0:
123
- README: add link to mailing list archives
124
- test_ssl: factor out server SSLContext creation
125
- doc: add design_notes document
126
- reduce File::Stat object allocations
127
- update comments about wbuf_close return values
128
- wbuf: lazily (re)create temporary file
129
- fix compatibility with unicorn.git
130
- skip tests requiring String#b on 1.9.3
131
- use the monotonic clock under Ruby 2.1+
132
- favor Class.new for method-less classes
133
- extras/proxy_pass: save memory in String#split arg
134
- extras/proxy_pass: do not name unused variable
135
- extras/proxy_pass: log exceptions leading to 502
136
- extras/proxy_pass: flesh out upload support + tests
137
- acceptor: close inherited-but-unneeded sockets
138
-
139
- See the git repository for more: git clone git://yhbt.net/yahns
140
-
141
- yahns 1.5.0 - initial OpenSSL support and bugfixes / 2014-12-21
142
- ---------------------------------------------------------------
143
-
144
- This release adds basic OpenSSL support for HTTPS connections.
145
-
146
- Users must supply a OpenSSL::SSL::SSLContext object which yahns will use
147
- as-is. yahns will only support HTTPS on Ruby 2.1 and later, as we rely
148
- on "exception: false" in the read_nonblock and write_nonblock methods in
149
- OpenSSL::SSL::SSLSocket.
150
-
151
- See the Ruby standard library documentation on how to configure
152
- OpenSSL::SSL::SSLContext objects to pass to the yahns "listen" directive
153
- Editing the yahns config file to use OpenSSL goes something like this:
154
-
155
- require 'openssl' # we will not do this for the user, even
156
- ctx = OpenSSL::SSL::SSLContext.new
157
- # user must configure ctx here...
158
-
159
- listen 443, ssl_ctx: ctx
160
-
161
- Note: yahns developers are not responsible for bugs in OpenSSL itself
162
- or misconfigured SSLContext objects created by users. However, our
163
- support of OpenSSL sockets is barely-tested and likely buggy, too.
164
-
165
- Furthermore, the "sendfile" (or "kgio-sendfile") gem is no longer a
166
- required dependency. It is currently impossible to use zero-copy
167
- system calls with TLS sockets.
168
-
169
- There are also minor cleanups and a bugfix to ensure body#close is
170
- called for folks using body#to_path where `body' is the Rack
171
- response body. This bug affected logging using the 'clogger' gem
172
- when serving static files.
173
-
174
- Shortlog of changes since 1.4.0
175
-
176
- save around 1500 bytes of memory on x86-64
177
- http_response: remove arg for Array#join
178
- remove unused client_max_header_size config
179
- config: use literal symbol array for now
180
- http_response: reduce constants for 100 responses
181
- favor Array#map! for freshly-split arrays
182
- sendfile_compat: remove dependency on pread
183
- extras/autoindex: simplify checking non-.gz
184
- Rakefile: kill more useless gsub use
185
- initial cut at OpenSSL support
186
- test/test_ssl: skip test if SSL on older Rubies
187
- wbuf_common: close body proxies on sendfile abort
188
- bump published Ruby version requirement to 2.0
189
- make sendfile an optional dependency
190
- openssl_client: ignore SSL_accept errors during negotiation
191
-
192
- Disclaimer: the yahns project does not and will never endorse
193
- any commercial entities, including certificate authorities.
194
-
195
- Shpx Nhgubevgl.
196
-
197
- yahns 1.4.0 / 2014-11-16
198
- ------------------------
199
-
200
- Minor internal cleanups and bugfixes.
201
-
202
- * http_client: clear some internal ivars on rack.hijack
203
- * README: minor updates
204
- * extras/autoindex: do not link beyond top-level
205
- * extras/autoindex: fix misnamed variable
206
- * extras/autoindex: integrate with TryGzipStatic
207
- * queue: remove TODO comment for kqueue
208
- * switch to require_relative for internal requires
209
- * README: add OpenSSL exception
210
- * stream_input: favor str.clear instead of str.replace('')
211
- * http_response: skip Date header case-insensitively
212
-
213
- yahns 1.3.1 - fix large response corruption / 2014-07-16
214
- --------------------------------------------------------
215
-
216
- This release contains a major bug fix noticeable on FreeBSD VMs, but
217
- should affect Linux systems making large responses which require
218
- output buffering, too.
219
-
220
- * test_server: avoid multiple workers for dead parent check
221
- * wbuf: avoid corrupted large responses with zero-copy sendfile
222
-
223
- yahns 1.3.0 - new mailing list + fixups / 2014-05-12
224
- ----------------------------------------------------
225
-
226
- Since RubyForge is going away, this release updates the
227
- documentation to point to the new public-inbox and mailing list
228
- at at:
229
-
230
- yahns-public@yhbt.net
231
- (no subscription required, plain text only)
232
-
233
- ssoma[1] git archives: git://yhbt.net/yahns-public
234
- browser-friendly archives: http://yhbt.net/yahns-public/
235
- Traditional mailing list subscription is possible by sending
236
- a blank email to: yahns-public+subscribe@yhbt.net
237
-
238
- This also reworks master->worker signalling to use a pipe,
239
- avoiding problems with libraries which do not respond well
240
- to being interrupted by signals. There are also minor
241
- bugfixes and cleanups, see "git log -p" for full details.
242
-
243
- [1] http://ssoma.public-inbox.org/
244
-
245
- yahns 1.2.0 - preliminary kqueue/FreeBSD support / 2014-03-15
246
- -------------------------------------------------------------
247
-
248
- This release now depends on "kgio-sendfile", a (hopefully temporary)
249
- fork of the original sendfile gem for mainline ruby trunk
250
- compatibility and a (probably correct) FreeBSD-related bugfix.
251
-
252
- kqueue/FreeBSD support is considered highly experimental. Of course;
253
- you should never rely on anything in production unless you can get bugs
254
- fixed in every part of your stack; even the kernel. yahns (ab)uses
255
- kqueue and epoll in uncommon ways, so you may encounter subtle kernel
256
- bugs along the way.
257
-
258
- Because yahns has been self-hosting its own website for months without
259
- crashes or major problems (BORING! :P), I've decided to start hosting the
260
- yahns website <http://yahns.YHBT.net/README> with ruby trunk (currently
261
- r45341).
262
-
263
- yahns - dangerous by design (and sleepy!)
264
-
265
- yahns 1.1.0 - MOAR SLEEPY / 2014-02-04
266
- --------------------------------------
267
-
268
- On responses with a known, non-zero Content-Length, yahns will now
269
- automatically use the MSG_MORE flag when sending HTTP headers. This
270
- reduces TCP packet transmits and allows clients to wake up and read
271
- one less time.
272
-
273
- This is similar to the TCP_NOPUSH/TCP_CORK functionality of other
274
- servers, but requires no additional syscalls. It is only supported
275
- on the Linux kernel, however (but yahns is currently epoll-only
276
- with kqueue support on the horizon).
277
-
278
- Eric Wong (5):
279
- quiet down EHOSTUNREACH errors
280
- http_response: use kgio_syssend with MSG_MORE
281
- load yahns/version file
282
- socket_helper: remove SO_REUSEPORT define for untested arches
283
- response: do not use MSG_MORE on empty bodies
284
-
285
- yahns 1.0.0 / 2014-01-02
286
- ------------------------
287
-
288
- Mostly fixes for the extras/* stuff running on yahns.YHBT.net and
289
- documentation/packaging fixes. Anyways, this is hosting the
290
- yahns website for a while now (running rack.git) without any
291
- major issues.
292
-
293
- Also, the mailing list will need to move/change because Rubyforge is
294
- going away. Everything I said for the unicorn ML applies to this list,
295
- too: http://mid.gmane.org/20131217015614.GB1125@dcvr.yhbt.net
296
-
297
- yahns 0.0.3 - more bugfixes, still working! / 2013-11-10
298
- --------------------------------------------------------
299
-
300
- There are several important bugfixes around graceful shutdown.
301
- The shutdown_timeout directive should work more consistently
302
- and work even if an app is streaming/trickling slowly to
303
- a client.
304
-
305
- This also plugs an odd FD leak in response buffering.
306
-
307
- There's also some internal comments/documentation for folks
308
- reviewing the strange internals of yahns.
309
-
310
- Otherwise, it seems to be capable of serving its own website,
311
- http://yahns.yhbt.net/README quite well.
312
-
313
- Rack application authors merely need to write code as if they have a
314
- gun to their head if they expect to keep code running on yahns.
315
- Again, yahns is extremely intolerant of bugs in the applications
316
- it hosts. Otherwise I'm comfortable in the stability of yahns
317
- itself.
318
-
319
- Eric Wong (17):
320
- http_client: do not dump backtrace on ETIMEDOUT
321
- ensure we close response body if buffering caught up
322
- http_response: reorder wbuf_maybe on successful early flush
323
- wbuf: document reasoning for the design of these clases
324
- build: improve NEWS generation, add atom feed
325
- exec_cgi: release pipe/pid sooner
326
- SIGWINCH works after SIGUSR2 upgrades
327
- shutdown_timeout works around long-running response/apps
328
- doc: recommend worker_processes if the app uses SIGCHLD
329
- fdmap: simplify IO expiry interface
330
- fdmap: document + fix for level-trigger
331
- queue_epoll: document epoll concurrency caveats
332
- doc: caution users against disabling buffering
333
- queue: eliminate :wait_readwrite
334
- test: exec_cgi test uses worker_processes
335
- test_server: remove unneccessary IO#wait call
336
- test: workaround sockets not being binary on rbx
337
-
338
- yahns 0.0.2 - barely working! / 2013-11-06
339
- ------------------------------------------
340
-
341
- Lots of bugfixes and tweaks, but everything appears to mostly work
342
- for Rack and HTTP. We are self-hosting our site:
343
-
344
- http://yahns.yhbt.net/README
345
- (And if you can't access it, I screwed something up!)
346
-
347
- There is a yahns-rackup(1) wrapper for quick-starting Rack
348
- applications without having to read any documentation,
349
- as it works exactly like rackup(1) (just leave "-s/--server"
350
- out)
351
-
352
- New manpages: yahns(1), yahns_config(5), yahns-rackup(1)
353
-
354
- Eric Wong (110):
355
- test/helper: correctly handle exit code in test runner
356
- log: workaround atomicity issues for stdio vs non-stdio descriptors
357
- tests: improve output to show RUBY_DESCRIPTION and full path
358
- tests: support disabling parallelization env
359
- test_output_buffering: workaround a rbx bug
360
- socket_helper: do not log sizes on rbx for now
361
- config: do not set cloexec on stdout/stderr
362
- test_wbuf: avoid floating point arg to read_nonblock
363
- rework shutdown for systems w/o rb_thread_fd_close
364
- SIGUSR2 uses fork + exec again instead of Process.spawn
365
- wip for EADDRINUSE failure
366
- test_bin: shutdown socket when not inheriting
367
- README: update with support status for MRI/RBX
368
- server: skip killing acceptors on rbx for now
369
- server (cleanup): avoid interning word for log message
370
- server: abort loudly if we have old threads running
371
- reinstate retry delay for binding new listeners
372
- test/helper: Dir.mktmpdir works without blocks
373
- rework acceptor thread shutdown (again)
374
- server (minor cleanup): use Symbol#to_proc
375
- test_server: remove skipped multi-process balance test
376
- tests: do not lose exceptions on quit timeouts
377
- tests: enforce close_on_exec on all client sockets
378
- server: switch abort to raise on BUG
379
- config: implement atfork handlers
380
- test/server_helper: fix undefined variable
381
- favor client timeout if lower than desperate timeout
382
- tests: enable checks for desperate client expiry
383
- implement + test Expect: 100-continue handling
384
- quitter: save one syscall and implement for non-eventfd
385
- enforce FD_CLOEXEC on all pipes, including tests
386
- test_expect_100: cleanup unused var
387
- http_client: reduce the size of the yahns_step method
388
- output_buffering handles odd EAGAIN cases
389
- fix output buffer corner-case for static files
390
- tests: increase mkserver use to reduce LoC
391
- fix SIGCHLD w/o workers + PID file renames
392
- test_client_expire: disable output buffering in test
393
- StreamFile and TmpIO attempt expiry on EMFILE/ENFILE
394
- server: avoid metaclass for acceptors
395
- support SO_REUSEPORT on new listeners (:reuseport)
396
- doc: ignore RDoc for all internal classes
397
- rack: leave RACK_ENV unset by us
398
- associate private/anonymous queues correctly
399
- queue_epoll: remove check for closed descriptor
400
- config: disallow defining new, named queues inside app
401
- doc: preliminary manpages for yahns(1), yahns_config(5)
402
- config: comment for atfork_* hook definitions
403
- implement user switching
404
- configurator: validate :reuseport for boolean-ess
405
- config: working_directory is only called at top-level
406
- server: fix out-of-date comment regarding bind/pid order
407
- config: reject negative float for client_expire_ratio
408
- lower client_body_buffer_size to 8K (from 114K)
409
- implement client_timeout for streaming inputs
410
- gem: install manpages in the RubyGems package
411
- stream_input: use thread-local rbuf to avoid some garbage
412
- test output_buffering with hijacked responses
413
- test_input: close client when we're done with it
414
- allow multiple blocking threads per listen socket
415
- acceptor: account for inheriting dead descriptors
416
- server: fix incorrect receiver of method call
417
- socket_helper: account for undefined options
418
- test for binding Unix stream sockets
419
- Rack hijack issues EPOLL_CTL_DEL
420
- config: raise ArgumentError for consistency
421
- tests for SIGTTIN and SIGTTOU
422
- use Hash#each instead of Hash#each_pair
423
- add test for working_directory config parameter
424
- test_unix_socket: remember to close IO when done
425
- test for overriding rack.errors destination
426
- test_server: improve working_directory test robustness
427
- fdmap: prevent possible/theoretical race
428
- implement shutdown_timeout and expiry on graceful shutdown
429
- doc: fix client_timeout documentation in yahns_config
430
- implement before_exec hook
431
- comment to explain YAHNS_FD env
432
- remove "worker_" prefix from atfork hooks
433
- remove arity enforcement for atfork_* hooks
434
- allow atfork_* hooks inside app blocks for ease-of-management
435
- doc: disambiguate threads: option for listen directive
436
- yahns-rackup launcher
437
- enable client expiry for non-TCP sockets
438
- config: allow Float for timeouts
439
- tests: more intelligent waiting for output buffering
440
- doc: add HACKING/INSTALL docs + minitest dependency
441
- wbuf: bypass buffering if buffers are caught up
442
- wbuf: reset FS (sendfile) buffer if caught up
443
- wbuf: only enable bypass if we've truncated
444
- input and output buffers support tmpdir: arguments
445
- tests: further speed up output buffering test
446
- test trysendfile usage with UNIX sockets
447
- client_expire_generic: drop kgio_write wrapper
448
- remove unnecessary map(&:to_s) before Array#join
449
- account for truncated/expanded static files
450
- http: do not drop Content-Range from response headers
451
- worker-less server should not waitpid indiscriminately
452
- stream_file: only close FDs we opened ourselves
453
- tests: smaller buffer for big header test
454
- add extras for exec_cgi and try_gzip_static
455
- http_response: fix app-controlled close + test
456
- examples: flesh out the example configs a bit
457
- README: add disclaimer
458
- server: improve shutdown messages
459
- extras: add README
460
- extras: add autoindex module
461
- extras: add proxy_pass Rack app
462
- rackup_handler: fix ordering of working_directory
463
- worker: avoid double SIGQUIT on unexpected parent death
464
- server: log error instead of raising for leftover socks
465
-
466
- yahns 0.0.1 - many small fixes and test coverage / 2013-10-20
467
- -------------------------------------------------------------
468
-
469
- Just a bunch of improvements found while running tests.
470
- It's still incomplete and missing a bunch of features from
471
- existing servers, but maybe it works...
472
-
473
- Clone git://yhbt.net/yahns.git for full details
474
-
475
- Eric Wong (18):
476
- test/helper: fix __covmerge race for forked processes
477
- wire up client_max_body_size limits
478
- fix and test Rack hijack support
479
- SIGUSR2 handling uses Process.spawn + tests
480
- fix USR1 log reopening when using worker_processes
481
- test_bin: add additional tests for SIGHUP
482
- test_server: skip test_mp_balance for now
483
- test/server_helper: dump entire log on errors
484
- ensure we stop all threads at exit
485
- GNUmakefile: avoid calling exit in test-mt
486
- test_bin: set close-on-exec for Ruby 1.9.3 compatibility
487
- test_server: bigger delays for graceful shutdown test
488
- tests: disable $-w on 1.9.3 to quiet down warnings
489
- test/helper: prevent minitest at_exit from running in children
490
- recheck IO#closed? on thread pools after a short delay
491
- test_config: isolate directories with logs
492
- test_reopen_logs: workaround timing problem with worker_processes
493
- set close-on-exec on all long-lived descriptors
494
-
495
- yahns 0.0.0 - hopefully fix installation problems / 2013-10-18
496
- --------------------------------------------------------------
497
-
498
- Installing prrerelease versions are strange on RubyGems.
499
- Anyways, new project, no risk of breakage, so maybe this
500
- works better...
501
-
502
- COPYRIGHT
503
- ---------
504
- Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
505
- License: GPLv3 or later (http://www.gnu.org/licenses/gpl-3.0.txt)