puma 4.3.12 → 5.6.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +1526 -524
  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/images/puma-connection-flow-no-reactor.png +0 -0
  11. data/docs/images/puma-connection-flow.png +0 -0
  12. data/docs/images/puma-general-arch.png +0 -0
  13. data/docs/jungle/README.md +9 -0
  14. data/{tools → docs}/jungle/rc.d/README.md +1 -1
  15. data/{tools → docs}/jungle/rc.d/puma +2 -2
  16. data/{tools → docs}/jungle/rc.d/puma.conf +0 -0
  17. data/docs/kubernetes.md +66 -0
  18. data/docs/nginx.md +1 -1
  19. data/docs/plugins.md +15 -15
  20. data/docs/rails_dev_mode.md +28 -0
  21. data/docs/restart.md +46 -23
  22. data/docs/signals.md +13 -11
  23. data/docs/stats.md +142 -0
  24. data/docs/systemd.md +85 -128
  25. data/ext/puma_http11/PumaHttp11Service.java +2 -4
  26. data/ext/puma_http11/ext_help.h +1 -1
  27. data/ext/puma_http11/extconf.rb +44 -10
  28. data/ext/puma_http11/http11_parser.c +45 -47
  29. data/ext/puma_http11/http11_parser.h +1 -1
  30. data/ext/puma_http11/http11_parser.java.rl +1 -1
  31. data/ext/puma_http11/http11_parser.rl +1 -1
  32. data/ext/puma_http11/http11_parser_common.rl +0 -0
  33. data/ext/puma_http11/mini_ssl.c +225 -89
  34. data/ext/puma_http11/no_ssl/PumaHttp11Service.java +15 -0
  35. data/ext/puma_http11/org/jruby/puma/Http11.java +5 -3
  36. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +3 -5
  37. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +109 -67
  38. data/ext/puma_http11/puma_http11.c +32 -51
  39. data/lib/puma/app/status.rb +50 -36
  40. data/lib/puma/binder.rb +225 -106
  41. data/lib/puma/cli.rb +24 -18
  42. data/lib/puma/client.rb +146 -84
  43. data/lib/puma/cluster/worker.rb +173 -0
  44. data/lib/puma/cluster/worker_handle.rb +94 -0
  45. data/lib/puma/cluster.rb +212 -220
  46. data/lib/puma/commonlogger.rb +2 -2
  47. data/lib/puma/configuration.rb +58 -49
  48. data/lib/puma/const.rb +22 -7
  49. data/lib/puma/control_cli.rb +99 -76
  50. data/lib/puma/detect.rb +29 -2
  51. data/lib/puma/dsl.rb +368 -96
  52. data/lib/puma/error_logger.rb +104 -0
  53. data/lib/puma/events.rb +55 -34
  54. data/lib/puma/io_buffer.rb +9 -2
  55. data/lib/puma/jruby_restart.rb +0 -58
  56. data/lib/puma/json_serialization.rb +96 -0
  57. data/lib/puma/launcher.rb +128 -46
  58. data/lib/puma/minissl/context_builder.rb +14 -9
  59. data/lib/puma/minissl.rb +137 -50
  60. data/lib/puma/null_io.rb +18 -1
  61. data/lib/puma/plugin/tmp_restart.rb +0 -0
  62. data/lib/puma/plugin.rb +3 -12
  63. data/lib/puma/queue_close.rb +26 -0
  64. data/lib/puma/rack/builder.rb +1 -5
  65. data/lib/puma/rack/urlmap.rb +0 -0
  66. data/lib/puma/rack_default.rb +0 -0
  67. data/lib/puma/reactor.rb +85 -369
  68. data/lib/puma/request.rb +489 -0
  69. data/lib/puma/runner.rb +46 -61
  70. data/lib/puma/server.rb +292 -763
  71. data/lib/puma/single.rb +9 -65
  72. data/lib/puma/state_file.rb +48 -8
  73. data/lib/puma/systemd.rb +46 -0
  74. data/lib/puma/thread_pool.rb +125 -57
  75. data/lib/puma/util.rb +32 -4
  76. data/lib/puma.rb +48 -0
  77. data/lib/rack/handler/puma.rb +2 -3
  78. data/lib/rack/version_restriction.rb +15 -0
  79. data/tools/{docker/Dockerfile → Dockerfile} +1 -1
  80. data/tools/trickletest.rb +0 -0
  81. metadata +29 -24
  82. data/docs/tcp_mode.md +0 -96
  83. data/ext/puma_http11/io_buffer.c +0 -155
  84. data/ext/puma_http11/org/jruby/puma/IOBuffer.java +0 -72
  85. data/lib/puma/accept_nonblock.rb +0 -29
  86. data/lib/puma/tcp_logger.rb +0 -41
  87. data/tools/jungle/README.md +0 -19
  88. data/tools/jungle/init.d/README.md +0 -61
  89. data/tools/jungle/init.d/puma +0 -421
  90. data/tools/jungle/init.d/run-puma +0 -18
  91. data/tools/jungle/upstart/README.md +0 -61
  92. data/tools/jungle/upstart/puma-manager.conf +0 -31
  93. data/tools/jungle/upstart/puma.conf +0 -69
data/History.md CHANGED
@@ -1,12 +1,344 @@
1
- ## 4.3.12 / 2022-03-30
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
2
40
 
3
41
  * Security
4
42
  * Close several HTTP Request Smuggling exploits (CVE-2022-24790)
5
43
 
6
- ## 4.3.11 / 2022-02-11
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
7
129
 
8
130
  * Security
9
- * Always close the response body (GHSA-rmj8-8hhh-gv5h)
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])
10
342
 
11
343
  ## 4.3.10 / 2021-10-12
12
344
 
@@ -21,31 +353,34 @@
21
353
  ## 4.3.8 / 2021-05-11
22
354
 
23
355
  * Security
24
- * 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])
25
357
 
26
358
  ## 4.3.7 / 2020-11-30
27
359
 
28
360
  * Bugfixes
