puma 4.3.8 → 5.6.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +1543 -521
  3. data/LICENSE +23 -20
  4. data/README.md +120 -36
  5. data/bin/puma-wild +3 -9
  6. data/docs/architecture.md +63 -26
  7. data/docs/compile_options.md +21 -0
  8. data/docs/deployment.md +60 -69
  9. data/docs/fork_worker.md +33 -0
  10. data/docs/jungle/README.md +9 -0
  11. data/{tools → docs}/jungle/rc.d/README.md +1 -1
  12. data/{tools → docs}/jungle/rc.d/puma +2 -2
  13. data/docs/kubernetes.md +66 -0
  14. data/docs/nginx.md +1 -1
  15. data/docs/plugins.md +15 -15
  16. data/docs/rails_dev_mode.md +28 -0
  17. data/docs/restart.md +46 -23
  18. data/docs/signals.md +13 -11
  19. data/docs/stats.md +142 -0
  20. data/docs/systemd.md +85 -128
  21. data/ext/puma_http11/PumaHttp11Service.java +2 -4
  22. data/ext/puma_http11/ext_help.h +1 -1
  23. data/ext/puma_http11/extconf.rb +51 -9
  24. data/ext/puma_http11/http11_parser.c +68 -57
  25. data/ext/puma_http11/http11_parser.h +1 -1
  26. data/ext/puma_http11/http11_parser.java.rl +1 -1
  27. data/ext/puma_http11/http11_parser.rl +1 -1
  28. data/ext/puma_http11/http11_parser_common.rl +1 -1
  29. data/ext/puma_http11/mini_ssl.c +295 -124
  30. data/ext/puma_http11/no_ssl/PumaHttp11Service.java +15 -0
  31. data/ext/puma_http11/org/jruby/puma/Http11.java +5 -3
  32. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +51 -51
  33. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +109 -67
  34. data/ext/puma_http11/puma_http11.c +32 -51
  35. data/lib/puma/app/status.rb +50 -36
  36. data/lib/puma/binder.rb +225 -106
  37. data/lib/puma/cli.rb +24 -18
  38. data/lib/puma/client.rb +197 -92
  39. data/lib/puma/cluster/worker.rb +173 -0
  40. data/lib/puma/cluster/worker_handle.rb +94 -0
  41. data/lib/puma/cluster.rb +212 -220
  42. data/lib/puma/commonlogger.rb +2 -2
  43. data/lib/puma/configuration.rb +58 -49
  44. data/lib/puma/const.rb +26 -9
  45. data/lib/puma/control_cli.rb +99 -76
  46. data/lib/puma/detect.rb +29 -2
  47. data/lib/puma/dsl.rb +368 -96
  48. data/lib/puma/error_logger.rb +104 -0
  49. data/lib/puma/events.rb +55 -34
  50. data/lib/puma/io_buffer.rb +9 -2
  51. data/lib/puma/jruby_restart.rb +0 -58
  52. data/lib/puma/json_serialization.rb +96 -0
  53. data/lib/puma/launcher.rb +128 -46
  54. data/lib/puma/minissl/context_builder.rb +14 -9
  55. data/lib/puma/minissl.rb +137 -50
  56. data/lib/puma/null_io.rb +18 -1
  57. data/lib/puma/plugin.rb +3 -12
  58. data/lib/puma/queue_close.rb +26 -0
  59. data/lib/puma/rack/builder.rb +1 -5
  60. data/lib/puma/reactor.rb +85 -369
  61. data/lib/puma/request.rb +489 -0
  62. data/lib/puma/runner.rb +46 -61
  63. data/lib/puma/server.rb +292 -751
  64. data/lib/puma/single.rb +9 -65
  65. data/lib/puma/state_file.rb +48 -8
  66. data/lib/puma/systemd.rb +46 -0
  67. data/lib/puma/thread_pool.rb +125 -57
  68. data/lib/puma/util.rb +32 -4
  69. data/lib/puma.rb +48 -0
  70. data/lib/rack/handler/puma.rb +2 -3
  71. data/lib/rack/version_restriction.rb +15 -0
  72. data/tools/{docker/Dockerfile → Dockerfile} +1 -1
  73. metadata +29 -24
  74. data/docs/tcp_mode.md +0 -96
  75. data/ext/puma_http11/io_buffer.c +0 -155
  76. data/ext/puma_http11/org/jruby/puma/IOBuffer.java +0 -72
  77. data/lib/puma/accept_nonblock.rb +0 -29
  78. data/lib/puma/tcp_logger.rb +0 -41
  79. data/tools/jungle/README.md +0 -19
  80. data/tools/jungle/init.d/README.md +0 -61
  81. data/tools/jungle/init.d/puma +0 -421
  82. data/tools/jungle/init.d/run-puma +0 -18
  83. data/tools/jungle/upstart/README.md +0 -61
  84. data/tools/jungle/upstart/puma-manager.conf +0 -31
  85. data/tools/jungle/upstart/puma.conf +0 -69
  86. /data/{tools → docs}/jungle/rc.d/puma.conf +0 -0