29
- * Backport set CONTENT_LENGTH for chunked requests (Originally: #2287, backport: #2496)
361
+ * Backport set CONTENT_LENGTH for chunked requests (Originally: [#2287], backport: [#2496])
30
362
 
31
363
  ## 4.3.6 / 2020-09-05
32
364
 
33
365
  * Bugfixes
34
- * Explicitly include ctype.h to fix compilation warning and build error on macOS with Xcode 12 (#2304)
35
- * Don't require json at boot (#2269)
36
- * 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])
37
368
 
38
369
  ## 4.3.4/4.3.5 and 3.12.5/3.12.6 / 2020-05-22
39
370
 
40
371
  Each patchlevel release contains a separate security fix. We recommend simply upgrading to 4.3.5/3.12.6.
41
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
+
42
376
  ## 4.3.3 and 3.12.4 / 2020-02-28
43
- * Bugfixes
44
- * Fix: Fixes a problem where we weren't splitting headers correctly on newlines (#2132)
45
- * Security
46
- * Fix: Prevent HTTP Response splitting via CR in early hints.
47
377
 
48
- ## 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)
49
384
 
50
385
  * Security
51
386
  * Fix: Prevent HTTP Response splitting via CR/LF in header values. CVE-2020-5247.
@@ -58,152 +393,146 @@ Each patchlevel release contains a separate security fix. We recommend simply up
58
393
  ## 4.3.0 / 2019-11-07
59
394
 
60
395
  * Features
61
- * Strip whitespace at end of HTTP headers (#2010)
62
- * Optimize HTTP parser for JRuby (#2012)
63
- * 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])
64
399
 
65
400
  * Bugfixes
66
- * Fix Errno::EINVAL when SSL is enabled and browser rejects cert (#1564)
67
- * Fix pumactl defaulting puma to development if an environment was not specified (#2035)
68
- * Fix closing file stream when reading pid from pidfile (#2048)
69
- * 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])
70
405
 
71
406
  ## 4.2.1 / 2019-10-07
72
407
 
73
408
  * 3 bugfixes
74
- * Fix socket activation of systemd (pre-existing) unix binder files (#1842, #1988)
75
- * Deal with multiple calls to bind correctly (#1986, #1994, #2006)
76
- * 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])
77
412
 
78
413
  ## 4.2.0 / 2019-09-23
79
414
 
80
415
  * 6 features
81
- * Pumactl has a new -e environment option and reads `config/puma/<environment>.rb` config files (#1885)
82
- * Semicolons are now allowed in URL paths (MRI only), useful for Angular or Redmine (#1934)
83
- * Allow extra dependencies to be defined when using prune_bundler (#1105)
84
- * Puma now reports the correct port when binding to port 0, also reports other listeners when binding to localhost (#1786)
85
- * Sending SIGINFO to any Puma worker now prints currently active threads and their backtraces (#1320)
86
- * 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])
87
422
  * 4 bugfixes
88
- * Fix some misbehavior with phased restart and externally SIGTERMed workers (#1908, #1952)
89
- * Fix socket closing on error (#1941)
90
- * Removed unnecessary SIGINT trap for JRuby that caused some race conditions (#1961)
91
- * 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])
92
427
  * Absolutely thousands of lines of test improvements and fixes thanks to @MSP-Greg
93
428
 
94
429
  ## 4.1.1 / 2019-09-05
95
430
 
96
431
  * 3 bugfixes
97
- * Revert our attempt to not dup STDOUT/STDERR (#1946)
98
- * Fix socket close on error (#1941)
99
- * 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])
100
435
 
101
436
  ## 4.1.0 / 2019-08-08
102
437
 
103
438
  * 4 features
104
- * Add REQUEST_PATH on parse error message (#1831)
105
- * You can now easily add custom log formatters with the `log_formatter` config option (#1816)
106
- * Puma.stats now provides process start times (#1844)
107
- * 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])
108
443
 
109
444
  * 7 bugfixes
110
- * Fix issue where Puma was creating zombie process entries (#1887)
111
- * Fix bugs with line-endings and chunked encoding (#1812)
112
- * RACK_URL_SCHEME is now set correctly in all conditions (#1491)
113
- * We no longer mutate global STDOUT/STDERR, particularly the sync setting (#1837)
114
- * SSL read_nonblock no longer blocks (#1857)
115
- * Swallow connection errors when sending early hints (#1822)
116
- * 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])
117
452
 
118
453
  * 5 other
119
- * Avoid casting worker_timeout twice (#1838)
120
- * Removed a call to private that wasn't doing anything (#1882)
121
- * 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])
122
457
  * Puma.io has proper documentation now (https://puma.io/puma/)
123
458
  * Added the Contributor Covenant CoC
124
459
 
125
460
  * 1 known issue
126
- * 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])
127
462
 
128
463
  ## 4.0.1 / 2019-07-11
129
464
 
130
465
  * 2 bugfixes
131
- * Fix socket removed after reload - should fix problems with systemd socket activation. (#1829)
132
- * 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])
133
468
  * 1 other
134
- * Removed unnecessary RUBY_VERSION checks. (#1827)
469
+ * Removed unnecessary RUBY_VERSION checks. ([#1827])
135
470
 
136
471
  ## 4.0.0 / 2019-06-25
137
472
 
138
473
  * 9 features
139
- * Add support for disabling TLSv1.0 (#1562)
140
- * Request body read time metric (#1569)
141
- * Add out_of_band hook (#1648)
142
- * Re-implement (native) IOBuffer for JRuby (#1691)
143
- * Min worker timeout (#1716)
144
- * Add option to suppress SignalException on SIGTERM (#1690)
145
- * Allow mutual TLS CA to be set using `ssl_bind` DSL (#1689)
146
- * Reactor now uses nio4r instead of `select` (#1728)
147
- * 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])
148
483
 
149
484
  * 10 bugfixes
150
- * Do not accept new requests on shutdown (#1685, #1808)
151
- * Fix 3 corner cases when request body is chunked (#1508)
152
- * Change pid existence check's condition branches (#1650)
153
- * Don't call .stop on a server that doesn't exist (#1655)
154
- * Implemented NID_X9_62_prime256v1 (P-256) curve over P-521 (#1671)
155
- * Fix @notify.close can't modify frozen IOError (RuntimeError) (#1583)
156
- * Fix Java 8 support (#1773)
157
- * Fix error `uninitialized constant Puma::Cluster` (#1731)
158
- * Fix `not_token` being able to be set to true (#1803)
159
- * Fix "Hang on SIGTERM with ruby 2.6 in clustered mode" ([PR #1741], [#1674], [#1720], [#1730], [#1755])
160
-
161
- [PR #1741]: https://github.com/puma/puma/pull/1741
162
- [#1674]: https://github.com/puma/puma/issues/1674
163
- [#1720]: https://github.com/puma/puma/issues/1720
164
- [#1730]: https://github.com/puma/puma/issues/1730
165
- [#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])
166
495
 
167
496
  ## 3.12.1 / 2019-03-19
168
497
 
169
498
  * 1 features
170
- * Internal strings are frozen (#1649)
499
+ * Internal strings are frozen ([#1649])
171
500
  * 3 bugfixes
172
- * Fix chunked ending check (#1607)
173
- * Rack handler should use provided default host (#1700)
174
- * 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])
175
504
 
176
505
  ## 3.12.0 / 2018-07-13
177
506
 
178
507
  * 5 features:
179
- * You can now specify which SSL ciphers the server should support, default is unchanged (#1478)
180
- * The setting for Puma's `max_threads` is now in `Puma.stats` (#1604)
181
- * Pool capacity is now in `Puma.stats` (#1579)
182
- * Installs restricted to Ruby 2.2+ (#1506)
183
- * `--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])
184
513
 
185
514
  * 2 bugfixes:
186
- * 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)
187
- * 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])
188
517
 
189
518
  ## 3.11.4 / 2018-04-12
190
519
 
191
520
  * 2 features:
192
- * Manage puma as a service using rc.d (#1529)
193
- * 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])
194
523
  * 5 bugfixes:
195
- * Fix parsing CLI options (#1482)
196
- * Order of stderr and stdout is made before redirecting to a log file (#1511)
197
- * Init.d fix of `ps -p` to check if pid exists (#1545)
198
- * Early hints bugfix (#1550)
199
- * 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])
200
529
 
201
530
  ## 3.11.3 / 2018-03-05
202
531
 
203
532
  * 3 bugfixes:
204
- * Add closed? to MiniSSL::Socket for use in reactor (#1510)
205
- * Handle EOFError at the toplevel of the server threads (#1524) (#1507)
206
- * 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])
207
536
 
208
537
  ## 3.11.2 / 2018-01-19
209
538
 
@@ -213,83 +542,83 @@ Each patchlevel release contains a separate security fix. We recommend simply up
213
542
  ## 3.11.1 / 2018-01-18
214
543
 
215
544
  * 1 bugfix:
216
- * Handle read\_nonblock returning nil when the socket close (#1502)
545
+ * Handle read\_nonblock returning nil when the socket close ([#1502])
217
546
 
218
547
  ## 3.11.0 / 2017-11-20
219
548
 
220
549
  * 2 features:
221
- * HTTP 103 Early Hints (#1403)
222
- * 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])
223
552
 
224
553
  * 9 bugfixes:
225
- * Environment config files (/config/puma/<ENV>.rb) load correctly (#1340)
226
- * Specify windows dependencies correctly (#1434, #1436)
227
- * puma/events required in test helper (#1418)
228
- * Correct control CLI's option help text (#1416)
229
- * Remove a warning for unused variable in mini_ssl (#1409)
230
- * Correct pumactl docs argument ordering (#1427)
231
- * Fix an uninitialized variable warning in server.rb (#1430)
232
- * Fix docs typo/error in Launcher init (#1429)
233
- * 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])
234
563
 
235
564
  * 2 other:
236
- * Add docs about internals (#1425, #1452)
237
- * 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])
238
567
 
239
568
  ## 3.10.0 / 2017-08-17
240
569
 
241
570
  * 3 features:
242
- * The status server has a new /gc and /gc-status command. (#1384)
243
- * The persistent and first data timeouts are now configurable (#1111)
244
- * 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])
245
574
 
246
575
  * 12 bugfixes:
247
- * 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)
248
- * Fix hangups with SSL and persistent connections. (#1334)
249
- * Fix Rails double-binding to a port (#1383)
250
- * Fix incorrect thread names (#1368)
251
- * Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. (#1318)
252
- * Fix compatibility with RUBYOPT="--enable-frozen-string-literal" (#1376)
253
- * Fixed some compiler warnings (#1388)
254
- * We actually run the integration tests in CI now (#1390)
255
- * No longer shipping unnecessary directories in the gemfile (#1391)
256
- * If RUBYOPT is nil, we no longer blow up on restart. (#1385)
257
- * Correct response to SIGINT (#1377)
258
- * 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])
259
588
 
260
589
  * 3 refactors:
261
590
  * Various test improvements from @grosser
262
- * Rubocop (#1325)
263
- * Hoe has been removed (#1395)
591
+ * Rubocop ([#1325])
592
+ * Hoe has been removed ([#1395])
264
593
 
265
594
  * 1 known issue:
266
- * 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])
267
596
 
268
597
  ## 3.9.1 / 2017-06-03
269
598
 
270
599
  * 2 bugfixes:
271
- * Fixed compatibility with older Bundler versions (#1314)
272
- * Some internal test/development cleanup (#1311, #1313)
600
+ * Fixed compatibility with older Bundler versions ([#1314])
601
+ * Some internal test/development cleanup ([#1311], [#1313])
273
602
 
274
603
  ## 3.9.0 / 2017-06-01
275
604
 
276
605
  * 2 features:
277
- * The ENV is now reset to its original values when Puma restarts via USR1/USR2 (#1260) (MRI only, no JRuby support)
278
- * 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])
279
608
 
280
609
  * 9 bugfixes:
281
- * Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR (#1306)
282
- * Fix SSL/WebSocket compatibility (#1274)
283
- * HTTP headers with empty values are no longer omitted from responses. (#1261)
284
- * Fix a Rack env key which was set to nil. (#1259)
285
- * peercert has been implemented for JRuby (#1248)
286
- * Fix port settings when using rails s (#1277, #1290)
287
- * Fix compat w/LibreSSL (#1285)
288
- * Fix restarting Puma w/symlinks and a new Gemfile (#1282)
289
- * 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])
290
619
 
291
620
  * 1 known issue:
292
- * 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.
293
622
 
294
623
  * 1 refactor:
295
624
  * Lots of test fixups from @grosser.
@@ -297,75 +626,75 @@ Each patchlevel release contains a separate security fix. We recommend simply up
297
626
  ## 3.8.2 / 2017-03-14
298
627
 
299
628
  * 1 bugfix:
300
- * 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])
301
630
 
302
631
  ## 3.8.1 / 2017-03-10
303
632
 
304
633
  * 1 bugfix:
305
- * Remove method call to method that no longer exists (#1239)
634
+ * Remove method call to method that no longer exists ([#1239])
306
635
 
307
636
  ## 3.8.0 / 2017-03-09
308
637
 
309
638
  * 2 bugfixes:
310
- * Port from rack handler does not take precedence over config file in Rails 5.1.0.beta2+ and 5.0.1.rc3+ (#1234)
311
- * 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])
312
641
 
313
642
  * 1 feature:
314
- * Closed clients are aborted to save capacity (#1227)
643
+ * Closed clients are aborted to save capacity ([#1227])
315
644
 
316
645
  * 1 refactor:
317
- * Bundler is no longer a dependency from tests (#1213)
646
+ * Bundler is no longer a dependency from tests ([#1213])
318
647
 
319
648
  ## 3.7.1 / 2017-02-20
320
649
 
321
650
  * 2 bugfixes:
322
- * Fix typo which blew up MiniSSL (#1182)
323
- * 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])
324
653
 
325
654
  ## 3.7.0 / 2017-01-04
326
655
 
327
656
  * 6 minor features:
328
- * Allow rack handler to accept ssl host. (#1129)
329
- * 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])
330
659
  * Pickup any remaining chunk data as the next request.
331
660
  * Prevent short term thread churn - increased auto trim default to 30 seconds.
332
- * Raise error when `stdout` or `stderr` is not writable. (#1175)
333
- * 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])
334
663
 
335
664
  * 5 refactors:
336
- * Compare host and server name only once per call. (#1091)
337
- * Minor refactor on Thread pool (#1088)
665
+ * Compare host and server name only once per call. ([#1091])
666
+ * Minor refactor on Thread pool ([#1088])
338
667
  * Removed a ton of unused constants, variables and files.
339
668
  * Use MRI macros when allocating heap memory
340
- * Use hooks for on\_booted event. (#1160)
669
+ * Use hooks for on\_booted event. ([#1160])
341
670
 
342
671
  * 14 bugfixes:
343
- * Add eof? method to NullIO? (#1169)
344
- * Fix Puma startup in provided init.d script (#1061)
345
- * Fix default SSL mode back to none. (#1036)
346
- * Fixed the issue of @listeners getting nil io (#1120)
347
- * Make `get_dh1024` compatible with OpenSSL v1.1.0 (#1178)
348
- * More gracefully deal with SSL sessions. Fixes #1002
349
- * Move puma.rb to just autoloads. Fixes #1063
350
- * MiniSSL: Provide write as <<. Fixes #1089
351
- * Prune bundler should inherit fds (#1114)
352
- * Replace use of Process.getpgid which does not behave as intended on all platforms (#1110)
353
- * Transfer encoding header should be downcased before comparison (#1135)
354
- * Use same write log logic for hijacked requests. (#1081)
355
- * Fix `uninitialized constant Puma::StateFile` (#1138)
356
- * 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])
357
686
 
358
687
  * 3 others:
359
688
 
360
689
  * Lots of tests added/fixed/improved. Switched to Minitest from Test::Unit. Big thanks to @frodsan.
361
690
  * Lots of documentation added/improved.
362
- * Add license indicators to the HTTP extension. (#1075)
691
+ * Add license indicators to the HTTP extension. ([#1075])
363
692
 
364
693
  ## 3.6.2 / 2016-11-22
365
694
 
366
695
  * 1 bug fix:
367
696
 
368
- * Revert #1118/Fix access priorities of each level in LeveledOptions. This
697
+ * Revert [#1118]/Fix access priorities of each level in LeveledOptions. This
369
698
  had an unintentional side effect of changing the importance of command line
370
699
  options, such as -p.
371
700
 
@@ -374,11 +703,11 @@ Each patchlevel release contains a separate security fix. We recommend simply up
374
703
  * 8 bug fixes:
375
704
 
376
705
  * Fix Puma start in init.d script.
377
- * Fix default SSL mode back to none. Fixes #1036
378
- * Fixed the issue of @listeners getting nil io, fix rails restart (#1120)
379
- * 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]
380
709
  * Prevent short term thread churn.
381
- * Provide write as <<. Fixes #1089
710
+ * Provide write as <<. Fixes [#1089]
382
711
  * Fix access priorities of each level in LeveledOptions - fixes TTIN.
383
712
  * Stub description files updated for init.d.
384
713
 
@@ -390,18 +719,18 @@ Each patchlevel release contains a separate security fix. We recommend simply up
390
719
  ## 3.6.0 / 2016-07-24
391
720
 
392
721
  * 12 bug fixes:
393
- * Add ability to detect a shutting down server. Fixes #932
394
- * Add support for Expect: 100-continue. Fixes #519
395
- * Check SSLContext better. Fixes #828
396
- * Clarify behavior of '-t num'. Fixes #984
397
- * Don't default to VERIFY_PEER. Fixes #1028
398
- * Don't use ENV['PWD'] on windows. Fixes #1023
399
- * Enlarge the scope of catching app exceptions. Fixes #1027
400
- * Execute background hooks after daemonizing. Fixes #925
401
- * Handle HUP as a stop unless there is IO redirection. Fixes #911
402
- * Implement chunked request handling. Fixes #620
403
- * Just rescue exception to return a 500. Fixes #1027
404
- * 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]
405
734
 
406
735
  ## 3.5.2 / 2016-07-20
407
736
 
@@ -409,12 +738,12 @@ Each patchlevel release contains a separate security fix. We recommend simply up
409
738
  * Don't let persistent_timeout be nil
410
739
 
411
740
  * 1 PR merged:
412
- * Merge pull request #1021 from benzrf/patch-1
741
+ * Merge pull request [#1021] from benzrf/patch-1
413
742
 
414
743
  ## 3.5.1 / 2016-07-20
415
744
 
416
745
  * 1 bug fix:
417
- * 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]
418
747
 
419
748
  ## 3.5.0 / 2016-07-18
420
749
 
@@ -422,14 +751,14 @@ Each patchlevel release contains a separate security fix. We recommend simply up
422
751
  * Allow persistent_timeout to be configured via the dsl.
423
752
 
424
753
  * 9 bug fixes:
425
- * Allow a bare % in a query string. Fixes #958
426
- * 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]
427
756
  * Fix `TCPLogger` log error in tcp cluster mode.
428
- * Fix puma/puma#968 Cannot bind SSL port due to missing verify_mode option
429
- * Fix puma/puma#968 Default verify_mode to peer
430
- * Log any exceptions in ThreadPool. Fixes #1010
431
- * Silence connection errors in the reactor. Fixes #959
432
- * 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]
433
762
  * It should not log requests if we want it to be quiet
434
763
 
435
764
  * 5 doc fixes:
@@ -440,43 +769,43 @@ Each patchlevel release contains a separate security fix. We recommend simply up
440
769
  * Fix typo in example config
441
770
 
442
771
  * 14 PRs merged:
443
- * Merge pull request #1007 from willnet/patch-1
444
- * Merge pull request #1014 from jeznet/patch-1
445
- * Merge pull request #1015 from bf4/patch-1
446
- * Merge pull request #1017 from jorihardman/configurable_persistent_timeout
447
- * Merge pull request #954 from jf/master
448
- * Merge pull request #955 from jf/add-request-info-to-standard-error-rescue
449
- * Merge pull request #956 from maxkwallace/master
450
- * Merge pull request #960 from kmayer/kmayer-plugins-heroku-restart
451
- * Merge pull request #969 from frankwong15/master
452
- * Merge pull request #970 from willnet/delete-blank-document
453
- * Merge pull request #974 from rocketjob/feature/name_threads
454
- * Merge pull request #977 from snow/master
455
- * Merge pull request #981 from zach-chai/patch-1
456
- * 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
457
786
 
458
787
  ## 3.4.0 / 2016-04-07
459
788
 
460
789
  * 2 minor features:
461
- * Add ability to force threads to stop on shutdown. Fixes #938
462
- * 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]
463
792
 
464
793
  * 3 unknowns:
465
- * Ignore errors trying to update the backport tables. Fixes #788
466
- * Invoke the lowlevel_error in more places to allow for exception tracking. Fixes #894
467
- * 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]
468
797
 
469
798
  * 5 doc fixes:
470
799
  * Add Process Monitors section to top-level README
471
- * Better document the hooks. Fixes #840
800
+ * Better document the hooks. Fixes [#840]
472
801
  * docs/system.md sample config refinements and elaborations
473
802
  * Fix typos at couple of places.
474
803
  * Cleanup warnings
475
804
 
476
805
  * 3 PRs merged:
477
- * Merge pull request #945 from dekellum/systemd-docs-refined
478
- * Merge pull request #946 from vipulnsward/rm-pid
479
- * 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
480
809
 
481
810
  ## 3.3.0 / 2016-04-05
482
811
 
@@ -489,9 +818,9 @@ Each patchlevel release contains a separate security fix. We recommend simply up
489
818
  * Document UNIX signals with cluster on README.md
490
819
 
491
820
  * 3 PRs merged:
492
- * Merge pull request #936 from prathamesh-sonpatki/allow-overriding-config-options
493
- * Merge pull request #940 from kyledrake/signalsdoc
494
- * 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
495
824
 
496
825
  ## 3.2.0 / 2016-03-20
497
826
 
@@ -504,32 +833,32 @@ Each patchlevel release contains a separate security fix. We recommend simply up
504
833
  * Speed up phased-restart start
505
834
 
506
835
  * 2 PRs merged:
507
- * Merge pull request #927 from jlecour/gemfile_variants
508
- * 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
509
838
 
510
839
  ## 3.1.1 / 2016-03-17
511
840
 
512
841
  * 4 bug fixes:
513
842
  * Disable USR1 usage on JRuby
514
- * Fixes #922 - Correctly define file encoding as UTF-8
843
+ * Fixes [#922] - Correctly define file encoding as UTF-8
515
844
  * Set a more explicit SERVER_SOFTWARE Rack variable
516
- * Show RUBY_ENGINE_VERSION if available. Fixes #923
845
+ * Show RUBY_ENGINE_VERSION if available. Fixes [#923]
517
846
 
518
847
  * 3 PRs merged:
519
- * Merge pull request #912 from tricknotes/fix-allow-failures-in-travis-yml
520
- * Merge pull request #921 from swrobel/patch-1
521
- * 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
522
851
 
523
852
  ## 3.1.0 / 2016-03-05
524
853
 
525
854
  * 1 minor feature:
526
- * Add 'import' directive to config file. Fixes #916
855
+ * Add 'import' directive to config file. Fixes [#916]
527
856
 
528
857
  * 5 bug fixes:
529
- * Add 'fetch' to options. Fixes #913
530
- * Fix jruby daemonization. Fixes #918
531
- * Recreate the proper args manually. Fixes #910
532
- * 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]
533
862
 
534
863
  ## 3.0.2 / 2016-02-26
535
864
 
@@ -543,9 +872,9 @@ Each patchlevel release contains a separate security fix. We recommend simply up
543
872
 
544
873
  * 3 PRs merged:
545
874
 
546
- * Merge pull request #901 from mitto/fix-pumactl-uninitialized-constant-statefile
547
- * Merge pull request #902 from corrupt952/fix_undefined_method_and_variable_when_execute_pumactl
548
- * 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
549
878
 
550
879
  ## 3.0.1 / 2016-02-25
551
880
 
@@ -562,7 +891,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
562
891
  * Ruby pre-2.0 is no longer supported. We'll do our best to not add
563
892
  features that break those rubies but will no longer be testing
564
893
  with them.
565
- * Don't log requests by default. Fixes #852
894
+ * Don't log requests by default. Fixes [#852]
566
895
 
567
896
  * 2 major features:
568
897
 
@@ -574,36 +903,36 @@ Each patchlevel release contains a separate security fix. We recommend simply up
574
903
 
575
904
  * Listen to unix socket with provided backlog if any
576
905
  * Improves the clustered stats to report worker stats
577
- * Pass the env to the lowlevel_error handler. Fixes #854
578
- * 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]
579
908
 
580
909
  * 5 bug fixes:
581
910
 
582
- * Clean thread locals when using keepalive. Fixes #823
583
- * Cleanup compiler warnings. Fixes #815
584
- * Expose closed? for use by the reactor. Fixes #835
585
- * Move signal handlers to separate method to prevent space leak. Fixes #798
586
- * 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]
587
916
 
588
917
  * 5 doc fixes:
589
918
 
590
919
  * Update README.md with various grammar fixes
591
920
  * Use newest version of Minitest
592
921
  * Add directory configuration docs, fix typo [ci skip]
593
- * Remove old COPYING notice. Fixes #849
922
+ * Remove old COPYING notice. Fixes [#849]
594
923
 
595
924
  * 10 merged PRs:
596
925
 
597
- * Merge pull request #871 from deepj/travis
598
- * Merge pull request #874 from wallclockbuilder/master
599
- * Merge pull request #883 from dadah89/igor/trim_only_worker
600
- * Merge pull request #884 from uistudio/async-callback
601
- * Merge pull request #888 from mlarraz/tick_minitest
602
- * Merge pull request #890 from todd/directory_docs
603
- * Merge pull request #891 from ctaintor/improve_clustered_status
604
- * Merge pull request #893 from spastorino/add_missing_require
605
- * Merge pull request #897 from zendesk/master
606
- * 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
607
936
 
608
937
  ## 2.16.0 / 2016-01-27
609
938
 
@@ -620,7 +949,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
620
949
  * 7 bug fixes:
621
950
 
622
951
  * Don't persist before_fork hook in state file
623
- * Reload bundler before pulling in rack. Fixes #859
952
+ * Reload bundler before pulling in rack. Fixes [#859]
624
953
  * Remove NEWRELIC_DISPATCHER env variable
625
954
  * Cleanup C code
626
955
  * Use Timeout.timeout instead of Object.timeout
@@ -632,18 +961,18 @@ Each patchlevel release contains a separate security fix. We recommend simply up
632
961
  * Test against the latest Ruby 2.1, 2.2, 2.3, head and JRuby 9.0.4.0 on Travis
633
962
 
634
963
  * 12 merged PRs
635
- * Merge pull request #822 from kwugirl/remove_NEWRELIC_DISPATCHER
636
- * Merge pull request #833 from joemiller/jruby-client-tls-auth
637
- * Merge pull request #837 from YuriSolovyov/ssl-keystore-jruby
638
- * Merge pull request #839 from mezuka/master
639
- * Merge pull request #845 from deepj/timeout-deprecation
640
- * Merge pull request #846 from sriedel/strip_before_fork
641
- * Merge pull request #850 from deepj/travis
642
- * Merge pull request #853 from Jeffrey6052/patch-1
643
- * Merge pull request #857 from zendesk/faster_phased_restarts
644
- * Merge pull request #858 from mlarraz/fix_some_warnings
645
- * Merge pull request #860 from zendesk/expose_old_worker_count
646
- * 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
647
976
 
648
977
  ## 2.15.3 / 2015-11-07
649
978
 
@@ -658,8 +987,8 @@ Each patchlevel release contains a separate security fix. We recommend simply up
658
987
  * Only set ctx.ca iff there is a params['ca'] to set with.
659
988
 
660
989
  * 2 PRs merged:
661
- * Merge pull request #818 from unleashed/support-duplicate-headers
662
- * 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
663
992
 
664
993
  ## 2.15.1 / 2015-11-06
665
994
 
@@ -681,7 +1010,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
681
1010
  * Disable SSL Compression
682
1011
  * Fix bug setting worker_directory when using a symlink directory
683
1012
  * Fix error message in DSL that was slightly inaccurate
684
- * Pumactl: set correct process name. Fixes #563
1013
+ * Pumactl: set correct process name. Fixes [#563]
685
1014
  * thread_pool: fix race condition when shutting down workers
686
1015
 
687
1016
  * 10 doc fixes:
@@ -691,30 +1020,30 @@ Each patchlevel release contains a separate security fix. We recommend simply up
691
1020
  * Fix spelling errors.
692
1021
  * Fix typo in deployment description
693
1022
  * Fix typos (it's -> its) in events.rb and server.rb
694
- * fixing for typo mentioned in #803
1023
+ * fixing for typo mentioned in [#803]
695
1024
  * Spelling correction for README
696
1025
  * thread_pool: fix typos in comment
697
1026
  * More explicit docs for worker_timeout
698
1027
 
699
1028
  * 18 PRs merged:
700
- * Merge pull request #768 from nathansamson/patch-1
701
- * Merge pull request #773 from rossta/spelling_corrections
702
- * Merge pull request #774 from snow/master
703
- * Merge pull request #781 from sunsations/fix-typo
704
- * Merge pull request #791 from unleashed/allow_empty_tags
705
- * Merge pull request #793 from robdimarco/fix-working-directory-symlink-bug
706
- * Merge pull request #794 from peterkeen/patch-1
707
- * Merge pull request #795 from unleashed/redirects-from-cmdline
708
- * Merge pull request #796 from cschneid/fix_dsl_message
709
- * Merge pull request #799 from annafw/master
710
- * Merge pull request #800 from liamseanbrady/fix_typo
711
- * Merge pull request #801 from scottjg/ssl-chain-file
712
- * Merge pull request #802 from scottjg/ssl-crimes
713
- * Merge pull request #804 from burningTyger/patch-2
714
- * Merge pull request #809 from unleashed/threadpool-fix-race-in-shutdown
715
- * Merge pull request #810 from vlmonk/fix-pumactl-restart-bug
716
- * Merge pull request #814 from schneems/schneems/worker_timeout-docs
717
- * 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
718
1047
 
719
1048
  ## 2.14.0 / 2015-09-18
720
1049
 
@@ -722,7 +1051,7 @@ Each patchlevel release contains a separate security fix. We recommend simply up
722
1051
  * Make building with SSL support optional
723
1052
 
724
1053
  * 1 bug fix:
725
- * Use Rack::Builder if available. Fixes #735
1054
+ * Use Rack::Builder if available. Fixes [#735]
726
1055
 
727
1056
  ## 2.13.4 / 2015-08-16
728
1057
 
@@ -735,20 +1064,20 @@ Each patchlevel release contains a separate security fix. We recommend simply up
735
1064
  Seriously, I need to revamp config with tests.
736
1065
 
737
1066
  * 1 bug fix:
738
- * Fix preserving options before cleaning for state. Fixes #769
1067
+ * Fix preserving options before cleaning for state. Fixes [#769]
739
1068
 
740
1069
  ## 2.13.2 / 2015-08-15
741
1070
 
742
1071
  The "clearly I don't have enough tests for the config" release.
743
1072
 
744
1073
  * 1 bug fix:
745
- * Fix another place binds wasn't initialized. Fixes #767
1074
+ * Fix another place binds wasn't initialized. Fixes [#767]
746
1075
 
747
1076
  ## 2.13.1 / 2015-08-15
748
1077
 
749
1078
  * 2 bug fixes:
750
- * Fix binds being masked in config files. Fixes #765
751
- * 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]
752
1081
 
753
1082
  ## 2.13.0 / 2015-08-14
754
1083
 
@@ -758,16 +1087,16 @@ The "clearly I don't have enough tests for the config" release.
758
1087
  * 3 bug fixes:
759
1088
  * Check for OPENSSL_NO_ECDH before using ECDH
760
1089
  * Eliminate logging overhead from JRuby SSL
761
- * Prefer cli options over config file ones. Fixes #669
1090
+ * Prefer cli options over config file ones. Fixes [#669]
762
1091
 
763
1092
  * 1 deprecation:
764
- * Add deprecation warning to capistrano.rb. Fixes #673
1093
+ * Add deprecation warning to capistrano.rb. Fixes [#673]
765
1094
 
766
1095
  * 4 PRs merged:
767
- * Merge pull request #668 from kcollignon/patch-1
768
- * Merge pull request #754 from nathansamson/before_boot
769
- * Merge pull request #759 from BenV/fix-centos6-build
770
- * 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
771
1100
 
772
1101
  ## 2.12.3 / 2015-08-03
773
1102
 
@@ -782,10 +1111,10 @@ The "clearly I don't have enough tests for the config" release.
782
1111
  * ruby 1.8.7 compatibility patches
783
1112
 
784
1113
  * 4 PRs merged:
785
- * Merge pull request #742 from deivid-rodriguez/fix_missing_require
786
- * Merge pull request #743 from matthewd/skip-empty-chunks
787
- * Merge pull request #749 from huacnlee/fix-cap-uninitialized-puma-error
788
- * 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
789
1118
 
790
1119
  * 1 test fix:
791
1120
  * Add 1.8.7, rbx-1 (allow failures) to Travis.
@@ -793,20 +1122,20 @@ The "clearly I don't have enough tests for the config" release.
793
1122
  ## 2.12.2 / 2015-07-17
794
1123
 
795
1124
  * 2 bug fix:
796
- * Pull over and use Rack::URLMap. Fixes #741
797
- * 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]
798
1127
 
799
1128
  ## 2.12.1 / 2015-07-16
800
1129
 
801
1130
  * 2 bug fixes:
802
- * Use a constant format. Fixes #737
803
- * Use strerror for Windows sake. Fixes #733
1131
+ * Use a constant format. Fixes [#737]
1132
+ * Use strerror for Windows sake. Fixes [#733]
804
1133
 
805
1134
  * 1 doc change:
806
1135
  * typo fix: occured -> occurred
807
1136
 
808
1137
  * 1 PR merged:
809
- * Merge pull request #736 from paulanunda/paulanunda/typo-fix
1138
+ * Merge pull request [#736] from paulanunda/paulanunda/typo-fix
810
1139
 
811
1140
  ## 2.12.0 / 2015-07-14
812
1141
 
@@ -816,12 +1145,12 @@ The "clearly I don't have enough tests for the config" release.
816
1145
  * Do not suppress Content-Length on partial hijack
817
1146
  * Don't allow any exceptions to terminate a thread
818
1147
  * Handle ENOTCONN client disconnects when setting REMOTE_ADDR
819
- * Handle very early exit of cluster mode. Fixes #722
1148
+ * Handle very early exit of cluster mode. Fixes [#722]
820
1149
  * Install rack when running tests on travis to use rack/lint
821
1150
  * Make puma -v and -h return success exit code
822
1151
  * Make pumactl load config/puma.rb by default
823
- * Pass options from pumactl properly when pruning. Fixes #694
824
- * Remove rack dependency. Fixes #705
1152
+ * Pass options from pumactl properly when pruning. Fixes [#694]
1153
+ * Remove rack dependency. Fixes [#705]
825
1154
  * Remove the default Content-Type: text/plain
826
1155
  * Add Client Side Certificate Auth
827
1156
 
@@ -840,33 +1169,33 @@ The "clearly I don't have enough tests for the config" release.
840
1169
  * capistrano: Add additional env when start rails
841
1170
 
842
1171
  * 16 PRs merged:
843
- * Merge pull request #686 from jjb/patch-2
844
- * Merge pull request #693 from rob-murray/update-example-config
845
- * Merge pull request #697 from spk/tests-bind-on-rackup-file
846
- * Merge pull request #699 from deees/fix/require_rack_builder
847
- * Merge pull request #701 from deepj/master
848
- * Merge pull request #702 from Jimdo/thread-reaping
849
- * Merge pull request #703 from deepj/travis
850
- * Merge pull request #704 from grega/master
851
- * Merge pull request #709 from lian/master
852
- * Merge pull request #711 from julik/master
853
- * Merge pull request #712 from yakara-ltd/pumactl-default-config
854
- * Merge pull request #715 from RobotJiang/master
855
- * Merge pull request #725 from rwz/master
856
- * Merge pull request #726 from strenuus/handle-client-disconnect
857
- * Merge pull request #729 from allaire/patch-1
858
- * 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
859
1188
 
860
1189
  ## 2.11.3 / 2015-05-18
861
1190
 
862
1191
  * 5 bug fixes:
863
- * Be sure to unlink tempfiles after a request. Fixes #690
864
- * 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]
865
1194
  * Fix hang on bad SSL handshake
866
1195
  * Remove `enable_SSLv3` support from JRuby
867
1196
 
868
1197
  * 1 PR merged:
869
- * Merge pull request #698 from looker/hang-handshake
1198
+ * Merge pull request [#698] from looker/hang-handshake
870
1199
 
871
1200
  ## 2.11.2 / 2015-04-11
872
1201
 
@@ -875,7 +1204,7 @@ The "clearly I don't have enough tests for the config" release.
875
1204
  * Add shutdown_debug config option
876
1205
 
877
1206
  * 4 bug fixes:
878
- * 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]
879
1208
  * Ignore multiple port declarations
880
1209
  * Proper 'Connection' header handling compatible with HTTP 1.[01] protocols
881
1210
  * Use "Puma" instead of "puma" to reporting to New Relic
@@ -884,55 +1213,55 @@ The "clearly I don't have enough tests for the config" release.
884
1213
  * Add Gitter badge.
885
1214
 
886
1215
  * 6 PRs merged:
887
- * Merge pull request #657 from schneems/schneems/puma-once-port
888
- * Merge pull request #658 from Tomohiro/newrelic-dispatcher-default-update
889
- * Merge pull request #662 from basecrm/connection-compatibility
890
- * Merge pull request #664 from fxposter/on-worker-fork
891
- * Merge pull request #667 from JuanitoFatas/doc/gemspec
892
- * 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
893
1222
 
894
1223
  ## 2.11.1 / 2015-02-11
895
1224
 
896
1225
  * 2 bug fixes:
897
1226
  * Avoid crash in strange restart conditions
898
- * 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]
899
1228
 
900
1229
  * 2 PRs merged:
901
- * Merge pull request #644 from bpaquet/master
902
- * Merge pull request #646 from mkonecny/master
1230
+ * Merge pull request [#644] from bpaquet/master
1231
+ * Merge pull request [#646] from mkonecny/master
903
1232
 
904
1233
  ## 2.11.0 / 2015-01-20
905
1234
 
906
1235
  * 9 bug fixes:
907
- * 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]
908
1237
  * Advertise HTTPS properly after a hot restart
909
1238
  * Don't write lowlevel_error_handler to state
910
1239
  * Fix phased restart with stuck requests
911
- * Handle spaces in the path properly. Fixes #622
912
- * Set a default REMOTE_ADDR to avoid using peeraddr on unix sockets. Fixes #583
913
- * 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]
914
1243
  * Update extconf.rb to compile correctly on OS X
915
- * 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]
916
1245
 
917
1246
  * 6 minor features:
918
1247
  * Add a configuration option that prevents puma from queueing requests.
919
1248
  * Add reload_worker_directory
920
1249
  * Add the ability to pass environment variables to the init script (for Jungle).
921
- * Add the proctitle tag to the worker. Fixes #633
1250
+ * Add the proctitle tag to the worker. Fixes [#633]
922
1251
  * Infer a proctitle tag based on the directory
923
1252
  * Update lowlevel error message to be more meaningful.
924
1253
 
925
1254
  * 10 PRs merged:
926
- * Merge pull request #478 from rubencaro/master
927
- * Merge pull request #610 from kwilczynski/master
928
- * Merge pull request #611 from jasonl/better-lowlevel-message
929
- * Merge pull request #616 from jc00ke/master
930
- * Merge pull request #623 from raldred/patch-1
931
- * Merge pull request #628 from rdpoor/master
932
- * Merge pull request #634 from deepj/master
933
- * Merge pull request #637 from raskhadafi/patch-1
934
- * Merge pull request #639 from ebeigarts/fix-phased-restarts
935
- * 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
936
1265
 
937
1266
  ## 2.10.2 / 2014-11-26
938
1267
 
@@ -962,9 +1291,9 @@ The "clearly I don't have enough tests for the config" release.
962
1291
 
963
1292
  * 5 bug fixes:
964
1293
  * Clean out a threads local data before doing work
965
- * Disable SSLv3. Fixes #591
1294
+ * Disable SSLv3. Fixes [#591]
966
1295
  * First change the directory to use the correct Gemfile.
967
- * Only use config.ru binds if specified. Fixes #606
1296
+ * Only use config.ru binds if specified. Fixes [#606]
968
1297
  * Strongish cipher suite with FS support for some browsers
969
1298
 
970
1299
  * 2 doc changes:
@@ -972,20 +1301,20 @@ The "clearly I don't have enough tests for the config" release.
972
1301
  * fix typo in README.md
973
1302
 
974
1303
  * 9 Merged PRs:
975
- * Merge pull request #560 from raskhadafi/prune_bundler-bug
976
- * Merge pull request #566 from sheltond/master
977
- * Merge pull request #593 from andruby/patch-1
978
- * Merge pull request #594 from hassox/thread-cleanliness
979
- * Merge pull request #596 from burningTyger/patch-1
980
- * Merge pull request #601 from sorentwo/friendly-umask
981
- * Merge pull request #602 from 1334/patch-1
982
- * Merge pull request #608 from Gu1/master
983
- * 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/?
984
1313
 
985
1314
  ## 2.9.2 / 2014-10-25
986
1315
 
987
1316
  * 8 bug fixes:
988
- * Fix puma-wild handling a restart properly. Fixes #550
1317
+ * Fix puma-wild handling a restart properly. Fixes [#550]
989
1318
  * JRuby SSL POODLE update
990
1319
  * Keep deprecated features warnings
991
1320
  * Log the current time when Puma shuts down.
@@ -995,24 +1324,24 @@ The "clearly I don't have enough tests for the config" release.
995
1324
  * Fixing sexist error messages
996
1325
 
997
1326
  * 6 PRs merged:
998
- * Merge pull request #549 from bsnape/log-shutdown-time
999
- * Merge pull request #553 from lowjoel/master
1000
- * Merge pull request #568 from mariuz/patch-1
1001
- * Merge pull request #578 from danielbuechele/patch-1
1002
- * Merge pull request #581 from alexch/slightly-better-logging
1003
- * 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
1004
1333
 
1005
1334
  ## 2.9.1 / 2014-09-05
1006
1335
 
1007
1336
  * 4 bug fixes:
1008
1337
  * Cleanup the SSL related structures properly, fixes memory leak
1009
1338
  * Fix thread spawning edge case.
1010
- * 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]
1011
1340
  * Implement SIGHUP for logs reopening
1012
1341
 
1013
1342
  * 2 PRs merged:
1014
- * Merge pull request #561 from theoldreader/sighup
1015
- * 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
1016
1345
 
1017
1346
  ## 2.9.0 / 2014-07-12
1018
1347
 
@@ -1031,12 +1360,12 @@ The "clearly I don't have enough tests for the config" release.
1031
1360
  * Update README.md
1032
1361
 
1033
1362
  * 6 PRs merged:
1034
- * Merge pull request #520 from misfo/patch-2
1035
- * Merge pull request #530 from looker/jruby-ssl
1036
- * Merge pull request #537 from vlmonk/patch-1
1037
- * Merge pull request #540 from allaire/patch-1
1038
- * Merge pull request #544 from chulkilee/bsd-3-clause
1039
- * 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
1040
1369
 
1041
1370
  ## 2.8.2 / 2014-04-12
1042
1371
 
@@ -1053,17 +1382,17 @@ The "clearly I don't have enough tests for the config" release.
1053
1382
  * allow changing of worker_timeout in config file
1054
1383
 
1055
1384
  * 11 PRs merged:
1056
- * Merge pull request #487 from ckuttruff/master
1057
- * Merge pull request #492 from ckuttruff/master
1058
- * Merge pull request #493 from alepore/config_tag
1059
- * Merge pull request #503 from mariuz/patch-1
1060
- * Merge pull request #505 from sammcj/patch-1
1061
- * Merge pull request #506 from FlavourSys/config_worker_timeout
1062
- * Merge pull request #510 from momer/rescue-block-handle-servers-fix
1063
- * Merge pull request #511 from macool/patch-1
1064
- * Merge pull request #514 from edogawaconan/refactor_env
1065
- * Merge pull request #517 from misfo/patch-1
1066
- * 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
1067
1396
 
1068
1397
  ## 2.8.1 / 2014-03-06
1069
1398
 
@@ -1075,60 +1404,59 @@ The "clearly I don't have enough tests for the config" release.
1075
1404
  * Start the deployment doc
1076
1405
 
1077
1406
  * 6 PRs merged:
1078
- * Merge pull request #471 from arthurnn/fix_test
1079
- * Merge pull request #485 from joneslee85/patch-9
1080
- * Merge pull request #486 from joshwlewis/patch-1
1081
- * Merge pull request #490 from tobinibot/patch-1
1082
- * 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
1083
1412
 
1084
1413
  ## 2.8.0 / 2014-02-28
1085
1414
 
1086
1415
  * 8 minor features:
1087
- * Add ability to autoload a config file. Fixes #438
1088
- * 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]
1089
1418
  * Add booted_workers to stats response
1090
1419
  * Add config to customize the default error message
1091
1420
  * Add prune_bundler option
1092
- * Add worker indexes, expose them via on_worker_boot. Fixes #440
1421
+ * Add worker indexes, expose them via on_worker_boot. Fixes [#440]
1093
1422
  * Add pretty process name
1094
1423
  * Show the ruby version in use
1095
1424
 
1096
1425
  * 7 bug fixes:
1097
1426
  * Added 408 status on timeout.
1098
- * Be more hostile with sockets that write block. Fixes #449
1099
- * Expect at_exit to exclusively remove the pidfile. Fixes #444
1100
- * Expose latency and listen backlog via bind query. Fixes #370
1101
- * JRuby raises IOError if the socket is there. Fixes #377
1102
- * Process requests fairly. Fixes #406
1103
- * 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]
1104
1433
 
1105
1434
  * 4 doc changes:
1106
1435
  * Add 2.1.0 to the matrix
1107
1436
  * Add Code Climate badge to README
1108
1437
  * Create signals.md
1109
- * Set the license to BSD. Fixes #432
1438
+ * Set the license to BSD. Fixes [#432]
1110
1439
 
1111
1440
  * 14 PRs merged:
1112
- * Merge pull request #428 from alexeyfrank/capistrano_default_hooks
1113
- * Merge pull request #429 from namusyaka/revert-const_defined
1114
- * Merge pull request #431 from mrb/master
1115
- * Merge pull request #433 from alepore/process-name
1116
- * Merge pull request #437 from ibrahima/master
1117
- * Merge pull request #446 from sudara/master
1118
- * Merge pull request #451 from pwiebe/status_408
1119
- * Merge pull request #453 from joevandyk/patch-1
1120
- * Merge pull request #470 from arthurnn/fix_458
1121
- * Merge pull request #472 from rubencaro/master
1122
- * Merge pull request #480 from jjb/docs-on-running-test-suite
1123
- * Merge pull request #481 from schneems/master
1124
- * Merge pull request #482 from prathamesh-sonpatki/signals-doc-cleanup
1125
- * 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
1126
1455
 
1127
1456
  ## 2.7.1 / 2013-12-05
1128
1457
 
1129
1458
  * 1 bug fix:
1130
-
1131
- * Keep STDOUT/STDERR the right mode. Fixes #422
1459
+ * Keep STDOUT/STDERR the right mode. Fixes [#422]
1132
1460
 
1133
1461
  ## 2.7.0 / 2013-12-03
1134
1462
 
@@ -1163,7 +1491,6 @@ The "clearly I don't have enough tests for the config" release.
1163
1491
  ## 2.5.1 / 2013-08-13
1164
1492
 
1165
1493
  * 2 bug fixes:
1166
-
1167
1494
  * Keep jruby daemon mode from retrying on a hot restart
1168
1495
  * Extract version from const.rb in gemspec
1169
1496
 
@@ -1205,30 +1532,28 @@ The "clearly I don't have enough tests for the config" release.
1205
1532
 
1206
1533
  * 10 bug fixes:
1207
1534
 
1208
- * 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]
1209
1536
  * Call out -C/--config flags
1210
- * Change parser symbol names to avoid clash. Fixes #179
1537
+ * Change parser symbol names to avoid clash. Fixes [#179]
1211
1538
  * Convert thread pool sizes to integers
1212
1539
  * Detect when the jruby daemon child doesn't start properly
1213
1540
  * Fix typo in CLI help
1214
- * Improve the logging output when hijack is used. Fixes #332
1541
+ * Improve the logging output when hijack is used. Fixes [#332]
1215
1542
  * Remove unnecessary thread pool size conversions
1216
- * Setup :worker_boot as an Array. Fixes #317
1217
- * 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]
1218
1545
 
1219
1546
 
1220
1547
  ## 2.3.2 / 2013-07-08
1221
1548
 
1222
1549
  * 1 bug fix:
1223
-
1224
1550
  * Move starting control server to after daemonization.
1225
1551
 
1226
1552
  ## 2.3.1 / 2013-07-06
1227
1553
 
1228
1554
  * 2 bug fixes:
1229
-
1230
1555
  * Include the right files in the Manifest.
1231
- * Disable inheriting connections on restart on windows. Fixes #166
1556
+ * Disable inheriting connections on restart on windows. Fixes [#166]
1232
1557
 
1233
1558
  * 1 doc change:
1234
1559
  * Better document some platform constraints
@@ -1236,47 +1561,39 @@ The "clearly I don't have enough tests for the config" release.
1236
1561
  ## 2.3.0 / 2013-07-05
1237
1562
 
1238
1563
  * 1 major bug fix:
1239
-
1240
1564
  * Stabilize control server, add support in cluster mode
1241
1565
 
1242
1566
  * 5 minor bug fixes:
1243
-
1244
1567
  * Add ability to cleanup stale unix sockets
1245
- * Check status data better. Fixes #292
1246
- * Convert raw IO errors to ConnectionError. Fixes #274
1247
- * Fix sending Content-Type and Content-Length for no body status. Fixes #304
1248
- * 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]
1249
1572
 
1250
1573
  * 2 internal changes:
1251
-
1252
1574
  * Refactored modes into seperate classes that CLI uses
1253
1575
  * Changed CLI to take an Events object instead of stdout/stderr (API change)
1254
1576
 
1255
1577
  ## 2.2.2 / 2013-07-02
1256
1578
 
1257
1579
  * 1 bug fix:
1258
-
1259
1580
  * Fix restart_command in the config
1260
1581
 
1261
1582
  ## 2.2.1 / 2013-07-02
1262
1583
 
1263
1584
  * 1 minor feature:
1264
-
1265
1585
  * Introduce preload flag
1266
1586
 
1267
1587
  * 1 bug fix:
1268
-
1269
1588
  * Pass custom restart command in JRuby
1270
1589
 
1271
1590
  ## 2.2.0 / 2013-07-01
1272
1591
 
1273
1592
  * 1 major feature:
1274
-
1275
1593
  * Add ability to preload rack app
1276
1594
 
1277
1595
  * 2 minor bugfixes:
1278
-
1279
- * Don't leak info when not in development. Fixes #256
1596
+ * Don't leak info when not in development. Fixes [#256]
1280
1597
  * Load the app, then bind the ports
1281
1598
 
1282
1599
  ## 2.1.1 / 2013-06-20
@@ -1284,7 +1601,7 @@ The "clearly I don't have enough tests for the config" release.
1284
1601
  * 2 minor bug fixes:
1285
1602
 
1286
1603
  * Fix daemonization on jruby
1287
- * Load the application before daemonizing. Fixes #285
1604
+ * Load the application before daemonizing. Fixes [#285]
1288
1605
 
1289
1606
  ## 2.1.0 / 2013-06-18
1290
1607
 
@@ -1294,7 +1611,7 @@ The "clearly I don't have enough tests for the config" release.
1294
1611
  * Support systemd socket activation
1295
1612
 
1296
1613
  * 15 bug fixes:
1297
- * Deal with pipes closing while stopping. Fixes #270
1614
+ * Deal with pipes closing while stopping. Fixes [#270]
1298
1615
  * Error out early if there is no app configured
1299
1616
  * Handle ConnectionError rather than the lowlevel exceptions
1300
1617
  * tune with `-C` config file and `on_worker_boot`
@@ -1303,11 +1620,11 @@ The "clearly I don't have enough tests for the config" release.
1303
1620
  * Make sure to use bytesize instead of size (MiniSSL write)
1304
1621
  * Fix an error in puma-manager.conf
1305
1622
  * fix: stop leaking sockets on restart (affects ruby 1.9.3 or before)
1306
- * Ignore errors on the cross-thread pipe. Fixes #246
1623
+ * Ignore errors on the cross-thread pipe. Fixes [#246]
1307
1624
  * Ignore errors while uncorking the socket (it might already be closed)
1308
- * Ignore the body on a HEAD request. Fixes #278
1309
- * Handle all engine data when possible. Fixes #251.
1310
- * 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]
1311
1628
  * Handle errors from the server better
1312
1629
 
1313
1630
  * 3 doc changes:
@@ -1318,7 +1635,6 @@ The "clearly I don't have enough tests for the config" release.
1318
1635
  ## 2.0.1 / 2013-04-30
1319
1636
 
1320
1637
  * 1 bug fix:
1321
-
1322
1638
  * Fix not starting on JRuby properly
1323
1639
 
1324
1640
  ## 2.0.0 / 2013-04-29
@@ -1330,8 +1646,8 @@ RailsConf 2013 edition!
1330
1646
  * Minor doc fixes in the README.md, Capistrano section
1331
1647
 
1332
1648
  * 2 bug fixes:
1333
- * Fix reading RACK_ENV properly. Fixes #234
1334
- * 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]
1335
1651
 
1336
1652
  * 3 minor changes:
1337
1653
  * Fix capistrano recipe
@@ -1341,7 +1657,6 @@ RailsConf 2013 edition!
1341
1657
  ## 2.0.0.b7 / 2013-03-18
1342
1658
 
1343
1659
  * 5 minor enhancements:
1344
-
1345
1660
  * Add -q option for :start
1346
1661
  * Add -V, --version
1347
1662
  * Add default Rack handler helper
@@ -1349,30 +1664,27 @@ RailsConf 2013 edition!
1349
1664
  * Set worker directory from configuration file
1350
1665
 
1351
1666
  * 12 bug fixes:
1352
-
1353
- * Close the binder in the right place. Fixes #192
1354
- * 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]
1355
1669
  * Make sure that the default port is 80 when the request doesn't include HTTP_X_FORWARDED_PROTO.
1356
1670
  * Prevent Errno::EBADF errors on restart when running ruby 2.0
1357
1671
  * Record the proper @master_pid
1358
1672
  * Respect the header HTTP_X_FORWARDED_PROTO when the host doesn't include a port number.
1359
1673
  * Retry EAGAIN/EWOULDBLOCK during syswrite
1360
- * Run exec properly to restart. Fixes #154
1674
+ * Run exec properly to restart. Fixes [#154]
1361
1675
  * Set Rack run_once to false
1362
- * Syncronize all access to @timeouts. Fixes #208
1363
- * 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]
1364
1678
  * Prevent crash when all workers are gone
1365
1679
 
1366
1680
  ## 2.0.0.b6 / 2013-02-06
1367
1681
 
1368
1682
  * 2 minor enhancements:
1369
-
1370
1683
  * Add hook for running when a worker boots
1371
1684
  * Advertise the Configuration object for apps to use.
1372
1685
 
1373
1686
  * 1 bug fix:
1374
-
1375
- * Change directory in working during upgrade. Fixes #185
1687
+ * Change directory in working during upgrade. Fixes [#185]
1376
1688
 
1377
1689
  ## 2.0.0.b5 / 2013-02-05
1378
1690
 
@@ -1385,16 +1697,16 @@ RailsConf 2013 edition!
1385
1697
  * Add config file option to specify the restart command
1386
1698
 
1387
1699
  * 5 bug fixes:
1388
- * Cleanup pipes properly. Fixes #182
1389
- * Daemonize earlier so that we don't lose app threads. Fixes #183
1390
- * Drain the notification pipe. Fixes #176, thanks @cryo28
1391
- * 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]
1392
1704
  * Redirect IO properly and emit message for checkpointing
1393
1705
 
1394
1706
  ## 2.0.0.b4 / 2012-12-12
1395
1707
 
1396
1708
  * 4 bug fixes:
1397
- * Properly check #syswrite's value for variable sized buffers. Fixes #170
1709
+ * Properly check #syswrite's value for variable sized buffers. Fixes [#170]
1398
1710
  * Shutdown status server properly
1399
1711
  * Handle char vs byte and mixing syswrite with write properly
1400
1712
  * made MiniSSL validate key/cert file existence
@@ -1414,12 +1726,12 @@ RailsConf 2013 edition!
1414
1726
  * Add options to daemonize puma
1415
1727
 
1416
1728
  * 7 bug fixes:
1417
- * Reset the IOBuffer properly. Fixes #148
1729
+ * Reset the IOBuffer properly. Fixes [#148]
1418
1730
  * Shutdown gracefully on JRuby with Ctrl-C
1419
- * Various methods to get newrelic to start. Fixes #128
1731
+ * Various methods to get newrelic to start. Fixes [#128]
1420
1732
  * fixing syntax error at capistrano recipe
1421
1733
  * Force ECONNRESET when read returns nil
1422
- * 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]
1423
1735
  * allow for alternate locations for status app
1424
1736
 
1425
1737
  ## 2.0.0.b1 / 2012-09-11
@@ -1471,7 +1783,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1471
1783
 
1472
1784
  * 6 bug fixes:
1473
1785
  * Define RSTRING_NOT_MODIFIED for Rubinius
1474
- * Convert status to integer. Fixes #123
1786
+ * Convert status to integer. Fixes [#123]
1475
1787
  * Delete pidfile when stopping the server
1476
1788
  * Allow compilation with -Werror=format-security option
1477
1789
  * Fix wrong HTTP version for a HTTP/1.0 request
@@ -1479,7 +1791,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1479
1791
 
1480
1792
  * 3 minor features:
1481
1793
  * Added support for setting RACK_ENV via the CLI, config file, and rack app
1482
- * Allow Server#run to run sync. Fixes #111
1794
+ * Allow Server#run to run sync. Fixes [#111]
1483
1795
  * Puma can now run on windows
1484
1796
 
1485
1797
  ## 1.4.0 / 2012-06-04
@@ -1494,7 +1806,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1494
1806
 
1495
1807
  * 2 bug fixes:
1496
1808
  * use #bytesize instead of #length for Content-Length header
1497
- * Use StringIO properly. Fixes #98
1809
+ * Use StringIO properly. Fixes [#98]
1498
1810
 
1499
1811
  ## 1.3.0 / 2012-05-08
1500
1812
 
@@ -1503,10 +1815,10 @@ be added back in a future date when a java Puma::MiniSSL is added.
1503
1815
  * Add -I option to specify $LOAD_PATH directories
1504
1816
 
1505
1817
  * 4 bug fixes:
1506
- * 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]
1507
1819
  * Make NullIO#read mimic IO#read
1508
- * Only stop the status server if it's started. Fixes #84
1509
- * 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]
1510
1822
 
1511
1823
  * 1 new contributor:
1512
1824
  * Jesse Cooke
@@ -1514,58 +1826,49 @@ be added back in a future date when a java Puma::MiniSSL is added.
1514
1826
  ## 1.2.2 / 2012-04-28
1515
1827
 
1516
1828
  * 4 bug fixes:
1517
-
1518
1829
  * Report a lowlevel error to stderr
1519
1830
  * Set a fallback SERVER_NAME and SERVER_PORT
1520
- * Keep the encoding of the body correct. Fixes #79
1831
+ * Keep the encoding of the body correct. Fixes [#79]
1521
1832
  * show error.to_s along with backtrace for low-level error
1522
1833
 
1523
1834
  ## 1.2.1 / 2012-04-11
1524
1835
 
1525
- 1 bug fix:
1526
-
1527
- * Fix rack.url_scheme for SSL servers. Fixes #65
1836
+ * 1 bug fix:
1837
+ * Fix rack.url_scheme for SSL servers. Fixes [#65]
1528
1838
 
1529
1839
  ## 1.2.0 / 2012-04-11
1530
1840
 
1531
- 1 major feature:
1532
-
1533
- * When possible, the internal restart does a "hot restart" meaning
1534
- the server sockets remains open, so no connections are lost.
1535
-
1536
- 1 minor feature:
1537
-
1538
- * More helpful fallback error message
1539
-
1540
- 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.
1541
1844
 
1542
- * Pass the proper args to unknown_error. Fixes #54, #58
1543
- * Stop the control server before restarting. Fixes #61
1544
- * Fix reporting https only on a true SSL connection
1545
- * Set the default content type to 'text/plain'. Fixes #63
1546
- * Use REUSEADDR. Fixes #60
1547
- * Shutdown gracefully on SIGTERM. Fixes #53
1845
+ * 1 minor feature:
1846
+ * More helpful fallback error message
1548
1847
 
1549
- 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]
1550
1855
 
1551
- * Seamus Abshere
1552
- * Steve Richert
1856
+ * 2 new contributors:
1857
+ * Seamus Abshere
1858
+ * Steve Richert
1553
1859
 
1554
1860
  ## 1.1.1 / 2012-03-30
1555
1861
 
1556
- 1 bugfix:
1557
-
1558
- * Include puma/compat.rb in the gem (oops!)
1862
+ * 1 bugfix:
1863
+ * Include puma/compat.rb in the gem (oops!)
1559
1864
 
1560
1865
  ## 1.1.0 / 2012-03-30
1561
1866
 
1562
- 1 bugfix:
1563
-
1564
- * Make sure that the unix socket has the perms 0777 by default
1565
-
1566
- 1 minor feature:
1867
+ * 1 bugfix:
1868
+ * Make sure that the unix socket has the perms 0777 by default
1567
1869
 
1568
- * 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
1569
1872
 
1570
1873
  ## 1.0.0 / 2012-03-29
1571
1874
 
@@ -1575,7 +1878,706 @@ be added back in a future date when a java Puma::MiniSSL is added.
1575
1878
  ## Master
1576
1879
 
1577
1880
  * Features
1578
- * Your feature goes here (#Github Number)
1881
+ * Your feature goes here <Most recent on the top, like GitHub> (#Github Number)
1579
1882
 
1580
1883
  * Bugfixes
1581
- * 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"