data/History.md CHANGED
@@ -1,31 +1,386 @@
1
+ ## 5.6.9 / 2024-09-19
2
+
3
+ * Security
4
+ * Discards any headers using underscores if the non-underscore version also exists. Without this, an attacker could overwrite values set by intermediate proxies (e.g. X-Forwarded-For). ([CVE-2024-45614](https://github.com/puma/puma/security/advisories/GHSA-9hf4-67fc-4vf4)/GHSA-9hf4-67fc-4vf4)
5
+
6
+ ## 5.6.8 / 2024-01-08
7
+
8
+ * Security
9
+ * Limit the size of chunk extensions. Without this limit, an attacker could cause unbounded resource (CPU, network bandwidth) consumption. ([GHSA-c2f4-cvqm-65w2](https://github.com/puma/puma/security/advisories/GHSA-c2f4-cvqm-65w2))
10
+
11
+ ## 5.6.7 / 2023-08-18
12
+
13
+ * Security
14
+ * Address HTTP request smuggling vulnerabilities with zero-length Content Length header and trailer fields ([GHSA-68xg-gqqm-vgj8](https://github.com/puma/puma/security/advisories/GHSA-68xg-gqqm-vgj8))
15
+
16
+ ## 5.6.6 / 2023-06-21
17
+
18
+ * Bugfix
19
+ * Allow Puma to be loaded with Rack 3 ([#3166])
20
+
21
+ ## 5.6.5 / 2022-08-23
22
+
23
+ * Feature
24
+ * Puma::ControlCLI - allow refork command to be sent as a request ([#2868], [#2866])
25
+
26
+ * Bugfixes
27
+ * NullIO#closed should return false ([#2883])
28
+ * [jruby] Fix TLS verification hang ([#2890], [#2729])
29
+ * extconf.rb - don't use pkg_config('openssl') if '--with-openssl-dir' is used ([#2885], [#2839])
30
+ * MiniSSL - detect SSL_CTX_set_dh_auto ([#2864], [#2863])
31
+ * Fix rack.after_reply exceptions breaking connections ([#2861], [#2856])
32
+ * Escape SSL cert and filenames ([#2855])
33
+ * Fail hard if SSL certs or keys are invalid ([#2848])
34
+ * Fail hard if SSL certs or keys cannot be read by user ([#2847])
35
+ * Fix build with Opaque DH in LibreSSL 3.5. ([#2838])
36
+ * Pre-existing socket file removed when TERM is issued after USR2 (if puma is running in cluster mode) ([#2817])
37
+ * Fix Puma::StateFile#load incompatibility ([#2810])
38
+
39
+ ## 5.6.4 / 2022-03-30
40
+
41
+ * Security
42
+ * Close several HTTP Request Smuggling exploits (CVE-2022-24790)
43
+
44
+ ## 5.6.2 / 2022-02-11
45
+
46
+ * Bugfix/Security
47
+ * Response body will always be `close`d. (GHSA-rmj8-8hhh-gv5h, related to [#2809])
48
+
49
+ ## 5.6.1 / 2022-01-26
50
+
51
+ * Bugfixes
52
+ * Reverted a commit which appeared to be causing occasional blank header values ([#2809])
53
+
54
+ ## 5.6.0 / 2022-01-25
55
+
56
+ * Features
57
+ * Support `localhost` integration in `ssl_bind` ([#2764], [#2708])
58
+ * Allow backlog parameter to be set with ssl_bind DSL ([#2780])
59
+ * Remove yaml (psych) requirement in StateFile ([#2784])
60
+ * Allow culling of oldest workers, previously was only youngest ([#2773], [#2794])
61
+ * Add worker_check_interval configuration option ([#2759])
62
+ * Always send lowlevel_error response to client ([#2731], [#2341])
63
+ * Support for cert_pem and key_pem with ssl_bind DSL ([#2728])
64
+
65
+ * Bugfixes
66
+ * Keep thread names under 15 characters, prevents breakage on some OSes ([#2733])
67
+ * Fix two 'old-style-definition' compile warning ([#2807], [#2806])
68
+ * Log environment correctly using option value ([#2799])
69
+ * Fix warning from Ruby master (will be 3.2.0) ([#2785])
70
+ * extconf.rb - fix openssl with old Windows builds ([#2757])
71
+ * server.rb - rescue handling (`Errno::EBADF`) for `@notify.close` ([#2745])
72
+
73
+ * Refactor
74
+ * server.rb - refactor code using @options[:remote_address] ([#2742])
75
+ * [jruby] a couple refactorings - avoid copy-ing bytes ([#2730])
76
+
77
+ ## 5.5.2 / 2021-10-12
78
+
79
+ * Bugfixes
80
+ * Allow UTF-8 in HTTP header values
81
+
82
+ ## 5.5.1 / 2021-10-12
83
+
84
+ * Feature (added as mistake - we don't normally do this on bugfix releases, sorry!)
85
+ * Allow setting APP_ENV in preference to RACK_ENV or RAILS_ENV ([#2702])
86
+
87
+ * Security
88
+ * Do not allow LF as a line ending in a header (CVE-2021-41136)
89
+
90
+ ## 5.5.0 / 2021-09-19
91
+
92
+ * Features
93
+ * Automatic SSL certificate provisioning for localhost, via localhost gem ([#2610], [#2257])
94
+ * add support for the PROXY protocol (v1 only) ([#2654], [#2651])
95
+ * Add a semantic CLI option for no config file ([#2689])
96
+
97
+ * Bugfixes
98
+ * More elaborate exception handling - lets some dead pumas die. ([#2700], [#2699])
99
+ * allow multiple after_worker_fork hooks ([#2690])
100
+ * Preserve BUNDLE_APP_CONFIG on worker fork ([#2688], [#2687])
101
+
102
+ * Performance
103
+ * Fix performance of server-side SSL connection close. ([#2675])
104
+
105
+ ## 5.4.0 / 2021-07-28
106
+
107
+ * Features
108
+ * Better/expanded names for threadpool threads ([#2657])
109
+ * Allow pkg_config for OpenSSL ([#2648], [#1412])
110
+ * Add `rack_url_scheme` to Puma::DSL, allows setting of `rack.url_scheme` header ([#2586], [#2569])
111
+
112
+ * Bugfixes
113
+ * `Binder#parse` - allow for symlinked unix path, add create_activated_fds debug ENV ([#2643], [#2638])
114
+ * Fix deprecation warning: minissl.c - Use Random.bytes if available ([#2642])
115
+ * Client certificates: set session id context while creating SSLContext ([#2633])
116
+ * Fix deadlock issue in thread pool ([#2656])
117
+
118
+ * Refactor
119
+ * Replace `IO.select` with `IO#wait_*` when checking a single IO ([#2666])
120
+
121
+ ## 5.3.2 / 2021-05-21
122
+
123
+ * Bugfixes
124
+ * Gracefully handle Rack not accepting CLI options ([#2630], [#2626])
125
+ * Fix sigterm misbehavior ([#2629])
126
+ * Improvements to keepalive-connection shedding ([#2628])
127
+
128
+ ## 5.3.1 / 2021-05-11
129
+
130
+ * Security
131
+ * Close keepalive connections after the maximum number of fast inlined requests (CVE-2021-29509) ([#2625])
132
+
133
+ ## 5.3.0 / 2021-05-07
134
+
135
+ * Features
136
+ * Add support for Linux's abstract sockets ([#2564], [#2526])
137
+ * Add debug to worker timeout and startup ([#2559], [#2528])
138
+ * Print warning when running one-worker cluster ([#2565], [#2534])
139
+ * Don't close systemd activated socket on pumactl restart ([#2563], [#2504])
140
+
141
+ * Bugfixes
142
+ * systemd - fix event firing ([#2591], [#2572])
143
+ * Immediately unlink temporary files ([#2613])
144
+ * Improve parsing of HTTP_HOST header ([#2605], [#2584])
145
+ * Handle fatal error that has no backtrace ([#2607], [#2552])
146
+ * Fix timing out requests too early ([#2606], [#2574])
147
+ * Handle segfault in Ruby 2.6.6 on thread-locals ([#2567], [#2566])
148
+ * Server#closed_socket? - parameter may be a MiniSSL::Socket ([#2596])
149
+ * Define UNPACK_TCP_STATE_FROM_TCP_INFO in the right place ([#2588], [#2556])
150
+ * request.rb - fix chunked assembly for ascii incompatible encodings, add test ([#2585], [#2583])
151
+
152
+ * Performance
153
+ * Reset peerip only if remote_addr_header is set ([#2609])
154
+ * Reduce puma_parser struct size ([#2590])
155
+
156
+ * Refactor
157
+ * Refactor drain on shutdown ([#2600])
158
+ * Micro optimisations in `wait_for_less_busy_worker` feature ([#2579])
159
+ * Lots of test fixes
160
+
161
+ ## 5.2.2 / 2021-02-22
162
+
163
+ * Bugfixes
164
+ * Add `#flush` and `#sync` methods to `Puma::NullIO` ([#2553])
165
+ * Restore `sync=true` on `STDOUT` and `STDERR` streams ([#2557])
166
+
167
+ ## 5.2.1 / 2021-02-05
168
+
169
+ * Bugfixes
170
+ * Fix TCP cork/uncork operations to work with ssl clients ([#2550])
171
+ * Require rack/common_logger explicitly if :verbose is true ([#2547])
172
+ * MiniSSL::Socket#write - use data.byteslice(wrote..-1) ([#2543])
173
+ * Set `@env[CONTENT_LENGTH]` value as string. ([#2549])
174
+
175
+ ## 5.2.0 / 2021-01-27
176
+
177
+ * Features
178
+ * 10x latency improvement for MRI on ssl connections by reducing overhead ([#2519])
179
+ * Add option to specify the desired IO selector backend for libev ([#2522])
180
+ * Add ability to set OpenSSL verification flags (MRI only) ([#2490])
181
+ * Uses `flush` after writing messages to avoid mutating $stdout and $stderr using `sync=true` ([#2486])
182
+
183
+ * Bugfixes
184
+ * MiniSSL - Update dhparam to 2048 bit for use with SSL_CTX_set_tmp_dh ([#2535])
185
+ * Change 'Goodbye!' message to be output after listeners are closed ([#2529])
186
+ * Fix ssl bind logging with 0.0.0.0 and localhost ([#2533])
187
+ * Fix compiler warnings, but skipped warnings related to ragel state machine generated code ([#1953])
188
+ * Fix phased restart errors related to nio4r gem when using the Puma control server ([#2516])
189
+ * Add `#string` method to `Puma::NullIO` ([#2520])
190
+ * Fix binding via Rack handler to IPv6 addresses ([#2521])
191
+
192
+ * Refactor
193
+ * Refactor MiniSSL::Context on MRI, fix MiniSSL::Socket#write ([#2519])
194
+ * Remove `Server#read_body` ([#2531])
195
+ * Fail build if compiling extensions raises warnings on GH Actions, configurable via `MAKE_WARNINGS_INTO_ERRORS` ([#1953])
196
+
197
+ ## 5.1.1 / 2020-12-10
198
+
199
+ * Bugfixes
200
+ * Fix over eager matching against banned header names ([#2510])
201
+
202
+ ## 5.1.0 / 2020-11-30
203
+
204
+ * Features
205
+ * Phased restart availability is now always logged, even if it is not available.
206
+ * Prints the loaded configuration if the environment variable `PUMA_LOG_CONFIG` is present ([#2472])
207
+ * Integrate with systemd's watchdog and notification features ([#2438])
208
+ * Adds max_fast_inline as a configuration option for the Server object ([#2406])
209
+ * You can now fork workers from worker 0 using SIGURG w/o fork_worker enabled [#2449]
210
+ * Add option to bind to systemd activated sockets ([#2362])
211
+ * Add compile option to change the `QUERY_STRING` max length ([#2485])
212
+
213
+ * Bugfixes
214
+ * Fix JRuby handling in Puma::DSL#ssl_bind ([#2489])
215
+ * control_cli.rb - all normal output should be to @stdout ([#2487])
216
+ * Catch 'Error in reactor loop escaped: mode not supported for this object: r' ([#2477])
217
+ * Ignore Rails' reaper thread (and any thread marked forksafe) for warning ([#2475])
218
+ * Ignore illegal (by Rack spec) response header ([#2439])
219
+ * Close idle connections immediately on shutdown ([#2460])
220
+ * Fix some instances of phased restart errors related to the `json` gem ([#2473])
221
+ * Remove use of `json` gem to fix phased restart errors ([#2479])
222
+ * Fix grouping regexp of ILLEGAL_HEADER_KEY_REGEX ([#2495])
223
+
224
+ ## 5.0.4 / 2020-10-27
225
+
226
+ * Bugfixes
227
+ * Pass preloaded application into new workers if available when using `preload_app` ([#2461], [#2454])
228
+
229
+ ## 5.0.3 / 2020-10-26
230
+
231
+ * Bugfixes
232
+ * Add Client#io_ok?, check before Reactor#register ([#2432])
233
+ * Fix hang on shutdown in refork ([#2442])
234
+ * Fix `Bundler::GemNotFound` errors for `nio4r` gem during phased restarts ([#2427], [#2018])
235
+ * Server run thread safety fix ([#2435])
236
+ * Fire `on_booted` after server starts ([#2431], [#2212])
237
+ * Cleanup daemonization in rc.d script ([#2409])
238
+
239
+ * Refactor
240
+ * Remove accept_nonblock.rb, add test_integration_ssl.rb ([#2448])
241
+ * Refactor status.rb - dry it up a bit ([#2450])
242
+ * Extract req/resp methods to new request.rb from server.rb ([#2419])
243
+ * Refactor Reactor and Client request buffering ([#2279])
244
+ * client.rb - remove JRuby specific 'finish' code ([#2412])
245
+ * Consolidate fast_write calls in Server, extract early_hints assembly ([#2405])
246
+ * Remove upstart from docs ([#2408])
247
+ * Extract worker process into separate class ([#2374])
248
+ * Consolidate option handling in Server, Server small refactors, doc changes ([#2389])
249
+
250
+ ## 5.0.2 / 2020-09-28
251
+
252
+ * Bugfixes
253
+ * Reverted API changes to Server.
254
+
255
+ ## 5.0.1 / 2020-09-28
256
+
257
+ * Bugfixes
258
+ * Fix LoadError in CentOS 8 ([#2381])
259
+ * Better error handling during force shutdown ([#2271])
260
+ * Prevent connections from entering Reactor after shutdown begins ([#2377])
261
+ * Fix error backtrace debug logging && Do not log request dump if it is not parsed ([#2376])
262
+ * Split TCP_CORK and TCP_INFO ([#2372])
263
+ * Do not log EOFError when a client connection is closed without write ([#2384])
264
+
265
+ * Refactor
266
+ * Change Events#ssl_error signature from (error, peeraddr, peercert) to (error, ssl_socket) ([#2375])
267
+ * Consolidate option handling in Server, Server small refactors, doc chang ([#2373])
268
+
269
+ ## 5.0.0 / 2020-09-17
270
+
271
+ * Features
272
+ * Allow compiling without OpenSSL and dynamically load files needed for SSL, add 'no ssl' CI ([#2305])
273
+ * EXPERIMENTAL: Add `fork_worker` option and `refork` command for reduced memory usage by forking from a worker process instead of the master process. ([#2099])
274
+ * EXPERIMENTAL: Added `wait_for_less_busy_worker` config. This may reduce latency on MRI through inserting a small delay before re-listening on the socket if worker is busy ([#2079]).
275
+ * EXPERIMENTAL: Added `nakayoshi_fork` option. Reduce memory usage in preloaded cluster-mode apps by GCing before fork and compacting, where available. ([#2093], [#2256])
276
+ * Added pumactl `thread-backtraces` command to print thread backtraces ([#2054])
277
+ * Added incrementing `requests_count` to `Puma.stats`. ([#2106])
278
+ * Increased maximum URI path length from 2048 to 8192 bytes ([#2167], [#2344])
279
+ * `lowlevel_error_handler` is now called during a forced threadpool shutdown, and if a callable with 3 arguments is set, we now also pass the status code ([#2203])
280
+ * Faster phased restart and worker timeout ([#2220])
281
+ * Added `state_permission` to config DSL to set state file permissions ([#2238])
282
+ * Added `Puma.stats_hash`, which returns a stats in Hash instead of a JSON string ([#2086], [#2253])
283
+ * `rack.multithread` and `rack.multiprocess` now dynamically resolved by `max_thread` and `workers` respectively ([#2288])
284
+
285
+ * Deprecations, Removals and Breaking API Changes
286
+ * `--control` has been removed. Use `--control-url` ([#1487])
287
+ * `worker_directory` has been removed. Use `directory`.
288
+ * min_threads now set by environment variables PUMA_MIN_THREADS and MIN_THREADS. ([#2143])
289
+ * max_threads now set by environment variables PUMA_MAX_THREADS and MAX_THREADS. ([#2143])
290
+ * max_threads default to 5 in MRI or 16 for all other interpreters. ([#2143])
291
+ * `preload_app!` is on by default if number of workers > 1 and set via `WEB_CONCURRENCY` ([#2143])
292
+ * Puma::Plugin.workers_supported? has been removed. Use Puma.forkable? instead. ([#2143])
293
+ * `tcp_mode` has been removed without replacement. ([#2169])
294
+ * Daemonization has been removed without replacement. ([#2170])
295
+ * Changed #connected_port to #connected_ports ([#2076])
296
+ * Configuration: `environment` is read from `RAILS_ENV`, if `RACK_ENV` can't be found ([#2022])
297
+ * Log binding on http:// for TCP bindings to make it clickable ([#2300])
298
+
299
+ * Bugfixes
300
+ * Fix JSON loading issues on phased-restarts ([#2269])
301
+ * Improve shutdown reliability ([#2312], [#2338])
302
+ * Close client http connections made to an ssl server with TLSv1.3 ([#2116])
303
+ * Do not set user_config to quiet by default to allow for file config ([#2074])
304
+ * Always close SSL connection in Puma::ControlCLI ([#2211])
305
+ * Windows update extconf.rb for use with ssp and varied Ruby/MSYS2 combinations ([#2069])
306
+ * Ensure control server Unix socket is closed on shutdown ([#2112])
307
+ * Preserve `BUNDLE_GEMFILE` env var when using `prune_bundler` ([#1893])
308
+ * Send 408 request timeout even when queue requests is disabled ([#2119])
309
+ * Rescue IO::WaitReadable instead of EAGAIN for blocking read ([#2121])
310
+ * Ensure `BUNDLE_GEMFILE` is unspecified in workers if unspecified in master when using `prune_bundler` ([#2154])
311
+ * Rescue and log exceptions in hooks defined by users (on_worker_boot, after_worker_fork etc) ([#1551])
312
+ * Read directly from the socket in #read_and_drop to avoid raising further SSL errors ([#2198])
313
+ * Set `Connection: closed` header when queue requests is disabled ([#2216])
314
+ * Pass queued requests to thread pool on server shutdown ([#2122])
315
+ * Fixed a few minor concurrency bugs in ThreadPool that may have affected non-GVL Rubies ([#2220])
316
+ * Fix `out_of_band` hook never executed if the number of worker threads is > 1 ([#2177])
317
+ * Fix ThreadPool#shutdown timeout accuracy ([#2221])
318
+ * Fix `UserFileDefaultOptions#fetch` to properly use `default` ([#2233])
319
+ * Improvements to `out_of_band` hook ([#2234])
320
+ * Prefer the rackup file specified by the CLI ([#2225])
321
+ * Fix for spawning subprocesses with fork_worker option ([#2267])
322
+ * Set `CONTENT_LENGTH` for chunked requests ([#2287])
323
+ * JRuby - Add Puma::MiniSSL::Engine#init? and #teardown methods, run all SSL tests ([#2317])
324
+ * Improve shutdown reliability ([#2312])
325
+ * Resolve issue with threadpool waiting counter decrement when thread is killed
326
+ * Constrain rake-compiler version to 0.9.4 to fix `ClassNotFound` exception when using MiniSSL with Java8.
327
+ * Fix recursive `prune_bundler` ([#2319]).
328
+ * Ensure that TCP_CORK is usable
329
+ * Fix corner case when request body is chunked ([#2326])
330
+ * Fix filehandle leak in MiniSSL ([#2299])
331
+
332
+ * Refactor
333
+ * Remove unused loader argument from Plugin initializer ([#2095])
334
+ * Simplify `Configuration.random_token` and remove insecure fallback ([#2102])
335
+ * Simplify `Runner#start_control` URL parsing ([#2111])
336
+ * Removed the IOBuffer extension and replaced with Ruby ([#1980])
337
+ * Update `Rack::Handler::Puma.run` to use `**options` ([#2189])
338
+ * ThreadPool concurrency refactoring ([#2220])
339
+ * JSON parse cluster worker stats instead of regex ([#2124])
340
+ * Support parallel tests in verbose progress reporting ([#2223])
341
+ * Refactor error handling in server accept loop ([#2239])
342
+
343
+ ## 4.3.10 / 2021-10-12
344
+
345
+ * Bugfixes
346
+ * Allow UTF-8 in HTTP header values
347
+
348
+ ## 4.3.9 / 2021-10-12
349
+
350
+ * Security
351
+ * Do not allow LF as a line ending in a header (CVE-2021-41136)
352
+
1
353
  ## 4.3.8 / 2021-05-11
2
354
 
3
355
  * Security
4
- * Close keepalive connections after the maximum number of fast inlined requests (#2625)
356
+ * Close keepalive connections after the maximum number of fast inlined requests (CVE-2021-29509) ([#2625])
5
357
 
6
358
  ## 4.3.7 / 2020-11-30
7
359
 
8
360
  * Bugfixes
9
- * Backport set CONTENT_LENGTH for chunked requests (Originally: #2287, backport: #2496)
361
+ * Backport set CONTENT_LENGTH for chunked requests (Originally: [#2287], backport: [#2496])
10
362
 
11
363
  ## 4.3.6 / 2020-09-05
12
364
 
13
365
  * Bugfixes
14
- * Explicitly include ctype.h to fix compilation warning and build error on macOS with Xcode 12 (#2304)
15
- * Don't require json at boot (#2269)
16
- * Set `CONTENT_LENGTH` for chunked requests (#2287)
366
+ * Explicitly include ctype.h to fix compilation warning and build error on macOS with Xcode 12 ([#2304])
367
+ * Don't require json at boot ([#2269])
17
368
 
18
369
  ## 4.3.4/4.3.5 and 3.12.5/3.12.6 / 2020-05-22
19
370
 
20
371
  Each patchlevel release contains a separate security fix. We recommend simply upgrading to 4.3.5/3.12.6.
21
372
 
373
+ * Security
374
+ * Fix: Fixed two separate HTTP smuggling vulnerabilities that used the Transfer-Encoding header. CVE-2020-11076 and CVE-2020-11077.
375
+
22
376
  ## 4.3.3 and 3.12.4 / 2020-02-28
23
- * Bugfixes
24
- * Fix: Fixes a problem where we weren't splitting headers correctly on newlines (#2132)
25
- * Security
26
- * Fix: Prevent HTTP Response splitting via CR in early hints.
27
377
 
28
- ## 4.3.2 and 3.12.3 / 2020-02-27
378
+ * Bugfixes
379
+ * Fix: Fixes a problem where we weren't splitting headers correctly on newlines ([#2132])
380
+ * Security
381
+ * Fix: Prevent HTTP Response splitting via CR in early hints. CVE-2020-5249.
382
+
383
+ ## 4.3.2 and 3.12.3 / 2020-02-27 (YANKED)
29
384
 
30
385
  * Security
31
386
  * Fix: Prevent HTTP Response splitting via CR/LF in header values. CVE-2020-5247.
@@ -38,152 +393,146 @@ Each patchlevel release contains a separate security fix. We recommend simply up
38
393
  ## 4.3.0 / 2019-11-07
39
394
 
40
395
  * Features
41
- * Strip whitespace at end of HTTP headers (#2010)
42
- * Optimize HTTP parser for JRuby (#2012)
43
- * Add SSL support for the control app and cli (#2046, #2052)
396
+ * Strip whitespace at end of HTTP headers ([#2010])
397
+ * Optimize HTTP parser for JRuby ([#2012])
398
+ * Add SSL support for the control app and cli ([#2046], [#2052])
44
399
 
45
400
  * Bugfixes
46
- * Fix Errno::EINVAL when SSL is enabled and browser rejects cert (#1564)
47
- * Fix pumactl defaulting puma to development if an environment was not specified (#2035)
48
- * Fix closing file stream when reading pid from pidfile (#2048)
49
- * Fix a typo in configuration option `--extra_runtime_dependencies` (#2050)
401
+ * Fix Errno::EINVAL when SSL is enabled and browser rejects cert ([#1564])
402
+ * Fix pumactl defaulting puma to development if an environment was not specified ([#2035])
403
+ * Fix closing file stream when reading pid from pidfile ([#2048])
404
+ * Fix a typo in configuration option `--extra_runtime_dependencies` ([#2050])
50
405
 
51
406
  ## 4.2.1 / 2019-10-07
52
407
 
53
408
  * 3 bugfixes
54
- * Fix socket activation of systemd (pre-existing) unix binder files (#1842, #1988)
55
- * Deal with multiple calls to bind correctly (#1986, #1994, #2006)
56
- * Accepts symbols for `verify_mode` (#1222)
409
+ * Fix socket activation of systemd (pre-existing) unix binder files ([#1842], [#1988])
410
+ * Deal with multiple calls to bind correctly ([#1986], [#1994], [#2006])
411
+ * Accepts symbols for `verify_mode` ([#1222])
57
412
 
58
413
  ## 4.2.0 / 2019-09-23
59
414
 
60
415
  * 6 features
61
- * Pumactl has a new -e environment option and reads `config/puma/<environment>.rb` config files (#1885)
62
- * Semicolons are now allowed in URL paths (MRI only), useful for Angular or Redmine (#1934)
63
- * Allow extra dependencies to be defined when using prune_bundler (#1105)
64
- * Puma now reports the correct port when binding to port 0, also reports other listeners when binding to localhost (#1786)
65
- * Sending SIGINFO to any Puma worker now prints currently active threads and their backtraces (#1320)
66
- * Puma threads all now have their name set on Ruby 2.3+ (#1968)
416
+ * Pumactl has a new -e environment option and reads `config/puma/<environment>.rb` config files ([#1885])
417
+ * Semicolons are now allowed in URL paths (MRI only), useful for Angular or Redmine ([#1934])
418
+ * Allow extra dependencies to be defined when using prune_bundler ([#1105])
419
+ * Puma now reports the correct port when binding to port 0, also reports other listeners when binding to localhost ([#1786])
420
+ * Sending SIGINFO to any Puma worker now prints currently active threads and their backtraces ([#1320])
421
+ * Puma threads all now have their name set on Ruby 2.3+ ([#1968])
67
422
  * 4 bugfixes
68
- * Fix some misbehavior with phased restart and externally SIGTERMed workers (#1908, #1952)
69
- * Fix socket closing on error (#1941)
70
- * Removed unnecessary SIGINT trap for JRuby that caused some race conditions (#1961)
71
- * Fix socket files being left around after process stopped (#1970)
423
+ * Fix some misbehavior with phased restart and externally SIGTERMed workers ([#1908], [#1952])
424
+ * Fix socket closing on error ([#1941])
425
+ * Removed unnecessary SIGINT trap for JRuby that caused some race conditions ([#1961])
426
+ * Fix socket files being left around after process stopped ([#1970])
72
427
  * Absolutely thousands of lines of test improvements and fixes thanks to @MSP-Greg
73
428
 
74
429
  ## 4.1.1 / 2019-09-05
75
430
 
76
431
  * 3 bugfixes
77
- * Revert our attempt to not dup STDOUT/STDERR (#1946)
78
- * Fix socket close on error (#1941)
79
- * Fix workers not shutting down correctly (#1908)
432
+ * Revert our attempt to not dup STDOUT/STDERR ([#1946])
433
+ * Fix socket close on error ([#1941])
434
+ * Fix workers not shutting down correctly ([#1908])
80
435
 
81
436
  ## 4.1.0 / 2019-08-08
82
437
 
83
438
  * 4 features
84
- * Add REQUEST_PATH on parse error message (#1831)
85
- * You can now easily add custom log formatters with the `log_formatter` config option (#1816)
86
- * Puma.stats now provides process start times (#1844)
87
- * Add support for disabling TLSv1.1 (#1836)
439
+ * Add REQUEST_PATH on parse error message ([#1831])
440
+ * You can now easily add custom log formatters with the `log_formatter` config option ([#1816])
441
+ * Puma.stats now provides process start times ([#1844])
442
+ * Add support for disabling TLSv1.1 ([#1836])
88
443
 
89
444
  * 7 bugfixes
90
- * Fix issue where Puma was creating zombie process entries (#1887)
91
- * Fix bugs with line-endings and chunked encoding (#1812)
92
- * RACK_URL_SCHEME is now set correctly in all conditions (#1491)
93
- * We no longer mutate global STDOUT/STDERR, particularly the sync setting (#1837)
94
- * SSL read_nonblock no longer blocks (#1857)
95
- * Swallow connection errors when sending early hints (#1822)
96
- * Backtrace no longer dumped when invalid pumactl commands are run (#1863)
445
+ * Fix issue where Puma was creating zombie process entries ([#1887])
446
+ * Fix bugs with line-endings and chunked encoding ([#1812])
447
+ * RACK_URL_SCHEME is now set correctly in all conditions ([#1491])
448
+ * We no longer mutate global STDOUT/STDERR, particularly the sync setting ([#1837])
449
+ * SSL read_nonblock no longer blocks ([#1857])
450
+ * Swallow connection errors when sending early hints ([#1822])
451
+ * Backtrace no longer dumped when invalid pumactl commands are run ([#1863])
97
452
 
98
453
  * 5 other
99
- * Avoid casting worker_timeout twice (#1838)
100
- * Removed a call to private that wasn't doing anything (#1882)
101
- * README, Rakefile, docs and test cleanups (#1848, #1847, #1846, #1853, #1859, #1850, #1866, #1870, #1872, #1833, #1888)
454
+ * Avoid casting worker_timeout twice ([#1838])
455
+ * Removed a call to private that wasn't doing anything ([#1882])
456
+ * README, Rakefile, docs and test cleanups ([#1848], [#1847], [#1846], [#1853], #1859, [#1850], [#1866], [#1870], [#1872], [#1833], [#1888])
102
457
  * Puma.io has proper documentation now (https://puma.io/puma/)
103
458
  * Added the Contributor Covenant CoC
104
459
 
105
460
  * 1 known issue
106
- * Some users are still experiencing issues surrounding socket activation and Unix sockets (#1842)
461
+ * Some users are still experiencing issues surrounding socket activation and Unix sockets ([#1842])
107
462
 
108
463
  ## 4.0.1 / 2019-07-11
109
464
 
110
465
  * 2 bugfixes
111
- * Fix socket removed after reload - should fix problems with systemd socket activation. (#1829)
112
- * Add extconf tests for DTLS_method & TLS_server_method, use in minissl.rb. Should fix "undefined symbol: DTLS_method" when compiling against old OpenSSL versions. (#1832)
466
+ * Fix socket removed after reload - should fix problems with systemd socket activation. ([#1829])
467
+ * Add extconf tests for DTLS_method & TLS_server_method, use in minissl.rb. Should fix "undefined symbol: DTLS_method" when compiling against old OpenSSL versions. ([#1832])
113
468
  * 1 other
114
- * Removed unnecessary RUBY_VERSION checks. (#1827)
469
+ * Removed unnecessary RUBY_VERSION checks. ([#1827])
115
470
 
116
471
  ## 4.0.0 / 2019-06-25
117
472
 
118
473
  * 9 features
119
- * Add support for disabling TLSv1.0 (#1562)
120
- * Request body read time metric (#1569)
121
- * Add out_of_band hook (#1648)
122
- * Re-implement (native) IOBuffer for JRuby (#1691)
123
- * Min worker timeout (#1716)
124
- * Add option to suppress SignalException on SIGTERM (#1690)
125
- * Allow mutual TLS CA to be set using `ssl_bind` DSL (#1689)
126
- * Reactor now uses nio4r instead of `select` (#1728)
127
- * Add status to pumactl with pidfile (#1824)
474
+ * Add support for disabling TLSv1.0 ([#1562])
475
+ * Request body read time metric ([#1569])
476
+ * Add out_of_band hook ([#1648])
477
+ * Re-implement (native) IOBuffer for JRuby ([#1691])
478
+ * Min worker timeout ([#1716])
479
+ * Add option to suppress SignalException on SIGTERM ([#1690])
480
+ * Allow mutual TLS CA to be set using `ssl_bind` DSL ([#1689])
481
+ * Reactor now uses nio4r instead of `select` ([#1728])
482
+ * Add status to pumactl with pidfile ([#1824])
128
483
 
129
484
  * 10 bugfixes
130
- * Do not accept new requests on shutdown (#1685, #1808)
131
- * Fix 3 corner cases when request body is chunked (#1508)
132
- * Change pid existence check's condition branches (#1650)
133
- * Don't call .stop on a server that doesn't exist (#1655)
134
- * Implemented NID_X9_62_prime256v1 (P-256) curve over P-521 (#1671)
135
- * Fix @notify.close can't modify frozen IOError (RuntimeError) (#1583)
136
- * Fix Java 8 support (#1773)
137
- * Fix error `uninitialized constant Puma::Cluster` (#1731)
138
- * Fix `not_token` being able to be set to true (#1803)
139
- * Fix "Hang on SIGTERM with ruby 2.6 in clustered mode" ([PR #1741], [#1674], [#1720], [#1730], [#1755])
140
-
141
- [PR #1741]: https://github.com/puma/puma/pull/1741
142
- [#1674]: https://github.com/puma/puma/issues/1674
143
- [#1720]: https://github.com/puma/puma/issues/1720
144
- [#1730]: https://github.com/puma/puma/issues/1730
145
- [#1755]: https://github.com/puma/puma/issues/1755
485
+ * Do not accept new requests on shutdown ([#1685], [#1808])
486
+ * Fix 3 corner cases when request body is chunked ([#1508])
487
+ * Change pid existence check's condition branches ([#1650])
488
+ * Don't call .stop on a server that doesn't exist ([#1655])
489
+ * Implemented NID_X9_62_prime256v1 (P-256) curve over P-521 ([#1671])
490
+ * Fix @notify.close can't modify frozen IOError (RuntimeError) ([#1583])
491
+ * Fix Java 8 support ([#1773])
492
+ * Fix error `uninitialized constant Puma::Cluster` ([#1731])
493
+ * Fix `not_token` being able to be set to true ([#1803])
494
+ * Fix "Hang on SIGTERM with ruby 2.6 in clustered mode" (PR [#1741], [#1674], [#1720], [#1730], [#1755])
146
495
 
147
496
  ## 3.12.1 / 2019-03-19
148
497
 
149
498
  * 1 features
150
- * Internal strings are frozen (#1649)
499
+ * Internal strings are frozen ([#1649])
151
500
  * 3 bugfixes
152
- * Fix chunked ending check (#1607)
153
- * Rack handler should use provided default host (#1700)
154
- * Better support for detecting runtimes that support `fork` (#1630)
501
+ * Fix chunked ending check ([#1607])
502
+ * Rack handler should use provided default host ([#1700])
503
+ * Better support for detecting runtimes that support `fork` ([#1630])
155
504
 
156
505
  ## 3.12.0 / 2018-07-13
157
506
 
158
507
  * 5 features:
159
- * You can now specify which SSL ciphers the server should support, default is unchanged (#1478)
160
- * The setting for Puma's `max_threads` is now in `Puma.stats` (#1604)
161
- * Pool capacity is now in `Puma.stats` (#1579)
162
- * Installs restricted to Ruby 2.2+ (#1506)
163
- * `--control` is now deprecated in favor of `--control-url` (#1487)
508
+ * You can now specify which SSL ciphers the server should support, default is unchanged ([#1478])
509
+ * The setting for Puma's `max_threads` is now in `Puma.stats` ([#1604])
510
+ * Pool capacity is now in `Puma.stats` ([#1579])
511
+ * Installs restricted to Ruby 2.2+ ([#1506])
512
+ * `--control` is now deprecated in favor of `--control-url` ([#1487])
164
513
 
165
514
  * 2 bugfixes:
166
- * Workers will no longer accept more web requests than they have capacity to process. This prevents an issue where one worker would accept lots of requests while starving other workers (#1563)
167
- * In a test env puma now emits the stack on an exception (#1557)
515
+ * Workers will no longer accept more web requests than they have capacity to process. This prevents an issue where one worker would accept lots of requests while starving other workers ([#1563])
516
+ * In a test env puma now emits the stack on an exception ([#1557])
168
517
 
169
518
  ## 3.11.4 / 2018-04-12
170
519
 
171
520
  * 2 features:
172
- * Manage puma as a service using rc.d (#1529)
173
- * Server stats are now available from a top level method (#1532)
521
+ * Manage puma as a service using rc.d ([#1529])
522
+ * Server stats are now available from a top level method ([#1532])
174
523
  * 5 bugfixes:
175
- * Fix parsing CLI options (#1482)
176
- * Order of stderr and stdout is made before redirecting to a log file (#1511)
177
- * Init.d fix of `ps -p` to check if pid exists (#1545)
178
- * Early hints bugfix (#1550)
179
- * Purge interrupt queue when closing socket fails (#1553)
524
+ * Fix parsing CLI options ([#1482])
525
+ * Order of stderr and stdout is made before redirecting to a log file ([#1511])
526
+ * Init.d fix of `ps -p` to check if pid exists ([#1545])
527
+ * Early hints bugfix ([#1550])
528
+ * Purge interrupt queue when closing socket fails ([#1553])
180
529
 
181
530
  ## 3.11.3 / 2018-03-05
182
531
 
183
532
  * 3 bugfixes:
184
- * Add closed? to MiniSSL::Socket for use in reactor (#1510)
185
- * Handle EOFError at the toplevel of the server threads (#1524) (#1507)
186
- * Deal with zero sized bodies when using SSL (#1483)
533
+ * Add closed? to MiniSSL::Socket for use in reactor ([#1510])
534
+ * Handle EOFError at the toplevel of the server threads ([#1524]) ([#1507])
535
+ * Deal with zero sized bodies when using SSL ([#1483])
187
536
 
188
537
  ## 3.11.2 / 2018-01-19
189
538
 
@@ -193,83 +542,83 @@ Each patchlevel release contains a separate security fix. We recommend simply up
193
542
  ## 3.11.1 / 2018-01-18
194
543
 
195
544
  * 1 bugfix:
196
- * Handle read\_nonblock returning nil when the socket close (#1502)
545
+ * Handle read\_nonblock returning nil when the socket close ([#1502])
197
546
 
198
547
  ## 3.11.0 / 2017-11-20
199
548
 
200
549
  * 2 features:
201
- * HTTP 103 Early Hints (#1403)
202
- * 421/451 status codes now have correct status messages attached (#1435)
550
+ * HTTP 103 Early Hints ([#1403])
551
+ * 421/451 status codes now have correct status messages attached ([#1435])
203
552
 
204
553
  * 9 bugfixes:
205
- * Environment config files (/config/puma/<ENV>.rb) load correctly (#1340)
206
- * Specify windows dependencies correctly (#1434, #1436)
207
- * puma/events required in test helper (#1418)
208
- * Correct control CLI's option help text (#1416)
209
- * Remove a warning for unused variable in mini_ssl (#1409)
210
- * Correct pumactl docs argument ordering (#1427)
211
- * Fix an uninitialized variable warning in server.rb (#1430)
212
- * Fix docs typo/error in Launcher init (#1429)
213
- * Deal with leading spaces in RUBYOPT (#1455)
554
+ * Environment config files (/config/puma/<ENV>.rb) load correctly ([#1340])
555
+ * Specify windows dependencies correctly ([#1434], [#1436])
556
+ * puma/events required in test helper ([#1418])
557
+ * Correct control CLI's option help text ([#1416])
558
+ * Remove a warning for unused variable in mini_ssl ([#1409])
559
+ * Correct pumactl docs argument ordering ([#1427])
560
+ * Fix an uninitialized variable warning in server.rb ([#1430])
561
+ * Fix docs typo/error in Launcher init ([#1429])
562
+ * Deal with leading spaces in RUBYOPT ([#1455])
214
563
 
215
564
  * 2 other:
216
- * Add docs about internals (#1425, #1452)
217
- * Tons of test fixes from @MSP-Greg (#1439, #1442, #1464)
565
+ * Add docs about internals ([#1425], [#1452])
566
+ * Tons of test fixes from @MSP-Greg ([#1439], [#1442], [#1464])
218
567
 
219
568
  ## 3.10.0 / 2017-08-17
220
569
 
221
570
  * 3 features:
222
- * The status server has a new /gc and /gc-status command. (#1384)
223
- * The persistent and first data timeouts are now configurable (#1111)
224
- * Implemented RFC 2324 (#1392)
571
+ * The status server has a new /gc and /gc-status command. ([#1384])
572
+ * The persistent and first data timeouts are now configurable ([#1111])
573
+ * Implemented RFC 2324 ([#1392])
225
574
 
226
575
  * 12 bugfixes:
227
- * Not really a Puma bug, but @NickolasVashchenko created a gem to workaround a Ruby bug that some users of Puma may be experiencing. See README for more. (#1347)
228
- * Fix hangups with SSL and persistent connections. (#1334)
229
- * Fix Rails double-binding to a port (#1383)
230
- * Fix incorrect thread names (#1368)
231
- * Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. (#1318)
232
- * Fix compatibility with RUBYOPT="--enable-frozen-string-literal" (#1376)
233
- * Fixed some compiler warnings (#1388)
234
- * We actually run the integration tests in CI now (#1390)
235
- * No longer shipping unnecessary directories in the gemfile (#1391)
236
- * If RUBYOPT is nil, we no longer blow up on restart. (#1385)
237
- * Correct response to SIGINT (#1377)
238
- * Proper exit code returned when we receive a TERM signal (#1337)
576
+ * Not really a Puma bug, but @NickolasVashchenko created a gem to workaround a Ruby bug that some users of Puma may be experiencing. See README for more. ([#1347])
577
+ * Fix hangups with SSL and persistent connections. ([#1334])
578
+ * Fix Rails double-binding to a port ([#1383])
579
+ * Fix incorrect thread names ([#1368])
580
+ * Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. ([#1318])
581
+ * Fix compatibility with RUBYOPT="--enable-frozen-string-literal" ([#1376])
582
+ * Fixed some compiler warnings ([#1388])
583
+ * We actually run the integration tests in CI now ([#1390])
584
+ * No longer shipping unnecessary directories in the gemfile ([#1391])
585
+ * If RUBYOPT is nil, we no longer blow up on restart. ([#1385])
586
+ * Correct response to SIGINT ([#1377])
587
+ * Proper exit code returned when we receive a TERM signal ([#1337])
239
588
 
240
589
  * 3 refactors:
241
590
  * Various test improvements from @grosser
242
- * Rubocop (#1325)
243
- * Hoe has been removed (#1395)
591
+ * Rubocop ([#1325])
592
+ * Hoe has been removed ([#1395])
244
593
 
245
594
  * 1 known issue:
246
- * Socket activation doesn't work in JRuby. Their fault, not ours. (#1367)
595
+ * Socket activation doesn't work in JRuby. Their fault, not ours. ([#1367])
247
596
 
248
597
  ## 3.9.1 / 2017-06-03
249
598
 
250
599
  * 2 bugfixes:
251
- * Fixed compatibility with older Bundler versions (#1314)
252
- * Some internal test/development cleanup (#1311, #1313)
600
+ * Fixed compatibility with older Bundler versions ([#1314])
601
+ * Some internal test/development cleanup ([#1311], [#1313])
253
602
 
254
603
  ## 3.9.0 / 2017-06-01
255
604
 
256
605
  * 2 features:
257
- * The ENV is now reset to its original values when Puma restarts via USR1/USR2 (#1260) (MRI only, no JRuby support)
258
- * Puma will no longer accept more clients than the maximum number of threads. (#1278)
606
+ * The ENV is now reset to its original values when Puma restarts via USR1/USR2 ([#1260]) (MRI only, no JRuby support)
607
+ * Puma will no longer accept more clients than the maximum number of threads. ([#1278])
259
608
 
260
609
  * 9 bugfixes:
261
- * Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR (#1306)
262
- * Fix SSL/WebSocket compatibility (#1274)
263
- * HTTP headers with empty values are no longer omitted from responses. (#1261)
264
- * Fix a Rack env key which was set to nil. (#1259)
265
- * peercert has been implemented for JRuby (#1248)
266
- * Fix port settings when using rails s (#1277, #1290)
267
- * Fix compat w/LibreSSL (#1285)
268
- * Fix restarting Puma w/symlinks and a new Gemfile (#1282)
269
- * Replace Dir.exists? with Dir.exist? (#1294)
610
+ * Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR ([#1306])
611
+ * Fix SSL/WebSocket compatibility ([#1274])
612
+ * HTTP headers with empty values are no longer omitted from responses. ([#1261])
613
+ * Fix a Rack env key which was set to nil. ([#1259])
614
+ * peercert has been implemented for JRuby ([#1248])
615
+ * Fix port settings when using rails s ([#1277], [#1290])
616
+ * Fix compat w/LibreSSL ([#1285])
617
+ * Fix restarting Puma w/symlinks and a new Gemfile ([#1282])
618
+ * Replace Dir.exists? with Dir.exist? ([#1294])
270
619
 
271
620
  * 1 known issue:
272
- * A bug in MRI 2.2+ can result in IOError: stream closed. See #1206. This issue has existed since at least Puma 3.6, and probably further back.
621
+ * A bug in MRI 2.2+ can result in IOError: stream closed. See [#1206]. This issue has existed since at least Puma 3.6, and probably further back.
273
622
 
274
623
  * 1 refactor:
275
624
  * Lots of test fixups from @grosser.
@@ -277,75 +626,75 @@ Each patchlevel release contains a separate security fix. We recommend simply up
277
626
  ## 3.8.2 / 2017-03-14
278
627
 
279
628
  * 1 bugfix:
280
- * Deal with getsockopt with TCP\_INFO failing for sockets that say they're TCP but aren't really. (#1241)
629
+ * Deal with getsockopt with TCP\_INFO failing for sockets that say they're TCP but aren't really. ([#1241])
281
630
 
282
631
  ## 3.8.1 / 2017-03-10
283
632
 
284
633
  * 1 bugfix:
285
- * Remove method call to method that no longer exists (#1239)
634
+ * Remove method call to method that no longer exists ([#1239])
286
635
 
287
636
  ## 3.8.0 / 2017-03-09
288
637
 
289
638
  * 2 bugfixes:
290
- * Port from rack handler does not take precedence over config file in Rails 5.1.0.beta2+ and 5.0.1.rc3+ (#1234)
291
- * The `tmp/restart.txt` plugin no longer restricts the user from running more than one server from the same folder at a time (#1226)
639
+ * Port from rack handler does not take precedence over config file in Rails 5.1.0.beta2+ and 5.0.1.rc3+ ([#1234])
640
+ * The `tmp/restart.txt` plugin no longer restricts the user from running more than one server from the same folder at a time ([#1226])
292
641
 
293
642
  * 1 feature:
294
- * Closed clients are aborted to save capacity (#1227)
643
+ * Closed clients are aborted to save capacity ([#1227])
295
644
 
296
645
  * 1 refactor:
297
- * Bundler is no longer a dependency from tests (#1213)
646
+ * Bundler is no longer a dependency from tests ([#1213])
298
647
 
299
648
  ## 3.7.1 / 2017-02-20
300
649
 
301
650
  * 2 bugfixes:
302
- * Fix typo which blew up MiniSSL (#1182)
303
- * Stop overriding command-line options with the config file (#1203)
651
+ * Fix typo which blew up MiniSSL ([#1182])
652
+ * Stop overriding command-line options with the config file ([#1203])
304
653
 
305
654
  ## 3.7.0 / 2017-01-04
306
655
 
307
656
  * 6 minor features:
308
- * Allow rack handler to accept ssl host. (#1129)
309
- * Refactor TTOU processing. TTOU now handles multiple signals at once. (#1165)
657
+ * Allow rack handler to accept ssl host. ([#1129])
658
+ * Refactor TTOU processing. TTOU now handles multiple signals at once. ([#1165])
310
659
  * Pickup any remaining chunk data as the next request.
311
660
  * Prevent short term thread churn - increased auto trim default to 30 seconds.
312
- * Raise error when `stdout` or `stderr` is not writable. (#1175)
313
- * Add Rack 2.0 support to gemspec. (#1068)
661
+ * Raise error when `stdout` or `stderr` is not writable. ([#1175])
662
+ * Add Rack 2.0 support to gemspec. ([#1068])
314
663
 
315
664
  * 5 refactors:
316
- * Compare host and server name only once per call. (#1091)
317
- * Minor refactor on Thread pool (#1088)
665
+ * Compare host and server name only once per call. ([#1091])
666
+ * Minor refactor on Thread pool ([#1088])
318
667
  * Removed a ton of unused constants, variables and files.
319
668
  * Use MRI macros when allocating heap memory
320
- * Use hooks for on\_booted event. (#1160)
669
+ * Use hooks for on\_booted event. ([#1160])
321
670
 
322
671
  * 14 bugfixes:
323
- * Add eof? method to NullIO? (#1169)
324
- * Fix Puma startup in provided init.d script (#1061)
325
- * Fix default SSL mode back to none. (#1036)
326
- * Fixed the issue of @listeners getting nil io (#1120)
327
- * Make `get_dh1024` compatible with OpenSSL v1.1.0 (#1178)
328
- * More gracefully deal with SSL sessions. Fixes #1002
329
- * Move puma.rb to just autoloads. Fixes #1063
330
- * MiniSSL: Provide write as <<. Fixes #1089
331
- * Prune bundler should inherit fds (#1114)
332
- * Replace use of Process.getpgid which does not behave as intended on all platforms (#1110)
333
- * Transfer encoding header should be downcased before comparison (#1135)
334
- * Use same write log logic for hijacked requests. (#1081)
335
- * Fix `uninitialized constant Puma::StateFile` (#1138)
336
- * Fix access priorities of each level in LeveledOptions (#1118)
672
+ * Add eof? method to NullIO? ([#1169])
673
+ * Fix Puma startup in provided init.d script ([#1061])
674
+ * Fix default SSL mode back to none. ([#1036])
675
+ * Fixed the issue of @listeners getting nil io ([#1120])
676
+ * Make `get_dh1024` compatible with OpenSSL v1.1.0 ([#1178])
677
+ * More gracefully deal with SSL sessions. Fixes [#1002]
678
+ * Move puma.rb to just autoloads. Fixes [#1063]
679
+ * MiniSSL: Provide write as <<. Fixes [#1089]
680
+ * Prune bundler should inherit fds ([#1114])
681
+ * Replace use of Process.getpgid which does not behave as intended on all platforms ([#1110])
682
+ * Transfer encoding header should be downcased before comparison ([#1135])
683
+ * Use same write log logic for hijacked requests. ([#1081])
684
+ * Fix `uninitialized constant Puma::StateFile` ([#1138])
685
+ * Fix access priorities of each level in LeveledOptions ([#1118])
337
686
 
338
687
  * 3 others:
339
688
 
340
689
  * Lots of tests added/fixed/improved. Switched to Minitest from Test::Unit. Big thanks to @frodsan.
341
690
  * Lots of documentation added/improved.
342
- * Add license indicators to the HTTP extension. (#1075)
691
+ * Add license indicators to the HTTP extension. ([#1075])
343
692
 
344
693
  ## 3.6.2 / 2016-11-22
345
694
 
346
695
  * 1 bug fix:
347
696
 
348
- * Revert #1118/Fix access priorities of each level in LeveledOptions. This
697
+ * Revert [#1118]/Fix access priorities of each level in LeveledOptions. This
349
698
  had an unintentional side effect of changing the importance of command line
350
699
  options, such as -p.
351
700
 
@@ -354,11 +703,11 @@ Each patchlevel release contains a separate security fix. We recommend simply up
354
703
  * 8 bug fixes:
355
704
 
356
705
  * Fix Puma start in init.d script.
357
- * Fix default SSL mode back to none. Fixes #1036
358
- * Fixed the issue of @listeners getting nil io, fix rails restart (#1120)
359
- * More gracefully deal with SSL sessions. Fixes #1002
706
+ * Fix default SSL mode back to none. Fixes [#1036]
707
+ * Fixed the issue of @listeners getting nil io, fix rails restart ([#1120])
708
+ * More gracefully deal with SSL sessions. Fixes [#1002]
360
709
  * Prevent short term thread churn.
361
- * Provide write as <<. Fixes #1089
710
+ * Provide write as <<. Fixes [#1089]
362
711
  * Fix access priorities of each level in LeveledOptions - fixes TTIN.
363
712
  * Stub description files updated for init.d.
364
713
 
@@ -370,18 +719,18 @@ Each patchlevel release contains a separate security fix. We recommend simply up
370
719
  ## 3.6.0 / 2016-07-24
371
720
 
372
721
  * 12 bug fixes:
373
- * Add ability to detect a shutting down server. Fixes #932
374
- * Add support for Expect: 100-continue. Fixes #519
375
- * Check SSLContext better. Fixes #828
376
- * Clarify behavior of '-t num'. Fixes #984
377
- * Don't default to VERIFY_PEER. Fixes #1028
378
- * Don't use ENV['PWD'] on windows. Fixes #1023
379
- * Enlarge the scope of catching app exceptions. Fixes #1027
380
- * Execute background hooks after daemonizing. Fixes #925
381
- * Handle HUP as a stop unless there is IO redirection. Fixes #911
382
- * Implement chunked request handling. Fixes #620
383
- * Just rescue exception to return a 500. Fixes #1027
384
- * Redirect IO in the jruby daemon mode. Fixes #778
722
+ * Add ability to detect a shutting down server. Fixes [#932]
723
+ * Add support for Expect: 100-continue. Fixes [#519]
724
+ * Check SSLContext better. Fixes [#828]
725
+ * Clarify behavior of '-t num'. Fixes [#984]
726
+ * Don't default to VERIFY_PEER. Fixes [#1028]
727
+ * Don't use ENV['PWD'] on windows. Fixes [#1023]
728
+ * Enlarge the scope of catching app exceptions. Fixes [#1027]
729
+ * Execute background hooks after daemonizing. Fixes [#925]
730
+ * Handle HUP as a stop unless there is IO redirection. Fixes [#911]
731
+ * Implement chunked request handling. Fixes [#620]
732
+ * Just rescue exception to return a 500. Fixes [#1027]
733
+ * Redirect IO in the jruby daemon mode. Fixes [#778]
385
734
 
386
735
  ## 3.5.2 / 2016-07-20
387
736
 
@@ -389,12 +738,12 @@ Each patchlevel release contains a separate security fix. We recommend simply up
389
738
  * Don't let persistent_timeout be nil
390
739
 
391
740
  * 1 PR merged:
392
- * Merge pull request #1021 from benzrf/patch-1
741
+ * Merge pull request [#1021] from benzrf/patch-1
393
742
 
394
743
  ## 3.5.1 / 2016-07-20
395
744
 
396
745
  * 1 bug fix:
397
- * Be sure to only listen on host:port combos once. Fixes #1022
746
+ * Be sure to only listen on host:port combos once. Fixes [#1022]
398
747
 
399
748
  ## 3.5.0 / 2016-07-18
400
749
 
@@ -402,14 +751,14 @@ Each patchlevel release contains a separate security fix. We recommend simply up
402
751
  * Allow persistent_timeout to be configured via the dsl.
403
752
 
404
753
  * 9 bug fixes:
405
- * Allow a bare % in a query string. Fixes #958
406
- * Explicitly listen on all localhost addresses. Fixes #782
754
+ * Allow a bare % in a query string. Fixes [#958]
755
+ * Explicitly listen on all localhost addresses. Fixes [#782]
407
756
  * Fix `TCPLogger` log error in tcp cluster mode.
408
- * Fix puma/puma#968 Cannot bind SSL port due to missing verify_mode option
409
- * Fix puma/puma#968 Default verify_mode to peer
410
- * Log any exceptions in ThreadPool. Fixes #1010
411
- * Silence connection errors in the reactor. Fixes #959
412
- * Tiny fixes in hook documentation for #840
757
+ * Fix puma/puma[#968] Cannot bind SSL port due to missing verify_mode option
758
+ * Fix puma/puma[#968] Default verify_mode to peer
759
+ * Log any exceptions in ThreadPool. Fixes [#1010]
760
+ * Silence connection errors in the reactor. Fixes [#959]
761
+ * Tiny fixes in hook documentation for [#840]
413
762
  * It should not log requests if we want it to be quiet
414
763
 
415
764
  * 5 doc fixes:
@@ -420,43 +769,43 @@ Each patchlevel release contains a separate security fix. We recommend simply up
420
769
  * Fix typo in example config
421
770
 
422
771
  * 14 PRs merged:
423
- * Merge pull request #1007 from willnet/patch-1
424
- * Merge pull request #1014 from jeznet/patch-1
425
- * Merge pull request #1015 from bf4/patch-1
426
- * Merge pull request #1017 from jorihardman/configurable_persistent_timeout
427
- * Merge pull request #954 from jf/master
428
- * Merge pull request #955 from jf/add-request-info-to-standard-error-rescue
429
- * Merge pull request #956 from maxkwallace/master
430
- * Merge pull request #960 from kmayer/kmayer-plugins-heroku-restart
431
- * Merge pull request #969 from frankwong15/master
432
- * Merge pull request #970 from willnet/delete-blank-document
433
- * Merge pull request #974 from rocketjob/feature/name_threads
434
- * Merge pull request #977 from snow/master
435
- * Merge pull request #981 from zach-chai/patch-1
436
- * Merge pull request #993 from scorix/master
772
+ * Merge pull request [#1007] from willnet/patch-1
773
+ * Merge pull request [#1014] from jeznet/patch-1
774
+ * Merge pull request [#1015] from bf4/patch-1
775
+ * Merge pull request [#1017] from jorihardman/configurable_persistent_timeout
776
+ * Merge pull request [#954] from jf/master
777
+ * Merge pull request [#955] from jf/add-request-info-to-standard-error-rescue
778
+ * Merge pull request [#956] from maxkwallace/master
779
+ * Merge pull request [#960] from kmayer/kmayer-plugins-heroku-restart
780
+ * Merge pull request [#969] from frankwong15/master
781
+ * Merge pull request [#970] from willnet/delete-blank-document
782
+ * Merge pull request [#974] from rocketjob/feature/name_threads
783
+ * Merge pull request [#977] from snow/master
784
+ * Merge pull request [#981] from zach-chai/patch-1
785
+ * Merge pull request [#993] from scorix/master
437
786
 
438
787
  ## 3.4.0 / 2016-04-07
439
788
 
440
789
  * 2 minor features:
441
- * Add ability to force threads to stop on shutdown. Fixes #938
442
- * Detect and commit seppuku when fork(2) fails. Fixes #529
790
+ * Add ability to force threads to stop on shutdown. Fixes [#938]
791
+ * Detect and commit seppuku when fork(2) fails. Fixes [#529]
443
792
 
444
793
  * 3 unknowns:
445
- * Ignore errors trying to update the backport tables. Fixes #788
446
- * Invoke the lowlevel_error in more places to allow for exception tracking. Fixes #894
447
- * Update the query string when an absolute URI is used. Fixes #937
794
+ * Ignore errors trying to update the backport tables. Fixes [#788]
795
+ * Invoke the lowlevel_error in more places to allow for exception tracking. Fixes [#894]
796
+ * Update the query string when an absolute URI is used. Fixes [#937]
448
797
 
449
798
  * 5 doc fixes:
450
799
  * Add Process Monitors section to top-level README
451
- * Better document the hooks. Fixes #840
800
+ * Better document the hooks. Fixes [#840]
452
801
  * docs/system.md sample config refinements and elaborations
453
802
  * Fix typos at couple of places.
454
803
  * Cleanup warnings
455
804
 
456
805
  * 3 PRs merged:
457
- * Merge pull request #945 from dekellum/systemd-docs-refined
458
- * Merge pull request #946 from vipulnsward/rm-pid
459
- * Merge pull request #947 from vipulnsward/housekeeping-typos
806
+ * Merge pull request [#945] from dekellum/systemd-docs-refined
807
+ * Merge pull request [#946] from vipulnsward/rm-pid
808
+ * Merge pull request [#947] from vipulnsward/housekeeping-typos
460
809
 
461
810
  ## 3.3.0 / 2016-04-05
462
811
 
@@ -469,9 +818,9 @@ Each patchlevel release contains a separate security fix. We recommend simply up
469
818
  * Document UNIX signals with cluster on README.md
470
819
 
471
820
  * 3 PRs merged:
472
- * Merge pull request #936 from prathamesh-sonpatki/allow-overriding-config-options
473
- * Merge pull request #940 from kyledrake/signalsdoc
474
- * Merge pull request #942 from dekellum/socket-activate-improve
821
+ * Merge pull request [#936] from prathamesh-sonpatki/allow-overriding-config-options
822
+ * Merge pull request [#940] from kyledrake/signalsdoc
823
+ * Merge pull request [#942] from dekellum/socket-activate-improve
475
824
 
476
825
  ## 3.2.0 / 2016-03-20
477
826
 
@@ -484,32 +833,32 @@ Each patchlevel release contains a separate security fix. We recommend simply up
484
833
  * Speed up phased-restart start
485
834
 
486
835
  * 2 PRs merged:
487
- * Merge pull request #927 from jlecour/gemfile_variants
488
- * Merge pull request #931 from joneslee85/patch-10
836
+ * Merge pull request [#927] from jlecour/gemfile_variants
837
+ * Merge pull request [#931] from joneslee85/patch-10
489
838
 
490
839
  ## 3.1.1 / 2016-03-17
491
840
 
492
841
  * 4 bug fixes:
493
842
  * Disable USR1 usage on JRuby
494
- * Fixes #922 - Correctly define file encoding as UTF-8
843
+ * Fixes [#922] - Correctly define file encoding as UTF-8
495
844
  * Set a more explicit SERVER_SOFTWARE Rack variable
496
- * Show RUBY_ENGINE_VERSION if available. Fixes #923
845
+ * Show RUBY_ENGINE_VERSION if available. Fixes [#923]
497
846
 
498
847
  * 3 PRs merged:
499
- * Merge pull request #912 from tricknotes/fix-allow-failures-in-travis-yml
500
- * Merge pull request #921 from swrobel/patch-1
501
- * Merge pull request #924 from tbrisker/patch-1
848
+ * Merge pull request [#912] from tricknotes/fix-allow-failures-in-travis-yml
849
+ * Merge pull request [#921] from swrobel/patch-1
850
+ * Merge pull request [#924] from tbrisker/patch-1
502
851
 
503
852
  ## 3.1.0 / 2016-03-05
504
853
 
505
854
  * 1 minor feature:
506
- * Add 'import' directive to config file. Fixes #916
855
+ * Add 'import' directive to config file. Fixes [#916]
507
856
 
508
857
  * 5 bug fixes:
509
- * Add 'fetch' to options. Fixes #913
510
- * Fix jruby daemonization. Fixes #918
511
- * Recreate the proper args manually. Fixes #910
512
- * Require 'time' to get iso8601. Fixes #914
858
+ * Add 'fetch' to options. Fixes [#913]
859
+ * Fix jruby daemonization. Fixes [#918]
860
+ * Recreate the proper args manually. Fixes [#910]
861
+ * Require 'time' to get iso8601. Fixes [#914]
513
862
 
514
863
  ## 3.0.2 / 2016-02-26
515
864
 
@@ -523,9 +872,9 @@ Each patchlevel release contains a separate security fix. We recommend simply up
523
872
 
524
873
  * 3 PRs merged:
525
874
 
526
- * Merge pull request #901 from mitto/fix-pumactl-uninitialized-constant-statefile
527
- * Merge pull request #902 from corrupt952/fix_undefined_method_and_variable_when_execute_pumactl
528
- * Merge pull request #905 from Eric-Guo/master
875
+ * Merge pull request [#901] from mitto/fix-pumactl-uninitialized-constant-statefile
876
+ * Merge pull request [#902] from corrupt952/fix_undefined_method_and_variable_when_execute_pumactl
877
+ * Merge pull request [#905] from Eric-Guo/master
529
878
 
530
879
  ## 3.0.1 / 2016-02-25
531
880
 
@@ -542,7 +891,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
542
891
  * Ruby pre-2.0 is no longer supported. We'll do our best to not add
543
892
  features that break those rubies but will no longer be testing
544
893
  with them.
545
- * Don't log requests by default. Fixes #852
894
+ * Don't log requests by default. Fixes [#852]
546
895
 
547
896
  * 2 major features:
548
897
 
@@ -554,36 +903,36 @@ Each patchlevel release contains a separate security fix. We recommend simply up
554
903
 
555
904
  * Listen to unix socket with provided backlog if any
556
905
  * Improves the clustered stats to report worker stats
557
- * Pass the env to the lowlevel_error handler. Fixes #854
558
- * Treat path-like hosts as unix sockets. Fixes #824
906
+ * Pass the env to the lowlevel_error handler. Fixes [#854]
907
+ * Treat path-like hosts as unix sockets. Fixes [#824]
559
908
 
560
909
  * 5 bug fixes:
561
910
 
562
- * Clean thread locals when using keepalive. Fixes #823
563
- * Cleanup compiler warnings. Fixes #815
564
- * Expose closed? for use by the reactor. Fixes #835
565
- * Move signal handlers to separate method to prevent space leak. Fixes #798
566
- * Signal not full on worker exit #876
911
+ * Clean thread locals when using keepalive. Fixes [#823]
912
+ * Cleanup compiler warnings. Fixes [#815]
913
+ * Expose closed? for use by the reactor. Fixes [#835]
914
+ * Move signal handlers to separate method to prevent space leak. Fixes [#798]
915
+ * Signal not full on worker exit [#876]
567
916
 
568
917
  * 5 doc fixes:
569
918
 
570
919
  * Update README.md with various grammar fixes
571
920
  * Use newest version of Minitest
572
921
  * Add directory configuration docs, fix typo [ci skip]
573
- * Remove old COPYING notice. Fixes #849
922
+ * Remove old COPYING notice. Fixes [#849]
574
923
 
575
924
  * 10 merged PRs:
576
925
 
577
- * Merge pull request #871 from deepj/travis
578
- * Merge pull request #874 from wallclockbuilder/master
579
- * Merge pull request #883 from dadah89/igor/trim_only_worker
580
- * Merge pull request #884 from uistudio/async-callback
581
- * Merge pull request #888 from mlarraz/tick_minitest
582
- * Merge pull request #890 from todd/directory_docs
583
- * Merge pull request #891 from ctaintor/improve_clustered_status
584
- * Merge pull request #893 from spastorino/add_missing_require
585
- * Merge pull request #897 from zendesk/master
586
- * Merge pull request #899 from kch/kch-readme-fixes
926
+ * Merge pull request [#871] from deepj/travis
927
+ * Merge pull request [#874] from wallclockbuilder/master
928
+ * Merge pull request [#883] from dadah89/igor/trim_only_worker
929
+ * Merge pull request [#884] from uistudio/async-callback
930
+ * Merge pull request [#888] from mlarraz/tick_minitest
931
+ * Merge pull request [#890] from todd/directory_docs
932
+ * Merge pull request [#891] from ctaintor/improve_clustered_status
933
+ * Merge pull request [#893] from spastorino/add_missing_require
934
+ * Merge pull request [#897] from zendesk/master
935
+ * Merge pull request [#899] from kch/kch-readme-fixes
587
936
 
588
937
  ## 2.16.0 / 2016-01-27
589
938
 
@@ -600,7 +949,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
600
949
  * 7 bug fixes:
601
950
 
602
951
  * Don't persist before_fork hook in state file
603
- * Reload bundler before pulling in rack. Fixes #859
952
+ * Reload bundler before pulling in rack. Fixes [#859]
604
953
  * Remove NEWRELIC_DISPATCHER env variable
605
954
  * Cleanup C code
606
955
  * Use Timeout.timeout instead of Object.timeout
@@ -612,18 +961,18 @@ Each patchlevel release contains a separate security fix. We recommend simply up
612
961
  * Test against the latest Ruby 2.1, 2.2, 2.3, head and JRuby 9.0.4.0 on Travis
613
962
 
614
963
  * 12 merged PRs
615
- * Merge pull request #822 from kwugirl/remove_NEWRELIC_DISPATCHER
616
- * Merge pull request #833 from joemiller/jruby-client-tls-auth
617
- * Merge pull request #837 from YuriSolovyov/ssl-keystore-jruby
618
- * Merge pull request #839 from mezuka/master
619
- * Merge pull request #845 from deepj/timeout-deprecation
620
- * Merge pull request #846 from sriedel/strip_before_fork
621
- * Merge pull request #850 from deepj/travis
622
- * Merge pull request #853 from Jeffrey6052/patch-1
623
- * Merge pull request #857 from zendesk/faster_phased_restarts
624
- * Merge pull request #858 from mlarraz/fix_some_warnings
625
- * Merge pull request #860 from zendesk/expose_old_worker_count
626
- * Merge pull request #861 from zendesk/allow_control_url_umask
964
+ * Merge pull request [#822] from kwugirl/remove_NEWRELIC_DISPATCHER
965
+ * Merge pull request [#833] from joemiller/jruby-client-tls-auth
966
+ * Merge pull request [#837] from YuriSolovyov/ssl-keystore-jruby
967
+ * Merge pull request [#839] from mezuka/master
968
+ * Merge pull request [#845] from deepj/timeout-deprecation
969
+ * Merge pull request [#846] from sriedel/strip_before_fork
970
+ * Merge pull request [#850] from deepj/travis
971
+ * Merge pull request [#853] from Jeffrey6052/patch-1
972
+ * Merge pull request [#857] from zendesk/faster_phased_restarts
973
+ * Merge pull request [#858] from mlarraz/fix_some_warnings
974
+ * Merge pull request [#860] from zendesk/expose_old_worker_count
975
+ * Merge pull request [#861] from zendesk/allow_control_url_umask
627
976
 
628
977
  ## 2.15.3 / 2015-11-07
629
978
 
@@ -638,8 +987,8 @@ Each patchlevel release contains a separate security fix. We recommend simply up
638
987
  * Only set ctx.ca iff there is a params['ca'] to set with.
639
988
 
640
989
  * 2 PRs merged:
641
- * Merge pull request #818 from unleashed/support-duplicate-headers
642
- * Merge pull request #819 from VictorLowther/fix-ca-and-verify_null-exception
990
+ * Merge pull request [#818] from unleashed/support-duplicate-headers
991
+ * Merge pull request [#819] from VictorLowther/fix-ca-and-verify_null-exception
643
992
 
644
993
  ## 2.15.1 / 2015-11-06
645
994
 
@@ -661,7 +1010,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
661
1010
  * Disable SSL Compression
662
1011
  * Fix bug setting worker_directory when using a symlink directory
663
1012
  * Fix error message in DSL that was slightly inaccurate
664
- * Pumactl: set correct process name. Fixes #563
1013
+ * Pumactl: set correct process name. Fixes [#563]
665
1014
  * thread_pool: fix race condition when shutting down workers
666
1015
 
667
1016
  * 10 doc fixes:
@@ -671,30 +1020,30 @@ Each patchlevel release contains a separate security fix. We recommend simply up
671
1020
  * Fix spelling errors.
672
1021
  * Fix typo in deployment description
673
1022
  * Fix typos (it's -> its) in events.rb and server.rb
674
- * fixing for typo mentioned in #803
1023
+ * fixing for typo mentioned in [#803]
675
1024
  * Spelling correction for README
676
1025
  * thread_pool: fix typos in comment
677
1026
  * More explicit docs for worker_timeout
678
1027
 
679
1028
  * 18 PRs merged:
680
- * Merge pull request #768 from nathansamson/patch-1
681
- * Merge pull request #773 from rossta/spelling_corrections
682
- * Merge pull request #774 from snow/master
683
- * Merge pull request #781 from sunsations/fix-typo
684
- * Merge pull request #791 from unleashed/allow_empty_tags
685
- * Merge pull request #793 from robdimarco/fix-working-directory-symlink-bug
686
- * Merge pull request #794 from peterkeen/patch-1
687
- * Merge pull request #795 from unleashed/redirects-from-cmdline
688
- * Merge pull request #796 from cschneid/fix_dsl_message
689
- * Merge pull request #799 from annafw/master
690
- * Merge pull request #800 from liamseanbrady/fix_typo
691
- * Merge pull request #801 from scottjg/ssl-chain-file
692
- * Merge pull request #802 from scottjg/ssl-crimes
693
- * Merge pull request #804 from burningTyger/patch-2
694
- * Merge pull request #809 from unleashed/threadpool-fix-race-in-shutdown
695
- * Merge pull request #810 from vlmonk/fix-pumactl-restart-bug
696
- * Merge pull request #814 from schneems/schneems/worker_timeout-docs
697
- * Merge pull request #817 from unleashed/worker-boot-timeout
1029
+ * Merge pull request [#768] from nathansamson/patch-1
1030
+ * Merge pull request [#773] from rossta/spelling_corrections
1031
+ * Merge pull request [#774] from snow/master
1032
+ * Merge pull request [#781] from sunsations/fix-typo
1033
+ * Merge pull request [#791] from unleashed/allow_empty_tags
1034
+ * Merge pull request [#793] from robdimarco/fix-working-directory-symlink-bug
1035
+ * Merge pull request [#794] from peterkeen/patch-1
1036
+ * Merge pull request [#795] from unleashed/redirects-from-cmdline
1037
+ * Merge pull request [#796] from cschneid/fix_dsl_message
1038
+ * Merge pull request [#799] from annafw/master
1039
+ * Merge pull request [#800] from liamseanbrady/fix_typo
1040
+ * Merge pull request [#801] from scottjg/ssl-chain-file
1041
+ * Merge pull request [#802] from scottjg/ssl-crimes
1042
+ * Merge pull request [#804] from burningTyger/patch-2
1043
+ * Merge pull request [#809] from unleashed/threadpool-fix-race-in-shutdown
1044
+ * Merge pull request [#810] from vlmonk/fix-pumactl-restart-bug
1045
+ * Merge pull request [#814] from schneems/schneems/worker_timeout-docs
1046
+ * Merge pull request [#817] from unleashed/worker-boot-timeout
698
1047
 
699
1048
  ## 2.14.0 / 2015-09-18
700
1049
 
@@ -702,7 +1051,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
702
1051
  * Make building with SSL support optional
703
1052
 
704
1053
  * 1 bug fix:
705
- * Use Rack::Builder if available. Fixes #735
1054
+ * Use Rack::Builder if available. Fixes [#735]
706
1055
 
707
1056
  ## 2.13.4 / 2015-08-16
708
1057
 
@@ -715,20 +1064,20 @@ Each patchlevel release contains a separate security fix. We recommend simply up
715
1064
  Seriously, I need to revamp config with tests.
716
1065
 
717
1066
  * 1 bug fix:
718
- * Fix preserving options before cleaning for state. Fixes #769
1067
+ * Fix preserving options before cleaning for state. Fixes [#769]
719
1068
 
720
1069
  ## 2.13.2 / 2015-08-15
721
1070
 
722
1071
  The "clearly I don't have enough tests for the config" release.
723
1072
 
724
1073
  * 1 bug fix:
725
- * Fix another place binds wasn't initialized. Fixes #767
1074
+ * Fix another place binds wasn't initialized. Fixes [#767]
726
1075
 
727
1076
  ## 2.13.1 / 2015-08-15
728
1077
 
729
1078
  * 2 bug fixes:
730
- * Fix binds being masked in config files. Fixes #765
731
- * Use options from the config file properly in pumactl. Fixes #764
1079
+ * Fix binds being masked in config files. Fixes [#765]
1080
+ * Use options from the config file properly in pumactl. Fixes [#764]
732
1081
 
733
1082
  ## 2.13.0 / 2015-08-14
734
1083
 
@@ -738,16 +1087,16 @@ The "clearly I don't have enough tests for the config" release.
738
1087
  * 3 bug fixes:
739
1088
  * Check for OPENSSL_NO_ECDH before using ECDH
740
1089
  * Eliminate logging overhead from JRuby SSL
741
- * Prefer cli options over config file ones. Fixes #669
1090
+ * Prefer cli options over config file ones. Fixes [#669]
742
1091
 
743
1092
  * 1 deprecation:
744
- * Add deprecation warning to capistrano.rb. Fixes #673
1093
+ * Add deprecation warning to capistrano.rb. Fixes [#673]
745
1094
 
746
1095
  * 4 PRs merged:
747
- * Merge pull request #668 from kcollignon/patch-1
748
- * Merge pull request #754 from nathansamson/before_boot
749
- * Merge pull request #759 from BenV/fix-centos6-build
750
- * Merge pull request #761 from looker/no-log
1096
+ * Merge pull request [#668] from kcollignon/patch-1
1097
+ * Merge pull request [#754] from nathansamson/before_boot
1098
+ * Merge pull request [#759] from BenV/fix-centos6-build
1099
+ * Merge pull request [#761] from looker/no-log
751
1100
 
752
1101
  ## 2.12.3 / 2015-08-03
753
1102
 
@@ -762,10 +1111,10 @@ The "clearly I don't have enough tests for the config" release.
762
1111
  * ruby 1.8.7 compatibility patches
763
1112
 
764
1113
  * 4 PRs merged:
765
- * Merge pull request #742 from deivid-rodriguez/fix_missing_require
766
- * Merge pull request #743 from matthewd/skip-empty-chunks
767
- * Merge pull request #749 from huacnlee/fix-cap-uninitialized-puma-error
768
- * Merge pull request #751 from costi/compat_1_8_7
1114
+ * Merge pull request [#742] from deivid-rodriguez/fix_missing_require
1115
+ * Merge pull request [#743] from matthewd/skip-empty-chunks
1116
+ * Merge pull request [#749] from huacnlee/fix-cap-uninitialized-puma-error
1117
+ * Merge pull request [#751] from costi/compat_1_8_7
769
1118
 
770
1119
  * 1 test fix:
771
1120
  * Add 1.8.7, rbx-1 (allow failures) to Travis.
@@ -773,20 +1122,20 @@ The "clearly I don't have enough tests for the config" release.
773
1122
  ## 2.12.2 / 2015-07-17
774
1123
 
775
1124
  * 2 bug fix:
776
- * Pull over and use Rack::URLMap. Fixes #741
777
- * Stub out peercert on JRuby for now. Fixes #739
1125
+ * Pull over and use Rack::URLMap. Fixes [#741]
1126
+ * Stub out peercert on JRuby for now. Fixes [#739]
778
1127
 
779
1128
  ## 2.12.1 / 2015-07-16
780
1129
 
781
1130
  * 2 bug fixes:
782
- * Use a constant format. Fixes #737
783
- * Use strerror for Windows sake. Fixes #733
1131
+ * Use a constant format. Fixes [#737]
1132
+ * Use strerror for Windows sake. Fixes [#733]
784
1133
 
785
1134
  * 1 doc change:
786
1135
  * typo fix: occured -> occurred
787
1136
 
788
1137
  * 1 PR merged:
789
- * Merge pull request #736 from paulanunda/paulanunda/typo-fix
1138
+ * Merge pull request [#736] from paulanunda/paulanunda/typo-fix
790
1139
 
791
1140
  ## 2.12.0 / 2015-07-14
792
1141
 
@@ -796,12 +1145,12 @@ The "clearly I don't have enough tests for the config" release.
796
1145
  * Do not suppress Content-Length on partial hijack
797
1146
  * Don't allow any exceptions to terminate a thread
798
1147
  * Handle ENOTCONN client disconnects when setting REMOTE_ADDR
799
- * Handle very early exit of cluster mode. Fixes #722
1148
+ * Handle very early exit of cluster mode. Fixes [#722]
800
1149
  * Install rack when running tests on travis to use rack/lint
801
1150
  * Make puma -v and -h return success exit code
802
1151
  * Make pumactl load config/puma.rb by default
803
- * Pass options from pumactl properly when pruning. Fixes #694
804
- * Remove rack dependency. Fixes #705
1152
+ * Pass options from pumactl properly when pruning. Fixes [#694]
1153
+ * Remove rack dependency. Fixes [#705]
805
1154
  * Remove the default Content-Type: text/plain
806
1155
  * Add Client Side Certificate Auth
807
1156
 
@@ -820,33 +1169,33 @@ The "clearly I don't have enough tests for the config" release.
820
1169
  * capistrano: Add additional env when start rails
821
1170
 
822
1171
  * 16 PRs merged:
823
- * Merge pull request #686 from jjb/patch-2
824
- * Merge pull request #693 from rob-murray/update-example-config
825
- * Merge pull request #697 from spk/tests-bind-on-rackup-file
826
- * Merge pull request #699 from deees/fix/require_rack_builder
827
- * Merge pull request #701 from deepj/master
828
- * Merge pull request #702 from Jimdo/thread-reaping
829
- * Merge pull request #703 from deepj/travis
830
- * Merge pull request #704 from grega/master
831
- * Merge pull request #709 from lian/master
832
- * Merge pull request #711 from julik/master
833
- * Merge pull request #712 from yakara-ltd/pumactl-default-config
834
- * Merge pull request #715 from RobotJiang/master
835
- * Merge pull request #725 from rwz/master
836
- * Merge pull request #726 from strenuus/handle-client-disconnect
837
- * Merge pull request #729 from allaire/patch-1
838
- * Merge pull request #730 from iamjarvo/container-infrastructure
1172
+ * Merge pull request [#686] from jjb/patch-2
1173
+ * Merge pull request [#693] from rob-murray/update-example-config
1174
+ * Merge pull request [#697] from spk/tests-bind-on-rackup-file
1175
+ * Merge pull request [#699] from deees/fix/require_rack_builder
1176
+ * Merge pull request [#701] from deepj/master
1177
+ * Merge pull request [#702] from Jimdo/thread-reaping
1178
+ * Merge pull request [#703] from deepj/travis
1179
+ * Merge pull request [#704] from grega/master
1180
+ * Merge pull request [#709] from lian/master
1181
+ * Merge pull request [#711] from julik/master
1182
+ * Merge pull request [#712] from yakara-ltd/pumactl-default-config
1183
+ * Merge pull request [#715] from RobotJiang/master
1184
+ * Merge pull request [#725] from rwz/master
1185
+ * Merge pull request [#726] from strenuus/handle-client-disconnect
1186
+ * Merge pull request [#729] from allaire/patch-1
1187
+ * Merge pull request [#730] from iamjarvo/container-infrastructure
839
1188
 
840
1189
  ## 2.11.3 / 2015-05-18
841
1190
 
842
1191
  * 5 bug fixes:
843
- * Be sure to unlink tempfiles after a request. Fixes #690
844
- * Coerce the key to a string before checking. (thar be symbols). Fixes #684
1192
+ * Be sure to unlink tempfiles after a request. Fixes [#690]
1193
+ * Coerce the key to a string before checking. (thar be symbols). Fixes [#684]
845
1194
  * Fix hang on bad SSL handshake
846
1195
  * Remove `enable_SSLv3` support from JRuby
847
1196
 
848
1197
  * 1 PR merged:
849
- * Merge pull request #698 from looker/hang-handshake
1198
+ * Merge pull request [#698] from looker/hang-handshake
850
1199
 
851
1200
  ## 2.11.2 / 2015-04-11
852
1201
 
@@ -855,7 +1204,7 @@ The "clearly I don't have enough tests for the config" release.
855
1204
  * Add shutdown_debug config option
856
1205
 
857
1206
  * 4 bug fixes:
858
- * Fix the Config constants not being available in the DSL. Fixes #683
1207
+ * Fix the Config constants not being available in the DSL. Fixes [#683]
859
1208
  * Ignore multiple port declarations
860
1209
  * Proper 'Connection' header handling compatible with HTTP 1.[01] protocols
861
1210
  * Use "Puma" instead of "puma" to reporting to New Relic
@@ -864,55 +1213,55 @@ The "clearly I don't have enough tests for the config" release.
864
1213
  * Add Gitter badge.
865
1214
 
866
1215
  * 6 PRs merged:
867
- * Merge pull request #657 from schneems/schneems/puma-once-port
868
- * Merge pull request #658 from Tomohiro/newrelic-dispatcher-default-update
869
- * Merge pull request #662 from basecrm/connection-compatibility
870
- * Merge pull request #664 from fxposter/on-worker-fork
871
- * Merge pull request #667 from JuanitoFatas/doc/gemspec
872
- * Merge pull request #672 from chulkilee/refactor
1216
+ * Merge pull request [#657] from schneems/schneems/puma-once-port
1217
+ * Merge pull request [#658] from Tomohiro/newrelic-dispatcher-default-update
1218
+ * Merge pull request [#662] from basecrm/connection-compatibility
1219
+ * Merge pull request [#664] from fxposter/on-worker-fork
1220
+ * Merge pull request [#667] from JuanitoFatas/doc/gemspec
1221
+ * Merge pull request [#672] from chulkilee/refactor
873
1222
 
874
1223
  ## 2.11.1 / 2015-02-11
875
1224
 
876
1225
  * 2 bug fixes:
877
1226
  * Avoid crash in strange restart conditions
878
- * Inject the GEM_HOME that bundler into puma-wild's env. Fixes #653
1227
+ * Inject the GEM_HOME that bundler into puma-wild's env. Fixes [#653]
879
1228
 
880
1229
  * 2 PRs merged:
881
- * Merge pull request #644 from bpaquet/master
882
- * Merge pull request #646 from mkonecny/master
1230
+ * Merge pull request [#644] from bpaquet/master
1231
+ * Merge pull request [#646] from mkonecny/master
883
1232
 
884
1233
  ## 2.11.0 / 2015-01-20
885
1234
 
886
1235
  * 9 bug fixes:
887
- * Add mode as an additional bind option to unix sockets. Fixes #630
1236
+ * Add mode as an additional bind option to unix sockets. Fixes [#630]
888
1237
  * Advertise HTTPS properly after a hot restart
889
1238
  * Don't write lowlevel_error_handler to state
890
1239
  * Fix phased restart with stuck requests
891
- * Handle spaces in the path properly. Fixes #622
892
- * Set a default REMOTE_ADDR to avoid using peeraddr on unix sockets. Fixes #583
893
- * Skip device number checking on jruby. Fixes #586
1240
+ * Handle spaces in the path properly. Fixes [#622]
1241
+ * Set a default REMOTE_ADDR to avoid using peeraddr on unix sockets. Fixes [#583]
1242
+ * Skip device number checking on jruby. Fixes [#586]
894
1243
  * Update extconf.rb to compile correctly on OS X
895
- * redirect io right after daemonizing so startup errors are shown. Fixes #359
1244
+ * redirect io right after daemonizing so startup errors are shown. Fixes [#359]
896
1245
 
897
1246
  * 6 minor features:
898
1247
  * Add a configuration option that prevents puma from queueing requests.
899
1248
  * Add reload_worker_directory
900
1249
  * Add the ability to pass environment variables to the init script (for Jungle).
901
- * Add the proctitle tag to the worker. Fixes #633
1250
+ * Add the proctitle tag to the worker. Fixes [#633]
902
1251
  * Infer a proctitle tag based on the directory
903
1252
  * Update lowlevel error message to be more meaningful.
904
1253
 
905
1254
  * 10 PRs merged:
906
- * Merge pull request #478 from rubencaro/master
907
- * Merge pull request #610 from kwilczynski/master
908
- * Merge pull request #611 from jasonl/better-lowlevel-message
909
- * Merge pull request #616 from jc00ke/master
910
- * Merge pull request #623 from raldred/patch-1
911
- * Merge pull request #628 from rdpoor/master
912
- * Merge pull request #634 from deepj/master
913
- * Merge pull request #637 from raskhadafi/patch-1
914
- * Merge pull request #639 from ebeigarts/fix-phased-restarts
915
- * Merge pull request #640 from codehotter/issue-612-dependent-requests-deadlock
1255
+ * Merge pull request [#478] from rubencaro/master
1256
+ * Merge pull request [#610] from kwilczynski/master
1257
+ * Merge pull request [#611] from jasonl/better-lowlevel-message
1258
+ * Merge pull request [#616] from jc00ke/master
1259
+ * Merge pull request [#623] from raldred/patch-1
1260
+ * Merge pull request [#628] from rdpoor/master
1261
+ * Merge pull request [#634] from deepj/master
1262
+ * Merge pull request [#637] from raskhadafi/patch-1
1263
+ * Merge pull request [#639] from ebeigarts/fix-phased-restarts
1264
+ * Merge pull request [#640] from codehotter/issue-612-dependent-requests-deadlock
916
1265
 
917
1266
  ## 2.10.2 / 2014-11-26
918
1267
 
@@ -942,9 +1291,9 @@ The "clearly I don't have enough tests for the config" release.
942
1291
 
943
1292
  * 5 bug fixes:
944
1293
  * Clean out a threads local data before doing work
945
- * Disable SSLv3. Fixes #591
1294
+ * Disable SSLv3. Fixes [#591]
946
1295
  * First change the directory to use the correct Gemfile.
947
- * Only use config.ru binds if specified. Fixes #606
1296
+ * Only use config.ru binds if specified. Fixes [#606]
948
1297
  * Strongish cipher suite with FS support for some browsers
949
1298
 
950
1299
  * 2 doc changes:
@@ -952,20 +1301,20 @@ The "clearly I don't have enough tests for the config" release.
952
1301
  * fix typo in README.md
953
1302
 
954
1303
  * 9 Merged PRs:
955
- * Merge pull request #560 from raskhadafi/prune_bundler-bug
956
- * Merge pull request #566 from sheltond/master
957
- * Merge pull request #593 from andruby/patch-1
958
- * Merge pull request #594 from hassox/thread-cleanliness
959
- * Merge pull request #596 from burningTyger/patch-1
960
- * Merge pull request #601 from sorentwo/friendly-umask
961
- * Merge pull request #602 from 1334/patch-1
962
- * Merge pull request #608 from Gu1/master
963
- * Merge remote-tracking branch 'origin/pr/538'
1304
+ * Merge pull request [#560] from raskhadafi/prune_bundler-bug
1305
+ * Merge pull request [#566] from sheltond/master
1306
+ * Merge pull request [#593] from andruby/patch-1
1307
+ * Merge pull request [#594] from hassox/thread-cleanliness
1308
+ * Merge pull request [#596] from burningTyger/patch-1
1309
+ * Merge pull request [#601] from sorentwo/friendly-umask
1310
+ * Merge pull request [#602] from 1334/patch-1
1311
+ * Merge pull request [#608] from Gu1/master
1312
+ * Merge pull request [#538] from memiux/?
964
1313
 
965
1314
  ## 2.9.2 / 2014-10-25
966
1315
 
967
1316
  * 8 bug fixes:
968
- * Fix puma-wild handling a restart properly. Fixes #550
1317
+ * Fix puma-wild handling a restart properly. Fixes [#550]
969
1318
  * JRuby SSL POODLE update
970
1319
  * Keep deprecated features warnings
971
1320
  * Log the current time when Puma shuts down.
@@ -975,24 +1324,24 @@ The "clearly I don't have enough tests for the config" release.
975
1324
  * Fixing sexist error messages
976
1325
 
977
1326
  * 6 PRs merged:
978
- * Merge pull request #549 from bsnape/log-shutdown-time
979
- * Merge pull request #553 from lowjoel/master
980
- * Merge pull request #568 from mariuz/patch-1
981
- * Merge pull request #578 from danielbuechele/patch-1
982
- * Merge pull request #581 from alexch/slightly-better-logging
983
- * Merge pull request #590 from looker/jruby_disable_sslv3
1327
+ * Merge pull request [#549] from bsnape/log-shutdown-time
1328
+ * Merge pull request [#553] from lowjoel/master
1329
+ * Merge pull request [#568] from mariuz/patch-1
1330
+ * Merge pull request [#578] from danielbuechele/patch-1
1331
+ * Merge pull request [#581] from alexch/slightly-better-logging
1332
+ * Merge pull request [#590] from looker/jruby_disable_sslv3
984
1333
 
985
1334
  ## 2.9.1 / 2014-09-05
986
1335
 
987
1336
  * 4 bug fixes:
988
1337
  * Cleanup the SSL related structures properly, fixes memory leak
989
1338
  * Fix thread spawning edge case.
990
- * Force a worker check after a worker boots, don't wait 5sec. Fixes #574
1339
+ * Force a worker check after a worker boots, don't wait 5sec. Fixes [#574]
991
1340
  * Implement SIGHUP for logs reopening
992
1341
 
993
1342
  * 2 PRs merged:
994
- * Merge pull request #561 from theoldreader/sighup
995
- * Merge pull request #570 from havenwood/spawn-thread-edge-case
1343
+ * Merge pull request [#561] from theoldreader/sighup
1344
+ * Merge pull request [#570] from havenwood/spawn-thread-edge-case
996
1345
 
997
1346
  ## 2.9.0 / 2014-07-12
998
1347
 
@@ -1011,12 +1360,12 @@ The "clearly I don't have enough tests for the config" release.
1011
1360
  * Update README.md
1012
1361
 
1013
1362
  * 6 PRs merged:
1014
- * Merge pull request #520 from misfo/patch-2
1015
- * Merge pull request #530 from looker/jruby-ssl
1016
- * Merge pull request #537 from vlmonk/patch-1
1017
- * Merge pull request #540 from allaire/patch-1
1018
- * Merge pull request #544 from chulkilee/bsd-3-clause
1019
- * Merge pull request #551 from jcxplorer/patch-1
1363
+ * Merge pull request [#520] from misfo/patch-2
1364
+ * Merge pull request [#530] from looker/jruby-ssl
1365
+ * Merge pull request [#537] from vlmonk/patch-1
1366
+ * Merge pull request [#540] from allaire/patch-1
1367
+ * Merge pull request [#544] from chulkilee/bsd-3-clause
1368
+ * Merge pull request [#551] from jcxplorer/patch-1
1020
1369
 
1021
1370
  ## 2.8.2 / 2014-04-12
1022
1371
 
@@ -1033,17 +1382,17 @@ The "clearly I don't have enough tests for the config" release.
1033
1382
  * allow changing of worker_timeout in config file
1034
1383
 
1035
1384
  * 11 PRs merged:
1036
- * Merge pull request #487 from ckuttruff/master
1037
- * Merge pull request #492 from ckuttruff/master
1038
- * Merge pull request #493 from alepore/config_tag
1039
- * Merge pull request #503 from mariuz/patch-1
1040
- * Merge pull request #505 from sammcj/patch-1
1041
- * Merge pull request #506 from FlavourSys/config_worker_timeout
1042
- * Merge pull request #510 from momer/rescue-block-handle-servers-fix
1043
- * Merge pull request #511 from macool/patch-1
1044
- * Merge pull request #514 from edogawaconan/refactor_env
1045
- * Merge pull request #517 from misfo/patch-1
1046
- * Merge pull request #518 from LongMan/master
1385
+ * Merge pull request [#487] from ckuttruff/master
1386
+ * Merge pull request [#492] from ckuttruff/master
1387
+ * Merge pull request [#493] from alepore/config_tag
1388
+ * Merge pull request [#503] from mariuz/patch-1
1389
+ * Merge pull request [#505] from sammcj/patch-1
1390
+ * Merge pull request [#506] from FlavourSys/config_worker_timeout
1391
+ * Merge pull request [#510] from momer/rescue-block-handle-servers-fix
1392
+ * Merge pull request [#511] from macool/patch-1
1393
+ * Merge pull request [#514] from edogawaconan/refactor_env
1394
+ * Merge pull request [#517] from misfo/patch-1
1395
+ * Merge pull request [#518] from LongMan/master
1047
1396
 
1048
1397
  ## 2.8.1 / 2014-03-06
1049
1398
 
@@ -1055,60 +1404,59 @@ The "clearly I don't have enough tests for the config" release.
1055
1404
  * Start the deployment doc
1056
1405
 
1057
1406
  * 6 PRs merged:
1058
- * Merge pull request #471 from arthurnn/fix_test
1059
- * Merge pull request #485 from joneslee85/patch-9
1060
- * Merge pull request #486 from joshwlewis/patch-1
1061
- * Merge pull request #490 from tobinibot/patch-1
1062
- * Merge pull request #491 from brianknight10/clarify-no-config
1407
+ * Merge pull request [#471] from arthurnn/fix_test
1408
+ * Merge pull request [#485] from joneslee85/patch-9
1409
+ * Merge pull request [#486] from joshwlewis/patch-1
1410
+ * Merge pull request [#490] from tobinibot/patch-1
1411
+ * Merge pull request [#491] from brianknight10/clarify-no-config
1063
1412
 
1064
1413
  ## 2.8.0 / 2014-02-28
1065
1414
 
1066
1415
  * 8 minor features:
1067
- * Add ability to autoload a config file. Fixes #438
1068
- * Add ability to detect and terminate hung workers. Fixes #333
1416
+ * Add ability to autoload a config file. Fixes [#438]
1417
+ * Add ability to detect and terminate hung workers. Fixes [#333]
1069
1418
  * Add booted_workers to stats response
1070
1419
  * Add config to customize the default error message
1071
1420
  * Add prune_bundler option
1072
- * Add worker indexes, expose them via on_worker_boot. Fixes #440
1421
+ * Add worker indexes, expose them via on_worker_boot. Fixes [#440]
1073
1422
  * Add pretty process name
1074
1423
  * Show the ruby version in use
1075
1424
 
1076
1425
  * 7 bug fixes:
1077
1426
  * Added 408 status on timeout.
1078
- * Be more hostile with sockets that write block. Fixes #449
1079
- * Expect at_exit to exclusively remove the pidfile. Fixes #444
1080
- * Expose latency and listen backlog via bind query. Fixes #370
1081
- * JRuby raises IOError if the socket is there. Fixes #377
1082
- * Process requests fairly. Fixes #406
1083
- * Rescue SystemCallError as well. Fixes #425
1427
+ * Be more hostile with sockets that write block. Fixes [#449]
1428
+ * Expect at_exit to exclusively remove the pidfile. Fixes [#444]
1429
+ * Expose latency and listen backlog via bind query. Fixes [#370]
1430
+ * JRuby raises IOError if the socket is there. Fixes [#377]
1431
+ * Process requests fairly. Fixes [#406]
1432
+ * Rescue SystemCallError as well. Fixes [#425]
1084
1433
 
1085
1434
  * 4 doc changes:
1086
1435
  * Add 2.1.0 to the matrix
1087
1436
  * Add Code Climate badge to README
1088
1437
  * Create signals.md
1089
- * Set the license to BSD. Fixes #432
1438
+ * Set the license to BSD. Fixes [#432]
1090
1439
 
1091
1440
  * 14 PRs merged:
1092
- * Merge pull request #428 from alexeyfrank/capistrano_default_hooks
1093
- * Merge pull request #429 from namusyaka/revert-const_defined
1094
- * Merge pull request #431 from mrb/master
1095
- * Merge pull request #433 from alepore/process-name
1096
- * Merge pull request #437 from ibrahima/master
1097
- * Merge pull request #446 from sudara/master
1098
- * Merge pull request #451 from pwiebe/status_408
1099
- * Merge pull request #453 from joevandyk/patch-1
1100
- * Merge pull request #470 from arthurnn/fix_458
1101
- * Merge pull request #472 from rubencaro/master
1102
- * Merge pull request #480 from jjb/docs-on-running-test-suite
1103
- * Merge pull request #481 from schneems/master
1104
- * Merge pull request #482 from prathamesh-sonpatki/signals-doc-cleanup
1105
- * Merge pull request #483 from YotpoLtd/master
1441
+ * Merge pull request [#428] from alexeyfrank/capistrano_default_hooks
1442
+ * Merge pull request [#429] from namusyaka/revert-const_defined
1443
+ * Merge pull request [#431] from mrb/master
1444
+ * Merge pull request [#433] from alepore/process-name
1445
+ * Merge pull request [#437] from ibrahima/master
1446
+ * Merge pull request [#446] from sudara/master
1447
+ * Merge pull request [#451] from pwiebe/status_408
1448
+ * Merge pull request [#453] from joevandyk/patch-1
1449
+ * Merge pull request [#470] from arthurnn/fix_458
1450
+ * Merge pull request [#472] from rubencaro/master
1451
+ * Merge pull request [#480] from jjb/docs-on-running-test-suite
1452
+ * Merge pull request [#481] from schneems/master
1453
+ * Merge pull request [#482] from prathamesh-sonpatki/signals-doc-cleanup
1454
+ * Merge pull request [#483] from YotpoLtd/master
1106
1455
 
1107
1456
  ## 2.7.1 / 2013-12-05
1108
1457
 
1109
1458
  * 1 bug fix:
1110
-
1111
- * Keep STDOUT/STDERR the right mode. Fixes #422
1459
+ * Keep STDOUT/STDERR the right mode. Fixes [#422]
1112
1460
 
1113
1461
  ## 2.7.0 / 2013-12-03
1114
1462
 
@@ -1143,7 +1491,6 @@ The "clearly I don't have enough tests for the config" release.
1143
1491
  ## 2.5.1 / 2013-08-13
1144
1492
 
1145
1493
  * 2 bug fixes:
1146
-
1147
1494
  * Keep jruby daemon mode from retrying on a hot restart
1148
1495
  * Extract version from const.rb in gemspec
1149
1496
 
@@ -1185,30 +1532,28 @@ The "clearly I don't have enough tests for the config" release.
1185
1532
 
1186
1533
  * 10 bug fixes:
1187
1534
 
1188
- * Be sure to only delete the pid in the master. Fixes #334
1535
+ * Be sure to only delete the pid in the master. Fixes [#334]
1189
1536
  * Call out -C/--config flags
1190
- * Change parser symbol names to avoid clash. Fixes #179
1537
+ * Change parser symbol names to avoid clash. Fixes [#179]
1191
1538
  * Convert thread pool sizes to integers
1192
1539
  * Detect when the jruby daemon child doesn't start properly
1193
1540
  * Fix typo in CLI help
1194
- * Improve the logging output when hijack is used. Fixes #332
1541
+ * Improve the logging output when hijack is used. Fixes [#332]
1195
1542
  * Remove unnecessary thread pool size conversions
1196
- * Setup :worker_boot as an Array. Fixes #317
1197
- * Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes #309
1543
+ * Setup :worker_boot as an Array. Fixes [#317]
1544
+ * Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes [#309]
1198
1545
 
1199
1546
 
1200
1547
  ## 2.3.2 / 2013-07-08
1201
1548
 
1202
1549
  * 1 bug fix:
1203
-
1204
1550
  * Move starting control server to after daemonization.
1205
1551
 
1206
1552
  ## 2.3.1 / 2013-07-06
1207
1553
 
1208
1554
  * 2 bug fixes:
1209
-
1210
1555
  * Include the right files in the Manifest.
1211
- * Disable inheriting connections on restart on windows. Fixes #166
1556
+ * Disable inheriting connections on restart on windows. Fixes [#166]
1212
1557
 
1213
1558
  * 1 doc change:
1214
1559
  * Better document some platform constraints
@@ -1216,47 +1561,39 @@ The "clearly I don't have enough tests for the config" release.
1216
1561
  ## 2.3.0 / 2013-07-05
1217
1562
 
1218
1563
  * 1 major bug fix:
1219
-
1220
1564
  * Stabilize control server, add support in cluster mode
1221
1565
 
1222
1566
  * 5 minor bug fixes:
1223
-
1224
1567
  * Add ability to cleanup stale unix sockets
1225
- * Check status data better. Fixes #292
1226
- * Convert raw IO errors to ConnectionError. Fixes #274
1227
- * Fix sending Content-Type and Content-Length for no body status. Fixes #304
1228
- * Pass state path through to `pumactl start`. Fixes #287
1568
+ * Check status data better. Fixes [#292]
1569
+ * Convert raw IO errors to ConnectionError. Fixes [#274]
1570
+ * Fix sending Content-Type and Content-Length for no body status. Fixes [#304]
1571
+ * Pass state path through to `pumactl start`. Fixes [#287]
1229
1572
 
1230
1573
  * 2 internal changes:
1231
-
1232
1574
  * Refactored modes into seperate classes that CLI uses
1233
1575
  * Changed CLI to take an Events object instead of stdout/stderr (API change)
1234
1576
 
1235
1577
  ## 2.2.2 / 2013-07-02
1236
1578
 
1237
1579
  * 1 bug fix:
1238
-
1239
1580
  * Fix restart_command in the config
1240
1581
 
1241
1582
  ## 2.2.1 / 2013-07-02
1242
1583
 
1243
1584
  * 1 minor feature:
1244
-
1245
1585
  * Introduce preload flag
1246
1586
 
1247
1587
  * 1 bug fix:
1248
-
1249
1588
  * Pass custom restart command in JRuby
1250
1589
 
1251
1590
  ## 2.2.0 / 2013-07-01
1252
1591
 
1253
1592
  * 1 major feature:
1254
-
1255
1593
  * Add ability to preload rack app
1256
1594
 
1257
1595
  * 2 minor bugfixes:
1258
-
1259
- * Don't leak info when not in development. Fixes #256
1596
+ * Don't leak info when not in development. Fixes [#256]
1260
1597
  * Load the app, then bind the ports
1261
1598
 
1262
1599
  ## 2.1.1 / 2013-06-20
@@ -1264,7 +1601,7 @@ The "clearly I don't have enough tests for the config" release.
1264
1601
  * 2 minor bug fixes:
1265
1602
 
1266
1603
  * Fix daemonization on jruby
1267
- * Load the application before daemonizing. Fixes #285
1604
+ * Load the application before daemonizing. Fixes [#285]
1268
1605
 
1269
1606
  ## 2.1.0 / 2013-06-18
1270
1607
 
@@ -1274,7 +1611,7 @@ The "clearly I don't have enough tests for the config" release.
1274
1611
  * Support systemd socket activation
1275
1612
 
1276
1613
  * 15 bug fixes:
1277
- * Deal with pipes closing while stopping. Fixes #270
1614
+ * Deal with pipes closing while stopping. Fixes [#270]
1278
1615
  * Error out early if there is no app configured
1279
1616
  * Handle ConnectionError rather than the lowlevel exceptions
1280
1617
  * tune with `-C` config file and `on_worker_boot`
@@ -1283,11 +1620,11 @@ The "clearly I don't have enough tests for the config" release.
1283
1620
  * Make sure to use bytesize instead of size (MiniSSL write)
1284
1621
  * Fix an error in puma-manager.conf
1285
1622
  * fix: stop leaking sockets on restart (affects ruby 1.9.3 or before)
1286
- * Ignore errors on the cross-thread pipe. Fixes #246
1623
+ * Ignore errors on the cross-thread pipe. Fixes [#246]
1287
1624
  * Ignore errors while uncorking the socket (it might already be closed)
1288
- * Ignore the body on a HEAD request. Fixes #278
1289
- * Handle all engine data when possible. Fixes #251.
1290
- * Handle all read exceptions properly. Fixes #252
1625
+ * Ignore the body on a HEAD request. Fixes [#278]
1626
+ * Handle all engine data when possible. Fixes [#251].
1627
+ * Handle all read exceptions properly. Fixes [#252]
1291
1628
  * Handle errors from the server better
1292
1629
 
1293
1630
  * 3 doc changes:
@@ -1298,7 +1635,6 @@ The "clearly I don't have enough tests for the config" release.
1298
1635
  ## 2.0.1 / 2013-04-30
1299
1636
 
1300
1637
  * 1 bug fix:
1301
-
1302
1638
  * Fix not starting on JRuby properly
1303
1639
 
1304
1640
  ## 2.0.0 / 2013-04-29
@@ -1310,8 +1646,8 @@ RailsConf 2013 edition!
1310
1646
  * Minor doc fixes in the README.md, Capistrano section
1311
1647
 
1312
1648
  * 2 bug fixes:
1313
- * Fix reading RACK_ENV properly. Fixes #234
1314
- * Make cap recipe handle tmp/sockets; fixes #228
1649
+ * Fix reading RACK_ENV properly. Fixes [#234]
1650
+ * Make cap recipe handle tmp/sockets; fixes [#228]
1315
1651
 
1316
1652
  * 3 minor changes:
1317
1653
  * Fix capistrano recipe
@@ -1321,7 +1657,6 @@ RailsConf 2013 edition!
1321
1657
  ## 2.0.0.b7 / 2013-03-18
1322
1658
 
1323
1659
  * 5 minor enhancements:
1324
-
1325
1660
  * Add -q option for :start
1326
1661
  * Add -V, --version
1327
1662
  * Add default Rack handler helper
@@ -1329,30 +1664,27 @@ RailsConf 2013 edition!
1329
1664
  * Set worker directory from configuration file
1330
1665
 
1331
1666
  * 12 bug fixes:
1332
-
1333
- * Close the binder in the right place. Fixes #192
1334
- * Handle early term in workers. Fixes #206
1667
+ * Close the binder in the right place. Fixes [#192]
1668
+ * Handle early term in workers. Fixes [#206]
1335
1669
  * Make sure that the default port is 80 when the request doesn't include HTTP_X_FORWARDED_PROTO.
1336
1670
  * Prevent Errno::EBADF errors on restart when running ruby 2.0
1337
1671
  * Record the proper @master_pid
1338
1672
  * Respect the header HTTP_X_FORWARDED_PROTO when the host doesn't include a port number.
1339
1673
  * Retry EAGAIN/EWOULDBLOCK during syswrite
1340
- * Run exec properly to restart. Fixes #154
1674
+ * Run exec properly to restart. Fixes [#154]
1341
1675
  * Set Rack run_once to false
1342
- * Syncronize all access to @timeouts. Fixes #208
1343
- * Write out the state post-daemonize. Fixes #189
1676
+ * Syncronize all access to @timeouts. Fixes [#208]
1677
+ * Write out the state post-daemonize. Fixes [#189]
1344
1678
  * Prevent crash when all workers are gone
1345
1679
 
1346
1680
  ## 2.0.0.b6 / 2013-02-06
1347
1681
 
1348
1682
  * 2 minor enhancements:
1349
-
1350
1683
  * Add hook for running when a worker boots
1351
1684
  * Advertise the Configuration object for apps to use.
1352
1685
 
1353
1686
  * 1 bug fix:
1354
-
1355
- * Change directory in working during upgrade. Fixes #185
1687
+ * Change directory in working during upgrade. Fixes [#185]
1356
1688
 
1357
1689
  ## 2.0.0.b5 / 2013-02-05
1358
1690
 
@@ -1365,16 +1697,16 @@ RailsConf 2013 edition!
1365
1697
  * Add config file option to specify the restart command
1366
1698
 
1367
1699
  * 5 bug fixes:
1368
- * Cleanup pipes properly. Fixes #182
1369
- * Daemonize earlier so that we don't lose app threads. Fixes #183
1370
- * Drain the notification pipe. Fixes #176, thanks @cryo28
1371
- * Move write_pid to after we daemonize. Fixes #180
1700
+ * Cleanup pipes properly. Fixes [#182]
1701
+ * Daemonize earlier so that we don't lose app threads. Fixes [#183]
1702
+ * Drain the notification pipe. Fixes [#176], thanks @cryo28
1703
+ * Move write_pid to after we daemonize. Fixes [#180]
1372
1704
  * Redirect IO properly and emit message for checkpointing
1373
1705
 
1374
1706
  ## 2.0.0.b4 / 2012-12-12
1375
1707
 
1376
1708
  * 4 bug fixes:
1377
- * Properly check #syswrite's value for variable sized buffers. Fixes #170
1709
+ * Properly check #syswrite's value for variable sized buffers. Fixes [#170]
1378
1710
  * Shutdown status server properly
1379
1711
  * Handle char vs byte and mixing syswrite with write properly
1380
1712
  * made MiniSSL validate key/cert file existence
@@ -1394,12 +1726,12 @@ RailsConf 2013 edition!
1394
1726
  * Add options to daemonize puma
1395
1727
 
1396
1728
  * 7 bug fixes:
1397
- * Reset the IOBuffer properly. Fixes #148
1729
+ * Reset the IOBuffer properly. Fixes [#148]
1398
1730
  * Shutdown gracefully on JRuby with Ctrl-C
1399
- * Various methods to get newrelic to start. Fixes #128
1731
+ * Various methods to get newrelic to start. Fixes [#128]
1400
1732
  * fixing syntax error at capistrano recipe
1401
1733
  * Force ECONNRESET when read returns nil
1402
- * Be sure to empty the drain the todo before shutting down. Fixes #155
1734
+ * Be sure to empty the drain the todo before shutting down. Fixes [#155]
1403
1735
  * allow for alternate locations for status app
1404
1736
 
1405
1737
  ## 2.0.0.b1 / 2012-09-11
@@ -1451,7 +1783,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1451
1783
 
1452
1784
  * 6 bug fixes:
1453
1785
  * Define RSTRING_NOT_MODIFIED for Rubinius
1454
- * Convert status to integer. Fixes #123
1786
+ * Convert status to integer. Fixes [#123]
1455
1787
  * Delete pidfile when stopping the server
1456
1788
  * Allow compilation with -Werror=format-security option
1457
1789
  * Fix wrong HTTP version for a HTTP/1.0 request
@@ -1459,7 +1791,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1459
1791
 
1460
1792
  * 3 minor features:
1461
1793
  * Added support for setting RACK_ENV via the CLI, config file, and rack app
1462
- * Allow Server#run to run sync. Fixes #111
1794
+ * Allow Server#run to run sync. Fixes [#111]
1463
1795
  * Puma can now run on windows
1464
1796
 
1465
1797
  ## 1.4.0 / 2012-06-04
@@ -1474,7 +1806,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1474
1806
 
1475
1807
  * 2 bug fixes:
1476
1808
  * use #bytesize instead of #length for Content-Length header
1477
- * Use StringIO properly. Fixes #98
1809
+ * Use StringIO properly. Fixes [#98]
1478
1810
 
1479
1811
  ## 1.3.0 / 2012-05-08
1480
1812
 
@@ -1483,10 +1815,10 @@ be added back in a future date when a java Puma::MiniSSL is added.
1483
1815
  * Add -I option to specify $LOAD_PATH directories
1484
1816
 
1485
1817
  * 4 bug fixes:
1486
- * Don't join the server thread inside the signal handle. Fixes #94
1818
+ * Don't join the server thread inside the signal handle. Fixes [#94]
1487
1819
  * Make NullIO#read mimic IO#read
1488
- * Only stop the status server if it's started. Fixes #84
1489
- * Set RACK_ENV early in cli also. Fixes #78
1820
+ * Only stop the status server if it's started. Fixes [#84]
1821
+ * Set RACK_ENV early in cli also. Fixes [#78]
1490
1822
 
1491
1823
  * 1 new contributor:
1492
1824
  * Jesse Cooke
@@ -1494,58 +1826,49 @@ be added back in a future date when a java Puma::MiniSSL is added.
1494
1826
  ## 1.2.2 / 2012-04-28
1495
1827
 
1496
1828
  * 4 bug fixes:
1497
-
1498
1829
  * Report a lowlevel error to stderr
1499
1830
  * Set a fallback SERVER_NAME and SERVER_PORT
1500
- * Keep the encoding of the body correct. Fixes #79
1831
+ * Keep the encoding of the body correct. Fixes [#79]
1501
1832
  * show error.to_s along with backtrace for low-level error
1502
1833
 
1503
1834
  ## 1.2.1 / 2012-04-11
1504
1835
 
1505
- 1 bug fix:
1506
-
1507
- * Fix rack.url_scheme for SSL servers. Fixes #65
1836
+ * 1 bug fix:
1837
+ * Fix rack.url_scheme for SSL servers. Fixes [#65]
1508
1838
 
1509
1839
  ## 1.2.0 / 2012-04-11
1510
1840
 
1511
- 1 major feature:
1512
-
1513
- * When possible, the internal restart does a "hot restart" meaning
1514
- the server sockets remains open, so no connections are lost.
1515
-
1516
- 1 minor feature:
1517
-
1518
- * More helpful fallback error message
1519
-
1520
- 6 bug fixes:
1841
+ * 1 major feature:
1842
+ * When possible, the internal restart does a "hot restart" meaning
1843
+ the server sockets remains open, so no connections are lost.
1521
1844
 
1522
- * Pass the proper args to unknown_error. Fixes #54, #58
1523
- * Stop the control server before restarting. Fixes #61
1524
- * Fix reporting https only on a true SSL connection
1525
- * Set the default content type to 'text/plain'. Fixes #63
1526
- * Use REUSEADDR. Fixes #60
1527
- * Shutdown gracefully on SIGTERM. Fixes #53
1845
+ * 1 minor feature:
1846
+ * More helpful fallback error message
1528
1847
 
1529
- 2 new contributors:
1848
+ * 6 bug fixes:
1849
+ * Pass the proper args to unknown_error. Fixes [#54], [#58]
1850
+ * Stop the control server before restarting. Fixes [#61]
1851
+ * Fix reporting https only on a true SSL connection
1852
+ * Set the default content type to 'text/plain'. Fixes [#63]
1853
+ * Use REUSEADDR. Fixes [#60]
1854
+ * Shutdown gracefully on SIGTERM. Fixes [#53]
1530
1855
 
1531
- * Seamus Abshere
1532
- * Steve Richert
1856
+ * 2 new contributors:
1857
+ * Seamus Abshere
1858
+ * Steve Richert
1533
1859
 
1534
1860
  ## 1.1.1 / 2012-03-30
1535
1861
 
1536
- 1 bugfix:
1537
-
1538
- * Include puma/compat.rb in the gem (oops!)
1862
+ * 1 bugfix:
1863
+ * Include puma/compat.rb in the gem (oops!)
1539
1864
 
1540
1865
  ## 1.1.0 / 2012-03-30
1541
1866
 
1542
- 1 bugfix:
1543
-
1544
- * Make sure that the unix socket has the perms 0777 by default
1545
-
1546
- 1 minor feature:
1867
+ * 1 bugfix:
1868
+ * Make sure that the unix socket has the perms 0777 by default
1547
1869
 
1548
- * Add umask param to the unix:// bind to set the umask
1870
+ * 1 minor feature:
1871
+ * Add umask param to the unix:// bind to set the umask
1549
1872
 
1550
1873
  ## 1.0.0 / 2012-03-29
1551
1874
 
@@ -1555,7 +1878,706 @@ be added back in a future date when a java Puma::MiniSSL is added.
1555
1878
  ## Master
1556
1879
 
1557
1880
  * Features
1558
- * Your feature goes here (#Github Number)
1881
+ * Your feature goes here <Most recent on the top, like GitHub> (#Github Number)
1559
1882
 
1560
1883
  * Bugfixes
1561
- * Your bugfix goes here (#Github Number)
1884
+ * Your bugfix goes here <Most recent on the top, like GitHub> (#Github Number)
1885
+
1886
+ [#3166]:https://github.com/puma/puma/issues/3166 "Issue by @JoeDupuis, merged 2023-06-08"
1887
+ [#2883]:https://github.com/puma/puma/pull/2883 "PR by @MSP-Greg, merged 2022-06-02"
1888
+ [#2868]:https://github.com/puma/puma/pull/2868 "PR by @MSP-Greg, merged 2022-06-02"
1889
+ [#2866]:https://github.com/puma/puma/issues/2866 "Issue by @slondr, closed 2022-06-02"
1890
+ [#2888]:https://github.com/puma/puma/pull/2888 "PR by @MSP-Greg, merged 2022-06-01"
1891
+ [#2890]:https://github.com/puma/puma/pull/2890 "PR by @kares, merged 2022-06-01"
1892
+ [#2729]:https://github.com/puma/puma/issues/2729 "Issue by @kares, closed 2022-06-01"
1893
+ [#2885]:https://github.com/puma/puma/pull/2885 "PR by @MSP-Greg, merged 2022-05-30"
1894
+ [#2839]:https://github.com/puma/puma/issues/2839 "Issue by @wlipa, closed 2022-05-30"
1895
+ [#2882]:https://github.com/puma/puma/pull/2882 "PR by @MSP-Greg, merged 2022-05-19"
1896
+ [#2864]:https://github.com/puma/puma/pull/2864 "PR by @MSP-Greg, merged 2022-04-26"
1897
+ [#2863]:https://github.com/puma/puma/issues/2863 "Issue by @eradman, closed 2022-04-26"
1898
+ [#2861]:https://github.com/puma/puma/pull/2861 "PR by @BlakeWilliams, merged 2022-04-17"
1899
+ [#2856]:https://github.com/puma/puma/issues/2856 "Issue by @nateberkopec, closed 2022-04-17"
1900
+ [#2855]:https://github.com/puma/puma/pull/2855 "PR by @stanhu, merged 2022-04-09"
1901
+ [#2848]:https://github.com/puma/puma/pull/2848 "PR by @stanhu, merged 2022-04-02"
1902
+ [#2847]:https://github.com/puma/puma/pull/2847 "PR by @stanhu, merged 2022-04-02"
1903
+ [#2838]:https://github.com/puma/puma/pull/2838 "PR by @epsilon-0, merged 2022-03-03"
1904
+ [#2817]:https://github.com/puma/puma/pull/2817 "PR by @khustochka, merged 2022-02-20"
1905
+ [#2810]:https://github.com/puma/puma/pull/2810 "PR by @kzkn, merged 2022-01-27"
1906
+ [#2899]:https://github.com/puma/puma/pull/2899 "PR by @kares, merged 2022-07-04"
1907
+ [#2891]:https://github.com/puma/puma/pull/2891 "PR by @gingerlime, merged 2022-06-02"
1908
+ [#2886]:https://github.com/puma/puma/pull/2886 "PR by @kares, merged 2022-05-30"
1909
+ [#2884]:https://github.com/puma/puma/pull/2884 "PR by @kares, merged 2022-05-30"
1910
+ [#2875]:https://github.com/puma/puma/pull/2875 "PR by @ylecuyer, merged 2022-05-19"
1911
+ [#2840]:https://github.com/puma/puma/pull/2840 "PR by @LukaszMaslej, merged 2022-04-13"
1912
+ [#2849]:https://github.com/puma/puma/pull/2849 "PR by @kares, merged 2022-04-09"
1913
+ [#2809]:https://github.com/puma/puma/pull/2809 "PR by @dentarg, merged 2022-01-26"
1914
+ [#2764]:https://github.com/puma/puma/pull/2764 "PR by @dentarg, merged 2022-01-18"
1915
+ [#2708]:https://github.com/puma/puma/issues/2708 "Issue by @erikaxel, closed 2022-01-18"
1916
+ [#2780]:https://github.com/puma/puma/pull/2780 "PR by @dalibor, merged 2022-01-01"
1917
+ [#2784]:https://github.com/puma/puma/pull/2784 "PR by @MSP-Greg, merged 2022-01-01"
1918
+ [#2773]:https://github.com/puma/puma/pull/2773 "PR by @ob-stripe, merged 2022-01-01"
1919
+ [#2794]:https://github.com/puma/puma/pull/2794 "PR by @johnnyshields, merged 2022-01-10"
1920
+ [#2759]:https://github.com/puma/puma/pull/2759 "PR by @ob-stripe, merged 2021-12-11"
1921
+ [#2731]:https://github.com/puma/puma/pull/2731 "PR by @baelter, merged 2021-11-02"
1922
+ [#2341]:https://github.com/puma/puma/issues/2341 "Issue by @cjlarose, closed 2021-11-02"
1923
+ [#2728]:https://github.com/puma/puma/pull/2728 "PR by @dalibor, merged 2021-10-31"
1924
+ [#2733]:https://github.com/puma/puma/pull/2733 "PR by @ob-stripe, merged 2021-12-12"
1925
+ [#2807]:https://github.com/puma/puma/pull/2807 "PR by @MSP-Greg, merged 2022-01-25"
1926
+ [#2806]:https://github.com/puma/puma/issues/2806 "Issue by @olleolleolle, closed 2022-01-25"
1927
+ [#2799]:https://github.com/puma/puma/pull/2799 "PR by @ags, merged 2022-01-22"
1928
+ [#2785]:https://github.com/puma/puma/pull/2785 "PR by @MSP-Greg, merged 2022-01-02"
1929
+ [#2757]:https://github.com/puma/puma/pull/2757 "PR by @MSP-Greg, merged 2021-11-24"
1930
+ [#2745]:https://github.com/puma/puma/pull/2745 "PR by @MSP-Greg, merged 2021-11-03"
1931
+ [#2742]:https://github.com/puma/puma/pull/2742 "PR by @MSP-Greg, merged 2021-12-12"
1932
+ [#2730]:https://github.com/puma/puma/pull/2730 "PR by @kares, merged 2021-11-01"
1933
+ [#2702]:https://github.com/puma/puma/pull/2702 "PR by @jacobherrington, merged 2021-09-21"
1934
+ [#2610]:https://github.com/puma/puma/pull/2610 "PR by @ye-lin-aung, merged 2021-08-18"
1935
+ [#2257]:https://github.com/puma/puma/issues/2257 "Issue by @nateberkopec, closed 2021-08-18"
1936
+ [#2654]:https://github.com/puma/puma/pull/2654 "PR by @Roguelazer, merged 2021-09-07"
1937
+ [#2651]:https://github.com/puma/puma/issues/2651 "Issue by @Roguelazer, closed 2021-09-07"
1938
+ [#2689]:https://github.com/puma/puma/pull/2689 "PR by @jacobherrington, merged 2021-09-05"
1939
+ [#2700]:https://github.com/puma/puma/pull/2700 "PR by @ioquatix, merged 2021-09-16"
1940
+ [#2699]:https://github.com/puma/puma/issues/2699 "Issue by @ioquatix, closed 2021-09-16"
1941
+ [#2690]:https://github.com/puma/puma/pull/2690 "PR by @doits, merged 2021-09-06"
1942
+ [#2688]:https://github.com/puma/puma/pull/2688 "PR by @jdelStrother, merged 2021-09-03"
1943
+ [#2687]:https://github.com/puma/puma/issues/2687 "Issue by @jdelStrother, closed 2021-09-03"
1944
+ [#2675]:https://github.com/puma/puma/pull/2675 "PR by @devwout, merged 2021-09-08"
1945
+ [#2657]:https://github.com/puma/puma/pull/2657 "PR by @olivierbellone, merged 2021-07-13"
1946
+ [#2648]:https://github.com/puma/puma/pull/2648 "PR by @MSP-Greg, merged 2021-06-27"
1947
+ [#1412]:https://github.com/puma/puma/issues/1412 "Issue by @x-yuri, closed 2021-06-27"
1948
+ [#2586]:https://github.com/puma/puma/pull/2586 "PR by @MSP-Greg, merged 2021-05-26"
1949
+ [#2569]:https://github.com/puma/puma/issues/2569 "Issue by @tarragon, closed 2021-05-26"
1950
+ [#2643]:https://github.com/puma/puma/pull/2643 "PR by @MSP-Greg, merged 2021-06-27"
1951
+ [#2638]:https://github.com/puma/puma/issues/2638 "Issue by @gingerlime, closed 2021-06-27"
1952
+ [#2642]:https://github.com/puma/puma/pull/2642 "PR by @MSP-Greg, merged 2021-06-16"
1953
+ [#2633]:https://github.com/puma/puma/pull/2633 "PR by @onlined, merged 2021-06-04"
1954
+ [#2656]:https://github.com/puma/puma/pull/2656 "PR by @olivierbellone, merged 2021-07-07"
1955
+ [#2666]:https://github.com/puma/puma/pull/2666 "PR by @MSP-Greg, merged 2021-07-25"
1956
+ [#2630]:https://github.com/puma/puma/pull/2630 "PR by @seangoedecke, merged 2021-05-20"
1957
+ [#2626]:https://github.com/puma/puma/issues/2626 "Issue by @rorymckinley, closed 2021-05-20"
1958
+ [#2629]:https://github.com/puma/puma/pull/2629 "PR by @ye-lin-aung, merged 2021-05-20"
1959
+ [#2628]:https://github.com/puma/puma/pull/2628 "PR by @wjordan, merged 2021-05-20"
1960
+ [#2625]:https://github.com/puma/puma/issues/2625 "Issue by @jarthod, closed 2021-05-11"
1961
+ [#2564]:https://github.com/puma/puma/pull/2564 "PR by @MSP-Greg, merged 2021-04-24"
1962
+ [#2526]:https://github.com/puma/puma/issues/2526 "Issue by @nerdrew, closed 2021-04-24"
1963
+ [#2559]:https://github.com/puma/puma/pull/2559 "PR by @ylecuyer, merged 2021-03-11"
1964
+ [#2528]:https://github.com/puma/puma/issues/2528 "Issue by @cjlarose, closed 2021-03-11"
1965
+ [#2565]:https://github.com/puma/puma/pull/2565 "PR by @CGA1123, merged 2021-03-09"
1966
+ [#2534]:https://github.com/puma/puma/issues/2534 "Issue by @nateberkopec, closed 2021-03-09"
1967
+ [#2563]:https://github.com/puma/puma/pull/2563 "PR by @MSP-Greg, merged 2021-03-06"
1968
+ [#2504]:https://github.com/puma/puma/issues/2504 "Issue by @fsateler, closed 2021-03-06"
1969
+ [#2591]:https://github.com/puma/puma/pull/2591 "PR by @MSP-Greg, merged 2021-05-05"
1970
+ [#2572]:https://github.com/puma/puma/issues/2572 "Issue by @josefbilendo, closed 2021-05-05"
1971
+ [#2613]:https://github.com/puma/puma/pull/2613 "PR by @smcgivern, merged 2021-04-27"
1972
+ [#2605]:https://github.com/puma/puma/pull/2605 "PR by @pascalbetz, merged 2021-04-26"
1973
+ [#2584]:https://github.com/puma/puma/issues/2584 "Issue by @kaorihinata, closed 2021-04-26"
1974
+ [#2607]:https://github.com/puma/puma/pull/2607 "PR by @calvinxiao, merged 2021-04-23"
1975
+ [#2552]:https://github.com/puma/puma/issues/2552 "Issue by @feliperaul, closed 2021-05-24"
1976
+ [#2606]:https://github.com/puma/puma/pull/2606 "PR by @wjordan, merged 2021-04-20"
1977
+ [#2574]:https://github.com/puma/puma/issues/2574 "Issue by @darkhelmet, closed 2021-04-20"
1978
+ [#2567]:https://github.com/puma/puma/pull/2567 "PR by @kddnewton, merged 2021-04-19"
1979
+ [#2566]:https://github.com/puma/puma/issues/2566 "Issue by @kddnewton, closed 2021-04-19"
1980
+ [#2596]:https://github.com/puma/puma/pull/2596 "PR by @MSP-Greg, merged 2021-04-18"
1981
+ [#2588]:https://github.com/puma/puma/pull/2588 "PR by @dentarg, merged 2021-04-02"
1982
+ [#2556]:https://github.com/puma/puma/issues/2556 "Issue by @gamecreature, closed 2021-04-02"
1983
+ [#2585]:https://github.com/puma/puma/pull/2585 "PR by @MSP-Greg, merged 2021-03-26"
1984
+ [#2583]:https://github.com/puma/puma/issues/2583 "Issue by @jboler, closed 2021-03-26"
1985
+ [#2609]:https://github.com/puma/puma/pull/2609 "PR by @calvinxiao, merged 2021-04-26"
1986
+ [#2590]:https://github.com/puma/puma/pull/2590 "PR by @calvinxiao, merged 2021-04-05"
1987
+ [#2600]:https://github.com/puma/puma/pull/2600 "PR by @wjordan, merged 2021-04-30"
1988
+ [#2579]:https://github.com/puma/puma/pull/2579 "PR by @ghiculescu, merged 2021-03-17"
1989
+ [#2553]:https://github.com/puma/puma/pull/2553 "PR by @olivierbellone, merged 2021-02-10"
1990
+ [#2557]:https://github.com/puma/puma/pull/2557 "PR by @cjlarose, merged 2021-02-22"
1991
+ [#2550]:https://github.com/puma/puma/pull/2550 "PR by @MSP-Greg, merged 2021-02-05"
1992
+ [#2547]:https://github.com/puma/puma/pull/2547 "PR by @wildmaples, merged 2021-02-03"
1993
+ [#2543]:https://github.com/puma/puma/pull/2543 "PR by @MSP-Greg, merged 2021-02-01"
1994
+ [#2549]:https://github.com/puma/puma/pull/2549 "PR by @nmb, merged 2021-02-04"
1995
+ [#2519]:https://github.com/puma/puma/pull/2519 "PR by @MSP-Greg, merged 2021-01-26"
1996
+ [#2522]:https://github.com/puma/puma/pull/2522 "PR by @jcmfernandes, merged 2021-01-12"
1997
+ [#2490]:https://github.com/puma/puma/pull/2490 "PR by @Bonias, merged 2020-12-07"
1998
+ [#2486]:https://github.com/puma/puma/pull/2486 "PR by @karloscodes, merged 2020-12-02"
1999
+ [#2535]:https://github.com/puma/puma/pull/2535 "PR by @MSP-Greg, merged 2021-01-27"
2000
+ [#2529]:https://github.com/puma/puma/pull/2529 "PR by @MSP-Greg, merged 2021-01-24"
2001
+ [#2533]:https://github.com/puma/puma/pull/2533 "PR by @MSP-Greg, merged 2021-01-24"
2002
+ [#1953]:https://github.com/puma/puma/issues/1953 "Issue by @nateberkopec, closed 2020-12-01"
2003
+ [#2516]:https://github.com/puma/puma/pull/2516 "PR by @cjlarose, merged 2020-12-17"
2004
+ [#2520]:https://github.com/puma/puma/pull/2520 "PR by @dentarg, merged 2021-01-04"
2005
+ [#2521]:https://github.com/puma/puma/pull/2521 "PR by @ojab, merged 2021-01-04"
2006
+ [#2531]:https://github.com/puma/puma/pull/2531 "PR by @wjordan, merged 2021-01-19"
2007
+ [#2510]:https://github.com/puma/puma/pull/2510 "PR by @micke, merged 2020-12-10"
2008
+ [#2472]:https://github.com/puma/puma/pull/2472 "PR by @karloscodes, merged 2020-11-02"
2009
+ [#2438]:https://github.com/puma/puma/pull/2438 "PR by @ekohl, merged 2020-10-26"
2010
+ [#2406]:https://github.com/puma/puma/pull/2406 "PR by @fdel15, merged 2020-10-19"
2011
+ [#2449]:https://github.com/puma/puma/pull/2449 "PR by @MSP-Greg, merged 2020-10-28"
2012
+ [#2362]:https://github.com/puma/puma/pull/2362 "PR by @ekohl, merged 2020-11-10"
2013
+ [#2485]:https://github.com/puma/puma/pull/2485 "PR by @elct9620, merged 2020-11-18"
2014
+ [#2489]:https://github.com/puma/puma/pull/2489 "PR by @MSP-Greg, merged 2020-11-27"
2015
+ [#2487]:https://github.com/puma/puma/pull/2487 "PR by @MSP-Greg, merged 2020-11-17"
2016
+ [#2477]:https://github.com/puma/puma/pull/2477 "PR by @MSP-Greg, merged 2020-11-16"
2017
+ [#2475]:https://github.com/puma/puma/pull/2475 "PR by @nateberkopec, merged 2020-11-02"
2018
+ [#2439]:https://github.com/puma/puma/pull/2439 "PR by @kuei0221, merged 2020-10-26"
2019
+ [#2460]:https://github.com/puma/puma/pull/2460 "PR by @cjlarose, merged 2020-10-27"
2020
+ [#2473]:https://github.com/puma/puma/pull/2473 "PR by @cjlarose, merged 2020-11-01"
2021
+ [#2479]:https://github.com/puma/puma/pull/2479 "PR by @cjlarose, merged 2020-11-10"
2022
+ [#2495]:https://github.com/puma/puma/pull/2495 "PR by @JuanitoFatas, merged 2020-11-27"
2023
+ [#2461]:https://github.com/puma/puma/pull/2461 "PR by @cjlarose, merged 2020-10-27"
2024
+ [#2454]:https://github.com/puma/puma/issues/2454 "Issue by @majksner, closed 2020-10-27"
2025
+ [#2432]:https://github.com/puma/puma/pull/2432 "PR by @MSP-Greg, merged 2020-10-25"
2026
+ [#2442]:https://github.com/puma/puma/pull/2442 "PR by @wjordan, merged 2020-10-22"
2027
+ [#2427]:https://github.com/puma/puma/pull/2427 "PR by @cjlarose, merged 2020-10-20"
2028
+ [#2018]:https://github.com/puma/puma/issues/2018 "Issue by @gingerlime, closed 2020-10-20"
2029
+ [#2435]:https://github.com/puma/puma/pull/2435 "PR by @wjordan, merged 2020-10-20"
2030
+ [#2431]:https://github.com/puma/puma/pull/2431 "PR by @wjordan, merged 2020-10-16"
2031
+ [#2212]:https://github.com/puma/puma/issues/2212 "Issue by @junaruga, closed 2020-10-16"
2032
+ [#2409]:https://github.com/puma/puma/pull/2409 "PR by @fliiiix, merged 2020-10-03"
2033
+ [#2448]:https://github.com/puma/puma/pull/2448 "PR by @MSP-Greg, merged 2020-10-25"
2034
+ [#2450]:https://github.com/puma/puma/pull/2450 "PR by @MSP-Greg, merged 2020-10-25"
2035
+ [#2419]:https://github.com/puma/puma/pull/2419 "PR by @MSP-Greg, merged 2020-10-09"
2036
+ [#2279]:https://github.com/puma/puma/pull/2279 "PR by @wjordan, merged 2020-10-06"
2037
+ [#2412]:https://github.com/puma/puma/pull/2412 "PR by @MSP-Greg, merged 2020-10-06"
2038
+ [#2405]:https://github.com/puma/puma/pull/2405 "PR by @MSP-Greg, merged 2020-10-05"
2039
+ [#2408]:https://github.com/puma/puma/pull/2408 "PR by @fliiiix, merged 2020-10-03"
2040
+ [#2374]:https://github.com/puma/puma/pull/2374 "PR by @cjlarose, merged 2020-09-29"
2041
+ [#2389]:https://github.com/puma/puma/pull/2389 "PR by @MSP-Greg, merged 2020-09-29"
2042
+ [#2381]:https://github.com/puma/puma/pull/2381 "PR by @joergschray, merged 2020-09-24"
2043
+ [#2271]:https://github.com/puma/puma/pull/2271 "PR by @wjordan, merged 2020-09-24"
2044
+ [#2377]:https://github.com/puma/puma/pull/2377 "PR by @cjlarose, merged 2020-09-23"
2045
+ [#2376]:https://github.com/puma/puma/pull/2376 "PR by @alexeevit, merged 2020-09-22"
2046
+ [#2372]:https://github.com/puma/puma/pull/2372 "PR by @ahorek, merged 2020-09-22"
2047
+ [#2384]:https://github.com/puma/puma/pull/2384 "PR by @schneems, merged 2020-09-27"
2048
+ [#2375]:https://github.com/puma/puma/pull/2375 "PR by @MSP-Greg, merged 2020-09-23"
2049
+ [#2373]:https://github.com/puma/puma/pull/2373 "PR by @MSP-Greg, merged 2020-09-23"
2050
+ [#2305]:https://github.com/puma/puma/pull/2305 "PR by @MSP-Greg, merged 2020-09-14"
2051
+ [#2099]:https://github.com/puma/puma/pull/2099 "PR by @wjordan, merged 2020-05-11"
2052
+ [#2079]:https://github.com/puma/puma/pull/2079 "PR by @ayufan, merged 2020-05-11"
2053
+ [#2093]:https://github.com/puma/puma/pull/2093 "PR by @schneems, merged 2019-12-18"
2054
+ [#2256]:https://github.com/puma/puma/pull/2256 "PR by @nateberkopec, merged 2020-05-11"
2055
+ [#2054]:https://github.com/puma/puma/pull/2054 "PR by @composerinteralia, merged 2019-11-11"
2056
+ [#2106]:https://github.com/puma/puma/pull/2106 "PR by @ylecuyer, merged 2020-02-11"
2057
+ [#2167]:https://github.com/puma/puma/pull/2167 "PR by @ChrisBr, closed 2020-07-06"
2058
+ [#2344]:https://github.com/puma/puma/pull/2344 "PR by @dentarg, merged 2020-08-26"
2059
+ [#2203]:https://github.com/puma/puma/pull/2203 "PR by @zanker-stripe, merged 2020-03-31"
2060
+ [#2220]:https://github.com/puma/puma/pull/2220 "PR by @wjordan, merged 2020-04-14"
2061
+ [#2238]:https://github.com/puma/puma/pull/2238 "PR by @sthirugn, merged 2020-05-07"
2062
+ [#2086]:https://github.com/puma/puma/pull/2086 "PR by @bdewater, merged 2019-12-17"
2063
+ [#2253]:https://github.com/puma/puma/pull/2253 "PR by @schneems, merged 2020-05-11"
2064
+ [#2288]:https://github.com/puma/puma/pull/2288 "PR by @FTLam11, merged 2020-06-02"
2065
+ [#1487]:https://github.com/puma/puma/pull/1487 "PR by @jxa, merged 2018-05-09"
2066
+ [#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21"
2067
+ [#2169]:https://github.com/puma/puma/pull/2169 "PR by @nateberkopec, merged 2020-03-10"
2068
+ [#2170]:https://github.com/puma/puma/pull/2170 "PR by @nateberkopec, merged 2020-03-10"
2069
+ [#2076]:https://github.com/puma/puma/pull/2076 "PR by @drews256, merged 2020-02-27"
2070
+ [#2022]:https://github.com/puma/puma/pull/2022 "PR by @olleolleolle, merged 2019-11-11"
2071
+ [#2300]:https://github.com/puma/puma/pull/2300 "PR by @alexeevit, merged 2020-07-06"
2072
+ [#2269]:https://github.com/puma/puma/pull/2269 "PR by @MSP-Greg, merged 2020-08-31"
2073
+ [#2312]:https://github.com/puma/puma/pull/2312 "PR by @MSP-Greg, merged 2020-07-20"
2074
+ [#2338]:https://github.com/puma/puma/issues/2338 "Issue by @micahhainlinestitchfix, closed 2020-08-18"
2075
+ [#2116]:https://github.com/puma/puma/pull/2116 "PR by @MSP-Greg, merged 2020-05-15"
2076
+ [#2074]:https://github.com/puma/puma/issues/2074 "Issue by @jchristie55332, closed 2020-02-19"
2077
+ [#2211]:https://github.com/puma/puma/pull/2211 "PR by @MSP-Greg, merged 2020-03-30"
2078
+ [#2069]:https://github.com/puma/puma/pull/2069 "PR by @MSP-Greg, merged 2019-11-09"
2079
+ [#2112]:https://github.com/puma/puma/pull/2112 "PR by @wjordan, merged 2020-03-03"
2080
+ [#1893]:https://github.com/puma/puma/pull/1893 "PR by @seven1m, merged 2020-02-18"
2081
+ [#2119]:https://github.com/puma/puma/pull/2119 "PR by @wjordan, merged 2020-02-20"
2082
+ [#2121]:https://github.com/puma/puma/pull/2121 "PR by @wjordan, merged 2020-02-21"
2083
+ [#2154]:https://github.com/puma/puma/pull/2154 "PR by @cjlarose, merged 2020-03-10"
2084
+ [#1551]:https://github.com/puma/puma/issues/1551 "Issue by @austinthecoder, closed 2020-03-10"
2085
+ [#2198]:https://github.com/puma/puma/pull/2198 "PR by @eregon, merged 2020-03-24"
2086
+ [#2216]:https://github.com/puma/puma/pull/2216 "PR by @praboud-stripe, merged 2020-04-06"
2087
+ [#2122]:https://github.com/puma/puma/pull/2122 "PR by @wjordan, merged 2020-04-10"
2088
+ [#2177]:https://github.com/puma/puma/issues/2177 "Issue by @GuiTeK, closed 2020-04-08"
2089
+ [#2221]:https://github.com/puma/puma/pull/2221 "PR by @wjordan, merged 2020-04-17"
2090
+ [#2233]:https://github.com/puma/puma/pull/2233 "PR by @ayufan, merged 2020-04-25"
2091
+ [#2234]:https://github.com/puma/puma/pull/2234 "PR by @wjordan, merged 2020-04-30"
2092
+ [#2225]:https://github.com/puma/puma/issues/2225 "Issue by @nateberkopec, closed 2020-04-27"
2093
+ [#2267]:https://github.com/puma/puma/pull/2267 "PR by @wjordan, merged 2020-05-20"
2094
+ [#2287]:https://github.com/puma/puma/pull/2287 "PR by @eugeneius, merged 2020-05-31"
2095
+ [#2317]:https://github.com/puma/puma/pull/2317 "PR by @MSP-Greg, merged 2020-09-01"
2096
+ [#2319]:https://github.com/puma/puma/issues/2319 "Issue by @AlexWayfer, closed 2020-09-03"
2097
+ [#2326]:https://github.com/puma/puma/pull/2326 "PR by @rkistner, closed 2020-09-04"
2098
+ [#2299]:https://github.com/puma/puma/issues/2299 "Issue by @JohnPhillips31416, closed 2020-09-17"
2099
+ [#2095]:https://github.com/puma/puma/pull/2095 "PR by @bdewater, merged 2019-12-25"
2100
+ [#2102]:https://github.com/puma/puma/pull/2102 "PR by @bdewater, merged 2020-02-07"
2101
+ [#2111]:https://github.com/puma/puma/pull/2111 "PR by @wjordan, merged 2020-02-20"
2102
+ [#1980]:https://github.com/puma/puma/pull/1980 "PR by @nateberkopec, merged 2020-02-27"
2103
+ [#2189]:https://github.com/puma/puma/pull/2189 "PR by @jkowens, merged 2020-03-19"
2104
+ [#2124]:https://github.com/puma/puma/pull/2124 "PR by @wjordan, merged 2020-04-14"
2105
+ [#2223]:https://github.com/puma/puma/pull/2223 "PR by @wjordan, merged 2020-04-20"
2106
+ [#2239]:https://github.com/puma/puma/pull/2239 "PR by @wjordan, merged 2020-05-15"
2107
+ [#2496]:https://github.com/puma/puma/pull/2496 "PR by @TheRusskiy, merged 2020-11-30"
2108
+ [#2304]:https://github.com/puma/puma/issues/2304 "Issue by @mpeltomaa, closed 2020-09-05"
2109
+ [#2132]:https://github.com/puma/puma/issues/2132 "Issue by @bmclean, closed 2020-02-28"
2110
+ [#2010]:https://github.com/puma/puma/pull/2010 "PR by @nateberkopec, merged 2019-10-07"
2111
+ [#2012]:https://github.com/puma/puma/pull/2012 "PR by @headius, merged 2019-10-07"
2112
+ [#2046]:https://github.com/puma/puma/pull/2046 "PR by @composerinteralia, merged 2019-10-21"
2113
+ [#2052]:https://github.com/puma/puma/pull/2052 "PR by @composerinteralia, merged 2019-11-02"
2114
+ [#1564]:https://github.com/puma/puma/issues/1564 "Issue by @perlun, closed 2019-10-07"
2115
+ [#2035]:https://github.com/puma/puma/pull/2035 "PR by @AndrewSpeed, merged 2019-10-18"
2116
+ [#2048]:https://github.com/puma/puma/pull/2048 "PR by @hahmed, merged 2019-10-21"
2117
+ [#2050]:https://github.com/puma/puma/pull/2050 "PR by @olleolleolle, merged 2019-10-25"
2118
+ [#1842]:https://github.com/puma/puma/issues/1842 "Issue by @nateberkopec, closed 2019-09-18"
2119
+ [#1988]:https://github.com/puma/puma/issues/1988 "Issue by @mcg, closed 2019-10-01"
2120
+ [#1986]:https://github.com/puma/puma/issues/1986 "Issue by @flaminestone, closed 2019-10-01"
2121
+ [#1994]:https://github.com/puma/puma/issues/1994 "Issue by @LimeBlast, closed 2019-10-01"
2122
+ [#2006]:https://github.com/puma/puma/pull/2006 "PR by @nateberkopec, merged 2019-10-01"
2123
+ [#1222]:https://github.com/puma/puma/issues/1222 "Issue by @seanmckinley, closed 2019-10-04"
2124
+ [#1885]:https://github.com/puma/puma/pull/1885 "PR by @spk, merged 2019-08-10"
2125
+ [#1934]:https://github.com/puma/puma/pull/1934 "PR by @zarelit, merged 2019-08-28"
2126
+ [#1105]:https://github.com/puma/puma/pull/1105 "PR by @daveallie, merged 2019-09-02"
2127
+ [#1786]:https://github.com/puma/puma/pull/1786 "PR by @evanphx, merged 2019-09-11"
2128
+ [#1320]:https://github.com/puma/puma/pull/1320 "PR by @nateberkopec, merged 2019-09-12"
2129
+ [#1968]:https://github.com/puma/puma/pull/1968 "PR by @nateberkopec, merged 2019-09-15"
2130
+ [#1908]:https://github.com/puma/puma/pull/1908 "PR by @MSP-Greg, merged 2019-08-23"
2131
+ [#1952]:https://github.com/puma/puma/pull/1952 "PR by @MSP-Greg, merged 2019-09-19"
2132
+ [#1941]:https://github.com/puma/puma/pull/1941 "PR by @MSP-Greg, merged 2019-09-02"
2133
+ [#1961]:https://github.com/puma/puma/pull/1961 "PR by @nateberkopec, merged 2019-09-11"
2134
+ [#1970]:https://github.com/puma/puma/pull/1970 "PR by @MSP-Greg, merged 2019-09-18"
2135
+ [#1946]:https://github.com/puma/puma/pull/1946 "PR by @nateberkopec, merged 2019-09-02"
2136
+ [#1831]:https://github.com/puma/puma/pull/1831 "PR by @spk, merged 2019-07-27"
2137
+ [#1816]:https://github.com/puma/puma/pull/1816 "PR by @ylecuyer, merged 2019-08-01"
2138
+ [#1844]:https://github.com/puma/puma/pull/1844 "PR by @ylecuyer, merged 2019-08-01"
2139
+ [#1836]:https://github.com/puma/puma/pull/1836 "PR by @MSP-Greg, merged 2019-08-06"
2140
+ [#1887]:https://github.com/puma/puma/pull/1887 "PR by @MSP-Greg, merged 2019-08-06"
2141
+ [#1812]:https://github.com/puma/puma/pull/1812 "PR by @kou, merged 2019-08-03"
2142
+ [#1491]:https://github.com/puma/puma/pull/1491 "PR by @olleolleolle, merged 2019-07-17"
2143
+ [#1837]:https://github.com/puma/puma/pull/1837 "PR by @montanalow, merged 2019-07-25"
2144
+ [#1857]:https://github.com/puma/puma/pull/1857 "PR by @Jesus, merged 2019-08-03"
2145
+ [#1822]:https://github.com/puma/puma/pull/1822 "PR by @Jesus, merged 2019-08-01"
2146
+ [#1863]:https://github.com/puma/puma/pull/1863 "PR by @dzunk, merged 2019-08-04"
2147
+ [#1838]:https://github.com/puma/puma/pull/1838 "PR by @bogn83, merged 2019-07-14"
2148
+ [#1882]:https://github.com/puma/puma/pull/1882 "PR by @okuramasafumi, merged 2019-08-06"
2149
+ [#1848]:https://github.com/puma/puma/pull/1848 "PR by @nateberkopec, merged 2019-07-16"
2150
+ [#1847]:https://github.com/puma/puma/pull/1847 "PR by @nateberkopec, merged 2019-07-16"
2151
+ [#1846]:https://github.com/puma/puma/pull/1846 "PR by @nateberkopec, merged 2019-07-16"
2152
+ [#1853]:https://github.com/puma/puma/pull/1853 "PR by @Jesus, merged 2019-07-18"
2153
+ [#1850]:https://github.com/puma/puma/pull/1850 "PR by @nateberkopec, merged 2019-07-27"
2154
+ [#1866]:https://github.com/puma/puma/pull/1866 "PR by @josacar, merged 2019-07-28"
2155
+ [#1870]:https://github.com/puma/puma/pull/1870 "PR by @MSP-Greg, merged 2019-07-30"
2156
+ [#1872]:https://github.com/puma/puma/pull/1872 "PR by @MSP-Greg, merged 2019-07-30"
2157
+ [#1833]:https://github.com/puma/puma/issues/1833 "Issue by @julik, closed 2019-07-09"
2158
+ [#1888]:https://github.com/puma/puma/pull/1888 "PR by @ClikeX, merged 2019-08-06"
2159
+ [#1829]:https://github.com/puma/puma/pull/1829 "PR by @Fudoshiki, merged 2019-07-09"
2160
+ [#1832]:https://github.com/puma/puma/pull/1832 "PR by @MSP-Greg, merged 2019-07-08"
2161
+ [#1827]:https://github.com/puma/puma/pull/1827 "PR by @amrrbakry, merged 2019-06-27"
2162
+ [#1562]:https://github.com/puma/puma/pull/1562 "PR by @skrobul, merged 2019-02-20"
2163
+ [#1569]:https://github.com/puma/puma/pull/1569 "PR by @rianmcguire, merged 2019-02-20"
2164
+ [#1648]:https://github.com/puma/puma/pull/1648 "PR by @wjordan, merged 2019-02-20"
2165
+ [#1691]:https://github.com/puma/puma/pull/1691 "PR by @kares, merged 2019-02-20"
2166
+ [#1716]:https://github.com/puma/puma/pull/1716 "PR by @mdkent, merged 2019-02-20"
2167
+ [#1690]:https://github.com/puma/puma/pull/1690 "PR by @mic-kul, merged 2019-03-11"
2168
+ [#1689]:https://github.com/puma/puma/pull/1689 "PR by @michaelherold, merged 2019-03-11"
2169
+ [#1728]:https://github.com/puma/puma/pull/1728 "PR by @evanphx, merged 2019-03-20"
2170
+ [#1824]:https://github.com/puma/puma/pull/1824 "PR by @spk, merged 2019-06-24"
2171
+ [#1685]:https://github.com/puma/puma/pull/1685 "PR by @mainameiz, merged 2019-02-20"
2172
+ [#1808]:https://github.com/puma/puma/pull/1808 "PR by @schneems, merged 2019-06-10"
2173
+ [#1508]:https://github.com/puma/puma/pull/1508 "PR by @florin555, merged 2019-02-20"
2174
+ [#1650]:https://github.com/puma/puma/pull/1650 "PR by @adam101, merged 2019-02-20"
2175
+ [#1655]:https://github.com/puma/puma/pull/1655 "PR by @mipearson, merged 2019-02-20"
2176
+ [#1671]:https://github.com/puma/puma/pull/1671 "PR by @eric-norcross, merged 2019-02-20"
2177
+ [#1583]:https://github.com/puma/puma/pull/1583 "PR by @chwevans, merged 2019-02-20"
2178
+ [#1773]:https://github.com/puma/puma/pull/1773 "PR by @enebo, merged 2019-04-14"
2179
+ [#1731]:https://github.com/puma/puma/issues/1731 "Issue by @Fudoshiki, closed 2019-03-20"
2180
+ [#1803]:https://github.com/puma/puma/pull/1803 "PR by @Jesus, merged 2019-05-28"
2181
+ [#1741]:https://github.com/puma/puma/pull/1741 "PR by @MSP-Greg, merged 2019-03-19"
2182
+ [#1674]:https://github.com/puma/puma/issues/1674 "Issue by @atitan, closed 2019-06-12"
2183
+ [#1720]:https://github.com/puma/puma/issues/1720 "Issue by @voxik, closed 2019-03-20"
2184
+ [#1730]:https://github.com/puma/puma/issues/1730 "Issue by @nearapogee, closed 2019-07-16"
2185
+ [#1755]:https://github.com/puma/puma/issues/1755 "Issue by @vbalazs, closed 2019-07-26"
2186
+ [#1649]:https://github.com/puma/puma/pull/1649 "PR by @schneems, merged 2018-10-17"
2187
+ [#1607]:https://github.com/puma/puma/pull/1607 "PR by @harmdewit, merged 2018-08-15"
2188
+ [#1700]:https://github.com/puma/puma/pull/1700 "PR by @schneems, merged 2019-01-05"
2189
+ [#1630]:https://github.com/puma/puma/pull/1630 "PR by @eregon, merged 2018-09-11"
2190
+ [#1478]:https://github.com/puma/puma/pull/1478 "PR by @eallison91, merged 2018-05-09"
2191
+ [#1604]:https://github.com/puma/puma/pull/1604 "PR by @schneems, merged 2018-07-02"
2192
+ [#1579]:https://github.com/puma/puma/pull/1579 "PR by @schneems, merged 2018-06-14"
2193
+ [#1506]:https://github.com/puma/puma/pull/1506 "PR by @dekellum, merged 2018-05-09"
2194
+ [#1563]:https://github.com/puma/puma/pull/1563 "PR by @dannyfallon, merged 2018-05-01"
2195
+ [#1557]:https://github.com/puma/puma/pull/1557 "PR by @swrobel, merged 2018-05-09"
2196
+ [#1529]:https://github.com/puma/puma/pull/1529 "PR by @desnudopenguino, merged 2018-03-20"
2197
+ [#1532]:https://github.com/puma/puma/pull/1532 "PR by @schneems, merged 2018-03-21"
2198
+ [#1482]:https://github.com/puma/puma/pull/1482 "PR by @shayonj, merged 2018-03-19"
2199
+ [#1511]:https://github.com/puma/puma/pull/1511 "PR by @jemiam, merged 2018-03-19"
2200
+ [#1545]:https://github.com/puma/puma/pull/1545 "PR by @hoshinotsuyoshi, merged 2018-03-28"
2201
+ [#1550]:https://github.com/puma/puma/pull/1550 "PR by @eileencodes, merged 2018-03-29"
2202
+ [#1553]:https://github.com/puma/puma/pull/1553 "PR by @eugeneius, merged 2018-04-02"
2203
+ [#1510]:https://github.com/puma/puma/issues/1510 "Issue by @vincentwoo, closed 2018-03-06"
2204
+ [#1524]:https://github.com/puma/puma/pull/1524 "PR by @tuwukee, closed 2018-03-06"
2205
+ [#1507]:https://github.com/puma/puma/issues/1507 "Issue by @vincentwoo, closed 2018-03-19"
2206
+ [#1483]:https://github.com/puma/puma/issues/1483 "Issue by @igravious, closed 2018-03-06"
2207
+ [#1502]:https://github.com/puma/puma/issues/1502 "Issue by @vincentwoo, closed 2020-03-09"
2208
+ [#1403]:https://github.com/puma/puma/pull/1403 "PR by @eileencodes, merged 2017-10-04"
2209
+ [#1435]:https://github.com/puma/puma/pull/1435 "PR by @juliancheal, merged 2017-10-11"
2210
+ [#1340]:https://github.com/puma/puma/pull/1340 "PR by @ViliusLuneckas, merged 2017-10-16"
2211
+ [#1434]:https://github.com/puma/puma/pull/1434 "PR by @jumbosushi, merged 2017-10-10"
2212
+ [#1436]:https://github.com/puma/puma/pull/1436 "PR by @luislavena, merged 2017-10-11"
2213
+ [#1418]:https://github.com/puma/puma/pull/1418 "PR by @eileencodes, merged 2017-09-22"
2214
+ [#1416]:https://github.com/puma/puma/pull/1416 "PR by @hiimtaylorjones, merged 2017-09-22"
2215
+ [#1409]:https://github.com/puma/puma/pull/1409 "PR by @olleolleolle, merged 2017-09-13"
2216
+ [#1427]:https://github.com/puma/puma/issues/1427 "Issue by @garybernhardt, closed 2017-10-04"
2217
+ [#1430]:https://github.com/puma/puma/pull/1430 "PR by @MSP-Greg, merged 2017-10-09"
2218
+ [#1429]:https://github.com/puma/puma/pull/1429 "PR by @perlun, merged 2017-10-09"
2219
+ [#1455]:https://github.com/puma/puma/pull/1455 "PR by @perlun, merged 2017-11-16"
2220
+ [#1425]:https://github.com/puma/puma/pull/1425 "PR by @vizcay, merged 2017-10-01"
2221
+ [#1452]:https://github.com/puma/puma/pull/1452 "PR by @eprothro, merged 2017-11-16"
2222
+ [#1439]:https://github.com/puma/puma/pull/1439 "PR by @MSP-Greg, merged 2017-10-16"
2223
+ [#1442]:https://github.com/puma/puma/pull/1442 "PR by @MSP-Greg, merged 2017-10-19"
2224
+ [#1464]:https://github.com/puma/puma/pull/1464 "PR by @MSP-Greg, merged 2017-11-20"
2225
+ [#1384]:https://github.com/puma/puma/pull/1384 "PR by @noahgibbs, merged 2017-08-03"
2226
+ [#1111]:https://github.com/puma/puma/pull/1111 "PR by @alexlance, merged 2017-06-04"
2227
+ [#1392]:https://github.com/puma/puma/pull/1392 "PR by @hoffm, merged 2017-08-11"
2228
+ [#1347]:https://github.com/puma/puma/pull/1347 "PR by @NikolayRys, merged 2017-06-28"
2229
+ [#1334]:https://github.com/puma/puma/pull/1334 "PR by @respire, merged 2017-06-13"
2230
+ [#1383]:https://github.com/puma/puma/pull/1383 "PR by @schneems, merged 2017-08-02"
2231
+ [#1368]:https://github.com/puma/puma/pull/1368 "PR by @bongole, merged 2017-08-03"
2232
+ [#1318]:https://github.com/puma/puma/pull/1318 "PR by @nateberkopec, merged 2017-08-03"
2233
+ [#1376]:https://github.com/puma/puma/pull/1376 "PR by @pat, merged 2017-08-03"
2234
+ [#1388]:https://github.com/puma/puma/pull/1388 "PR by @nateberkopec, merged 2017-08-08"
2235
+ [#1390]:https://github.com/puma/puma/pull/1390 "PR by @junaruga, merged 2017-08-16"
2236
+ [#1391]:https://github.com/puma/puma/pull/1391 "PR by @junaruga, merged 2017-08-16"
2237
+ [#1385]:https://github.com/puma/puma/pull/1385 "PR by @grosser, merged 2017-08-16"
2238
+ [#1377]:https://github.com/puma/puma/pull/1377 "PR by @shayonj, merged 2017-08-16"
2239
+ [#1337]:https://github.com/puma/puma/pull/1337 "PR by @shayonj, merged 2017-08-16"
2240
+ [#1325]:https://github.com/puma/puma/pull/1325 "PR by @palkan, merged 2017-06-04"
2241
+ [#1395]:https://github.com/puma/puma/pull/1395 "PR by @junaruga, merged 2017-08-16"
2242
+ [#1367]:https://github.com/puma/puma/issues/1367 "Issue by @dekellum, closed 2017-08-17"
2243
+ [#1314]:https://github.com/puma/puma/pull/1314 "PR by @grosser, merged 2017-06-02"
2244
+ [#1311]:https://github.com/puma/puma/pull/1311 "PR by @grosser, merged 2017-06-02"
2245
+ [#1313]:https://github.com/puma/puma/pull/1313 "PR by @grosser, merged 2017-06-03"
2246
+ [#1260]:https://github.com/puma/puma/pull/1260 "PR by @grosser, merged 2017-04-11"
2247
+ [#1278]:https://github.com/puma/puma/pull/1278 "PR by @evanphx, merged 2017-04-28"
2248
+ [#1306]:https://github.com/puma/puma/pull/1306 "PR by @jules2689, merged 2017-05-31"
2249
+ [#1274]:https://github.com/puma/puma/pull/1274 "PR by @evanphx, merged 2017-05-01"
2250
+ [#1261]:https://github.com/puma/puma/pull/1261 "PR by @jacksonrayhamilton, merged 2017-04-07"
2251
+ [#1259]:https://github.com/puma/puma/pull/1259 "PR by @jacksonrayhamilton, merged 2017-04-07"
2252
+ [#1248]:https://github.com/puma/puma/pull/1248 "PR by @davidarnold, merged 2017-04-18"
2253
+ [#1277]:https://github.com/puma/puma/pull/1277 "PR by @schneems, merged 2017-05-01"
2254
+ [#1290]:https://github.com/puma/puma/pull/1290 "PR by @schneems, merged 2017-05-12"
2255
+ [#1285]:https://github.com/puma/puma/pull/1285 "PR by @fmauNeko, merged 2017-05-12"
2256
+ [#1282]:https://github.com/puma/puma/pull/1282 "PR by @grosser, merged 2017-05-09"
2257
+ [#1294]:https://github.com/puma/puma/pull/1294 "PR by @masry707, merged 2017-05-15"
2258
+ [#1206]:https://github.com/puma/puma/pull/1206 "PR by @NikolayRys, closed 2017-06-27"
2259
+ [#1241]:https://github.com/puma/puma/issues/1241 "Issue by @renchap, closed 2017-03-14"
2260
+ [#1239]:https://github.com/puma/puma/pull/1239 "PR by @schneems, merged 2017-03-10"
2261
+ [#1234]:https://github.com/puma/puma/pull/1234 "PR by @schneems, merged 2017-03-09"
2262
+ [#1226]:https://github.com/puma/puma/pull/1226 "PR by @eileencodes, merged 2017-03-09"
2263
+ [#1227]:https://github.com/puma/puma/pull/1227 "PR by @sirupsen, merged 2017-02-27"
2264
+ [#1213]:https://github.com/puma/puma/pull/1213 "PR by @junaruga, merged 2017-02-28"
2265
+ [#1182]:https://github.com/puma/puma/issues/1182 "Issue by @brunowego, closed 2017-02-09"
2266
+ [#1203]:https://github.com/puma/puma/pull/1203 "PR by @twalpole, merged 2017-02-09"
2267
+ [#1129]:https://github.com/puma/puma/pull/1129 "PR by @chtitux, merged 2016-12-12"
2268
+ [#1165]:https://github.com/puma/puma/pull/1165 "PR by @sriedel, merged 2016-12-21"
2269
+ [#1175]:https://github.com/puma/puma/pull/1175 "PR by @jemiam, merged 2016-12-21"
2270
+ [#1068]:https://github.com/puma/puma/pull/1068 "PR by @junaruga, merged 2016-09-05"
2271
+ [#1091]:https://github.com/puma/puma/pull/1091 "PR by @frodsan, merged 2016-09-17"
2272
+ [#1088]:https://github.com/puma/puma/pull/1088 "PR by @frodsan, merged 2016-11-20"
2273
+ [#1160]:https://github.com/puma/puma/pull/1160 "PR by @frodsan, merged 2016-11-24"
2274
+ [#1169]:https://github.com/puma/puma/pull/1169 "PR by @scbrubaker02, merged 2016-12-12"
2275
+ [#1061]:https://github.com/puma/puma/pull/1061 "PR by @michaelsauter, merged 2016-09-05"
2276
+ [#1036]:https://github.com/puma/puma/issues/1036 "Issue by @matobinder, closed 2016-08-03"
2277
+ [#1120]:https://github.com/puma/puma/pull/1120 "PR by @prathamesh-sonpatki, merged 2016-11-21"
2278
+ [#1178]:https://github.com/puma/puma/pull/1178 "PR by @Koronen, merged 2016-12-21"
2279
+ [#1002]:https://github.com/puma/puma/issues/1002 "Issue by @mattyb, closed 2016-07-26"
2280
+ [#1063]:https://github.com/puma/puma/issues/1063 "Issue by @mperham, closed 2016-09-05"
2281
+ [#1089]:https://github.com/puma/puma/issues/1089 "Issue by @AdamBialas, closed 2016-09-17"
2282
+ [#1114]:https://github.com/puma/puma/pull/1114 "PR by @sj26, merged 2016-12-13"
2283
+ [#1110]:https://github.com/puma/puma/pull/1110 "PR by @montdidier, merged 2016-12-12"
2284
+ [#1135]:https://github.com/puma/puma/pull/1135 "PR by @jkraemer, merged 2016-11-19"
2285
+ [#1081]:https://github.com/puma/puma/pull/1081 "PR by @frodsan, merged 2016-09-08"
2286
+ [#1138]:https://github.com/puma/puma/pull/1138 "PR by @steakknife, merged 2016-12-13"
2287
+ [#1118]:https://github.com/puma/puma/pull/1118 "PR by @hiroara, merged 2016-11-20"
2288
+ [#1075]:https://github.com/puma/puma/issues/1075 "Issue by @pvalena, closed 2016-09-06"
2289
+ [#932]:https://github.com/puma/puma/issues/932 "Issue by @everplays, closed 2016-07-24"
2290
+ [#519]:https://github.com/puma/puma/issues/519 "Issue by @tmornini, closed 2016-07-25"
2291
+ [#828]:https://github.com/puma/puma/issues/828 "Issue by @Zapotek, closed 2016-07-24"
2292
+ [#984]:https://github.com/puma/puma/issues/984 "Issue by @erichmenge, closed 2016-07-24"
2293
+ [#1028]:https://github.com/puma/puma/issues/1028 "Issue by @matobinder, closed 2016-07-24"
2294
+ [#1023]:https://github.com/puma/puma/issues/1023 "Issue by @fera2k, closed 2016-07-24"
2295
+ [#1027]:https://github.com/puma/puma/issues/1027 "Issue by @rosenfeld, closed 2016-07-24"
2296
+ [#925]:https://github.com/puma/puma/issues/925 "Issue by @lokenmakwana, closed 2016-07-24"
2297
+ [#911]:https://github.com/puma/puma/issues/911 "Issue by @veganstraightedge, closed 2016-07-24"
2298
+ [#620]:https://github.com/puma/puma/issues/620 "Issue by @javanthropus, closed 2016-07-25"
2299
+ [#778]:https://github.com/puma/puma/issues/778 "Issue by @niedhui, closed 2016-07-24"
2300
+ [#1021]:https://github.com/puma/puma/pull/1021 "PR by @sarahzrf, merged 2016-07-20"
2301
+ [#1022]:https://github.com/puma/puma/issues/1022 "Issue by @AKovtunov, closed 2017-08-16"
2302
+ [#958]:https://github.com/puma/puma/issues/958 "Issue by @lalitlogical, closed 2016-04-23"
2303
+ [#782]:https://github.com/puma/puma/issues/782 "Issue by @Tonkpils, closed 2016-07-19"
2304
+ [#1010]:https://github.com/puma/puma/issues/1010 "Issue by @mneumark, closed 2016-07-19"
2305
+ [#959]:https://github.com/puma/puma/issues/959 "Issue by @mwpastore, closed 2016-04-22"
2306
+ [#840]:https://github.com/puma/puma/issues/840 "Issue by @maxkwallace, closed 2016-04-07"
2307
+ [#1007]:https://github.com/puma/puma/pull/1007 "PR by @willnet, merged 2016-06-24"
2308
+ [#1014]:https://github.com/puma/puma/pull/1014 "PR by @szymon-jez, merged 2016-07-11"
2309
+ [#1015]:https://github.com/puma/puma/pull/1015 "PR by @bf4, merged 2016-07-19"
2310
+ [#1017]:https://github.com/puma/puma/pull/1017 "PR by @jorihardman, merged 2016-07-19"
2311
+ [#954]:https://github.com/puma/puma/pull/954 "PR by @jf, merged 2016-04-12"
2312
+ [#955]:https://github.com/puma/puma/pull/955 "PR by @jf, merged 2016-04-22"
2313
+ [#956]:https://github.com/puma/puma/pull/956 "PR by @maxkwallace, merged 2016-04-12"
2314
+ [#960]:https://github.com/puma/puma/pull/960 "PR by @kmayer, merged 2016-04-15"
2315
+ [#969]:https://github.com/puma/puma/pull/969 "PR by @frankwong15, merged 2016-05-10"
2316
+ [#970]:https://github.com/puma/puma/pull/970 "PR by @willnet, merged 2016-04-26"
2317
+ [#974]:https://github.com/puma/puma/pull/974 "PR by @reidmorrison, merged 2016-05-10"
2318
+ [#977]:https://github.com/puma/puma/pull/977 "PR by @snow, merged 2016-05-10"
2319
+ [#981]:https://github.com/puma/puma/pull/981 "PR by @zach-chai, merged 2016-07-19"
2320
+ [#993]:https://github.com/puma/puma/pull/993 "PR by @scorix, merged 2016-07-19"
2321
+ [#938]:https://github.com/puma/puma/issues/938 "Issue by @vandrijevik, closed 2016-04-07"
2322
+ [#529]:https://github.com/puma/puma/issues/529 "Issue by @mperham, closed 2016-04-07"
2323
+ [#788]:https://github.com/puma/puma/issues/788 "Issue by @herregroen, closed 2016-04-07"
2324
+ [#894]:https://github.com/puma/puma/issues/894 "Issue by @rafbm, closed 2016-04-07"
2325
+ [#937]:https://github.com/puma/puma/issues/937 "Issue by @huangxiangdan, closed 2016-04-07"
2326
+ [#945]:https://github.com/puma/puma/pull/945 "PR by @dekellum, merged 2016-04-07"
2327
+ [#946]:https://github.com/puma/puma/pull/946 "PR by @vipulnsward, merged 2016-04-07"
2328
+ [#947]:https://github.com/puma/puma/pull/947 "PR by @vipulnsward, merged 2016-04-07"
2329
+ [#936]:https://github.com/puma/puma/pull/936 "PR by @prathamesh-sonpatki, merged 2016-04-01"
2330
+ [#940]:https://github.com/puma/puma/pull/940 "PR by @kyledrake, merged 2016-04-01"
2331
+ [#942]:https://github.com/puma/puma/pull/942 "PR by @dekellum, merged 2016-04-01"
2332
+ [#927]:https://github.com/puma/puma/pull/927 "PR by @jlecour, merged 2016-03-18"
2333
+ [#931]:https://github.com/puma/puma/pull/931 "PR by @runlevel5, merged 2016-03-18"
2334
+ [#922]:https://github.com/puma/puma/issues/922 "Issue by @LavirtheWhiolet, closed 2016-03-07"
2335
+ [#923]:https://github.com/puma/puma/issues/923 "Issue by @donv, closed 2016-03-06"
2336
+ [#912]:https://github.com/puma/puma/pull/912 "PR by @tricknotes, merged 2016-03-06"
2337
+ [#921]:https://github.com/puma/puma/pull/921 "PR by @swrobel, merged 2016-03-06"
2338
+ [#924]:https://github.com/puma/puma/pull/924 "PR by @tbrisker, merged 2016-03-07"
2339
+ [#916]:https://github.com/puma/puma/issues/916 "Issue by @ma11hew28, closed 2016-03-06"
2340
+ [#913]:https://github.com/puma/puma/issues/913 "Issue by @Casara, closed 2016-03-06"
2341
+ [#918]:https://github.com/puma/puma/issues/918 "Issue by @rodrigdav, closed 2016-03-06"
2342
+ [#910]:https://github.com/puma/puma/issues/910 "Issue by @ball-hayden, closed 2016-03-05"
2343
+ [#914]:https://github.com/puma/puma/issues/914 "Issue by @osheroff, closed 2016-03-06"
2344
+ [#901]:https://github.com/puma/puma/pull/901 "PR by @mitto, merged 2016-02-26"
2345
+ [#902]:https://github.com/puma/puma/pull/902 "PR by @corrupt952, merged 2016-02-26"
2346
+ [#905]:https://github.com/puma/puma/pull/905 "PR by @Eric-Guo, merged 2016-02-26"
2347
+ [#852]:https://github.com/puma/puma/issues/852 "Issue by @asia653, closed 2016-02-25"
2348
+ [#854]:https://github.com/puma/puma/issues/854 "Issue by @ollym, closed 2016-02-25"
2349
+ [#824]:https://github.com/puma/puma/issues/824 "Issue by @MattWalston, closed 2016-02-25"
2350
+ [#823]:https://github.com/puma/puma/issues/823 "Issue by @pneuman, closed 2016-02-25"
2351
+ [#815]:https://github.com/puma/puma/issues/815 "Issue by @nate-dipiazza, closed 2016-02-25"
2352
+ [#835]:https://github.com/puma/puma/issues/835 "Issue by @mwpastore, closed 2016-02-25"
2353
+ [#798]:https://github.com/puma/puma/issues/798 "Issue by @schneems, closed 2016-02-25"
2354
+ [#876]:https://github.com/puma/puma/issues/876 "Issue by @osheroff, closed 2016-02-25"
2355
+ [#849]:https://github.com/puma/puma/issues/849 "Issue by @apotheon, closed 2016-02-25"
2356
+ [#871]:https://github.com/puma/puma/pull/871 "PR by @deepj, merged 2016-02-25"
2357
+ [#874]:https://github.com/puma/puma/pull/874 "PR by @wallclockbuilder, merged 2016-02-25"
2358
+ [#883]:https://github.com/puma/puma/pull/883 "PR by @dadah89, merged 2016-02-25"
2359
+ [#884]:https://github.com/puma/puma/pull/884 "PR by @furkanmustafa, merged 2016-02-25"
2360
+ [#888]:https://github.com/puma/puma/pull/888 "PR by @mlarraz, merged 2016-02-25"
2361
+ [#890]:https://github.com/puma/puma/pull/890 "PR by @todd, merged 2016-02-25"
2362
+ [#891]:https://github.com/puma/puma/pull/891 "PR by @ctaintor, merged 2016-02-25"
2363
+ [#893]:https://github.com/puma/puma/pull/893 "PR by @spastorino, merged 2016-02-25"
2364
+ [#897]:https://github.com/puma/puma/pull/897 "PR by @vanchi-zendesk, merged 2016-02-25"
2365
+ [#899]:https://github.com/puma/puma/pull/899 "PR by @kch, merged 2016-02-25"
2366
+ [#859]:https://github.com/puma/puma/issues/859 "Issue by @boxofrad, closed 2016-01-28"
2367
+ [#822]:https://github.com/puma/puma/pull/822 "PR by @kwugirl, merged 2016-01-28"
2368
+ [#833]:https://github.com/puma/puma/pull/833 "PR by @joemiller, merged 2016-01-28"
2369
+ [#837]:https://github.com/puma/puma/pull/837 "PR by @YurySolovyov, merged 2016-01-28"
2370
+ [#839]:https://github.com/puma/puma/pull/839 "PR by @ka8725, merged 2016-01-15"
2371
+ [#845]:https://github.com/puma/puma/pull/845 "PR by @deepj, merged 2016-01-28"
2372
+ [#846]:https://github.com/puma/puma/pull/846 "PR by @sriedel, merged 2016-01-15"
2373
+ [#850]:https://github.com/puma/puma/pull/850 "PR by @deepj, merged 2016-01-15"
2374
+ [#853]:https://github.com/puma/puma/pull/853 "PR by @Jeffrey6052, merged 2016-01-28"
2375
+ [#857]:https://github.com/puma/puma/pull/857 "PR by @osheroff, merged 2016-01-15"
2376
+ [#858]:https://github.com/puma/puma/pull/858 "PR by @mlarraz, merged 2016-01-28"
2377
+ [#860]:https://github.com/puma/puma/pull/860 "PR by @osheroff, merged 2016-01-15"
2378
+ [#861]:https://github.com/puma/puma/pull/861 "PR by @osheroff, merged 2016-01-15"
2379
+ [#818]:https://github.com/puma/puma/pull/818 "PR by @unleashed, merged 2015-11-06"
2380
+ [#819]:https://github.com/puma/puma/pull/819 "PR by @VictorLowther, merged 2015-11-06"
2381
+ [#563]:https://github.com/puma/puma/issues/563 "Issue by @deathbob, closed 2015-11-06"
2382
+ [#803]:https://github.com/puma/puma/issues/803 "Issue by @burningTyger, closed 2016-04-07"
2383
+ [#768]:https://github.com/puma/puma/pull/768 "PR by @nathansamson, merged 2015-11-06"
2384
+ [#773]:https://github.com/puma/puma/pull/773 "PR by @rossta, merged 2015-11-06"
2385
+ [#774]:https://github.com/puma/puma/pull/774 "PR by @snow, merged 2015-11-06"
2386
+ [#781]:https://github.com/puma/puma/pull/781 "PR by @sunsations, merged 2015-11-06"
2387
+ [#791]:https://github.com/puma/puma/pull/791 "PR by @unleashed, merged 2015-10-01"
2388
+ [#793]:https://github.com/puma/puma/pull/793 "PR by @robdimarco, merged 2015-11-06"
2389
+ [#794]:https://github.com/puma/puma/pull/794 "PR by @peterkeen, merged 2015-11-06"
2390
+ [#795]:https://github.com/puma/puma/pull/795 "PR by @unleashed, merged 2015-11-06"
2391
+ [#796]:https://github.com/puma/puma/pull/796 "PR by @cschneid, merged 2015-10-13"
2392
+ [#799]:https://github.com/puma/puma/pull/799 "PR by @annawinkler, merged 2015-11-06"
2393
+ [#800]:https://github.com/puma/puma/pull/800 "PR by @liamseanbrady, merged 2015-11-06"
2394
+ [#801]:https://github.com/puma/puma/pull/801 "PR by @scottjg, merged 2015-11-06"
2395
+ [#802]:https://github.com/puma/puma/pull/802 "PR by @scottjg, merged 2015-11-06"
2396
+ [#804]:https://github.com/puma/puma/pull/804 "PR by @burningTyger, merged 2015-11-06"
2397
+ [#809]:https://github.com/puma/puma/pull/809 "PR by @unleashed, merged 2015-11-06"
2398
+ [#810]:https://github.com/puma/puma/pull/810 "PR by @vlmonk, merged 2015-11-06"
2399
+ [#814]:https://github.com/puma/puma/pull/814 "PR by @schneems, merged 2015-11-04"
2400
+ [#817]:https://github.com/puma/puma/pull/817 "PR by @unleashed, merged 2015-11-06"
2401
+ [#735]:https://github.com/puma/puma/issues/735 "Issue by @trekr5, closed 2015-08-04"
2402
+ [#769]:https://github.com/puma/puma/issues/769 "Issue by @dovestyle, closed 2015-08-16"
2403
+ [#767]:https://github.com/puma/puma/issues/767 "Issue by @kapso, closed 2015-08-15"
2404
+ [#765]:https://github.com/puma/puma/issues/765 "Issue by @monfresh, closed 2015-08-15"
2405
+ [#764]:https://github.com/puma/puma/issues/764 "Issue by @keithpitt, closed 2015-08-15"
2406
+ [#669]:https://github.com/puma/puma/pull/669 "PR by @chulkilee, closed 2015-08-14"
2407
+ [#673]:https://github.com/puma/puma/pull/673 "PR by @chulkilee, closed 2015-08-14"
2408
+ [#668]:https://github.com/puma/puma/pull/668 "PR by @kcollignon, merged 2015-08-14"
2409
+ [#754]:https://github.com/puma/puma/pull/754 "PR by @nathansamson, merged 2015-08-14"
2410
+ [#759]:https://github.com/puma/puma/pull/759 "PR by @BenV, merged 2015-08-14"
2411
+ [#761]:https://github.com/puma/puma/pull/761 "PR by @dmarcotte, merged 2015-08-14"
2412
+ [#742]:https://github.com/puma/puma/pull/742 "PR by @deivid-rodriguez, merged 2015-07-17"
2413
+ [#743]:https://github.com/puma/puma/pull/743 "PR by @matthewd, merged 2015-07-18"
2414
+ [#749]:https://github.com/puma/puma/pull/749 "PR by @huacnlee, merged 2015-08-04"
2415
+ [#751]:https://github.com/puma/puma/pull/751 "PR by @costi, merged 2015-07-31"
2416
+ [#741]:https://github.com/puma/puma/issues/741 "Issue by @GUI, closed 2015-07-17"
2417
+ [#739]:https://github.com/puma/puma/issues/739 "Issue by @hab278, closed 2015-07-17"
2418
+ [#737]:https://github.com/puma/puma/issues/737 "Issue by @dmill, closed 2015-07-16"
2419
+ [#733]:https://github.com/puma/puma/issues/733 "Issue by @Eric-Guo, closed 2015-07-15"
2420
+ [#736]:https://github.com/puma/puma/pull/736 "PR by @paulanunda, merged 2015-07-15"
2421
+ [#722]:https://github.com/puma/puma/issues/722 "Issue by @mikeki, closed 2015-07-14"
2422
+ [#694]:https://github.com/puma/puma/issues/694 "Issue by @yld, closed 2015-06-10"
2423
+ [#705]:https://github.com/puma/puma/issues/705 "Issue by @TheTeaNerd, closed 2015-07-14"
2424
+ [#686]:https://github.com/puma/puma/pull/686 "PR by @jjb, merged 2015-06-10"
2425
+ [#693]:https://github.com/puma/puma/pull/693 "PR by @rob-murray, merged 2015-06-10"
2426
+ [#697]:https://github.com/puma/puma/pull/697 "PR by @spk, merged 2015-06-10"
2427
+ [#699]:https://github.com/puma/puma/pull/699 "PR by @deees, merged 2015-05-19"
2428
+ [#701]:https://github.com/puma/puma/pull/701 "PR by @deepj, merged 2015-05-19"
2429
+ [#702]:https://github.com/puma/puma/pull/702 "PR by @OleMchls, merged 2015-06-10"
2430
+ [#703]:https://github.com/puma/puma/pull/703 "PR by @deepj, merged 2015-06-10"
2431
+ [#704]:https://github.com/puma/puma/pull/704 "PR by @grega, merged 2015-06-10"
2432
+ [#709]:https://github.com/puma/puma/pull/709 "PR by @lian, merged 2015-06-10"
2433
+ [#711]:https://github.com/puma/puma/pull/711 "PR by @julik, merged 2015-06-10"
2434
+ [#712]:https://github.com/puma/puma/pull/712 "PR by @chewi, merged 2015-07-14"
2435
+ [#715]:https://github.com/puma/puma/pull/715 "PR by @raymondmars, merged 2015-07-14"
2436
+ [#725]:https://github.com/puma/puma/pull/725 "PR by @rwz, merged 2015-07-14"
2437
+ [#726]:https://github.com/puma/puma/pull/726 "PR by @jshafton, merged 2015-07-14"
2438
+ [#729]:https://github.com/puma/puma/pull/729 "PR by @allaire, merged 2015-07-14"
2439
+ [#730]:https://github.com/puma/puma/pull/730 "PR by @iamjarvo, merged 2015-07-14"
2440
+ [#690]:https://github.com/puma/puma/issues/690 "Issue by @bachue, closed 2015-04-21"
2441
+ [#684]:https://github.com/puma/puma/issues/684 "Issue by @tomquas, closed 2015-04-13"
2442
+ [#698]:https://github.com/puma/puma/pull/698 "PR by @dmarcotte, merged 2015-05-04"
2443
+ [#683]:https://github.com/puma/puma/issues/683 "Issue by @indirect, closed 2015-04-11"
2444
+ [#657]:https://github.com/puma/puma/pull/657 "PR by @schneems, merged 2015-02-19"
2445
+ [#658]:https://github.com/puma/puma/pull/658 "PR by @tomohiro, merged 2015-02-23"
2446
+ [#662]:https://github.com/puma/puma/pull/662 "PR by @iaintshine, merged 2015-03-06"
2447
+ [#664]:https://github.com/puma/puma/pull/664 "PR by @fxposter, merged 2015-03-09"
2448
+ [#667]:https://github.com/puma/puma/pull/667 "PR by @JuanitoFatas, merged 2015-03-12"
2449
+ [#672]:https://github.com/puma/puma/pull/672 "PR by @chulkilee, merged 2015-03-15"
2450
+ [#653]:https://github.com/puma/puma/issues/653 "Issue by @dvrensk, closed 2015-02-11"
2451
+ [#644]:https://github.com/puma/puma/pull/644 "PR by @bpaquet, merged 2015-01-29"
2452
+ [#646]:https://github.com/puma/puma/pull/646 "PR by @mkonecny, merged 2015-02-05"
2453
+ [#630]:https://github.com/puma/puma/issues/630 "Issue by @jelmd, closed 2015-01-20"
2454
+ [#622]:https://github.com/puma/puma/issues/622 "Issue by @sabamotto, closed 2015-01-20"
2455
+ [#583]:https://github.com/puma/puma/issues/583 "Issue by @rwojsznis, closed 2015-01-20"
2456
+ [#586]:https://github.com/puma/puma/issues/586 "Issue by @ponchik, closed 2015-01-20"
2457
+ [#359]:https://github.com/puma/puma/issues/359 "Issue by @natew, closed 2014-12-13"
2458
+ [#633]:https://github.com/puma/puma/issues/633 "Issue by @joevandyk, closed 2015-01-20"
2459
+ [#478]:https://github.com/puma/puma/pull/478 "PR by @rubencaro, merged 2015-01-20"
2460
+ [#610]:https://github.com/puma/puma/pull/610 "PR by @kwilczynski, merged 2014-11-27"
2461
+ [#611]:https://github.com/puma/puma/pull/611 "PR by @jasonl, merged 2015-01-20"
2462
+ [#616]:https://github.com/puma/puma/pull/616 "PR by @jc00ke, merged 2014-12-10"
2463
+ [#623]:https://github.com/puma/puma/pull/623 "PR by @raldred, merged 2015-01-20"
2464
+ [#628]:https://github.com/puma/puma/pull/628 "PR by @rdpoor, merged 2015-01-20"
2465
+ [#634]:https://github.com/puma/puma/pull/634 "PR by @deepj, merged 2015-01-20"
2466
+ [#637]:https://github.com/puma/puma/pull/637 "PR by @raskhadafi, merged 2015-01-20"
2467
+ [#639]:https://github.com/puma/puma/pull/639 "PR by @ebeigarts, merged 2015-01-20"
2468
+ [#640]:https://github.com/puma/puma/pull/640 "PR by @bailsman, merged 2015-01-20"
2469
+ [#591]:https://github.com/puma/puma/issues/591 "Issue by @renier, closed 2014-11-24"
2470
+ [#606]:https://github.com/puma/puma/issues/606 "Issue by @, closed 2014-11-24"
2471
+ [#560]:https://github.com/puma/puma/pull/560 "PR by @raskhadafi, merged 2014-11-24"
2472
+ [#566]:https://github.com/puma/puma/pull/566 "PR by @sheltond, merged 2014-11-24"
2473
+ [#593]:https://github.com/puma/puma/pull/593 "PR by @andruby, merged 2014-10-30"
2474
+ [#594]:https://github.com/puma/puma/pull/594 "PR by @hassox, merged 2014-10-31"
2475
+ [#596]:https://github.com/puma/puma/pull/596 "PR by @burningTyger, merged 2014-11-01"
2476
+ [#601]:https://github.com/puma/puma/pull/601 "PR by @sorentwo, merged 2014-11-24"
2477
+ [#602]:https://github.com/puma/puma/pull/602 "PR by @1334, merged 2014-11-24"
2478
+ [#608]:https://github.com/puma/puma/pull/608 "PR by @Gu1, merged 2014-11-24"
2479
+ [#538]:https://github.com/puma/puma/pull/538 "PR by @memiux, merged 2014-11-24"
2480
+ [#550]:https://github.com/puma/puma/issues/550 "Issue by @, closed 2014-10-30"
2481
+ [#549]:https://github.com/puma/puma/pull/549 "PR by @bsnape, merged 2014-10-16"
2482
+ [#553]:https://github.com/puma/puma/pull/553 "PR by @lowjoel, merged 2014-10-16"
2483
+ [#568]:https://github.com/puma/puma/pull/568 "PR by @mariuz, merged 2014-10-16"
2484
+ [#578]:https://github.com/puma/puma/pull/578 "PR by @danielbuechele, merged 2014-10-16"
2485
+ [#581]:https://github.com/puma/puma/pull/581 "PR by @alexch, merged 2014-10-16"
2486
+ [#590]:https://github.com/puma/puma/pull/590 "PR by @dmarcotte, merged 2014-10-16"
2487
+ [#574]:https://github.com/puma/puma/issues/574 "Issue by @minasmart, closed 2014-09-05"
2488
+ [#561]:https://github.com/puma/puma/pull/561 "PR by @krasnoukhov, merged 2014-08-04"
2489
+ [#570]:https://github.com/puma/puma/pull/570 "PR by @havenwood, merged 2014-08-20"
2490
+ [#520]:https://github.com/puma/puma/pull/520 "PR by @misfo, merged 2014-06-16"
2491
+ [#530]:https://github.com/puma/puma/pull/530 "PR by @dmarcotte, merged 2014-06-16"
2492
+ [#537]:https://github.com/puma/puma/pull/537 "PR by @vlmonk, merged 2014-06-16"
2493
+ [#540]:https://github.com/puma/puma/pull/540 "PR by @allaire, merged 2014-05-27"
2494
+ [#544]:https://github.com/puma/puma/pull/544 "PR by @chulkilee, merged 2014-06-03"
2495
+ [#551]:https://github.com/puma/puma/pull/551 "PR by @jcxplorer, merged 2014-07-02"
2496
+ [#487]:https://github.com/puma/puma/pull/487 "PR by @, merged 2014-03-06"
2497
+ [#492]:https://github.com/puma/puma/pull/492 "PR by @, merged 2014-03-06"
2498
+ [#493]:https://github.com/puma/puma/pull/493 "PR by @alepore, merged 2014-03-07"
2499
+ [#503]:https://github.com/puma/puma/pull/503 "PR by @mariuz, merged 2014-04-12"
2500
+ [#505]:https://github.com/puma/puma/pull/505 "PR by @sammcj, merged 2014-04-12"
2501
+ [#506]:https://github.com/puma/puma/pull/506 "PR by @dsander, merged 2014-04-12"
2502
+ [#510]:https://github.com/puma/puma/pull/510 "PR by @momer, merged 2014-04-12"
2503
+ [#511]:https://github.com/puma/puma/pull/511 "PR by @macool, merged 2014-04-12"
2504
+ [#514]:https://github.com/puma/puma/pull/514 "PR by @nanaya, merged 2014-04-12"
2505
+ [#517]:https://github.com/puma/puma/pull/517 "PR by @misfo, merged 2014-04-12"
2506
+ [#518]:https://github.com/puma/puma/pull/518 "PR by @alxgsv, merged 2014-04-12"
2507
+ [#471]:https://github.com/puma/puma/pull/471 "PR by @arthurnn, merged 2014-02-28"
2508
+ [#485]:https://github.com/puma/puma/pull/485 "PR by @runlevel5, merged 2014-03-01"
2509
+ [#486]:https://github.com/puma/puma/pull/486 "PR by @joshwlewis, merged 2014-03-02"
2510
+ [#490]:https://github.com/puma/puma/pull/490 "PR by @tobinibot, merged 2014-03-06"
2511
+ [#491]:https://github.com/puma/puma/pull/491 "PR by @brianknight10, merged 2014-03-06"
2512
+ [#438]:https://github.com/puma/puma/issues/438 "Issue by @mperham, closed 2014-01-25"
2513
+ [#333]:https://github.com/puma/puma/issues/333 "Issue by @SamSaffron, closed 2014-01-26"
2514
+ [#440]:https://github.com/puma/puma/issues/440 "Issue by @sudara, closed 2014-01-25"
2515
+ [#449]:https://github.com/puma/puma/issues/449 "Issue by @cezarsa, closed 2014-02-04"
2516
+ [#444]:https://github.com/puma/puma/issues/444 "Issue by @le0pard, closed 2014-01-25"
2517
+ [#370]:https://github.com/puma/puma/issues/370 "Issue by @pelcasandra, closed 2014-01-26"
2518
+ [#377]:https://github.com/puma/puma/issues/377 "Issue by @mrbrdo, closed 2014-01-26"
2519
+ [#406]:https://github.com/puma/puma/issues/406 "Issue by @simonrussell, closed 2014-01-25"
2520
+ [#425]:https://github.com/puma/puma/issues/425 "Issue by @jhass, closed 2014-01-26"
2521
+ [#432]:https://github.com/puma/puma/pull/432 "PR by @anatol, closed 2014-01-25"
2522
+ [#428]:https://github.com/puma/puma/pull/428 "PR by @alexeyfrank, merged 2014-01-25"
2523
+ [#429]:https://github.com/puma/puma/pull/429 "PR by @namusyaka, merged 2013-12-16"
2524
+ [#431]:https://github.com/puma/puma/pull/431 "PR by @mrb, merged 2014-01-25"
2525
+ [#433]:https://github.com/puma/puma/pull/433 "PR by @alepore, merged 2014-02-28"
2526
+ [#437]:https://github.com/puma/puma/pull/437 "PR by @ibrahima, merged 2014-01-25"
2527
+ [#446]:https://github.com/puma/puma/pull/446 "PR by @sudara, merged 2014-01-27"
2528
+ [#451]:https://github.com/puma/puma/pull/451 "PR by @pwiebe, merged 2014-02-04"
2529
+ [#453]:https://github.com/puma/puma/pull/453 "PR by @joevandyk, merged 2014-02-28"
2530
+ [#470]:https://github.com/puma/puma/pull/470 "PR by @arthurnn, merged 2014-02-28"
2531
+ [#472]:https://github.com/puma/puma/pull/472 "PR by @rubencaro, merged 2014-02-21"
2532
+ [#480]:https://github.com/puma/puma/pull/480 "PR by @jjb, merged 2014-02-26"
2533
+ [#481]:https://github.com/puma/puma/pull/481 "PR by @schneems, merged 2014-02-25"
2534
+ [#482]:https://github.com/puma/puma/pull/482 "PR by @prathamesh-sonpatki, merged 2014-02-26"
2535
+ [#483]:https://github.com/puma/puma/pull/483 "PR by @maxilev, merged 2014-02-26"
2536
+ [#422]:https://github.com/puma/puma/issues/422 "Issue by @alexandru-calinoiu, closed 2013-12-05"
2537
+ [#334]:https://github.com/puma/puma/issues/334 "Issue by @srgpqt, closed 2013-07-18"
2538
+ [#179]:https://github.com/puma/puma/issues/179 "Issue by @betelgeuse, closed 2013-07-18"
2539
+ [#332]:https://github.com/puma/puma/issues/332 "Issue by @SamSaffron, closed 2013-07-18"
2540
+ [#317]:https://github.com/puma/puma/issues/317 "Issue by @masterkain, closed 2013-07-11"
2541
+ [#309]:https://github.com/puma/puma/issues/309 "Issue by @masterkain, closed 2013-07-09"
2542
+ [#166]:https://github.com/puma/puma/issues/166 "Issue by @emassip, closed 2013-07-06"
2543
+ [#292]:https://github.com/puma/puma/issues/292 "Issue by @pulse00, closed 2013-07-06"
2544
+ [#274]:https://github.com/puma/puma/issues/274 "Issue by @mrbrdo, closed 2013-07-06"
2545
+ [#304]:https://github.com/puma/puma/issues/304 "Issue by @nandosola, closed 2013-07-06"
2546
+ [#287]:https://github.com/puma/puma/issues/287 "Issue by @runlevel5, closed 2013-07-06"
2547
+ [#256]:https://github.com/puma/puma/issues/256 "Issue by @rkh, closed 2013-07-01"
2548
+ [#285]:https://github.com/puma/puma/issues/285 "Issue by @mkwiatkowski, closed 2013-06-20"
2549
+ [#270]:https://github.com/puma/puma/issues/270 "Issue by @iamroody, closed 2013-06-01"
2550
+ [#246]:https://github.com/puma/puma/issues/246 "Issue by @amencarini, closed 2013-06-01"
2551
+ [#278]:https://github.com/puma/puma/issues/278 "Issue by @titanous, closed 2013-06-18"
2552
+ [#251]:https://github.com/puma/puma/issues/251 "Issue by @cure, closed 2013-06-18"
2553
+ [#252]:https://github.com/puma/puma/issues/252 "Issue by @vixns, closed 2013-06-01"
2554
+ [#234]:https://github.com/puma/puma/issues/234 "Issue by @jgarber, closed 2013-04-08"
2555
+ [#228]:https://github.com/puma/puma/issues/228 "Issue by @joelmats, closed 2013-04-29"
2556
+ [#192]:https://github.com/puma/puma/issues/192 "Issue by @steverandy, closed 2013-02-09"
2557
+ [#206]:https://github.com/puma/puma/issues/206 "Issue by @moll, closed 2013-03-19"
2558
+ [#154]:https://github.com/puma/puma/issues/154 "Issue by @trevor, closed 2013-03-19"
2559
+ [#208]:https://github.com/puma/puma/issues/208 "Issue by @ochronus, closed 2013-03-18"
2560
+ [#189]:https://github.com/puma/puma/issues/189 "Issue by @tolot27, closed 2013-02-09"
2561
+ [#185]:https://github.com/puma/puma/issues/185 "Issue by @nicolai86, closed 2013-02-06"
2562
+ [#182]:https://github.com/puma/puma/issues/182 "Issue by @sriedel, closed 2013-02-05"
2563
+ [#183]:https://github.com/puma/puma/issues/183 "Issue by @concept47, closed 2013-02-05"
2564
+ [#176]:https://github.com/puma/puma/issues/176 "Issue by @cryo28, closed 2013-02-05"
2565
+ [#180]:https://github.com/puma/puma/issues/180 "Issue by @tscolari, closed 2013-02-05"
2566
+ [#170]:https://github.com/puma/puma/issues/170 "Issue by @nixme, closed 2012-11-29"
2567
+ [#148]:https://github.com/puma/puma/issues/148 "Issue by @rafaelss, closed 2012-11-18"
2568
+ [#128]:https://github.com/puma/puma/issues/128 "Issue by @fbjork, closed 2012-10-20"
2569
+ [#155]:https://github.com/puma/puma/issues/155 "Issue by @ehlertij, closed 2012-10-13"
2570
+ [#123]:https://github.com/puma/puma/pull/123 "PR by @jcoene, closed 2012-07-19"
2571
+ [#111]:https://github.com/puma/puma/pull/111 "PR by @kenkeiter, closed 2012-07-19"
2572
+ [#98]:https://github.com/puma/puma/pull/98 "PR by @Flink, closed 2012-05-15"
2573
+ [#94]:https://github.com/puma/puma/issues/94 "Issue by @ender672, closed 2012-05-08"
2574
+ [#84]:https://github.com/puma/puma/issues/84 "Issue by @sigursoft, closed 2012-04-29"
2575
+ [#78]:https://github.com/puma/puma/issues/78 "Issue by @dstrelau, closed 2012-04-28"
2576
+ [#79]:https://github.com/puma/puma/issues/79 "Issue by @jammi, closed 2012-04-28"
2577
+ [#65]:https://github.com/puma/puma/issues/65 "Issue by @bporterfield, closed 2012-04-11"
2578
+ [#54]:https://github.com/puma/puma/issues/54 "Issue by @masterkain, closed 2012-04-10"
2579
+ [#58]:https://github.com/puma/puma/pull/58 "PR by @paneq, closed 2012-04-10"
2580
+ [#61]:https://github.com/puma/puma/issues/61 "Issue by @dustalov, closed 2012-04-10"
2581
+ [#63]:https://github.com/puma/puma/issues/63 "Issue by @seamusabshere, closed 2012-04-11"
2582
+ [#60]:https://github.com/puma/puma/issues/60 "Issue by @paneq, closed 2012-04-11"
2583
+ [#53]:https://github.com/puma/puma/pull/53 "PR by @sxua, closed 2012-04-11"