History.md in piesync-puma-3.12.6.1 vs History.md in piesync-puma-5.4.0.1

- old
+ new

@@ -1,243 +1,601 @@ -## Master +## 5.4.0 / 2021-07-28 -* x features +* Features + * Better/expanded names for threadpool threads ([#2657]) + * Allow pkg_config for OpenSSL ([#2648], [#1412]) + * Add `rack_url_scheme` to Puma::DSL, allows setting of `rack.url_scheme` header ([#2586], [#2569]) -* x bugfixes +* Bugfixes + * `Binder#parse` - allow for symlinked unix path, add create_activated_fds debug ENV ([#2643], [#2638]) + * Fix deprecation warning: minissl.c - Use Random.bytes if available ([#2642]) + * Client certificates: set session id context while creating SSLContext ([#2633]) + * Fix deadlock issue in thread pool ([#2656]) +* Refactor + * Replace `IO.select` with `IO#wait_*` when checking a single IO ([#2666]) +## 5.3.2 / 2021-05-21 + +* Bugfixes + * Gracefully handle Rack not accepting CLI options ([#2630], [#2626]) + * Fix sigterm misbehavior ([#2629]) + * Improvements to keepalive-connection shedding ([#2628]) + +## 5.3.1 / 2021-05-11 + +* Security + * Close keepalive connections after the maximum number of fast inlined requests (CVE-2021-29509) ([#2625]) + +## 5.3.0 / 2021-05-07 + +* Features + * Add support for Linux's abstract sockets ([#2564], [#2526]) + * Add debug to worker timeout and startup ([#2559], [#2528]) + * Print warning when running one-worker cluster ([#2565], [#2534]) + * Don't close systemd activated socket on pumactl restart ([#2563], [#2504]) + +* Bugfixes + * systemd - fix event firing ([#2591], [#2572]) + * Immediately unlink temporary files ([#2613]) + * Improve parsing of HTTP_HOST header ([#2605], [#2584]) + * Handle fatal error that has no backtrace ([#2607], [#2552]) + * Fix timing out requests too early ([#2606], [#2574]) + * Handle segfault in Ruby 2.6.6 on thread-locals ([#2567], [#2566]) + * Server#closed_socket? - parameter may be a MiniSSL::Socket ([#2596]) + * Define UNPACK_TCP_STATE_FROM_TCP_INFO in the right place ([#2588], [#2556]) + * request.rb - fix chunked assembly for ascii incompatible encodings, add test ([#2585], [#2583]) + +* Performance + * Reset peerip only if remote_addr_header is set ([#2609]) + * Reduce puma_parser struct size ([#2590]) + +* Refactor + * Refactor drain on shutdown ([#2600]) + * Micro optimisations in `wait_for_less_busy_worker` feature ([#2579]) + * Lots of test fixes + +## 5.2.2 / 2021-02-22 + +* Bugfixes + * Add `#flush` and `#sync` methods to `Puma::NullIO` ([#2553]) + * Restore `sync=true` on `STDOUT` and `STDERR` streams ([#2557]) + +## 5.2.1 / 2021-02-05 + +* Bugfixes + * Fix TCP cork/uncork operations to work with ssl clients ([#2550]) + * Require rack/common_logger explicitly if :verbose is true ([#2547]) + * MiniSSL::Socket#write - use data.byteslice(wrote..-1) ([#2543]) + * Set `@env[CONTENT_LENGTH]` value as string. ([#2549]) + +## 5.2.0 / 2021-01-27 + +* Features + * 10x latency improvement for MRI on ssl connections by reducing overhead ([#2519]) + * Add option to specify the desired IO selector backend for libev ([#2522]) + * Add ability to set OpenSSL verification flags (MRI only) ([#2490]) + * Uses `flush` after writing messages to avoid mutating $stdout and $stderr using `sync=true` ([#2486]) + +* Bugfixes + * MiniSSL - Update dhparam to 2048 bit for use with SSL_CTX_set_tmp_dh ([#2535]) + * Change 'Goodbye!' message to be output after listeners are closed ([#2529]) + * Fix ssl bind logging with 0.0.0.0 and localhost ([#2533]) + * Fix compiler warnings, but skipped warnings related to ragel state machine generated code ([#1953]) + * Fix phased restart errors related to nio4r gem when using the Puma control server ([#2516]) + * Add `#string` method to `Puma::NullIO` ([#2520]) + * Fix binding via Rack handler to IPv6 addresses ([#2521]) + +* Refactor + * Refactor MiniSSL::Context on MRI, fix MiniSSL::Socket#write ([#2519]) + * Remove `Server#read_body` ([#2531]) + * Fail build if compiling extensions raises warnings on GH Actions, configurable via `MAKE_WARNINGS_INTO_ERRORS` ([#1953]) + +## 5.1.1 / 2020-12-10 + +* Bugfixes + * Fix over eager matching against banned header names ([#2510]) + +## 5.1.0 / 2020-11-30 + +* Features + * Phased restart availability is now always logged, even if it is not available. + * Prints the loaded configuration if the environment variable `PUMA_LOG_CONFIG` is present ([#2472]) + * Integrate with systemd's watchdog and notification features ([#2438]) + * Adds max_fast_inline as a configuration option for the Server object ([#2406]) + * You can now fork workers from worker 0 using SIGURG w/o fork_worker enabled [#2449] + * Add option to bind to systemd activated sockets ([#2362]) + * Add compile option to change the `QUERY_STRING` max length ([#2485]) + +* Bugfixes + * Fix JRuby handling in Puma::DSL#ssl_bind ([#2489]) + * control_cli.rb - all normal output should be to @stdout ([#2487]) + * Catch 'Error in reactor loop escaped: mode not supported for this object: r' ([#2477]) + * Ignore Rails' reaper thread (and any thread marked forksafe) for warning ([#2475]) + * Ignore illegal (by Rack spec) response header ([#2439]) + * Close idle connections immediately on shutdown ([#2460]) + * Fix some instances of phased restart errors related to the `json` gem ([#2473]) + * Remove use of `json` gem to fix phased restart errors ([#2479]) + * Fix grouping regexp of ILLEGAL_HEADER_KEY_REGEX ([#2495]) + +## 5.0.4 / 2020-10-27 + +* Bugfixes + * Pass preloaded application into new workers if available when using `preload_app` ([#2461], [#2454]) + +## 5.0.3 / 2020-10-26 + +* Bugfixes + * Add Client#io_ok?, check before Reactor#register ([#2432]) + * Fix hang on shutdown in refork ([#2442]) + * Fix `Bundler::GemNotFound` errors for `nio4r` gem during phased restarts ([#2427], [#2018]) + * Server run thread safety fix ([#2435]) + * Fire `on_booted` after server starts ([#2431], [#2212]) + * Cleanup daemonization in rc.d script ([#2409]) + +* Refactor + * Remove accept_nonblock.rb, add test_integration_ssl.rb ([#2448]) + * Refactor status.rb - dry it up a bit ([#2450]) + * Extract req/resp methods to new request.rb from server.rb ([#2419]) + * Refactor Reactor and Client request buffering ([#2279]) + * client.rb - remove JRuby specific 'finish' code ([#2412]) + * Consolidate fast_write calls in Server, extract early_hints assembly ([#2405]) + * Remove upstart from docs ([#2408]) + * Extract worker process into separate class ([#2374]) + * Consolidate option handling in Server, Server small refactors, doc changes ([#2389]) + +## 5.0.2 / 2020-09-28 + +* Bugfixes + * Reverted API changes to Server. + +## 5.0.1 / 2020-09-28 + +* Bugfixes + * Fix LoadError in CentOS 8 ([#2381]) + * Better error handling during force shutdown ([#2271]) + * Prevent connections from entering Reactor after shutdown begins ([#2377]) + * Fix error backtrace debug logging && Do not log request dump if it is not parsed ([#2376]) + * Split TCP_CORK and TCP_INFO ([#2372]) + * Do not log EOFError when a client connection is closed without write ([#2384]) + +* Refactor + * Change Events#ssl_error signature from (error, peeraddr, peercert) to (error, ssl_socket) ([#2375]) + * Consolidate option handling in Server, Server small refactors, doc chang ([#2373]) + +## 5.0.0 / 2020-09-17 + +* Features + * Allow compiling without OpenSSL and dynamically load files needed for SSL, add 'no ssl' CI ([#2305]) + * EXPERIMENTAL: Add `fork_worker` option and `refork` command for reduced memory usage by forking from a worker process instead of the master process. ([#2099]) + * 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]). + * EXPERIMENTAL: Added `nakayoshi_fork` option. Reduce memory usage in preloaded cluster-mode apps by GCing before fork and compacting, where available. ([#2093], [#2256]) + * Added pumactl `thread-backtraces` command to print thread backtraces ([#2054]) + * Added incrementing `requests_count` to `Puma.stats`. ([#2106]) + * Increased maximum URI path length from 2048 to 8192 bytes ([#2167], [#2344]) + * `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]) + * Faster phased restart and worker timeout ([#2220]) + * Added `state_permission` to config DSL to set state file permissions ([#2238]) + * Added `Puma.stats_hash`, which returns a stats in Hash instead of a JSON string ([#2086], [#2253]) + * `rack.multithread` and `rack.multiprocess` now dynamically resolved by `max_thread` and `workers` respectively ([#2288]) + +* Deprecations, Removals and Breaking API Changes + * `--control` has been removed. Use `--control-url` ([#1487]) + * `worker_directory` has been removed. Use `directory`. + * min_threads now set by environment variables PUMA_MIN_THREADS and MIN_THREADS. ([#2143]) + * max_threads now set by environment variables PUMA_MAX_THREADS and MAX_THREADS. ([#2143]) + * max_threads default to 5 in MRI or 16 for all other interpreters. ([#2143]) + * `preload_app!` is on by default if number of workers > 1 and set via `WEB_CONCURRENCY` ([#2143]) + * Puma::Plugin.workers_supported? has been removed. Use Puma.forkable? instead. ([#2143]) + * `tcp_mode` has been removed without replacement. ([#2169]) + * Daemonization has been removed without replacement. ([#2170]) + * Changed #connected_port to #connected_ports ([#2076]) + * Configuration: `environment` is read from `RAILS_ENV`, if `RACK_ENV` can't be found ([#2022]) + * Log binding on http:// for TCP bindings to make it clickable ([#2300]) + +* Bugfixes + * Fix JSON loading issues on phased-restarts ([#2269]) + * Improve shutdown reliability ([#2312], [#2338]) + * Close client http connections made to an ssl server with TLSv1.3 ([#2116]) + * Do not set user_config to quiet by default to allow for file config ([#2074]) + * Always close SSL connection in Puma::ControlCLI ([#2211]) + * Windows update extconf.rb for use with ssp and varied Ruby/MSYS2 combinations ([#2069]) + * Ensure control server Unix socket is closed on shutdown ([#2112]) + * Preserve `BUNDLE_GEMFILE` env var when using `prune_bundler` ([#1893]) + * Send 408 request timeout even when queue requests is disabled ([#2119]) + * Rescue IO::WaitReadable instead of EAGAIN for blocking read ([#2121]) + * Ensure `BUNDLE_GEMFILE` is unspecified in workers if unspecified in master when using `prune_bundler` ([#2154]) + * Rescue and log exceptions in hooks defined by users (on_worker_boot, after_worker_fork etc) ([#1551]) + * Read directly from the socket in #read_and_drop to avoid raising further SSL errors ([#2198]) + * Set `Connection: closed` header when queue requests is disabled ([#2216]) + * Pass queued requests to thread pool on server shutdown ([#2122]) + * Fixed a few minor concurrency bugs in ThreadPool that may have affected non-GVL Rubies ([#2220]) + * Fix `out_of_band` hook never executed if the number of worker threads is > 1 ([#2177]) + * Fix ThreadPool#shutdown timeout accuracy ([#2221]) + * Fix `UserFileDefaultOptions#fetch` to properly use `default` ([#2233]) + * Improvements to `out_of_band` hook ([#2234]) + * Prefer the rackup file specified by the CLI ([#2225]) + * Fix for spawning subprocesses with fork_worker option ([#2267]) + * Set `CONTENT_LENGTH` for chunked requests ([#2287]) + * JRuby - Add Puma::MiniSSL::Engine#init? and #teardown methods, run all SSL tests ([#2317]) + * Improve shutdown reliability ([#2312]) + * Resolve issue with threadpool waiting counter decrement when thread is killed + * Constrain rake-compiler version to 0.9.4 to fix `ClassNotFound` exception when using MiniSSL with Java8. + * Fix recursive `prune_bundler` ([#2319]). + * Ensure that TCP_CORK is usable + * Fix corner case when request body is chunked ([#2326]) + * Fix filehandle leak in MiniSSL ([#2299]) + +* Refactor + * Remove unused loader argument from Plugin initializer ([#2095]) + * Simplify `Configuration.random_token` and remove insecure fallback ([#2102]) + * Simplify `Runner#start_control` URL parsing ([#2111]) + * Removed the IOBuffer extension and replaced with Ruby ([#1980]) + * Update `Rack::Handler::Puma.run` to use `**options` ([#2189]) + * ThreadPool concurrency refactoring ([#2220]) + * JSON parse cluster worker stats instead of regex ([#2124]) + * Support parallel tests in verbose progress reporting ([#2223]) + * Refactor error handling in server accept loop ([#2239]) + +## 4.3.8 / 2021-05-11 + +* Security + * Close keepalive connections after the maximum number of fast inlined requests (CVE-2021-29509) ([#2625]) + +## 4.3.7 / 2020-11-30 + +* Bugfixes + * Backport set CONTENT_LENGTH for chunked requests (Originally: [#2287], backport: [#2496]) + +## 4.3.6 / 2020-09-05 + +* Bugfixes + * Explicitly include ctype.h to fix compilation warning and build error on macOS with Xcode 12 ([#2304]) + * Don't require json at boot ([#2269]) + +## 4.3.4/4.3.5 and 3.12.5/3.12.6 / 2020-05-22 + +Each patchlevel release contains a separate security fix. We recommend simply upgrading to 4.3.5/3.12.6. + +* Security + * Fix: Fixed two separate HTTP smuggling vulnerabilities that used the Transfer-Encoding header. CVE-2020-11076 and CVE-2020-11077. + ## 4.3.3 and 3.12.4 / 2020-02-28 - * Bugfixes - * Fix: Fixes a problem where we weren't splitting headers correctly on newlines (#2132) - * Security - * Fix: Prevent HTTP Response splitting via CR in early hints. -## 4.3.2 and 3.12.3 / 2020-02-27 +* Bugfixes + * Fix: Fixes a problem where we weren't splitting headers correctly on newlines ([#2132]) +* Security + * Fix: Prevent HTTP Response splitting via CR in early hints. CVE-2020-5249. +## 4.3.2 and 3.12.3 / 2020-02-27 (YANKED) + * Security * Fix: Prevent HTTP Response splitting via CR/LF in header values. CVE-2020-5247. ## 4.3.1 and 3.12.2 / 2019-12-05 * Security * Fix: a poorly-behaved client could use keepalive requests to monopolize Puma's reactor and create a denial of service attack. CVE-2019-16770. +## 4.3.0 / 2019-11-07 + +* Features + * Strip whitespace at end of HTTP headers ([#2010]) + * Optimize HTTP parser for JRuby ([#2012]) + * Add SSL support for the control app and cli ([#2046], [#2052]) + +* Bugfixes + * Fix Errno::EINVAL when SSL is enabled and browser rejects cert ([#1564]) + * Fix pumactl defaulting puma to development if an environment was not specified ([#2035]) + * Fix closing file stream when reading pid from pidfile ([#2048]) + * Fix a typo in configuration option `--extra_runtime_dependencies` ([#2050]) + +## 4.2.1 / 2019-10-07 + +* 3 bugfixes + * Fix socket activation of systemd (pre-existing) unix binder files ([#1842], [#1988]) + * Deal with multiple calls to bind correctly ([#1986], [#1994], [#2006]) + * Accepts symbols for `verify_mode` ([#1222]) + +## 4.2.0 / 2019-09-23 + +* 6 features + * Pumactl has a new -e environment option and reads `config/puma/<environment>.rb` config files ([#1885]) + * Semicolons are now allowed in URL paths (MRI only), useful for Angular or Redmine ([#1934]) + * Allow extra dependencies to be defined when using prune_bundler ([#1105]) + * Puma now reports the correct port when binding to port 0, also reports other listeners when binding to localhost ([#1786]) + * Sending SIGINFO to any Puma worker now prints currently active threads and their backtraces ([#1320]) + * Puma threads all now have their name set on Ruby 2.3+ ([#1968]) +* 4 bugfixes + * Fix some misbehavior with phased restart and externally SIGTERMed workers ([#1908], [#1952]) + * Fix socket closing on error ([#1941]) + * Removed unnecessary SIGINT trap for JRuby that caused some race conditions ([#1961]) + * Fix socket files being left around after process stopped ([#1970]) +* Absolutely thousands of lines of test improvements and fixes thanks to @MSP-Greg + +## 4.1.1 / 2019-09-05 + +* 3 bugfixes + * Revert our attempt to not dup STDOUT/STDERR ([#1946]) + * Fix socket close on error ([#1941]) + * Fix workers not shutting down correctly ([#1908]) + +## 4.1.0 / 2019-08-08 + +* 4 features + * Add REQUEST_PATH on parse error message ([#1831]) + * You can now easily add custom log formatters with the `log_formatter` config option ([#1816]) + * Puma.stats now provides process start times ([#1844]) + * Add support for disabling TLSv1.1 ([#1836]) + +* 7 bugfixes + * Fix issue where Puma was creating zombie process entries ([#1887]) + * Fix bugs with line-endings and chunked encoding ([#1812]) + * RACK_URL_SCHEME is now set correctly in all conditions ([#1491]) + * We no longer mutate global STDOUT/STDERR, particularly the sync setting ([#1837]) + * SSL read_nonblock no longer blocks ([#1857]) + * Swallow connection errors when sending early hints ([#1822]) + * Backtrace no longer dumped when invalid pumactl commands are run ([#1863]) + +* 5 other + * Avoid casting worker_timeout twice ([#1838]) + * Removed a call to private that wasn't doing anything ([#1882]) + * README, Rakefile, docs and test cleanups ([#1848], [#1847], [#1846], [#1853], #1859, [#1850], [#1866], [#1870], [#1872], [#1833], [#1888]) + * Puma.io has proper documentation now (https://puma.io/puma/) + * Added the Contributor Covenant CoC + +* 1 known issue + * Some users are still experiencing issues surrounding socket activation and Unix sockets ([#1842]) + +## 4.0.1 / 2019-07-11 + +* 2 bugfixes + * Fix socket removed after reload - should fix problems with systemd socket activation. ([#1829]) + * 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]) +* 1 other + * Removed unnecessary RUBY_VERSION checks. ([#1827]) + +## 4.0.0 / 2019-06-25 + +* 9 features + * Add support for disabling TLSv1.0 ([#1562]) + * Request body read time metric ([#1569]) + * Add out_of_band hook ([#1648]) + * Re-implement (native) IOBuffer for JRuby ([#1691]) + * Min worker timeout ([#1716]) + * Add option to suppress SignalException on SIGTERM ([#1690]) + * Allow mutual TLS CA to be set using `ssl_bind` DSL ([#1689]) + * Reactor now uses nio4r instead of `select` ([#1728]) + * Add status to pumactl with pidfile ([#1824]) + +* 10 bugfixes + * Do not accept new requests on shutdown ([#1685], [#1808]) + * Fix 3 corner cases when request body is chunked ([#1508]) + * Change pid existence check's condition branches ([#1650]) + * Don't call .stop on a server that doesn't exist ([#1655]) + * Implemented NID_X9_62_prime256v1 (P-256) curve over P-521 ([#1671]) + * Fix @notify.close can't modify frozen IOError (RuntimeError) ([#1583]) + * Fix Java 8 support ([#1773]) + * Fix error `uninitialized constant Puma::Cluster` ([#1731]) + * Fix `not_token` being able to be set to true ([#1803]) + * Fix "Hang on SIGTERM with ruby 2.6 in clustered mode" (PR [#1741], [#1674], [#1720], [#1730], [#1755]) + ## 3.12.1 / 2019-03-19 * 1 features - * Internal strings are frozen (#1649) + * Internal strings are frozen ([#1649]) * 3 bugfixes - * Fix chunked ending check (#1607) - * Rack handler should use provided default host (#1700) - * Better support for detecting runtimes that support `fork` (#1630) + * Fix chunked ending check ([#1607]) + * Rack handler should use provided default host ([#1700]) + * Better support for detecting runtimes that support `fork` ([#1630]) ## 3.12.0 / 2018-07-13 * 5 features: - * You can now specify which SSL ciphers the server should support, default is unchanged (#1478) - * The setting for Puma's `max_threads` is now in `Puma.stats` (#1604) - * Pool capacity is now in `Puma.stats` (#1579) - * Installs restricted to Ruby 2.2+ (#1506) - * `--control` is now deprecated in favor of `--control-url` (#1487) + * You can now specify which SSL ciphers the server should support, default is unchanged ([#1478]) + * The setting for Puma's `max_threads` is now in `Puma.stats` ([#1604]) + * Pool capacity is now in `Puma.stats` ([#1579]) + * Installs restricted to Ruby 2.2+ ([#1506]) + * `--control` is now deprecated in favor of `--control-url` ([#1487]) * 2 bugfixes: - * 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) - * In a test env puma now emits the stack on an exception (#1557) + * 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]) + * In a test env puma now emits the stack on an exception ([#1557]) ## 3.11.4 / 2018-04-12 * 2 features: - * Manage puma as a service using rc.d (#1529) - * Server stats are now available from a top level method (#1532) + * Manage puma as a service using rc.d ([#1529]) + * Server stats are now available from a top level method ([#1532]) * 5 bugfixes: - * Fix parsing CLI options (#1482) - * Order of stderr and stdout is made before redirecting to a log file (#1511) - * Init.d fix of `ps -p` to check if pid exists (#1545) - * Early hints bugfix (#1550) - * Purge interrupt queue when closing socket fails (#1553) + * Fix parsing CLI options ([#1482]) + * Order of stderr and stdout is made before redirecting to a log file ([#1511]) + * Init.d fix of `ps -p` to check if pid exists ([#1545]) + * Early hints bugfix ([#1550]) + * Purge interrupt queue when closing socket fails ([#1553]) ## 3.11.3 / 2018-03-05 * 3 bugfixes: - * Add closed? to MiniSSL::Socket for use in reactor (#1510) - * Handle EOFError at the toplevel of the server threads (#1524) (#1507) - * Deal with zero sized bodies when using SSL (#1483) + * Add closed? to MiniSSL::Socket for use in reactor ([#1510]) + * Handle EOFError at the toplevel of the server threads ([#1524]) ([#1507]) + * Deal with zero sized bodies when using SSL ([#1483]) ## 3.11.2 / 2018-01-19 * 1 bugfix: * Deal with read\_nonblock returning nil early ## 3.11.1 / 2018-01-18 * 1 bugfix: - * Handle read\_nonblock returning nil when the socket close (#1502) + * Handle read\_nonblock returning nil when the socket close ([#1502]) ## 3.11.0 / 2017-11-20 * 2 features: - * HTTP 103 Early Hints (#1403) - * 421/451 status codes now have correct status messages attached (#1435) + * HTTP 103 Early Hints ([#1403]) + * 421/451 status codes now have correct status messages attached ([#1435]) * 9 bugfixes: - * Environment config files (/config/puma/<ENV>.rb) load correctly (#1340) - * Specify windows dependencies correctly (#1434, #1436) - * puma/events required in test helper (#1418) - * Correct control CLI's option help text (#1416) - * Remove a warning for unused variable in mini_ssl (#1409) - * Correct pumactl docs argument ordering (#1427) - * Fix an uninitialized variable warning in server.rb (#1430) - * Fix docs typo/error in Launcher init (#1429) - * Deal with leading spaces in RUBYOPT (#1455) + * Environment config files (/config/puma/<ENV>.rb) load correctly ([#1340]) + * Specify windows dependencies correctly ([#1434], [#1436]) + * puma/events required in test helper ([#1418]) + * Correct control CLI's option help text ([#1416]) + * Remove a warning for unused variable in mini_ssl ([#1409]) + * Correct pumactl docs argument ordering ([#1427]) + * Fix an uninitialized variable warning in server.rb ([#1430]) + * Fix docs typo/error in Launcher init ([#1429]) + * Deal with leading spaces in RUBYOPT ([#1455]) * 2 other: - * Add docs about internals (#1425, #1452) - * Tons of test fixes from @MSP-Greg (#1439, #1442, #1464) + * Add docs about internals ([#1425], [#1452]) + * Tons of test fixes from @MSP-Greg ([#1439], [#1442], [#1464]) ## 3.10.0 / 2017-08-17 * 3 features: - * The status server has a new /gc and /gc-status command. (#1384) - * The persistent and first data timeouts are now configurable (#1111) - * Implemented RFC 2324 (#1392) + * The status server has a new /gc and /gc-status command. ([#1384]) + * The persistent and first data timeouts are now configurable ([#1111]) + * Implemented RFC 2324 ([#1392]) * 12 bugfixes: - * 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) - * Fix hangups with SSL and persistent connections. (#1334) - * Fix Rails double-binding to a port (#1383) - * Fix incorrect thread names (#1368) - * Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. (#1318) - * Fix compatibility with RUBYOPT="--enable-frozen-string-literal" (#1376) - * Fixed some compiler warnings (#1388) - * We actually run the integration tests in CI now (#1390) - * No longer shipping unnecessary directories in the gemfile (#1391) - * If RUBYOPT is nil, we no longer blow up on restart. (#1385) - * Correct response to SIGINT (#1377) - * Proper exit code returned when we receive a TERM signal (#1337) + * 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]) + * Fix hangups with SSL and persistent connections. ([#1334]) + * Fix Rails double-binding to a port ([#1383]) + * Fix incorrect thread names ([#1368]) + * Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. ([#1318]) + * Fix compatibility with RUBYOPT="--enable-frozen-string-literal" ([#1376]) + * Fixed some compiler warnings ([#1388]) + * We actually run the integration tests in CI now ([#1390]) + * No longer shipping unnecessary directories in the gemfile ([#1391]) + * If RUBYOPT is nil, we no longer blow up on restart. ([#1385]) + * Correct response to SIGINT ([#1377]) + * Proper exit code returned when we receive a TERM signal ([#1337]) * 3 refactors: * Various test improvements from @grosser - * Rubocop (#1325) - * Hoe has been removed (#1395) + * Rubocop ([#1325]) + * Hoe has been removed ([#1395]) * 1 known issue: - * Socket activation doesn't work in JRuby. Their fault, not ours. (#1367) + * Socket activation doesn't work in JRuby. Their fault, not ours. ([#1367]) ## 3.9.1 / 2017-06-03 * 2 bugfixes: - * Fixed compatibility with older Bundler versions (#1314) - * Some internal test/development cleanup (#1311, #1313) + * Fixed compatibility with older Bundler versions ([#1314]) + * Some internal test/development cleanup ([#1311], [#1313]) ## 3.9.0 / 2017-06-01 * 2 features: - * The ENV is now reset to its original values when Puma restarts via USR1/USR2 (#1260) (MRI only, no JRuby support) - * Puma will no longer accept more clients than the maximum number of threads. (#1278) + * The ENV is now reset to its original values when Puma restarts via USR1/USR2 ([#1260]) (MRI only, no JRuby support) + * Puma will no longer accept more clients than the maximum number of threads. ([#1278]) * 9 bugfixes: - * Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR (#1306) - * Fix SSL/WebSocket compatibility (#1274) - * HTTP headers with empty values are no longer omitted from responses. (#1261) - * Fix a Rack env key which was set to nil. (#1259) - * peercert has been implemented for JRuby (#1248) - * Fix port settings when using rails s (#1277, #1290) - * Fix compat w/LibreSSL (#1285) - * Fix restarting Puma w/symlinks and a new Gemfile (#1282) - * Replace Dir.exists? with Dir.exist? (#1294) + * Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR ([#1306]) + * Fix SSL/WebSocket compatibility ([#1274]) + * HTTP headers with empty values are no longer omitted from responses. ([#1261]) + * Fix a Rack env key which was set to nil. ([#1259]) + * peercert has been implemented for JRuby ([#1248]) + * Fix port settings when using rails s ([#1277], [#1290]) + * Fix compat w/LibreSSL ([#1285]) + * Fix restarting Puma w/symlinks and a new Gemfile ([#1282]) + * Replace Dir.exists? with Dir.exist? ([#1294]) * 1 known issue: - * 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. + * 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. * 1 refactor: * Lots of test fixups from @grosser. ## 3.8.2 / 2017-03-14 * 1 bugfix: - * Deal with getsockopt with TCP\_INFO failing for sockets that say they're TCP but aren't really. (#1241) + * Deal with getsockopt with TCP\_INFO failing for sockets that say they're TCP but aren't really. ([#1241]) ## 3.8.1 / 2017-03-10 * 1 bugfix: - * Remove method call to method that no longer exists (#1239) + * Remove method call to method that no longer exists ([#1239]) ## 3.8.0 / 2017-03-09 * 2 bugfixes: - * Port from rack handler does not take precedence over config file in Rails 5.1.0.beta2+ and 5.0.1.rc3+ (#1234) - * The `tmp/restart.txt` plugin no longer restricts the user from running more than one server from the same folder at a time (#1226) + * Port from rack handler does not take precedence over config file in Rails 5.1.0.beta2+ and 5.0.1.rc3+ ([#1234]) + * The `tmp/restart.txt` plugin no longer restricts the user from running more than one server from the same folder at a time ([#1226]) * 1 feature: - * Closed clients are aborted to save capacity (#1227) + * Closed clients are aborted to save capacity ([#1227]) * 1 refactor: - * Bundler is no longer a dependency from tests (#1213) + * Bundler is no longer a dependency from tests ([#1213]) ## 3.7.1 / 2017-02-20 * 2 bugfixes: - * Fix typo which blew up MiniSSL (#1182) - * Stop overriding command-line options with the config file (#1203) + * Fix typo which blew up MiniSSL ([#1182]) + * Stop overriding command-line options with the config file ([#1203]) ## 3.7.0 / 2017-01-04 * 6 minor features: - * Allow rack handler to accept ssl host. (#1129) - * Refactor TTOU processing. TTOU now handles multiple signals at once. (#1165) + * Allow rack handler to accept ssl host. ([#1129]) + * Refactor TTOU processing. TTOU now handles multiple signals at once. ([#1165]) * Pickup any remaining chunk data as the next request. * Prevent short term thread churn - increased auto trim default to 30 seconds. - * Raise error when `stdout` or `stderr` is not writable. (#1175) - * Add Rack 2.0 support to gemspec. (#1068) + * Raise error when `stdout` or `stderr` is not writable. ([#1175]) + * Add Rack 2.0 support to gemspec. ([#1068]) * 5 refactors: - * Compare host and server name only once per call. (#1091) - * Minor refactor on Thread pool (#1088) + * Compare host and server name only once per call. ([#1091]) + * Minor refactor on Thread pool ([#1088]) * Removed a ton of unused constants, variables and files. * Use MRI macros when allocating heap memory - * Use hooks for on\_booted event. (#1160) + * Use hooks for on\_booted event. ([#1160]) * 14 bugfixes: - * Add eof? method to NullIO? (#1169) - * Fix Puma startup in provided init.d script (#1061) - * Fix default SSL mode back to none. (#1036) - * Fixed the issue of @listeners getting nil io (#1120) - * Make `get_dh1024` compatible with OpenSSL v1.1.0 (#1178) - * More gracefully deal with SSL sessions. Fixes #1002 - * Move puma.rb to just autoloads. Fixes #1063 - * MiniSSL: Provide write as <<. Fixes #1089 - * Prune bundler should inherit fds (#1114) - * Replace use of Process.getpgid which does not behave as intended on all platforms (#1110) - * Transfer encoding header should be downcased before comparison (#1135) - * Use same write log logic for hijacked requests. (#1081) - * Fix `uninitialized constant Puma::StateFile` (#1138) - * Fix access priorities of each level in LeveledOptions (#1118) + * Add eof? method to NullIO? ([#1169]) + * Fix Puma startup in provided init.d script ([#1061]) + * Fix default SSL mode back to none. ([#1036]) + * Fixed the issue of @listeners getting nil io ([#1120]) + * Make `get_dh1024` compatible with OpenSSL v1.1.0 ([#1178]) + * More gracefully deal with SSL sessions. Fixes [#1002] + * Move puma.rb to just autoloads. Fixes [#1063] + * MiniSSL: Provide write as <<. Fixes [#1089] + * Prune bundler should inherit fds ([#1114]) + * Replace use of Process.getpgid which does not behave as intended on all platforms ([#1110]) + * Transfer encoding header should be downcased before comparison ([#1135]) + * Use same write log logic for hijacked requests. ([#1081]) + * Fix `uninitialized constant Puma::StateFile` ([#1138]) + * Fix access priorities of each level in LeveledOptions ([#1118]) * 3 others: * Lots of tests added/fixed/improved. Switched to Minitest from Test::Unit. Big thanks to @frodsan. * Lots of documentation added/improved. - * Add license indicators to the HTTP extension. (#1075) + * Add license indicators to the HTTP extension. ([#1075]) ## 3.6.2 / 2016-11-22 * 1 bug fix: - * Revert #1118/Fix access priorities of each level in LeveledOptions. This + * Revert [#1118]/Fix access priorities of each level in LeveledOptions. This had an unintentional side effect of changing the importance of command line options, such as -p. ## 3.6.1 / 2016-11-21 * 8 bug fixes: * Fix Puma start in init.d script. - * Fix default SSL mode back to none. Fixes #1036 - * Fixed the issue of @listeners getting nil io, fix rails restart (#1120) - * More gracefully deal with SSL sessions. Fixes #1002 + * Fix default SSL mode back to none. Fixes [#1036] + * Fixed the issue of @listeners getting nil io, fix rails restart ([#1120]) + * More gracefully deal with SSL sessions. Fixes [#1002] * Prevent short term thread churn. - * Provide write as <<. Fixes #1089 + * Provide write as <<. Fixes [#1089] * Fix access priorities of each level in LeveledOptions - fixes TTIN. * Stub description files updated for init.d. * 2 new project committers: @@ -245,97 +603,97 @@ * Richard Schneeman (@schneems) ## 3.6.0 / 2016-07-24 * 12 bug fixes: - * Add ability to detect a shutting down server. Fixes #932 - * Add support for Expect: 100-continue. Fixes #519 - * Check SSLContext better. Fixes #828 - * Clarify behavior of '-t num'. Fixes #984 - * Don't default to VERIFY_PEER. Fixes #1028 - * Don't use ENV['PWD'] on windows. Fixes #1023 - * Enlarge the scope of catching app exceptions. Fixes #1027 - * Execute background hooks after daemonizing. Fixes #925 - * Handle HUP as a stop unless there is IO redirection. Fixes #911 - * Implement chunked request handling. Fixes #620 - * Just rescue exception to return a 500. Fixes #1027 - * Redirect IO in the jruby daemon mode. Fixes #778 + * Add ability to detect a shutting down server. Fixes [#932] + * Add support for Expect: 100-continue. Fixes [#519] + * Check SSLContext better. Fixes [#828] + * Clarify behavior of '-t num'. Fixes [#984] + * Don't default to VERIFY_PEER. Fixes [#1028] + * Don't use ENV['PWD'] on windows. Fixes [#1023] + * Enlarge the scope of catching app exceptions. Fixes [#1027] + * Execute background hooks after daemonizing. Fixes [#925] + * Handle HUP as a stop unless there is IO redirection. Fixes [#911] + * Implement chunked request handling. Fixes [#620] + * Just rescue exception to return a 500. Fixes [#1027] + * Redirect IO in the jruby daemon mode. Fixes [#778] ## 3.5.2 / 2016-07-20 * 1 bug fix: * Don't let persistent_timeout be nil * 1 PR merged: - * Merge pull request #1021 from benzrf/patch-1 + * Merge pull request [#1021] from benzrf/patch-1 ## 3.5.1 / 2016-07-20 * 1 bug fix: - * Be sure to only listen on host:port combos once. Fixes #1022 + * Be sure to only listen on host:port combos once. Fixes [#1022] ## 3.5.0 / 2016-07-18 * 1 minor features: * Allow persistent_timeout to be configured via the dsl. * 9 bug fixes: - * Allow a bare % in a query string. Fixes #958 - * Explicitly listen on all localhost addresses. Fixes #782 + * Allow a bare % in a query string. Fixes [#958] + * Explicitly listen on all localhost addresses. Fixes [#782] * Fix `TCPLogger` log error in tcp cluster mode. - * Fix puma/puma#968 Cannot bind SSL port due to missing verify_mode option - * Fix puma/puma#968 Default verify_mode to peer - * Log any exceptions in ThreadPool. Fixes #1010 - * Silence connection errors in the reactor. Fixes #959 - * Tiny fixes in hook documentation for #840 + * Fix puma/puma[#968] Cannot bind SSL port due to missing verify_mode option + * Fix puma/puma[#968] Default verify_mode to peer + * Log any exceptions in ThreadPool. Fixes [#1010] + * Silence connection errors in the reactor. Fixes [#959] + * Tiny fixes in hook documentation for [#840] * It should not log requests if we want it to be quiet * 5 doc fixes: * Add How to stop Puma on Heroku using plugins to the example directory * Provide both hot and phased restart in jungle script * Update reference to the instances management script * Update default number of threads * Fix typo in example config * 14 PRs merged: - * Merge pull request #1007 from willnet/patch-1 - * Merge pull request #1014 from jeznet/patch-1 - * Merge pull request #1015 from bf4/patch-1 - * Merge pull request #1017 from jorihardman/configurable_persistent_timeout - * Merge pull request #954 from jf/master - * Merge pull request #955 from jf/add-request-info-to-standard-error-rescue - * Merge pull request #956 from maxkwallace/master - * Merge pull request #960 from kmayer/kmayer-plugins-heroku-restart - * Merge pull request #969 from frankwong15/master - * Merge pull request #970 from willnet/delete-blank-document - * Merge pull request #974 from rocketjob/feature/name_threads - * Merge pull request #977 from snow/master - * Merge pull request #981 from zach-chai/patch-1 - * Merge pull request #993 from scorix/master + * Merge pull request [#1007] from willnet/patch-1 + * Merge pull request [#1014] from jeznet/patch-1 + * Merge pull request [#1015] from bf4/patch-1 + * Merge pull request [#1017] from jorihardman/configurable_persistent_timeout + * Merge pull request [#954] from jf/master + * Merge pull request [#955] from jf/add-request-info-to-standard-error-rescue + * Merge pull request [#956] from maxkwallace/master + * Merge pull request [#960] from kmayer/kmayer-plugins-heroku-restart + * Merge pull request [#969] from frankwong15/master + * Merge pull request [#970] from willnet/delete-blank-document + * Merge pull request [#974] from rocketjob/feature/name_threads + * Merge pull request [#977] from snow/master + * Merge pull request [#981] from zach-chai/patch-1 + * Merge pull request [#993] from scorix/master ## 3.4.0 / 2016-04-07 * 2 minor features: - * Add ability to force threads to stop on shutdown. Fixes #938 - * Detect and commit seppuku when fork(2) fails. Fixes #529 + * Add ability to force threads to stop on shutdown. Fixes [#938] + * Detect and commit seppuku when fork(2) fails. Fixes [#529] * 3 unknowns: - * Ignore errors trying to update the backport tables. Fixes #788 - * Invoke the lowlevel_error in more places to allow for exception tracking. Fixes #894 - * Update the query string when an absolute URI is used. Fixes #937 + * Ignore errors trying to update the backport tables. Fixes [#788] + * Invoke the lowlevel_error in more places to allow for exception tracking. Fixes [#894] + * Update the query string when an absolute URI is used. Fixes [#937] * 5 doc fixes: * Add Process Monitors section to top-level README - * Better document the hooks. Fixes #840 + * Better document the hooks. Fixes [#840] * docs/system.md sample config refinements and elaborations * Fix typos at couple of places. * Cleanup warnings * 3 PRs merged: - * Merge pull request #945 from dekellum/systemd-docs-refined - * Merge pull request #946 from vipulnsward/rm-pid - * Merge pull request #947 from vipulnsward/housekeeping-typos + * Merge pull request [#945] from dekellum/systemd-docs-refined + * Merge pull request [#946] from vipulnsward/rm-pid + * Merge pull request [#947] from vipulnsward/housekeeping-typos ## 3.3.0 / 2016-04-05 * 2 minor features: * Allow overriding options of Configuration object @@ -344,13 +702,13 @@ * 2 doc fixes: * Add docs/systemd.md (with socket activation sub-section) * Document UNIX signals with cluster on README.md * 3 PRs merged: - * Merge pull request #936 from prathamesh-sonpatki/allow-overriding-config-options - * Merge pull request #940 from kyledrake/signalsdoc - * Merge pull request #942 from dekellum/socket-activate-improve + * Merge pull request [#936] from prathamesh-sonpatki/allow-overriding-config-options + * Merge pull request [#940] from kyledrake/signalsdoc + * Merge pull request [#942] from dekellum/socket-activate-improve ## 3.2.0 / 2016-03-20 * 1 deprecation removal: * Delete capistrano.rb @@ -359,36 +717,36 @@ * Detect gems.rb as well as Gemfile * Simplify and fix logic for directory to use when restarting for all phases * Speed up phased-restart start * 2 PRs merged: - * Merge pull request #927 from jlecour/gemfile_variants - * Merge pull request #931 from joneslee85/patch-10 + * Merge pull request [#927] from jlecour/gemfile_variants + * Merge pull request [#931] from joneslee85/patch-10 ## 3.1.1 / 2016-03-17 * 4 bug fixes: * Disable USR1 usage on JRuby - * Fixes #922 - Correctly define file encoding as UTF-8 + * Fixes [#922] - Correctly define file encoding as UTF-8 * Set a more explicit SERVER_SOFTWARE Rack variable - * Show RUBY_ENGINE_VERSION if available. Fixes #923 + * Show RUBY_ENGINE_VERSION if available. Fixes [#923] * 3 PRs merged: - * Merge pull request #912 from tricknotes/fix-allow-failures-in-travis-yml - * Merge pull request #921 from swrobel/patch-1 - * Merge pull request #924 from tbrisker/patch-1 + * Merge pull request [#912] from tricknotes/fix-allow-failures-in-travis-yml + * Merge pull request [#921] from swrobel/patch-1 + * Merge pull request [#924] from tbrisker/patch-1 ## 3.1.0 / 2016-03-05 * 1 minor feature: - * Add 'import' directive to config file. Fixes #916 + * Add 'import' directive to config file. Fixes [#916] * 5 bug fixes: - * Add 'fetch' to options. Fixes #913 - * Fix jruby daemonization. Fixes #918 - * Recreate the proper args manually. Fixes #910 - * Require 'time' to get iso8601. Fixes #914 + * Add 'fetch' to options. Fixes [#913] + * Fix jruby daemonization. Fixes [#918] + * Recreate the proper args manually. Fixes [#910] + * Require 'time' to get iso8601. Fixes [#914] ## 3.0.2 / 2016-02-26 * 5 bug fixes: @@ -398,13 +756,13 @@ * Make `plugin :tmp_restart` behavior correct in Windows. * fix uninitialized constant Puma::ControlCLI::StateFile * 3 PRs merged: - * Merge pull request #901 from mitto/fix-pumactl-uninitialized-constant-statefile - * Merge pull request #902 from corrupt952/fix_undefined_method_and_variable_when_execute_pumactl - * Merge pull request #905 from Eric-Guo/master + * Merge pull request [#901] from mitto/fix-pumactl-uninitialized-constant-statefile + * Merge pull request [#902] from corrupt952/fix_undefined_method_and_variable_when_execute_pumactl + * Merge pull request [#905] from Eric-Guo/master ## 3.0.1 / 2016-02-25 * 1 bug fix: @@ -417,11 +775,11 @@ * 2 major changes: * Ruby pre-2.0 is no longer supported. We'll do our best to not add features that break those rubies but will no longer be testing with them. - * Don't log requests by default. Fixes #852 + * Don't log requests by default. Fixes [#852] * 2 major features: * Plugin support! Plugins can interact with configuration as well as provide augment server functionality! @@ -429,40 +787,40 @@ * 4 minor features: * Listen to unix socket with provided backlog if any * Improves the clustered stats to report worker stats - * Pass the env to the lowlevel_error handler. Fixes #854 - * Treat path-like hosts as unix sockets. Fixes #824 + * Pass the env to the lowlevel_error handler. Fixes [#854] + * Treat path-like hosts as unix sockets. Fixes [#824] * 5 bug fixes: - * Clean thread locals when using keepalive. Fixes #823 - * Cleanup compiler warnings. Fixes #815 - * Expose closed? for use by the reactor. Fixes #835 - * Move signal handlers to separate method to prevent space leak. Fixes #798 - * Signal not full on worker exit #876 + * Clean thread locals when using keepalive. Fixes [#823] + * Cleanup compiler warnings. Fixes [#815] + * Expose closed? for use by the reactor. Fixes [#835] + * Move signal handlers to separate method to prevent space leak. Fixes [#798] + * Signal not full on worker exit [#876] * 5 doc fixes: * Update README.md with various grammar fixes * Use newest version of Minitest * Add directory configuration docs, fix typo [ci skip] - * Remove old COPYING notice. Fixes #849 + * Remove old COPYING notice. Fixes [#849] * 10 merged PRs: - * Merge pull request #871 from deepj/travis - * Merge pull request #874 from wallclockbuilder/master - * Merge pull request #883 from dadah89/igor/trim_only_worker - * Merge pull request #884 from uistudio/async-callback - * Merge pull request #888 from mlarraz/tick_minitest - * Merge pull request #890 from todd/directory_docs - * Merge pull request #891 from ctaintor/improve_clustered_status - * Merge pull request #893 from spastorino/add_missing_require - * Merge pull request #897 from zendesk/master - * Merge pull request #899 from kch/kch-readme-fixes + * Merge pull request [#871] from deepj/travis + * Merge pull request [#874] from wallclockbuilder/master + * Merge pull request [#883] from dadah89/igor/trim_only_worker + * Merge pull request [#884] from uistudio/async-callback + * Merge pull request [#888] from mlarraz/tick_minitest + * Merge pull request [#890] from todd/directory_docs + * Merge pull request [#891] from ctaintor/improve_clustered_status + * Merge pull request [#893] from spastorino/add_missing_require + * Merge pull request [#897] from zendesk/master + * Merge pull request [#899] from kch/kch-readme-fixes ## 2.16.0 / 2016-01-27 * 7 minor features: @@ -475,11 +833,11 @@ * Support TLS client auth (verify_mode) in jruby * 7 bug fixes: * Don't persist before_fork hook in state file - * Reload bundler before pulling in rack. Fixes #859 + * Reload bundler before pulling in rack. Fixes [#859] * Remove NEWRELIC_DISPATCHER env variable * Cleanup C code * Use Timeout.timeout instead of Object.timeout * Make phased restarts faster * Ignore the case of certain headers, because HTTP @@ -487,22 +845,22 @@ * 1 doc changes: * Test against the latest Ruby 2.1, 2.2, 2.3, head and JRuby 9.0.4.0 on Travis * 12 merged PRs - * Merge pull request #822 from kwugirl/remove_NEWRELIC_DISPATCHER - * Merge pull request #833 from joemiller/jruby-client-tls-auth - * Merge pull request #837 from YuriSolovyov/ssl-keystore-jruby - * Merge pull request #839 from mezuka/master - * Merge pull request #845 from deepj/timeout-deprecation - * Merge pull request #846 from sriedel/strip_before_fork - * Merge pull request #850 from deepj/travis - * Merge pull request #853 from Jeffrey6052/patch-1 - * Merge pull request #857 from zendesk/faster_phased_restarts - * Merge pull request #858 from mlarraz/fix_some_warnings - * Merge pull request #860 from zendesk/expose_old_worker_count - * Merge pull request #861 from zendesk/allow_control_url_umask + * Merge pull request [#822] from kwugirl/remove_NEWRELIC_DISPATCHER + * Merge pull request [#833] from joemiller/jruby-client-tls-auth + * Merge pull request [#837] from YuriSolovyov/ssl-keystore-jruby + * Merge pull request [#839] from mezuka/master + * Merge pull request [#845] from deepj/timeout-deprecation + * Merge pull request [#846] from sriedel/strip_before_fork + * Merge pull request [#850] from deepj/travis + * Merge pull request [#853] from Jeffrey6052/patch-1 + * Merge pull request [#857] from zendesk/faster_phased_restarts + * Merge pull request [#858] from mlarraz/fix_some_warnings + * Merge pull request [#860] from zendesk/expose_old_worker_count + * Merge pull request [#861] from zendesk/allow_control_url_umask ## 2.15.3 / 2015-11-07 * 1 bug fix: @@ -513,12 +871,12 @@ * 2 bug fixes: * ext/puma_http11: handle duplicate headers as per RFC * Only set ctx.ca iff there is a params['ca'] to set with. * 2 PRs merged: - * Merge pull request #818 from unleashed/support-duplicate-headers - * Merge pull request #819 from VictorLowther/fix-ca-and-verify_null-exception + * Merge pull request [#818] from unleashed/support-duplicate-headers + * Merge pull request [#819] from VictorLowther/fix-ca-and-verify_null-exception ## 2.15.1 / 2015-11-06 * 1 bug fix: @@ -536,52 +894,52 @@ * 5 bug fixes: * Disable SSL Compression * Fix bug setting worker_directory when using a symlink directory * Fix error message in DSL that was slightly inaccurate - * Pumactl: set correct process name. Fixes #563 + * Pumactl: set correct process name. Fixes [#563] * thread_pool: fix race condition when shutting down workers * 10 doc fixes: * Add before_fork explanation in Readme.md * Correct spelling in DEPLOYMENT.md * Correct spelling in docs/nginx.md * Fix spelling errors. * Fix typo in deployment description * Fix typos (it's -> its) in events.rb and server.rb - * fixing for typo mentioned in #803 + * fixing for typo mentioned in [#803] * Spelling correction for README * thread_pool: fix typos in comment * More explicit docs for worker_timeout * 18 PRs merged: - * Merge pull request #768 from nathansamson/patch-1 - * Merge pull request #773 from rossta/spelling_corrections - * Merge pull request #774 from snow/master - * Merge pull request #781 from sunsations/fix-typo - * Merge pull request #791 from unleashed/allow_empty_tags - * Merge pull request #793 from robdimarco/fix-working-directory-symlink-bug - * Merge pull request #794 from peterkeen/patch-1 - * Merge pull request #795 from unleashed/redirects-from-cmdline - * Merge pull request #796 from cschneid/fix_dsl_message - * Merge pull request #799 from annafw/master - * Merge pull request #800 from liamseanbrady/fix_typo - * Merge pull request #801 from scottjg/ssl-chain-file - * Merge pull request #802 from scottjg/ssl-crimes - * Merge pull request #804 from burningTyger/patch-2 - * Merge pull request #809 from unleashed/threadpool-fix-race-in-shutdown - * Merge pull request #810 from vlmonk/fix-pumactl-restart-bug - * Merge pull request #814 from schneems/schneems/worker_timeout-docs - * Merge pull request #817 from unleashed/worker-boot-timeout + * Merge pull request [#768] from nathansamson/patch-1 + * Merge pull request [#773] from rossta/spelling_corrections + * Merge pull request [#774] from snow/master + * Merge pull request [#781] from sunsations/fix-typo + * Merge pull request [#791] from unleashed/allow_empty_tags + * Merge pull request [#793] from robdimarco/fix-working-directory-symlink-bug + * Merge pull request [#794] from peterkeen/patch-1 + * Merge pull request [#795] from unleashed/redirects-from-cmdline + * Merge pull request [#796] from cschneid/fix_dsl_message + * Merge pull request [#799] from annafw/master + * Merge pull request [#800] from liamseanbrady/fix_typo + * Merge pull request [#801] from scottjg/ssl-chain-file + * Merge pull request [#802] from scottjg/ssl-crimes + * Merge pull request [#804] from burningTyger/patch-2 + * Merge pull request [#809] from unleashed/threadpool-fix-race-in-shutdown + * Merge pull request [#810] from vlmonk/fix-pumactl-restart-bug + * Merge pull request [#814] from schneems/schneems/worker_timeout-docs + * Merge pull request [#817] from unleashed/worker-boot-timeout ## 2.14.0 / 2015-09-18 * 1 minor feature: * Make building with SSL support optional * 1 bug fix: - * Use Rack::Builder if available. Fixes #735 + * Use Rack::Builder if available. Fixes [#735] ## 2.13.4 / 2015-08-16 * 1 bug fix: * Use the environment possible set by the config early and from @@ -590,43 +948,43 @@ ## 2.13.3 / 2015-08-15 Seriously, I need to revamp config with tests. * 1 bug fix: - * Fix preserving options before cleaning for state. Fixes #769 + * Fix preserving options before cleaning for state. Fixes [#769] ## 2.13.2 / 2015-08-15 The "clearly I don't have enough tests for the config" release. * 1 bug fix: - * Fix another place binds wasn't initialized. Fixes #767 + * Fix another place binds wasn't initialized. Fixes [#767] ## 2.13.1 / 2015-08-15 * 2 bug fixes: - * Fix binds being masked in config files. Fixes #765 - * Use options from the config file properly in pumactl. Fixes #764 + * Fix binds being masked in config files. Fixes [#765] + * Use options from the config file properly in pumactl. Fixes [#764] ## 2.13.0 / 2015-08-14 * 1 minor feature: * Add before_fork hooks option. * 3 bug fixes: * Check for OPENSSL_NO_ECDH before using ECDH * Eliminate logging overhead from JRuby SSL - * Prefer cli options over config file ones. Fixes #669 + * Prefer cli options over config file ones. Fixes [#669] * 1 deprecation: - * Add deprecation warning to capistrano.rb. Fixes #673 + * Add deprecation warning to capistrano.rb. Fixes [#673] * 4 PRs merged: - * Merge pull request #668 from kcollignon/patch-1 - * Merge pull request #754 from nathansamson/before_boot - * Merge pull request #759 from BenV/fix-centos6-build - * Merge pull request #761 from looker/no-log + * Merge pull request [#668] from kcollignon/patch-1 + * Merge pull request [#754] from nathansamson/before_boot + * Merge pull request [#759] from BenV/fix-centos6-build + * Merge pull request [#761] from looker/no-log ## 2.12.3 / 2015-08-03 * 8 minor bugs fixed: * Fix Capistrano 'uninitialized constant Puma' error. @@ -637,50 +995,50 @@ * Switch from inject to each in config_ru_binds iteration * Wrap SSLv3 spec in version guard. * ruby 1.8.7 compatibility patches * 4 PRs merged: - * Merge pull request #742 from deivid-rodriguez/fix_missing_require - * Merge pull request #743 from matthewd/skip-empty-chunks - * Merge pull request #749 from huacnlee/fix-cap-uninitialized-puma-error - * Merge pull request #751 from costi/compat_1_8_7 + * Merge pull request [#742] from deivid-rodriguez/fix_missing_require + * Merge pull request [#743] from matthewd/skip-empty-chunks + * Merge pull request [#749] from huacnlee/fix-cap-uninitialized-puma-error + * Merge pull request [#751] from costi/compat_1_8_7 * 1 test fix: * Add 1.8.7, rbx-1 (allow failures) to Travis. ## 2.12.2 / 2015-07-17 * 2 bug fix: - * Pull over and use Rack::URLMap. Fixes #741 - * Stub out peercert on JRuby for now. Fixes #739 + * Pull over and use Rack::URLMap. Fixes [#741] + * Stub out peercert on JRuby for now. Fixes [#739] ## 2.12.1 / 2015-07-16 * 2 bug fixes: - * Use a constant format. Fixes #737 - * Use strerror for Windows sake. Fixes #733 + * Use a constant format. Fixes [#737] + * Use strerror for Windows sake. Fixes [#733] * 1 doc change: * typo fix: occured -> occurred * 1 PR merged: - * Merge pull request #736 from paulanunda/paulanunda/typo-fix + * Merge pull request [#736] from paulanunda/paulanunda/typo-fix ## 2.12.0 / 2015-07-14 * 13 bug fixes: * Add thread reaping to thread pool * Do not automatically use chunked responses when hijacked * Do not suppress Content-Length on partial hijack * Don't allow any exceptions to terminate a thread * Handle ENOTCONN client disconnects when setting REMOTE_ADDR - * Handle very early exit of cluster mode. Fixes #722 + * Handle very early exit of cluster mode. Fixes [#722] * Install rack when running tests on travis to use rack/lint * Make puma -v and -h return success exit code * Make pumactl load config/puma.rb by default - * Pass options from pumactl properly when pruning. Fixes #694 - * Remove rack dependency. Fixes #705 + * Pass options from pumactl properly when pruning. Fixes [#694] + * Remove rack dependency. Fixes [#705] * Remove the default Content-Type: text/plain * Add Client Side Certificate Auth * 8 doc/test changes: * Added example sourcing of environment vars @@ -695,103 +1053,103 @@ * 2 ops changes: * Check for system-wide rbenv * capistrano: Add additional env when start rails * 16 PRs merged: - * Merge pull request #686 from jjb/patch-2 - * Merge pull request #693 from rob-murray/update-example-config - * Merge pull request #697 from spk/tests-bind-on-rackup-file - * Merge pull request #699 from deees/fix/require_rack_builder - * Merge pull request #701 from deepj/master - * Merge pull request #702 from Jimdo/thread-reaping - * Merge pull request #703 from deepj/travis - * Merge pull request #704 from grega/master - * Merge pull request #709 from lian/master - * Merge pull request #711 from julik/master - * Merge pull request #712 from yakara-ltd/pumactl-default-config - * Merge pull request #715 from RobotJiang/master - * Merge pull request #725 from rwz/master - * Merge pull request #726 from strenuus/handle-client-disconnect - * Merge pull request #729 from allaire/patch-1 - * Merge pull request #730 from iamjarvo/container-infrastructure + * Merge pull request [#686] from jjb/patch-2 + * Merge pull request [#693] from rob-murray/update-example-config + * Merge pull request [#697] from spk/tests-bind-on-rackup-file + * Merge pull request [#699] from deees/fix/require_rack_builder + * Merge pull request [#701] from deepj/master + * Merge pull request [#702] from Jimdo/thread-reaping + * Merge pull request [#703] from deepj/travis + * Merge pull request [#704] from grega/master + * Merge pull request [#709] from lian/master + * Merge pull request [#711] from julik/master + * Merge pull request [#712] from yakara-ltd/pumactl-default-config + * Merge pull request [#715] from RobotJiang/master + * Merge pull request [#725] from rwz/master + * Merge pull request [#726] from strenuus/handle-client-disconnect + * Merge pull request [#729] from allaire/patch-1 + * Merge pull request [#730] from iamjarvo/container-infrastructure ## 2.11.3 / 2015-05-18 * 5 bug fixes: - * Be sure to unlink tempfiles after a request. Fixes #690 - * Coerce the key to a string before checking. (thar be symbols). Fixes #684 + * Be sure to unlink tempfiles after a request. Fixes [#690] + * Coerce the key to a string before checking. (thar be symbols). Fixes [#684] * Fix hang on bad SSL handshake * Remove `enable_SSLv3` support from JRuby * 1 PR merged: - * Merge pull request #698 from looker/hang-handshake + * Merge pull request [#698] from looker/hang-handshake ## 2.11.2 / 2015-04-11 * 2 minor features: * Add `on_worker_fork` hook, which allows to mimic Unicorn's behavior * Add shutdown_debug config option * 4 bug fixes: - * Fix the Config constants not being available in the DSL. Fixes #683 + * Fix the Config constants not being available in the DSL. Fixes [#683] * Ignore multiple port declarations * Proper 'Connection' header handling compatible with HTTP 1.[01] protocols * Use "Puma" instead of "puma" to reporting to New Relic * 1 doc fixes: * Add Gitter badge. * 6 PRs merged: - * Merge pull request #657 from schneems/schneems/puma-once-port - * Merge pull request #658 from Tomohiro/newrelic-dispatcher-default-update - * Merge pull request #662 from basecrm/connection-compatibility - * Merge pull request #664 from fxposter/on-worker-fork - * Merge pull request #667 from JuanitoFatas/doc/gemspec - * Merge pull request #672 from chulkilee/refactor + * Merge pull request [#657] from schneems/schneems/puma-once-port + * Merge pull request [#658] from Tomohiro/newrelic-dispatcher-default-update + * Merge pull request [#662] from basecrm/connection-compatibility + * Merge pull request [#664] from fxposter/on-worker-fork + * Merge pull request [#667] from JuanitoFatas/doc/gemspec + * Merge pull request [#672] from chulkilee/refactor ## 2.11.1 / 2015-02-11 * 2 bug fixes: * Avoid crash in strange restart conditions - * Inject the GEM_HOME that bundler into puma-wild's env. Fixes #653 + * Inject the GEM_HOME that bundler into puma-wild's env. Fixes [#653] * 2 PRs merged: - * Merge pull request #644 from bpaquet/master - * Merge pull request #646 from mkonecny/master + * Merge pull request [#644] from bpaquet/master + * Merge pull request [#646] from mkonecny/master ## 2.11.0 / 2015-01-20 * 9 bug fixes: - * Add mode as an additional bind option to unix sockets. Fixes #630 + * Add mode as an additional bind option to unix sockets. Fixes [#630] * Advertise HTTPS properly after a hot restart * Don't write lowlevel_error_handler to state * Fix phased restart with stuck requests - * Handle spaces in the path properly. Fixes #622 - * Set a default REMOTE_ADDR to avoid using peeraddr on unix sockets. Fixes #583 - * Skip device number checking on jruby. Fixes #586 + * Handle spaces in the path properly. Fixes [#622] + * Set a default REMOTE_ADDR to avoid using peeraddr on unix sockets. Fixes [#583] + * Skip device number checking on jruby. Fixes [#586] * Update extconf.rb to compile correctly on OS X - * redirect io right after daemonizing so startup errors are shown. Fixes #359 + * redirect io right after daemonizing so startup errors are shown. Fixes [#359] * 6 minor features: * Add a configuration option that prevents puma from queueing requests. * Add reload_worker_directory * Add the ability to pass environment variables to the init script (for Jungle). - * Add the proctitle tag to the worker. Fixes #633 + * Add the proctitle tag to the worker. Fixes [#633] * Infer a proctitle tag based on the directory * Update lowlevel error message to be more meaningful. * 10 PRs merged: - * Merge pull request #478 from rubencaro/master - * Merge pull request #610 from kwilczynski/master - * Merge pull request #611 from jasonl/better-lowlevel-message - * Merge pull request #616 from jc00ke/master - * Merge pull request #623 from raldred/patch-1 - * Merge pull request #628 from rdpoor/master - * Merge pull request #634 from deepj/master - * Merge pull request #637 from raskhadafi/patch-1 - * Merge pull request #639 from ebeigarts/fix-phased-restarts - * Merge pull request #640 from codehotter/issue-612-dependent-requests-deadlock + * Merge pull request [#478] from rubencaro/master + * Merge pull request [#610] from kwilczynski/master + * Merge pull request [#611] from jasonl/better-lowlevel-message + * Merge pull request [#616] from jc00ke/master + * Merge pull request [#623] from raldred/patch-1 + * Merge pull request [#628] from rdpoor/master + * Merge pull request [#634] from deepj/master + * Merge pull request [#637] from raskhadafi/patch-1 + * Merge pull request [#639] from ebeigarts/fix-phased-restarts + * Merge pull request [#640] from codehotter/issue-612-dependent-requests-deadlock ## 2.10.2 / 2014-11-26 * 1 bug fix: * Conditionalize thread local cleaning, fixes perf degradation fix @@ -817,61 +1175,61 @@ * Allow binding to ipv6 addresses for ssl URIs * Warn about any threads started during app preload * 5 bug fixes: * Clean out a threads local data before doing work - * Disable SSLv3. Fixes #591 + * Disable SSLv3. Fixes [#591] * First change the directory to use the correct Gemfile. - * Only use config.ru binds if specified. Fixes #606 + * Only use config.ru binds if specified. Fixes [#606] * Strongish cipher suite with FS support for some browsers * 2 doc changes: * Change umask examples to more permissive values * fix typo in README.md * 9 Merged PRs: - * Merge pull request #560 from raskhadafi/prune_bundler-bug - * Merge pull request #566 from sheltond/master - * Merge pull request #593 from andruby/patch-1 - * Merge pull request #594 from hassox/thread-cleanliness - * Merge pull request #596 from burningTyger/patch-1 - * Merge pull request #601 from sorentwo/friendly-umask - * Merge pull request #602 from 1334/patch-1 - * Merge pull request #608 from Gu1/master - * Merge remote-tracking branch 'origin/pr/538' + * Merge pull request [#560] from raskhadafi/prune_bundler-bug + * Merge pull request [#566] from sheltond/master + * Merge pull request [#593] from andruby/patch-1 + * Merge pull request [#594] from hassox/thread-cleanliness + * Merge pull request [#596] from burningTyger/patch-1 + * Merge pull request [#601] from sorentwo/friendly-umask + * Merge pull request [#602] from 1334/patch-1 + * Merge pull request [#608] from Gu1/master + * Merge pull request [#538] from memiux/? ## 2.9.2 / 2014-10-25 * 8 bug fixes: - * Fix puma-wild handling a restart properly. Fixes #550 + * Fix puma-wild handling a restart properly. Fixes [#550] * JRuby SSL POODLE update * Keep deprecated features warnings * Log the current time when Puma shuts down. * Fix cross-platform extension library detection * Use the correct Windows names for OpenSSL. * Better error logging during startup * Fixing sexist error messages * 6 PRs merged: - * Merge pull request #549 from bsnape/log-shutdown-time - * Merge pull request #553 from lowjoel/master - * Merge pull request #568 from mariuz/patch-1 - * Merge pull request #578 from danielbuechele/patch-1 - * Merge pull request #581 from alexch/slightly-better-logging - * Merge pull request #590 from looker/jruby_disable_sslv3 + * Merge pull request [#549] from bsnape/log-shutdown-time + * Merge pull request [#553] from lowjoel/master + * Merge pull request [#568] from mariuz/patch-1 + * Merge pull request [#578] from danielbuechele/patch-1 + * Merge pull request [#581] from alexch/slightly-better-logging + * Merge pull request [#590] from looker/jruby_disable_sslv3 ## 2.9.1 / 2014-09-05 * 4 bug fixes: * Cleanup the SSL related structures properly, fixes memory leak * Fix thread spawning edge case. - * Force a worker check after a worker boots, don't wait 5sec. Fixes #574 + * Force a worker check after a worker boots, don't wait 5sec. Fixes [#574] * Implement SIGHUP for logs reopening * 2 PRs merged: - * Merge pull request #561 from theoldreader/sighup - * Merge pull request #570 from havenwood/spawn-thread-edge-case + * Merge pull request [#561] from theoldreader/sighup + * Merge pull request [#570] from havenwood/spawn-thread-edge-case ## 2.9.0 / 2014-07-12 * 1 minor feature: * Add SSL support for JRuby @@ -886,16 +1244,16 @@ * Deploy doc: clarification of the GIL * Fix typo in DEPLOYMENT.md * Update README.md * 6 PRs merged: - * Merge pull request #520 from misfo/patch-2 - * Merge pull request #530 from looker/jruby-ssl - * Merge pull request #537 from vlmonk/patch-1 - * Merge pull request #540 from allaire/patch-1 - * Merge pull request #544 from chulkilee/bsd-3-clause - * Merge pull request #551 from jcxplorer/patch-1 + * Merge pull request [#520] from misfo/patch-2 + * Merge pull request [#530] from looker/jruby-ssl + * Merge pull request [#537] from vlmonk/patch-1 + * Merge pull request [#540] from allaire/patch-1 + * Merge pull request [#544] from chulkilee/bsd-3-clause + * Merge pull request [#551] from jcxplorer/patch-1 ## 2.8.2 / 2014-04-12 * 4 bug fixes: * During upgrade, change directory in main process instead of workers. @@ -908,21 +1266,21 @@ * `preload_app!` instead of `preload_app` * add preload_app and prune_bundler to example config * allow changing of worker_timeout in config file * 11 PRs merged: - * Merge pull request #487 from ckuttruff/master - * Merge pull request #492 from ckuttruff/master - * Merge pull request #493 from alepore/config_tag - * Merge pull request #503 from mariuz/patch-1 - * Merge pull request #505 from sammcj/patch-1 - * Merge pull request #506 from FlavourSys/config_worker_timeout - * Merge pull request #510 from momer/rescue-block-handle-servers-fix - * Merge pull request #511 from macool/patch-1 - * Merge pull request #514 from edogawaconan/refactor_env - * Merge pull request #517 from misfo/patch-1 - * Merge pull request #518 from LongMan/master + * Merge pull request [#487] from ckuttruff/master + * Merge pull request [#492] from ckuttruff/master + * Merge pull request [#493] from alepore/config_tag + * Merge pull request [#503] from mariuz/patch-1 + * Merge pull request [#505] from sammcj/patch-1 + * Merge pull request [#506] from FlavourSys/config_worker_timeout + * Merge pull request [#510] from momer/rescue-block-handle-servers-fix + * Merge pull request [#511] from macool/patch-1 + * Merge pull request [#514] from edogawaconan/refactor_env + * Merge pull request [#517] from misfo/patch-1 + * Merge pull request [#518] from LongMan/master ## 2.8.1 / 2014-03-06 * 1 bug fixes: * Run puma-wild with proper deps for prune_bundler @@ -930,65 +1288,64 @@ * 2 doc changes: * Described the configuration file finding behavior added in 2.8.0 and how to disable it. * Start the deployment doc * 6 PRs merged: - * Merge pull request #471 from arthurnn/fix_test - * Merge pull request #485 from joneslee85/patch-9 - * Merge pull request #486 from joshwlewis/patch-1 - * Merge pull request #490 from tobinibot/patch-1 - * Merge pull request #491 from brianknight10/clarify-no-config + * Merge pull request [#471] from arthurnn/fix_test + * Merge pull request [#485] from joneslee85/patch-9 + * Merge pull request [#486] from joshwlewis/patch-1 + * Merge pull request [#490] from tobinibot/patch-1 + * Merge pull request [#491] from brianknight10/clarify-no-config ## 2.8.0 / 2014-02-28 * 8 minor features: - * Add ability to autoload a config file. Fixes #438 - * Add ability to detect and terminate hung workers. Fixes #333 + * Add ability to autoload a config file. Fixes [#438] + * Add ability to detect and terminate hung workers. Fixes [#333] * Add booted_workers to stats response * Add config to customize the default error message * Add prune_bundler option - * Add worker indexes, expose them via on_worker_boot. Fixes #440 + * Add worker indexes, expose them via on_worker_boot. Fixes [#440] * Add pretty process name * Show the ruby version in use * 7 bug fixes: * Added 408 status on timeout. - * Be more hostile with sockets that write block. Fixes #449 - * Expect at_exit to exclusively remove the pidfile. Fixes #444 - * Expose latency and listen backlog via bind query. Fixes #370 - * JRuby raises IOError if the socket is there. Fixes #377 - * Process requests fairly. Fixes #406 - * Rescue SystemCallError as well. Fixes #425 + * Be more hostile with sockets that write block. Fixes [#449] + * Expect at_exit to exclusively remove the pidfile. Fixes [#444] + * Expose latency and listen backlog via bind query. Fixes [#370] + * JRuby raises IOError if the socket is there. Fixes [#377] + * Process requests fairly. Fixes [#406] + * Rescue SystemCallError as well. Fixes [#425] * 4 doc changes: * Add 2.1.0 to the matrix * Add Code Climate badge to README * Create signals.md - * Set the license to BSD. Fixes #432 + * Set the license to BSD. Fixes [#432] * 14 PRs merged: - * Merge pull request #428 from alexeyfrank/capistrano_default_hooks - * Merge pull request #429 from namusyaka/revert-const_defined - * Merge pull request #431 from mrb/master - * Merge pull request #433 from alepore/process-name - * Merge pull request #437 from ibrahima/master - * Merge pull request #446 from sudara/master - * Merge pull request #451 from pwiebe/status_408 - * Merge pull request #453 from joevandyk/patch-1 - * Merge pull request #470 from arthurnn/fix_458 - * Merge pull request #472 from rubencaro/master - * Merge pull request #480 from jjb/docs-on-running-test-suite - * Merge pull request #481 from schneems/master - * Merge pull request #482 from prathamesh-sonpatki/signals-doc-cleanup - * Merge pull request #483 from YotpoLtd/master + * Merge pull request [#428] from alexeyfrank/capistrano_default_hooks + * Merge pull request [#429] from namusyaka/revert-const_defined + * Merge pull request [#431] from mrb/master + * Merge pull request [#433] from alepore/process-name + * Merge pull request [#437] from ibrahima/master + * Merge pull request [#446] from sudara/master + * Merge pull request [#451] from pwiebe/status_408 + * Merge pull request [#453] from joevandyk/patch-1 + * Merge pull request [#470] from arthurnn/fix_458 + * Merge pull request [#472] from rubencaro/master + * Merge pull request [#480] from jjb/docs-on-running-test-suite + * Merge pull request [#481] from schneems/master + * Merge pull request [#482] from prathamesh-sonpatki/signals-doc-cleanup + * Merge pull request [#483] from YotpoLtd/master ## 2.7.1 / 2013-12-05 * 1 bug fix: + * Keep STDOUT/STDERR the right mode. Fixes [#422] - * Keep STDOUT/STDERR the right mode. Fixes #422 - ## 2.7.0 / 2013-12-03 * 1 minor feature: * Adding TTIN and TTOU to increment/decrement workers @@ -1018,11 +1375,10 @@ * Return success status to the invoking environment ## 2.5.1 / 2013-08-13 * 2 bug fixes: - * Keep jruby daemon mode from retrying on a hot restart * Extract version from const.rb in gemspec ## 2.5.0 / 2013-08-08 @@ -1060,124 +1416,113 @@ * Adds support for using puma config file in capistrano deploys. * Make phased_restart fallback to restart if not available * 10 bug fixes: - * Be sure to only delete the pid in the master. Fixes #334 + * Be sure to only delete the pid in the master. Fixes [#334] * Call out -C/--config flags - * Change parser symbol names to avoid clash. Fixes #179 + * Change parser symbol names to avoid clash. Fixes [#179] * Convert thread pool sizes to integers * Detect when the jruby daemon child doesn't start properly * Fix typo in CLI help - * Improve the logging output when hijack is used. Fixes #332 + * Improve the logging output when hijack is used. Fixes [#332] * Remove unnecessary thread pool size conversions - * Setup :worker_boot as an Array. Fixes #317 - * Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes #309 + * Setup :worker_boot as an Array. Fixes [#317] + * Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes [#309] ## 2.3.2 / 2013-07-08 * 1 bug fix: - * Move starting control server to after daemonization. ## 2.3.1 / 2013-07-06 * 2 bug fixes: - * Include the right files in the Manifest. - * Disable inheriting connections on restart on windows. Fixes #166 + * Disable inheriting connections on restart on windows. Fixes [#166] * 1 doc change: * Better document some platform constraints ## 2.3.0 / 2013-07-05 * 1 major bug fix: - * Stabilize control server, add support in cluster mode * 5 minor bug fixes: - * Add ability to cleanup stale unix sockets - * Check status data better. Fixes #292 - * Convert raw IO errors to ConnectionError. Fixes #274 - * Fix sending Content-Type and Content-Length for no body status. Fixes #304 - * Pass state path through to `pumactl start`. Fixes #287 + * Check status data better. Fixes [#292] + * Convert raw IO errors to ConnectionError. Fixes [#274] + * Fix sending Content-Type and Content-Length for no body status. Fixes [#304] + * Pass state path through to `pumactl start`. Fixes [#287] * 2 internal changes: - * Refactored modes into seperate classes that CLI uses * Changed CLI to take an Events object instead of stdout/stderr (API change) ## 2.2.2 / 2013-07-02 * 1 bug fix: - * Fix restart_command in the config ## 2.2.1 / 2013-07-02 * 1 minor feature: - * Introduce preload flag * 1 bug fix: - * Pass custom restart command in JRuby ## 2.2.0 / 2013-07-01 * 1 major feature: - * Add ability to preload rack app * 2 minor bugfixes: - - * Don't leak info when not in development. Fixes #256 + * Don't leak info when not in development. Fixes [#256] * Load the app, then bind the ports ## 2.1.1 / 2013-06-20 * 2 minor bug fixes: * Fix daemonization on jruby - * Load the application before daemonizing. Fixes #285 + * Load the application before daemonizing. Fixes [#285] ## 2.1.0 / 2013-06-18 * 3 minor features: * Allow listening socket to be configured via Capistrano variable * Output results from 'stat's command when using pumactl * Support systemd socket activation * 15 bug fixes: - * Deal with pipes closing while stopping. Fixes #270 + * Deal with pipes closing while stopping. Fixes [#270] * Error out early if there is no app configured * Handle ConnectionError rather than the lowlevel exceptions * tune with `-C` config file and `on_worker_boot` * use `-w` * Fixed some typos in upstart scripts * Make sure to use bytesize instead of size (MiniSSL write) * Fix an error in puma-manager.conf * fix: stop leaking sockets on restart (affects ruby 1.9.3 or before) - * Ignore errors on the cross-thread pipe. Fixes #246 + * Ignore errors on the cross-thread pipe. Fixes [#246] * Ignore errors while uncorking the socket (it might already be closed) - * Ignore the body on a HEAD request. Fixes #278 - * Handle all engine data when possible. Fixes #251. - * Handle all read exceptions properly. Fixes #252 + * Ignore the body on a HEAD request. Fixes [#278] + * Handle all engine data when possible. Fixes [#251]. + * Handle all read exceptions properly. Fixes [#252] * Handle errors from the server better * 3 doc changes: * Add note about on_worker_boot hook * Add some documentation for Clustered mode * Added quotes to /etc/puma.conf ## 2.0.1 / 2013-04-30 * 1 bug fix: - * Fix not starting on JRuby properly ## 2.0.0 / 2013-04-29 RailsConf 2013 edition! @@ -1185,54 +1530,50 @@ * 2 doc changes: * Start with rackup -s Puma, NOT rackup -s puma. * Minor doc fixes in the README.md, Capistrano section * 2 bug fixes: - * Fix reading RACK_ENV properly. Fixes #234 - * Make cap recipe handle tmp/sockets; fixes #228 + * Fix reading RACK_ENV properly. Fixes [#234] + * Make cap recipe handle tmp/sockets; fixes [#228] * 3 minor changes: * Fix capistrano recipe * Fix stdout/stderr logs to sync outputs * allow binding to IPv6 addresses ## 2.0.0.b7 / 2013-03-18 * 5 minor enhancements: - * Add -q option for :start * Add -V, --version * Add default Rack handler helper * Upstart support * Set worker directory from configuration file * 12 bug fixes: - - * Close the binder in the right place. Fixes #192 - * Handle early term in workers. Fixes #206 + * Close the binder in the right place. Fixes [#192] + * Handle early term in workers. Fixes [#206] * Make sure that the default port is 80 when the request doesn't include HTTP_X_FORWARDED_PROTO. * Prevent Errno::EBADF errors on restart when running ruby 2.0 * Record the proper @master_pid * Respect the header HTTP_X_FORWARDED_PROTO when the host doesn't include a port number. * Retry EAGAIN/EWOULDBLOCK during syswrite - * Run exec properly to restart. Fixes #154 + * Run exec properly to restart. Fixes [#154] * Set Rack run_once to false - * Syncronize all access to @timeouts. Fixes #208 - * Write out the state post-daemonize. Fixes #189 + * Syncronize all access to @timeouts. Fixes [#208] + * Write out the state post-daemonize. Fixes [#189] * Prevent crash when all workers are gone ## 2.0.0.b6 / 2013-02-06 * 2 minor enhancements: - * Add hook for running when a worker boots * Advertise the Configuration object for apps to use. * 1 bug fix: + * Change directory in working during upgrade. Fixes [#185] - * Change directory in working during upgrade. Fixes #185 - ## 2.0.0.b5 / 2013-02-05 * 2 major features: * Add phased worker upgrade * Add support for the rack hijack protocol @@ -1240,20 +1581,20 @@ * 2 minor features: * Add -R to specify the restart command * Add config file option to specify the restart command * 5 bug fixes: - * Cleanup pipes properly. Fixes #182 - * Daemonize earlier so that we don't lose app threads. Fixes #183 - * Drain the notification pipe. Fixes #176, thanks @cryo28 - * Move write_pid to after we daemonize. Fixes #180 + * Cleanup pipes properly. Fixes [#182] + * Daemonize earlier so that we don't lose app threads. Fixes [#183] + * Drain the notification pipe. Fixes [#176], thanks @cryo28 + * Move write_pid to after we daemonize. Fixes [#180] * Redirect IO properly and emit message for checkpointing ## 2.0.0.b4 / 2012-12-12 * 4 bug fixes: - * Properly check #syswrite's value for variable sized buffers. Fixes #170 + * Properly check #syswrite's value for variable sized buffers. Fixes [#170] * Shutdown status server properly * Handle char vs byte and mixing syswrite with write properly * made MiniSSL validate key/cert file existence ## 2.0.0.b3 / 2012-11-22 @@ -1269,16 +1610,16 @@ * Add -p option to pumactl * Add ability to use pumactl to start a server * Add options to daemonize puma * 7 bug fixes: - * Reset the IOBuffer properly. Fixes #148 + * Reset the IOBuffer properly. Fixes [#148] * Shutdown gracefully on JRuby with Ctrl-C - * Various methods to get newrelic to start. Fixes #128 + * Various methods to get newrelic to start. Fixes [#128] * fixing syntax error at capistrano recipe * Force ECONNRESET when read returns nil - * Be sure to empty the drain the todo before shutting down. Fixes #155 + * Be sure to empty the drain the todo before shutting down. Fixes [#155] * allow for alternate locations for status app ## 2.0.0.b1 / 2012-09-11 * 1 major feature: @@ -1326,19 +1667,19 @@ * Thibault Jouan * tomykaira * 6 bug fixes: * Define RSTRING_NOT_MODIFIED for Rubinius - * Convert status to integer. Fixes #123 + * Convert status to integer. Fixes [#123] * Delete pidfile when stopping the server * Allow compilation with -Werror=format-security option * Fix wrong HTTP version for a HTTP/1.0 request * Use String#bytesize instead of String#length * 3 minor features: * Added support for setting RACK_ENV via the CLI, config file, and rack app - * Allow Server#run to run sync. Fixes #111 + * Allow Server#run to run sync. Fixes [#111] * Puma can now run on windows ## 1.4.0 / 2012-06-04 * 1 bug fix: @@ -1349,81 +1690,721 @@ ## 1.3.1 / 2012-05-15 * 2 bug fixes: * use #bytesize instead of #length for Content-Length header - * Use StringIO properly. Fixes #98 + * Use StringIO properly. Fixes [#98] ## 1.3.0 / 2012-05-08 * 2 minor features: * Return valid Rack responses (passes Lint) from status server * Add -I option to specify $LOAD_PATH directories * 4 bug fixes: - * Don't join the server thread inside the signal handle. Fixes #94 + * Don't join the server thread inside the signal handle. Fixes [#94] * Make NullIO#read mimic IO#read - * Only stop the status server if it's started. Fixes #84 - * Set RACK_ENV early in cli also. Fixes #78 + * Only stop the status server if it's started. Fixes [#84] + * Set RACK_ENV early in cli also. Fixes [#78] * 1 new contributor: * Jesse Cooke ## 1.2.2 / 2012-04-28 * 4 bug fixes: - * Report a lowlevel error to stderr * Set a fallback SERVER_NAME and SERVER_PORT - * Keep the encoding of the body correct. Fixes #79 + * Keep the encoding of the body correct. Fixes [#79] * show error.to_s along with backtrace for low-level error ## 1.2.1 / 2012-04-11 - 1 bug fix: +* 1 bug fix: + * Fix rack.url_scheme for SSL servers. Fixes [#65] - * Fix rack.url_scheme for SSL servers. Fixes #65 - ## 1.2.0 / 2012-04-11 - 1 major feature: +* 1 major feature: + * When possible, the internal restart does a "hot restart" meaning + the server sockets remains open, so no connections are lost. - * When possible, the internal restart does a "hot restart" meaning - the server sockets remains open, so no connections are lost. +* 1 minor feature: + * More helpful fallback error message - 1 minor feature: +* 6 bug fixes: + * Pass the proper args to unknown_error. Fixes [#54], [#58] + * Stop the control server before restarting. Fixes [#61] + * Fix reporting https only on a true SSL connection + * Set the default content type to 'text/plain'. Fixes [#63] + * Use REUSEADDR. Fixes [#60] + * Shutdown gracefully on SIGTERM. Fixes [#53] - * More helpful fallback error message +* 2 new contributors: + * Seamus Abshere + * Steve Richert - 6 bug fixes: - - * Pass the proper args to unknown_error. Fixes #54, #58 - * Stop the control server before restarting. Fixes #61 - * Fix reporting https only on a true SSL connection - * Set the default content type to 'text/plain'. Fixes #63 - * Use REUSEADDR. Fixes #60 - * Shutdown gracefully on SIGTERM. Fixes #53 - - 2 new contributors: - - * Seamus Abshere - * Steve Richert - ## 1.1.1 / 2012-03-30 - 1 bugfix: +* 1 bugfix: + * Include puma/compat.rb in the gem (oops!) - * Include puma/compat.rb in the gem (oops!) - ## 1.1.0 / 2012-03-30 - 1 bugfix: +* 1 bugfix: + * Make sure that the unix socket has the perms 0777 by default - * Make sure that the unix socket has the perms 0777 by default +* 1 minor feature: + * Add umask param to the unix:// bind to set the umask - 1 minor feature: - - * Add umask param to the unix:// bind to set the umask - ## 1.0.0 / 2012-03-29 * Released! + +## Ignore - this is for maintainers to copy-paste during release +## Master + +* Features + * Your feature goes here <Most recent on the top, like GitHub> (#Github Number) + +* Bugfixes + * Your bugfix goes here <Most recent on the top, like GitHub> (#Github Number) + +[#2656]:https://github.com/puma/puma/pull/2656 "PR by @olivierbellone, merged 2021-07-07" +[#2657]:https://github.com/puma/puma/pull/2657 "PR by @olivierbellone, merged 2021-07-13" +[#2648]:https://github.com/puma/puma/pull/2648 "PR by @MSP-Greg, merged 2021-06-27" +[#1412]:https://github.com/puma/puma/issues/1412 "Issue by @x-yuri, closed 2021-06-27" +[#2586]:https://github.com/puma/puma/pull/2586 "PR by @MSP-Greg, merged 2021-05-26" +[#2569]:https://github.com/puma/puma/issues/2569 "Issue by @tarragon, closed 2021-05-26" +[#2643]:https://github.com/puma/puma/pull/2643 "PR by @MSP-Greg, merged 2021-06-27" +[#2638]:https://github.com/puma/puma/issues/2638 "Issue by @gingerlime, closed 2021-06-27" +[#2642]:https://github.com/puma/puma/pull/2642 "PR by @MSP-Greg, merged 2021-06-16" +[#2633]:https://github.com/puma/puma/pull/2633 "PR by @onlined, merged 2021-06-04" +[#2666]:https://github.com/puma/puma/pull/2666 "PR by @MSP-Greg, merged 2021-07-25" +[#2630]:https://github.com/puma/puma/pull/2630 "PR by @seangoedecke, merged 2021-05-20" +[#2626]:https://github.com/puma/puma/issues/2626 "Issue by @rorymckinley, closed 2021-05-20" +[#2629]:https://github.com/puma/puma/pull/2629 "PR by @ye-lin-aung, merged 2021-05-20" +[#2628]:https://github.com/puma/puma/pull/2628 "PR by @wjordan, merged 2021-05-20" +[#2625]:https://github.com/puma/puma/issues/2625 "Issue by @jarthod, closed 2021-05-11" +[#2564]:https://github.com/puma/puma/pull/2564 "PR by @MSP-Greg, merged 2021-04-24" +[#2526]:https://github.com/puma/puma/issues/2526 "Issue by @nerdrew, closed 2021-04-24" +[#2559]:https://github.com/puma/puma/pull/2559 "PR by @ylecuyer, merged 2021-03-11" +[#2528]:https://github.com/puma/puma/issues/2528 "Issue by @cjlarose, closed 2021-03-11" +[#2565]:https://github.com/puma/puma/pull/2565 "PR by @CGA1123, merged 2021-03-09" +[#2534]:https://github.com/puma/puma/issues/2534 "Issue by @nateberkopec, closed 2021-03-09" +[#2563]:https://github.com/puma/puma/pull/2563 "PR by @MSP-Greg, merged 2021-03-06" +[#2504]:https://github.com/puma/puma/issues/2504 "Issue by @fsateler, closed 2021-03-06" +[#2591]:https://github.com/puma/puma/pull/2591 "PR by @MSP-Greg, merged 2021-05-05" +[#2572]:https://github.com/puma/puma/issues/2572 "Issue by @josefbilendo, closed 2021-05-05" +[#2613]:https://github.com/puma/puma/pull/2613 "PR by @smcgivern, merged 2021-04-27" +[#2605]:https://github.com/puma/puma/pull/2605 "PR by @pascalbetz, merged 2021-04-26" +[#2584]:https://github.com/puma/puma/issues/2584 "Issue by @kaorihinata, closed 2021-04-26" +[#2607]:https://github.com/puma/puma/pull/2607 "PR by @calvinxiao, merged 2021-04-23" +[#2552]:https://github.com/puma/puma/issues/2552 "Issue by @feliperaul, closed 2021-05-24" +[#2606]:https://github.com/puma/puma/pull/2606 "PR by @wjordan, merged 2021-04-20" +[#2574]:https://github.com/puma/puma/issues/2574 "Issue by @darkhelmet, closed 2021-04-20" +[#2567]:https://github.com/puma/puma/pull/2567 "PR by @kddeisz, merged 2021-04-19" +[#2566]:https://github.com/puma/puma/issues/2566 "Issue by @kddeisz, closed 2021-04-19" +[#2596]:https://github.com/puma/puma/pull/2596 "PR by @MSP-Greg, merged 2021-04-18" +[#2588]:https://github.com/puma/puma/pull/2588 "PR by @dentarg, merged 2021-04-02" +[#2556]:https://github.com/puma/puma/issues/2556 "Issue by @gamecreature, closed 2021-04-02" +[#2585]:https://github.com/puma/puma/pull/2585 "PR by @MSP-Greg, merged 2021-03-26" +[#2583]:https://github.com/puma/puma/issues/2583 "Issue by @jboler, closed 2021-03-26" +[#2609]:https://github.com/puma/puma/pull/2609 "PR by @calvinxiao, merged 2021-04-26" +[#2590]:https://github.com/puma/puma/pull/2590 "PR by @calvinxiao, merged 2021-04-05" +[#2600]:https://github.com/puma/puma/pull/2600 "PR by @wjordan, merged 2021-04-30" +[#2579]:https://github.com/puma/puma/pull/2579 "PR by @ghiculescu, merged 2021-03-17" +[#2553]:https://github.com/puma/puma/pull/2553 "PR by @olivierbellone, merged 2021-02-10" +[#2557]:https://github.com/puma/puma/pull/2557 "PR by @cjlarose, merged 2021-02-22" +[#2550]:https://github.com/puma/puma/pull/2550 "PR by @MSP-Greg, merged 2021-02-05" +[#2547]:https://github.com/puma/puma/pull/2547 "PR by @wildmaples, merged 2021-02-03" +[#2543]:https://github.com/puma/puma/pull/2543 "PR by @MSP-Greg, merged 2021-02-01" +[#2549]:https://github.com/puma/puma/pull/2549 "PR by @nmb, merged 2021-02-04" +[#2519]:https://github.com/puma/puma/pull/2519 "PR by @MSP-Greg, merged 2021-01-26" +[#2522]:https://github.com/puma/puma/pull/2522 "PR by @jcmfernandes, merged 2021-01-12" +[#2490]:https://github.com/puma/puma/pull/2490 "PR by @Bonias, merged 2020-12-07" +[#2486]:https://github.com/puma/puma/pull/2486 "PR by @ccverak, merged 2020-12-02" +[#2535]:https://github.com/puma/puma/pull/2535 "PR by @MSP-Greg, merged 2021-01-27" +[#2529]:https://github.com/puma/puma/pull/2529 "PR by @MSP-Greg, merged 2021-01-24" +[#2533]:https://github.com/puma/puma/pull/2533 "PR by @MSP-Greg, merged 2021-01-24" +[#1953]:https://github.com/puma/puma/issues/1953 "Issue by @nateberkopec, closed 2020-12-01" +[#2516]:https://github.com/puma/puma/pull/2516 "PR by @cjlarose, merged 2020-12-17" +[#2520]:https://github.com/puma/puma/pull/2520 "PR by @dentarg, merged 2021-01-04" +[#2521]:https://github.com/puma/puma/pull/2521 "PR by @ojab, merged 2021-01-04" +[#2531]:https://github.com/puma/puma/pull/2531 "PR by @wjordan, merged 2021-01-19" +[#2510]:https://github.com/puma/puma/pull/2510 "PR by @micke, merged 2020-12-10" +[#2472]:https://github.com/puma/puma/pull/2472 "PR by @ccverak, merged 2020-11-02" +[#2438]:https://github.com/puma/puma/pull/2438 "PR by @ekohl, merged 2020-10-26" +[#2406]:https://github.com/puma/puma/pull/2406 "PR by @fdel15, merged 2020-10-19" +[#2449]:https://github.com/puma/puma/pull/2449 "PR by @MSP-Greg, merged 2020-10-28" +[#2362]:https://github.com/puma/puma/pull/2362 "PR by @ekohl, merged 2020-11-10" +[#2485]:https://github.com/puma/puma/pull/2485 "PR by @elct9620, merged 2020-11-18" +[#2489]:https://github.com/puma/puma/pull/2489 "PR by @MSP-Greg, merged 2020-11-27" +[#2487]:https://github.com/puma/puma/pull/2487 "PR by @MSP-Greg, merged 2020-11-17" +[#2477]:https://github.com/puma/puma/pull/2477 "PR by @MSP-Greg, merged 2020-11-16" +[#2475]:https://github.com/puma/puma/pull/2475 "PR by @nateberkopec, merged 2020-11-02" +[#2439]:https://github.com/puma/puma/pull/2439 "PR by @kuei0221, merged 2020-10-26" +[#2460]:https://github.com/puma/puma/pull/2460 "PR by @cjlarose, merged 2020-10-27" +[#2473]:https://github.com/puma/puma/pull/2473 "PR by @cjlarose, merged 2020-11-01" +[#2479]:https://github.com/puma/puma/pull/2479 "PR by @cjlarose, merged 2020-11-10" +[#2495]:https://github.com/puma/puma/pull/2495 "PR by @JuanitoFatas, merged 2020-11-27" +[#2461]:https://github.com/puma/puma/pull/2461 "PR by @cjlarose, merged 2020-10-27" +[#2454]:https://github.com/puma/puma/issues/2454 "Issue by @majksner, closed 2020-10-27" +[#2432]:https://github.com/puma/puma/pull/2432 "PR by @MSP-Greg, merged 2020-10-25" +[#2442]:https://github.com/puma/puma/pull/2442 "PR by @wjordan, merged 2020-10-22" +[#2427]:https://github.com/puma/puma/pull/2427 "PR by @cjlarose, merged 2020-10-20" +[#2018]:https://github.com/puma/puma/issues/2018 "Issue by @gingerlime, closed 2020-10-20" +[#2435]:https://github.com/puma/puma/pull/2435 "PR by @wjordan, merged 2020-10-20" +[#2431]:https://github.com/puma/puma/pull/2431 "PR by @wjordan, merged 2020-10-16" +[#2212]:https://github.com/puma/puma/issues/2212 "Issue by @junaruga, closed 2020-10-16" +[#2409]:https://github.com/puma/puma/pull/2409 "PR by @fliiiix, merged 2020-10-03" +[#2448]:https://github.com/puma/puma/pull/2448 "PR by @MSP-Greg, merged 2020-10-25" +[#2450]:https://github.com/puma/puma/pull/2450 "PR by @MSP-Greg, merged 2020-10-25" +[#2419]:https://github.com/puma/puma/pull/2419 "PR by @MSP-Greg, merged 2020-10-09" +[#2279]:https://github.com/puma/puma/pull/2279 "PR by @wjordan, merged 2020-10-06" +[#2412]:https://github.com/puma/puma/pull/2412 "PR by @MSP-Greg, merged 2020-10-06" +[#2405]:https://github.com/puma/puma/pull/2405 "PR by @MSP-Greg, merged 2020-10-05" +[#2408]:https://github.com/puma/puma/pull/2408 "PR by @fliiiix, merged 2020-10-03" +[#2374]:https://github.com/puma/puma/pull/2374 "PR by @cjlarose, merged 2020-09-29" +[#2389]:https://github.com/puma/puma/pull/2389 "PR by @MSP-Greg, merged 2020-09-29" +[#2381]:https://github.com/puma/puma/pull/2381 "PR by @joergschray, merged 2020-09-24" +[#2271]:https://github.com/puma/puma/pull/2271 "PR by @wjordan, merged 2020-09-24" +[#2377]:https://github.com/puma/puma/pull/2377 "PR by @cjlarose, merged 2020-09-23" +[#2376]:https://github.com/puma/puma/pull/2376 "PR by @alexeevit, merged 2020-09-22" +[#2372]:https://github.com/puma/puma/pull/2372 "PR by @ahorek, merged 2020-09-22" +[#2384]:https://github.com/puma/puma/pull/2384 "PR by @schneems, merged 2020-09-27" +[#2375]:https://github.com/puma/puma/pull/2375 "PR by @MSP-Greg, merged 2020-09-23" +[#2373]:https://github.com/puma/puma/pull/2373 "PR by @MSP-Greg, merged 2020-09-23" +[#2305]:https://github.com/puma/puma/pull/2305 "PR by @MSP-Greg, merged 2020-09-14" +[#2099]:https://github.com/puma/puma/pull/2099 "PR by @wjordan, merged 2020-05-11" +[#2079]:https://github.com/puma/puma/pull/2079 "PR by @ayufan, merged 2020-05-11" +[#2093]:https://github.com/puma/puma/pull/2093 "PR by @schneems, merged 2019-12-18" +[#2256]:https://github.com/puma/puma/pull/2256 "PR by @nateberkopec, merged 2020-05-11" +[#2054]:https://github.com/puma/puma/pull/2054 "PR by @composerinteralia, merged 2019-11-11" +[#2106]:https://github.com/puma/puma/pull/2106 "PR by @ylecuyer, merged 2020-02-11" +[#2167]:https://github.com/puma/puma/pull/2167 "PR by @ChrisBr, closed 2020-07-06" +[#2344]:https://github.com/puma/puma/pull/2344 "PR by @dentarg, merged 2020-08-26" +[#2203]:https://github.com/puma/puma/pull/2203 "PR by @zanker-stripe, merged 2020-03-31" +[#2220]:https://github.com/puma/puma/pull/2220 "PR by @wjordan, merged 2020-04-14" +[#2238]:https://github.com/puma/puma/pull/2238 "PR by @sthirugn, merged 2020-05-07" +[#2086]:https://github.com/puma/puma/pull/2086 "PR by @bdewater, merged 2019-12-17" +[#2253]:https://github.com/puma/puma/pull/2253 "PR by @schneems, merged 2020-05-11" +[#2288]:https://github.com/puma/puma/pull/2288 "PR by @FTLam11, merged 2020-06-02" +[#1487]:https://github.com/puma/puma/pull/1487 "PR by @jxa, merged 2018-05-09" +[#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21" +[#2169]:https://github.com/puma/puma/pull/2169 "PR by @nateberkopec, merged 2020-03-10" +[#2170]:https://github.com/puma/puma/pull/2170 "PR by @nateberkopec, merged 2020-03-10" +[#2076]:https://github.com/puma/puma/pull/2076 "PR by @drews256, merged 2020-02-27" +[#2022]:https://github.com/puma/puma/pull/2022 "PR by @olleolleolle, merged 2019-11-11" +[#2300]:https://github.com/puma/puma/pull/2300 "PR by @alexeevit, merged 2020-07-06" +[#2269]:https://github.com/puma/puma/pull/2269 "PR by @MSP-Greg, merged 2020-08-31" +[#2312]:https://github.com/puma/puma/pull/2312 "PR by @MSP-Greg, merged 2020-07-20" +[#2338]:https://github.com/puma/puma/issues/2338 "Issue by @micahhainlinestitchfix, closed 2020-08-18" +[#2116]:https://github.com/puma/puma/pull/2116 "PR by @MSP-Greg, merged 2020-05-15" +[#2074]:https://github.com/puma/puma/issues/2074 "Issue by @jchristie55332, closed 2020-02-19" +[#2211]:https://github.com/puma/puma/pull/2211 "PR by @MSP-Greg, merged 2020-03-30" +[#2069]:https://github.com/puma/puma/pull/2069 "PR by @MSP-Greg, merged 2019-11-09" +[#2112]:https://github.com/puma/puma/pull/2112 "PR by @wjordan, merged 2020-03-03" +[#1893]:https://github.com/puma/puma/pull/1893 "PR by @seven1m, merged 2020-02-18" +[#2119]:https://github.com/puma/puma/pull/2119 "PR by @wjordan, merged 2020-02-20" +[#2121]:https://github.com/puma/puma/pull/2121 "PR by @wjordan, merged 2020-02-21" +[#2154]:https://github.com/puma/puma/pull/2154 "PR by @cjlarose, merged 2020-03-10" +[#1551]:https://github.com/puma/puma/issues/1551 "Issue by @austinthecoder, closed 2020-03-10" +[#2198]:https://github.com/puma/puma/pull/2198 "PR by @eregon, merged 2020-03-24" +[#2216]:https://github.com/puma/puma/pull/2216 "PR by @praboud-stripe, merged 2020-04-06" +[#2122]:https://github.com/puma/puma/pull/2122 "PR by @wjordan, merged 2020-04-10" +[#2177]:https://github.com/puma/puma/issues/2177 "Issue by @GuiTeK, closed 2020-04-08" +[#2221]:https://github.com/puma/puma/pull/2221 "PR by @wjordan, merged 2020-04-17" +[#2233]:https://github.com/puma/puma/pull/2233 "PR by @ayufan, merged 2020-04-25" +[#2234]:https://github.com/puma/puma/pull/2234 "PR by @wjordan, merged 2020-04-30" +[#2225]:https://github.com/puma/puma/issues/2225 "Issue by @nateberkopec, closed 2020-04-27" +[#2267]:https://github.com/puma/puma/pull/2267 "PR by @wjordan, merged 2020-05-20" +[#2287]:https://github.com/puma/puma/pull/2287 "PR by @eugeneius, merged 2020-05-31" +[#2317]:https://github.com/puma/puma/pull/2317 "PR by @MSP-Greg, merged 2020-09-01" +[#2319]:https://github.com/puma/puma/issues/2319 "Issue by @AlexWayfer, closed 2020-09-03" +[#2326]:https://github.com/puma/puma/pull/2326 "PR by @rkistner, closed 2020-09-04" +[#2299]:https://github.com/puma/puma/issues/2299 "Issue by @JohnPhillips31416, closed 2020-09-17" +[#2095]:https://github.com/puma/puma/pull/2095 "PR by @bdewater, merged 2019-12-25" +[#2102]:https://github.com/puma/puma/pull/2102 "PR by @bdewater, merged 2020-02-07" +[#2111]:https://github.com/puma/puma/pull/2111 "PR by @wjordan, merged 2020-02-20" +[#1980]:https://github.com/puma/puma/pull/1980 "PR by @nateberkopec, merged 2020-02-27" +[#2189]:https://github.com/puma/puma/pull/2189 "PR by @jkowens, merged 2020-03-19" +[#2124]:https://github.com/puma/puma/pull/2124 "PR by @wjordan, merged 2020-04-14" +[#2223]:https://github.com/puma/puma/pull/2223 "PR by @wjordan, merged 2020-04-20" +[#2239]:https://github.com/puma/puma/pull/2239 "PR by @wjordan, merged 2020-05-15" +[#2496]:https://github.com/puma/puma/pull/2496 "PR by @TheRusskiy, merged 2020-11-30" +[#2304]:https://github.com/puma/puma/issues/2304 "Issue by @mpeltomaa, closed 2020-09-05" +[#2132]:https://github.com/puma/puma/issues/2132 "Issue by @bmclean, closed 2020-02-28" +[#2010]:https://github.com/puma/puma/pull/2010 "PR by @nateberkopec, merged 2019-10-07" +[#2012]:https://github.com/puma/puma/pull/2012 "PR by @headius, merged 2019-10-07" +[#2046]:https://github.com/puma/puma/pull/2046 "PR by @composerinteralia, merged 2019-10-21" +[#2052]:https://github.com/puma/puma/pull/2052 "PR by @composerinteralia, merged 2019-11-02" +[#1564]:https://github.com/puma/puma/issues/1564 "Issue by @perlun, closed 2019-10-07" +[#2035]:https://github.com/puma/puma/pull/2035 "PR by @AndrewSpeed, merged 2019-10-18" +[#2048]:https://github.com/puma/puma/pull/2048 "PR by @hahmed, merged 2019-10-21" +[#2050]:https://github.com/puma/puma/pull/2050 "PR by @olleolleolle, merged 2019-10-25" +[#1842]:https://github.com/puma/puma/issues/1842 "Issue by @nateberkopec, closed 2019-09-18" +[#1988]:https://github.com/puma/puma/issues/1988 "Issue by @mcg, closed 2019-10-01" +[#1986]:https://github.com/puma/puma/issues/1986 "Issue by @flaminestone, closed 2019-10-01" +[#1994]:https://github.com/puma/puma/issues/1994 "Issue by @LimeBlast, closed 2019-10-01" +[#2006]:https://github.com/puma/puma/pull/2006 "PR by @nateberkopec, merged 2019-10-01" +[#1222]:https://github.com/puma/puma/issues/1222 "Issue by @seanmckinley, closed 2019-10-04" +[#1885]:https://github.com/puma/puma/pull/1885 "PR by @spk, merged 2019-08-10" +[#1934]:https://github.com/puma/puma/pull/1934 "PR by @zarelit, merged 2019-08-28" +[#1105]:https://github.com/puma/puma/pull/1105 "PR by @daveallie, merged 2019-09-02" +[#1786]:https://github.com/puma/puma/pull/1786 "PR by @evanphx, merged 2019-09-11" +[#1320]:https://github.com/puma/puma/pull/1320 "PR by @nateberkopec, merged 2019-09-12" +[#1968]:https://github.com/puma/puma/pull/1968 "PR by @nateberkopec, merged 2019-09-15" +[#1908]:https://github.com/puma/puma/pull/1908 "PR by @MSP-Greg, merged 2019-08-23" +[#1952]:https://github.com/puma/puma/pull/1952 "PR by @MSP-Greg, merged 2019-09-19" +[#1941]:https://github.com/puma/puma/pull/1941 "PR by @MSP-Greg, merged 2019-09-02" +[#1961]:https://github.com/puma/puma/pull/1961 "PR by @nateberkopec, merged 2019-09-11" +[#1970]:https://github.com/puma/puma/pull/1970 "PR by @MSP-Greg, merged 2019-09-18" +[#1946]:https://github.com/puma/puma/pull/1946 "PR by @nateberkopec, merged 2019-09-02" +[#1831]:https://github.com/puma/puma/pull/1831 "PR by @spk, merged 2019-07-27" +[#1816]:https://github.com/puma/puma/pull/1816 "PR by @ylecuyer, merged 2019-08-01" +[#1844]:https://github.com/puma/puma/pull/1844 "PR by @ylecuyer, merged 2019-08-01" +[#1836]:https://github.com/puma/puma/pull/1836 "PR by @MSP-Greg, merged 2019-08-06" +[#1887]:https://github.com/puma/puma/pull/1887 "PR by @MSP-Greg, merged 2019-08-06" +[#1812]:https://github.com/puma/puma/pull/1812 "PR by @kou, merged 2019-08-03" +[#1491]:https://github.com/puma/puma/pull/1491 "PR by @olleolleolle, merged 2019-07-17" +[#1837]:https://github.com/puma/puma/pull/1837 "PR by @montanalow, merged 2019-07-25" +[#1857]:https://github.com/puma/puma/pull/1857 "PR by @Jesus, merged 2019-08-03" +[#1822]:https://github.com/puma/puma/pull/1822 "PR by @Jesus, merged 2019-08-01" +[#1863]:https://github.com/puma/puma/pull/1863 "PR by @dzunk, merged 2019-08-04" +[#1838]:https://github.com/puma/puma/pull/1838 "PR by @bogn83, merged 2019-07-14" +[#1882]:https://github.com/puma/puma/pull/1882 "PR by @okuramasafumi, merged 2019-08-06" +[#1848]:https://github.com/puma/puma/pull/1848 "PR by @nateberkopec, merged 2019-07-16" +[#1847]:https://github.com/puma/puma/pull/1847 "PR by @nateberkopec, merged 2019-07-16" +[#1846]:https://github.com/puma/puma/pull/1846 "PR by @nateberkopec, merged 2019-07-16" +[#1853]:https://github.com/puma/puma/pull/1853 "PR by @Jesus, merged 2019-07-18" +[#1850]:https://github.com/puma/puma/pull/1850 "PR by @nateberkopec, merged 2019-07-27" +[#1866]:https://github.com/puma/puma/pull/1866 "PR by @josacar, merged 2019-07-28" +[#1870]:https://github.com/puma/puma/pull/1870 "PR by @MSP-Greg, merged 2019-07-30" +[#1872]:https://github.com/puma/puma/pull/1872 "PR by @MSP-Greg, merged 2019-07-30" +[#1833]:https://github.com/puma/puma/issues/1833 "Issue by @julik, closed 2019-07-09" +[#1888]:https://github.com/puma/puma/pull/1888 "PR by @ClikeX, merged 2019-08-06" +[#1829]:https://github.com/puma/puma/pull/1829 "PR by @Fudoshiki, merged 2019-07-09" +[#1832]:https://github.com/puma/puma/pull/1832 "PR by @MSP-Greg, merged 2019-07-08" +[#1827]:https://github.com/puma/puma/pull/1827 "PR by @amrrbakry, merged 2019-06-27" +[#1562]:https://github.com/puma/puma/pull/1562 "PR by @skrobul, merged 2019-02-20" +[#1569]:https://github.com/puma/puma/pull/1569 "PR by @rianmcguire, merged 2019-02-20" +[#1648]:https://github.com/puma/puma/pull/1648 "PR by @wjordan, merged 2019-02-20" +[#1691]:https://github.com/puma/puma/pull/1691 "PR by @kares, merged 2019-02-20" +[#1716]:https://github.com/puma/puma/pull/1716 "PR by @mdkent, merged 2019-02-20" +[#1690]:https://github.com/puma/puma/pull/1690 "PR by @mic-kul, merged 2019-03-11" +[#1689]:https://github.com/puma/puma/pull/1689 "PR by @michaelherold, merged 2019-03-11" +[#1728]:https://github.com/puma/puma/pull/1728 "PR by @evanphx, merged 2019-03-20" +[#1824]:https://github.com/puma/puma/pull/1824 "PR by @spk, merged 2019-06-24" +[#1685]:https://github.com/puma/puma/pull/1685 "PR by @mainameiz, merged 2019-02-20" +[#1808]:https://github.com/puma/puma/pull/1808 "PR by @schneems, merged 2019-06-10" +[#1508]:https://github.com/puma/puma/pull/1508 "PR by @florin555, merged 2019-02-20" +[#1650]:https://github.com/puma/puma/pull/1650 "PR by @adam101, merged 2019-02-20" +[#1655]:https://github.com/puma/puma/pull/1655 "PR by @mipearson, merged 2019-02-20" +[#1671]:https://github.com/puma/puma/pull/1671 "PR by @eric-norcross, merged 2019-02-20" +[#1583]:https://github.com/puma/puma/pull/1583 "PR by @chwevans, merged 2019-02-20" +[#1773]:https://github.com/puma/puma/pull/1773 "PR by @enebo, merged 2019-04-14" +[#1731]:https://github.com/puma/puma/issues/1731 "Issue by @Fudoshiki, closed 2019-03-20" +[#1803]:https://github.com/puma/puma/pull/1803 "PR by @Jesus, merged 2019-05-28" +[#1741]:https://github.com/puma/puma/pull/1741 "PR by @MSP-Greg, merged 2019-03-19" +[#1674]:https://github.com/puma/puma/issues/1674 "Issue by @atitan, closed 2019-06-12" +[#1720]:https://github.com/puma/puma/issues/1720 "Issue by @voxik, closed 2019-03-20" +[#1730]:https://github.com/puma/puma/issues/1730 "Issue by @nearapogee, closed 2019-07-16" +[#1755]:https://github.com/puma/puma/issues/1755 "Issue by @vbalazs, closed 2019-07-26" +[#1649]:https://github.com/puma/puma/pull/1649 "PR by @schneems, merged 2018-10-17" +[#1607]:https://github.com/puma/puma/pull/1607 "PR by @harmdewit, merged 2018-08-15" +[#1700]:https://github.com/puma/puma/pull/1700 "PR by @schneems, merged 2019-01-05" +[#1630]:https://github.com/puma/puma/pull/1630 "PR by @eregon, merged 2018-09-11" +[#1478]:https://github.com/puma/puma/pull/1478 "PR by @eallison91, merged 2018-05-09" +[#1604]:https://github.com/puma/puma/pull/1604 "PR by @schneems, merged 2018-07-02" +[#1579]:https://github.com/puma/puma/pull/1579 "PR by @schneems, merged 2018-06-14" +[#1506]:https://github.com/puma/puma/pull/1506 "PR by @dekellum, merged 2018-05-09" +[#1563]:https://github.com/puma/puma/pull/1563 "PR by @dannyfallon, merged 2018-05-01" +[#1557]:https://github.com/puma/puma/pull/1557 "PR by @swrobel, merged 2018-05-09" +[#1529]:https://github.com/puma/puma/pull/1529 "PR by @desnudopenguino, merged 2018-03-20" +[#1532]:https://github.com/puma/puma/pull/1532 "PR by @schneems, merged 2018-03-21" +[#1482]:https://github.com/puma/puma/pull/1482 "PR by @shayonj, merged 2018-03-19" +[#1511]:https://github.com/puma/puma/pull/1511 "PR by @jemiam, merged 2018-03-19" +[#1545]:https://github.com/puma/puma/pull/1545 "PR by @hoshinotsuyoshi, merged 2018-03-28" +[#1550]:https://github.com/puma/puma/pull/1550 "PR by @eileencodes, merged 2018-03-29" +[#1553]:https://github.com/puma/puma/pull/1553 "PR by @eugeneius, merged 2018-04-02" +[#1510]:https://github.com/puma/puma/issues/1510 "Issue by @vincentwoo, closed 2018-03-06" +[#1524]:https://github.com/puma/puma/pull/1524 "PR by @tuwukee, closed 2018-03-06" +[#1507]:https://github.com/puma/puma/issues/1507 "Issue by @vincentwoo, closed 2018-03-19" +[#1483]:https://github.com/puma/puma/issues/1483 "Issue by @igravious, closed 2018-03-06" +[#1502]:https://github.com/puma/puma/issues/1502 "Issue by @vincentwoo, closed 2020-03-09" +[#1403]:https://github.com/puma/puma/pull/1403 "PR by @eileencodes, merged 2017-10-04" +[#1435]:https://github.com/puma/puma/pull/1435 "PR by @juliancheal, merged 2017-10-11" +[#1340]:https://github.com/puma/puma/pull/1340 "PR by @ViliusLuneckas, merged 2017-10-16" +[#1434]:https://github.com/puma/puma/pull/1434 "PR by @jumbosushi, merged 2017-10-10" +[#1436]:https://github.com/puma/puma/pull/1436 "PR by @luislavena, merged 2017-10-11" +[#1418]:https://github.com/puma/puma/pull/1418 "PR by @eileencodes, merged 2017-09-22" +[#1416]:https://github.com/puma/puma/pull/1416 "PR by @hiimtaylorjones, merged 2017-09-22" +[#1409]:https://github.com/puma/puma/pull/1409 "PR by @olleolleolle, merged 2017-09-13" +[#1427]:https://github.com/puma/puma/issues/1427 "Issue by @garybernhardt, closed 2017-10-04" +[#1430]:https://github.com/puma/puma/pull/1430 "PR by @MSP-Greg, merged 2017-10-09" +[#1429]:https://github.com/puma/puma/pull/1429 "PR by @perlun, merged 2017-10-09" +[#1455]:https://github.com/puma/puma/pull/1455 "PR by @perlun, merged 2017-11-16" +[#1425]:https://github.com/puma/puma/pull/1425 "PR by @vizcay, merged 2017-10-01" +[#1452]:https://github.com/puma/puma/pull/1452 "PR by @eprothro, merged 2017-11-16" +[#1439]:https://github.com/puma/puma/pull/1439 "PR by @MSP-Greg, merged 2017-10-16" +[#1442]:https://github.com/puma/puma/pull/1442 "PR by @MSP-Greg, merged 2017-10-19" +[#1464]:https://github.com/puma/puma/pull/1464 "PR by @MSP-Greg, merged 2017-11-20" +[#1384]:https://github.com/puma/puma/pull/1384 "PR by @noahgibbs, merged 2017-08-03" +[#1111]:https://github.com/puma/puma/pull/1111 "PR by @alexlance, merged 2017-06-04" +[#1392]:https://github.com/puma/puma/pull/1392 "PR by @hoffm, merged 2017-08-11" +[#1347]:https://github.com/puma/puma/pull/1347 "PR by @NikolayRys, merged 2017-06-28" +[#1334]:https://github.com/puma/puma/pull/1334 "PR by @respire, merged 2017-06-13" +[#1383]:https://github.com/puma/puma/pull/1383 "PR by @schneems, merged 2017-08-02" +[#1368]:https://github.com/puma/puma/pull/1368 "PR by @bongole, merged 2017-08-03" +[#1318]:https://github.com/puma/puma/pull/1318 "PR by @nateberkopec, merged 2017-08-03" +[#1376]:https://github.com/puma/puma/pull/1376 "PR by @pat, merged 2017-08-03" +[#1388]:https://github.com/puma/puma/pull/1388 "PR by @nateberkopec, merged 2017-08-08" +[#1390]:https://github.com/puma/puma/pull/1390 "PR by @junaruga, merged 2017-08-16" +[#1391]:https://github.com/puma/puma/pull/1391 "PR by @junaruga, merged 2017-08-16" +[#1385]:https://github.com/puma/puma/pull/1385 "PR by @grosser, merged 2017-08-16" +[#1377]:https://github.com/puma/puma/pull/1377 "PR by @shayonj, merged 2017-08-16" +[#1337]:https://github.com/puma/puma/pull/1337 "PR by @shayonj, merged 2017-08-16" +[#1325]:https://github.com/puma/puma/pull/1325 "PR by @palkan, merged 2017-06-04" +[#1395]:https://github.com/puma/puma/pull/1395 "PR by @junaruga, merged 2017-08-16" +[#1367]:https://github.com/puma/puma/issues/1367 "Issue by @dekellum, closed 2017-08-17" +[#1314]:https://github.com/puma/puma/pull/1314 "PR by @grosser, merged 2017-06-02" +[#1311]:https://github.com/puma/puma/pull/1311 "PR by @grosser, merged 2017-06-02" +[#1313]:https://github.com/puma/puma/pull/1313 "PR by @grosser, merged 2017-06-03" +[#1260]:https://github.com/puma/puma/pull/1260 "PR by @grosser, merged 2017-04-11" +[#1278]:https://github.com/puma/puma/pull/1278 "PR by @evanphx, merged 2017-04-28" +[#1306]:https://github.com/puma/puma/pull/1306 "PR by @jules2689, merged 2017-05-31" +[#1274]:https://github.com/puma/puma/pull/1274 "PR by @evanphx, merged 2017-05-01" +[#1261]:https://github.com/puma/puma/pull/1261 "PR by @jacksonrayhamilton, merged 2017-04-07" +[#1259]:https://github.com/puma/puma/pull/1259 "PR by @jacksonrayhamilton, merged 2017-04-07" +[#1248]:https://github.com/puma/puma/pull/1248 "PR by @davidarnold, merged 2017-04-18" +[#1277]:https://github.com/puma/puma/pull/1277 "PR by @schneems, merged 2017-05-01" +[#1290]:https://github.com/puma/puma/pull/1290 "PR by @schneems, merged 2017-05-12" +[#1285]:https://github.com/puma/puma/pull/1285 "PR by @fmauNeko, merged 2017-05-12" +[#1282]:https://github.com/puma/puma/pull/1282 "PR by @grosser, merged 2017-05-09" +[#1294]:https://github.com/puma/puma/pull/1294 "PR by @masry707, merged 2017-05-15" +[#1206]:https://github.com/puma/puma/pull/1206 "PR by @NikolayRys, closed 2017-06-27" +[#1241]:https://github.com/puma/puma/issues/1241 "Issue by @renchap, closed 2017-03-14" +[#1239]:https://github.com/puma/puma/pull/1239 "PR by @schneems, merged 2017-03-10" +[#1234]:https://github.com/puma/puma/pull/1234 "PR by @schneems, merged 2017-03-09" +[#1226]:https://github.com/puma/puma/pull/1226 "PR by @eileencodes, merged 2017-03-09" +[#1227]:https://github.com/puma/puma/pull/1227 "PR by @sirupsen, merged 2017-02-27" +[#1213]:https://github.com/puma/puma/pull/1213 "PR by @junaruga, merged 2017-02-28" +[#1182]:https://github.com/puma/puma/issues/1182 "Issue by @brunowego, closed 2017-02-09" +[#1203]:https://github.com/puma/puma/pull/1203 "PR by @twalpole, merged 2017-02-09" +[#1129]:https://github.com/puma/puma/pull/1129 "PR by @chtitux, merged 2016-12-12" +[#1165]:https://github.com/puma/puma/pull/1165 "PR by @sriedel, merged 2016-12-21" +[#1175]:https://github.com/puma/puma/pull/1175 "PR by @jemiam, merged 2016-12-21" +[#1068]:https://github.com/puma/puma/pull/1068 "PR by @junaruga, merged 2016-09-05" +[#1091]:https://github.com/puma/puma/pull/1091 "PR by @frodsan, merged 2016-09-17" +[#1088]:https://github.com/puma/puma/pull/1088 "PR by @frodsan, merged 2016-11-20" +[#1160]:https://github.com/puma/puma/pull/1160 "PR by @frodsan, merged 2016-11-24" +[#1169]:https://github.com/puma/puma/pull/1169 "PR by @scbrubaker02, merged 2016-12-12" +[#1061]:https://github.com/puma/puma/pull/1061 "PR by @michaelsauter, merged 2016-09-05" +[#1036]:https://github.com/puma/puma/issues/1036 "Issue by @matobinder, closed 2016-08-03" +[#1120]:https://github.com/puma/puma/pull/1120 "PR by @prathamesh-sonpatki, merged 2016-11-21" +[#1178]:https://github.com/puma/puma/pull/1178 "PR by @Koronen, merged 2016-12-21" +[#1002]:https://github.com/puma/puma/issues/1002 "Issue by @mattyb, closed 2016-07-26" +[#1063]:https://github.com/puma/puma/issues/1063 "Issue by @mperham, closed 2016-09-05" +[#1089]:https://github.com/puma/puma/issues/1089 "Issue by @AdamBialas, closed 2016-09-17" +[#1114]:https://github.com/puma/puma/pull/1114 "PR by @sj26, merged 2016-12-13" +[#1110]:https://github.com/puma/puma/pull/1110 "PR by @montdidier, merged 2016-12-12" +[#1135]:https://github.com/puma/puma/pull/1135 "PR by @jkraemer, merged 2016-11-19" +[#1081]:https://github.com/puma/puma/pull/1081 "PR by @frodsan, merged 2016-09-08" +[#1138]:https://github.com/puma/puma/pull/1138 "PR by @steakknife, merged 2016-12-13" +[#1118]:https://github.com/puma/puma/pull/1118 "PR by @hiroara, merged 2016-11-20" +[#1075]:https://github.com/puma/puma/issues/1075 "Issue by @pvalena, closed 2016-09-06" +[#932]:https://github.com/puma/puma/issues/932 "Issue by @everplays, closed 2016-07-24" +[#519]:https://github.com/puma/puma/issues/519 "Issue by @tmornini, closed 2016-07-25" +[#828]:https://github.com/puma/puma/issues/828 "Issue by @Zapotek, closed 2016-07-24" +[#984]:https://github.com/puma/puma/issues/984 "Issue by @erichmenge, closed 2016-07-24" +[#1028]:https://github.com/puma/puma/issues/1028 "Issue by @matobinder, closed 2016-07-24" +[#1023]:https://github.com/puma/puma/issues/1023 "Issue by @fera2k, closed 2016-07-24" +[#1027]:https://github.com/puma/puma/issues/1027 "Issue by @rosenfeld, closed 2016-07-24" +[#925]:https://github.com/puma/puma/issues/925 "Issue by @lokenmakwana, closed 2016-07-24" +[#911]:https://github.com/puma/puma/issues/911 "Issue by @veganstraightedge, closed 2016-07-24" +[#620]:https://github.com/puma/puma/issues/620 "Issue by @javanthropus, closed 2016-07-25" +[#778]:https://github.com/puma/puma/issues/778 "Issue by @niedhui, closed 2016-07-24" +[#1021]:https://github.com/puma/puma/pull/1021 "PR by @sarahzrf, merged 2016-07-20" +[#1022]:https://github.com/puma/puma/issues/1022 "Issue by @AKovtunov, closed 2017-08-16" +[#958]:https://github.com/puma/puma/issues/958 "Issue by @lalitlogical, closed 2016-04-23" +[#782]:https://github.com/puma/puma/issues/782 "Issue by @Tonkpils, closed 2016-07-19" +[#1010]:https://github.com/puma/puma/issues/1010 "Issue by @mneumark, closed 2016-07-19" +[#959]:https://github.com/puma/puma/issues/959 "Issue by @mwpastore, closed 2016-04-22" +[#840]:https://github.com/puma/puma/issues/840 "Issue by @maxkwallace, closed 2016-04-07" +[#1007]:https://github.com/puma/puma/pull/1007 "PR by @willnet, merged 2016-06-24" +[#1014]:https://github.com/puma/puma/pull/1014 "PR by @szymon-jez, merged 2016-07-11" +[#1015]:https://github.com/puma/puma/pull/1015 "PR by @bf4, merged 2016-07-19" +[#1017]:https://github.com/puma/puma/pull/1017 "PR by @jorihardman, merged 2016-07-19" +[#954]:https://github.com/puma/puma/pull/954 "PR by @jf, merged 2016-04-12" +[#955]:https://github.com/puma/puma/pull/955 "PR by @jf, merged 2016-04-22" +[#956]:https://github.com/puma/puma/pull/956 "PR by @maxkwallace, merged 2016-04-12" +[#960]:https://github.com/puma/puma/pull/960 "PR by @kmayer, merged 2016-04-15" +[#969]:https://github.com/puma/puma/pull/969 "PR by @frankwong15, merged 2016-05-10" +[#970]:https://github.com/puma/puma/pull/970 "PR by @willnet, merged 2016-04-26" +[#974]:https://github.com/puma/puma/pull/974 "PR by @reidmorrison, merged 2016-05-10" +[#977]:https://github.com/puma/puma/pull/977 "PR by @snow, merged 2016-05-10" +[#981]:https://github.com/puma/puma/pull/981 "PR by @zach-chai, merged 2016-07-19" +[#993]:https://github.com/puma/puma/pull/993 "PR by @scorix, merged 2016-07-19" +[#938]:https://github.com/puma/puma/issues/938 "Issue by @vandrijevik, closed 2016-04-07" +[#529]:https://github.com/puma/puma/issues/529 "Issue by @mperham, closed 2016-04-07" +[#788]:https://github.com/puma/puma/issues/788 "Issue by @herregroen, closed 2016-04-07" +[#894]:https://github.com/puma/puma/issues/894 "Issue by @rafbm, closed 2016-04-07" +[#937]:https://github.com/puma/puma/issues/937 "Issue by @huangxiangdan, closed 2016-04-07" +[#945]:https://github.com/puma/puma/pull/945 "PR by @dekellum, merged 2016-04-07" +[#946]:https://github.com/puma/puma/pull/946 "PR by @vipulnsward, merged 2016-04-07" +[#947]:https://github.com/puma/puma/pull/947 "PR by @vipulnsward, merged 2016-04-07" +[#936]:https://github.com/puma/puma/pull/936 "PR by @prathamesh-sonpatki, merged 2016-04-01" +[#940]:https://github.com/puma/puma/pull/940 "PR by @kyledrake, merged 2016-04-01" +[#942]:https://github.com/puma/puma/pull/942 "PR by @dekellum, merged 2016-04-01" +[#927]:https://github.com/puma/puma/pull/927 "PR by @jlecour, merged 2016-03-18" +[#931]:https://github.com/puma/puma/pull/931 "PR by @runlevel5, merged 2016-03-18" +[#922]:https://github.com/puma/puma/issues/922 "Issue by @LavirtheWhiolet, closed 2016-03-07" +[#923]:https://github.com/puma/puma/issues/923 "Issue by @donv, closed 2016-03-06" +[#912]:https://github.com/puma/puma/pull/912 "PR by @tricknotes, merged 2016-03-06" +[#921]:https://github.com/puma/puma/pull/921 "PR by @swrobel, merged 2016-03-06" +[#924]:https://github.com/puma/puma/pull/924 "PR by @tbrisker, merged 2016-03-07" +[#916]:https://github.com/puma/puma/issues/916 "Issue by @ma11hew28, closed 2016-03-06" +[#913]:https://github.com/puma/puma/issues/913 "Issue by @Casara, closed 2016-03-06" +[#918]:https://github.com/puma/puma/issues/918 "Issue by @rodrigdav, closed 2016-03-06" +[#910]:https://github.com/puma/puma/issues/910 "Issue by @ball-hayden, closed 2016-03-05" +[#914]:https://github.com/puma/puma/issues/914 "Issue by @osheroff, closed 2016-03-06" +[#901]:https://github.com/puma/puma/pull/901 "PR by @mitto, merged 2016-02-26" +[#902]:https://github.com/puma/puma/pull/902 "PR by @corrupt952, merged 2016-02-26" +[#905]:https://github.com/puma/puma/pull/905 "PR by @Eric-Guo, merged 2016-02-26" +[#852]:https://github.com/puma/puma/issues/852 "Issue by @asia653, closed 2016-02-25" +[#854]:https://github.com/puma/puma/issues/854 "Issue by @ollym, closed 2016-02-25" +[#824]:https://github.com/puma/puma/issues/824 "Issue by @MattWalston, closed 2016-02-25" +[#823]:https://github.com/puma/puma/issues/823 "Issue by @pneuman, closed 2016-02-25" +[#815]:https://github.com/puma/puma/issues/815 "Issue by @nate-dipiazza, closed 2016-02-25" +[#835]:https://github.com/puma/puma/issues/835 "Issue by @mwpastore, closed 2016-02-25" +[#798]:https://github.com/puma/puma/issues/798 "Issue by @schneems, closed 2016-02-25" +[#876]:https://github.com/puma/puma/issues/876 "Issue by @osheroff, closed 2016-02-25" +[#849]:https://github.com/puma/puma/issues/849 "Issue by @apotheon, closed 2016-02-25" +[#871]:https://github.com/puma/puma/pull/871 "PR by @deepj, merged 2016-02-25" +[#874]:https://github.com/puma/puma/pull/874 "PR by @wallclockbuilder, merged 2016-02-25" +[#883]:https://github.com/puma/puma/pull/883 "PR by @dadah89, merged 2016-02-25" +[#884]:https://github.com/puma/puma/pull/884 "PR by @furkanmustafa, merged 2016-02-25" +[#888]:https://github.com/puma/puma/pull/888 "PR by @mlarraz, merged 2016-02-25" +[#890]:https://github.com/puma/puma/pull/890 "PR by @todd, merged 2016-02-25" +[#891]:https://github.com/puma/puma/pull/891 "PR by @ctaintor, merged 2016-02-25" +[#893]:https://github.com/puma/puma/pull/893 "PR by @spastorino, merged 2016-02-25" +[#897]:https://github.com/puma/puma/pull/897 "PR by @vanchi-zendesk, merged 2016-02-25" +[#899]:https://github.com/puma/puma/pull/899 "PR by @kch, merged 2016-02-25" +[#859]:https://github.com/puma/puma/issues/859 "Issue by @boxofrad, closed 2016-01-28" +[#822]:https://github.com/puma/puma/pull/822 "PR by @kwugirl, merged 2016-01-28" +[#833]:https://github.com/puma/puma/pull/833 "PR by @joemiller, merged 2016-01-28" +[#837]:https://github.com/puma/puma/pull/837 "PR by @YurySolovyov, merged 2016-01-28" +[#839]:https://github.com/puma/puma/pull/839 "PR by @ka8725, merged 2016-01-15" +[#845]:https://github.com/puma/puma/pull/845 "PR by @deepj, merged 2016-01-28" +[#846]:https://github.com/puma/puma/pull/846 "PR by @sriedel, merged 2016-01-15" +[#850]:https://github.com/puma/puma/pull/850 "PR by @deepj, merged 2016-01-15" +[#853]:https://github.com/puma/puma/pull/853 "PR by @Jeffrey6052, merged 2016-01-28" +[#857]:https://github.com/puma/puma/pull/857 "PR by @osheroff, merged 2016-01-15" +[#858]:https://github.com/puma/puma/pull/858 "PR by @mlarraz, merged 2016-01-28" +[#860]:https://github.com/puma/puma/pull/860 "PR by @osheroff, merged 2016-01-15" +[#861]:https://github.com/puma/puma/pull/861 "PR by @osheroff, merged 2016-01-15" +[#818]:https://github.com/puma/puma/pull/818 "PR by @unleashed, merged 2015-11-06" +[#819]:https://github.com/puma/puma/pull/819 "PR by @VictorLowther, merged 2015-11-06" +[#563]:https://github.com/puma/puma/issues/563 "Issue by @deathbob, closed 2015-11-06" +[#803]:https://github.com/puma/puma/issues/803 "Issue by @burningTyger, closed 2016-04-07" +[#768]:https://github.com/puma/puma/pull/768 "PR by @nathansamson, merged 2015-11-06" +[#773]:https://github.com/puma/puma/pull/773 "PR by @rossta, merged 2015-11-06" +[#774]:https://github.com/puma/puma/pull/774 "PR by @snow, merged 2015-11-06" +[#781]:https://github.com/puma/puma/pull/781 "PR by @sunsations, merged 2015-11-06" +[#791]:https://github.com/puma/puma/pull/791 "PR by @unleashed, merged 2015-10-01" +[#793]:https://github.com/puma/puma/pull/793 "PR by @robdimarco, merged 2015-11-06" +[#794]:https://github.com/puma/puma/pull/794 "PR by @peterkeen, merged 2015-11-06" +[#795]:https://github.com/puma/puma/pull/795 "PR by @unleashed, merged 2015-11-06" +[#796]:https://github.com/puma/puma/pull/796 "PR by @cschneid, merged 2015-10-13" +[#799]:https://github.com/puma/puma/pull/799 "PR by @annawinkler, merged 2015-11-06" +[#800]:https://github.com/puma/puma/pull/800 "PR by @liamseanbrady, merged 2015-11-06" +[#801]:https://github.com/puma/puma/pull/801 "PR by @scottjg, merged 2015-11-06" +[#802]:https://github.com/puma/puma/pull/802 "PR by @scottjg, merged 2015-11-06" +[#804]:https://github.com/puma/puma/pull/804 "PR by @burningTyger, merged 2015-11-06" +[#809]:https://github.com/puma/puma/pull/809 "PR by @unleashed, merged 2015-11-06" +[#810]:https://github.com/puma/puma/pull/810 "PR by @vlmonk, merged 2015-11-06" +[#814]:https://github.com/puma/puma/pull/814 "PR by @schneems, merged 2015-11-04" +[#817]:https://github.com/puma/puma/pull/817 "PR by @unleashed, merged 2015-11-06" +[#735]:https://github.com/puma/puma/issues/735 "Issue by @trekr5, closed 2015-08-04" +[#769]:https://github.com/puma/puma/issues/769 "Issue by @dovestyle, closed 2015-08-16" +[#767]:https://github.com/puma/puma/issues/767 "Issue by @kapso, closed 2015-08-15" +[#765]:https://github.com/puma/puma/issues/765 "Issue by @monfresh, closed 2015-08-15" +[#764]:https://github.com/puma/puma/issues/764 "Issue by @keithpitt, closed 2015-08-15" +[#669]:https://github.com/puma/puma/pull/669 "PR by @chulkilee, closed 2015-08-14" +[#673]:https://github.com/puma/puma/pull/673 "PR by @chulkilee, closed 2015-08-14" +[#668]:https://github.com/puma/puma/pull/668 "PR by @kcollignon, merged 2015-08-14" +[#754]:https://github.com/puma/puma/pull/754 "PR by @nathansamson, merged 2015-08-14" +[#759]:https://github.com/puma/puma/pull/759 "PR by @BenV, merged 2015-08-14" +[#761]:https://github.com/puma/puma/pull/761 "PR by @dmarcotte, merged 2015-08-14" +[#742]:https://github.com/puma/puma/pull/742 "PR by @deivid-rodriguez, merged 2015-07-17" +[#743]:https://github.com/puma/puma/pull/743 "PR by @matthewd, merged 2015-07-18" +[#749]:https://github.com/puma/puma/pull/749 "PR by @huacnlee, merged 2015-08-04" +[#751]:https://github.com/puma/puma/pull/751 "PR by @costi, merged 2015-07-31" +[#741]:https://github.com/puma/puma/issues/741 "Issue by @GUI, closed 2015-07-17" +[#739]:https://github.com/puma/puma/issues/739 "Issue by @hab278, closed 2015-07-17" +[#737]:https://github.com/puma/puma/issues/737 "Issue by @dmill, closed 2015-07-16" +[#733]:https://github.com/puma/puma/issues/733 "Issue by @Eric-Guo, closed 2015-07-15" +[#736]:https://github.com/puma/puma/pull/736 "PR by @paulanunda, merged 2015-07-15" +[#722]:https://github.com/puma/puma/issues/722 "Issue by @mikeki, closed 2015-07-14" +[#694]:https://github.com/puma/puma/issues/694 "Issue by @yld, closed 2015-06-10" +[#705]:https://github.com/puma/puma/issues/705 "Issue by @TheTeaNerd, closed 2015-07-14" +[#686]:https://github.com/puma/puma/pull/686 "PR by @jjb, merged 2015-06-10" +[#693]:https://github.com/puma/puma/pull/693 "PR by @rob-murray, merged 2015-06-10" +[#697]:https://github.com/puma/puma/pull/697 "PR by @spk, merged 2015-06-10" +[#699]:https://github.com/puma/puma/pull/699 "PR by @deees, merged 2015-05-19" +[#701]:https://github.com/puma/puma/pull/701 "PR by @deepj, merged 2015-05-19" +[#702]:https://github.com/puma/puma/pull/702 "PR by @OleMchls, merged 2015-06-10" +[#703]:https://github.com/puma/puma/pull/703 "PR by @deepj, merged 2015-06-10" +[#704]:https://github.com/puma/puma/pull/704 "PR by @grega, merged 2015-06-10" +[#709]:https://github.com/puma/puma/pull/709 "PR by @lian, merged 2015-06-10" +[#711]:https://github.com/puma/puma/pull/711 "PR by @julik, merged 2015-06-10" +[#712]:https://github.com/puma/puma/pull/712 "PR by @chewi, merged 2015-07-14" +[#715]:https://github.com/puma/puma/pull/715 "PR by @0RaymondJiang0, merged 2015-07-14" +[#725]:https://github.com/puma/puma/pull/725 "PR by @rwz, merged 2015-07-14" +[#726]:https://github.com/puma/puma/pull/726 "PR by @jshafton, merged 2015-07-14" +[#729]:https://github.com/puma/puma/pull/729 "PR by @allaire, merged 2015-07-14" +[#730]:https://github.com/puma/puma/pull/730 "PR by @iamjarvo, merged 2015-07-14" +[#690]:https://github.com/puma/puma/issues/690 "Issue by @bachue, closed 2015-04-21" +[#684]:https://github.com/puma/puma/issues/684 "Issue by @tomquas, closed 2015-04-13" +[#698]:https://github.com/puma/puma/pull/698 "PR by @dmarcotte, merged 2015-05-04" +[#683]:https://github.com/puma/puma/issues/683 "Issue by @indirect, closed 2015-04-11" +[#657]:https://github.com/puma/puma/pull/657 "PR by @schneems, merged 2015-02-19" +[#658]:https://github.com/puma/puma/pull/658 "PR by @tomohiro, merged 2015-02-23" +[#662]:https://github.com/puma/puma/pull/662 "PR by @iaintshine, merged 2015-03-06" +[#664]:https://github.com/puma/puma/pull/664 "PR by @fxposter, merged 2015-03-09" +[#667]:https://github.com/puma/puma/pull/667 "PR by @JuanitoFatas, merged 2015-03-12" +[#672]:https://github.com/puma/puma/pull/672 "PR by @chulkilee, merged 2015-03-15" +[#653]:https://github.com/puma/puma/issues/653 "Issue by @dvrensk, closed 2015-02-11" +[#644]:https://github.com/puma/puma/pull/644 "PR by @bpaquet, merged 2015-01-29" +[#646]:https://github.com/puma/puma/pull/646 "PR by @mkonecny, merged 2015-02-05" +[#630]:https://github.com/puma/puma/issues/630 "Issue by @jelmd, closed 2015-01-20" +[#622]:https://github.com/puma/puma/issues/622 "Issue by @sabamotto, closed 2015-01-20" +[#583]:https://github.com/puma/puma/issues/583 "Issue by @rwojsznis, closed 2015-01-20" +[#586]:https://github.com/puma/puma/issues/586 "Issue by @ponchik, closed 2015-01-20" +[#359]:https://github.com/puma/puma/issues/359 "Issue by @natew, closed 2014-12-13" +[#633]:https://github.com/puma/puma/issues/633 "Issue by @joevandyk, closed 2015-01-20" +[#478]:https://github.com/puma/puma/pull/478 "PR by @rubencaro, merged 2015-01-20" +[#610]:https://github.com/puma/puma/pull/610 "PR by @kwilczynski, merged 2014-11-27" +[#611]:https://github.com/puma/puma/pull/611 "PR by @jasonl, merged 2015-01-20" +[#616]:https://github.com/puma/puma/pull/616 "PR by @jc00ke, merged 2014-12-10" +[#623]:https://github.com/puma/puma/pull/623 "PR by @raldred, merged 2015-01-20" +[#628]:https://github.com/puma/puma/pull/628 "PR by @rdpoor, merged 2015-01-20" +[#634]:https://github.com/puma/puma/pull/634 "PR by @deepj, merged 2015-01-20" +[#637]:https://github.com/puma/puma/pull/637 "PR by @raskhadafi, merged 2015-01-20" +[#639]:https://github.com/puma/puma/pull/639 "PR by @ebeigarts, merged 2015-01-20" +[#640]:https://github.com/puma/puma/pull/640 "PR by @bailsman, merged 2015-01-20" +[#591]:https://github.com/puma/puma/issues/591 "Issue by @renier, closed 2014-11-24" +[#606]:https://github.com/puma/puma/issues/606 "Issue by @, closed 2014-11-24" +[#560]:https://github.com/puma/puma/pull/560 "PR by @raskhadafi, merged 2014-11-24" +[#566]:https://github.com/puma/puma/pull/566 "PR by @sheltond, merged 2014-11-24" +[#593]:https://github.com/puma/puma/pull/593 "PR by @andruby, merged 2014-10-30" +[#594]:https://github.com/puma/puma/pull/594 "PR by @hassox, merged 2014-10-31" +[#596]:https://github.com/puma/puma/pull/596 "PR by @burningTyger, merged 2014-11-01" +[#601]:https://github.com/puma/puma/pull/601 "PR by @sorentwo, merged 2014-11-24" +[#602]:https://github.com/puma/puma/pull/602 "PR by @1334, merged 2014-11-24" +[#608]:https://github.com/puma/puma/pull/608 "PR by @Gu1, merged 2014-11-24" +[#538]:https://github.com/puma/puma/pull/538 "PR by @memiux, merged 2014-11-24" +[#550]:https://github.com/puma/puma/issues/550 "Issue by @, closed 2014-10-30" +[#549]:https://github.com/puma/puma/pull/549 "PR by @bsnape, merged 2014-10-16" +[#553]:https://github.com/puma/puma/pull/553 "PR by @lowjoel, merged 2014-10-16" +[#568]:https://github.com/puma/puma/pull/568 "PR by @mariuz, merged 2014-10-16" +[#578]:https://github.com/puma/puma/pull/578 "PR by @danielbuechele, merged 2014-10-16" +[#581]:https://github.com/puma/puma/pull/581 "PR by @alexch, merged 2014-10-16" +[#590]:https://github.com/puma/puma/pull/590 "PR by @dmarcotte, merged 2014-10-16" +[#574]:https://github.com/puma/puma/issues/574 "Issue by @minasmart, closed 2014-09-05" +[#561]:https://github.com/puma/puma/pull/561 "PR by @krasnoukhov, merged 2014-08-04" +[#570]:https://github.com/puma/puma/pull/570 "PR by @havenwood, merged 2014-08-20" +[#520]:https://github.com/puma/puma/pull/520 "PR by @misfo, merged 2014-06-16" +[#530]:https://github.com/puma/puma/pull/530 "PR by @dmarcotte, merged 2014-06-16" +[#537]:https://github.com/puma/puma/pull/537 "PR by @vlmonk, merged 2014-06-16" +[#540]:https://github.com/puma/puma/pull/540 "PR by @allaire, merged 2014-05-27" +[#544]:https://github.com/puma/puma/pull/544 "PR by @chulkilee, merged 2014-06-03" +[#551]:https://github.com/puma/puma/pull/551 "PR by @jcxplorer, merged 2014-07-02" +[#487]:https://github.com/puma/puma/pull/487 "PR by @, merged 2014-03-06" +[#492]:https://github.com/puma/puma/pull/492 "PR by @, merged 2014-03-06" +[#493]:https://github.com/puma/puma/pull/493 "PR by @alepore, merged 2014-03-07" +[#503]:https://github.com/puma/puma/pull/503 "PR by @mariuz, merged 2014-04-12" +[#505]:https://github.com/puma/puma/pull/505 "PR by @sammcj, merged 2014-04-12" +[#506]:https://github.com/puma/puma/pull/506 "PR by @dsander, merged 2014-04-12" +[#510]:https://github.com/puma/puma/pull/510 "PR by @momer, merged 2014-04-12" +[#511]:https://github.com/puma/puma/pull/511 "PR by @macool, merged 2014-04-12" +[#514]:https://github.com/puma/puma/pull/514 "PR by @nanaya, merged 2014-04-12" +[#517]:https://github.com/puma/puma/pull/517 "PR by @misfo, merged 2014-04-12" +[#518]:https://github.com/puma/puma/pull/518 "PR by @alxgsv, merged 2014-04-12" +[#471]:https://github.com/puma/puma/pull/471 "PR by @arthurnn, merged 2014-02-28" +[#485]:https://github.com/puma/puma/pull/485 "PR by @runlevel5, merged 2014-03-01" +[#486]:https://github.com/puma/puma/pull/486 "PR by @joshwlewis, merged 2014-03-02" +[#490]:https://github.com/puma/puma/pull/490 "PR by @tobinibot, merged 2014-03-06" +[#491]:https://github.com/puma/puma/pull/491 "PR by @brianknight10, merged 2014-03-06" +[#438]:https://github.com/puma/puma/issues/438 "Issue by @mperham, closed 2014-01-25" +[#333]:https://github.com/puma/puma/issues/333 "Issue by @SamSaffron, closed 2014-01-26" +[#440]:https://github.com/puma/puma/issues/440 "Issue by @sudara, closed 2014-01-25" +[#449]:https://github.com/puma/puma/issues/449 "Issue by @cezarsa, closed 2014-02-04" +[#444]:https://github.com/puma/puma/issues/444 "Issue by @le0pard, closed 2014-01-25" +[#370]:https://github.com/puma/puma/issues/370 "Issue by @pelcasandra, closed 2014-01-26" +[#377]:https://github.com/puma/puma/issues/377 "Issue by @mrbrdo, closed 2014-01-26" +[#406]:https://github.com/puma/puma/issues/406 "Issue by @simonrussell, closed 2014-01-25" +[#425]:https://github.com/puma/puma/issues/425 "Issue by @jhass, closed 2014-01-26" +[#432]:https://github.com/puma/puma/pull/432 "PR by @anatol, closed 2014-01-25" +[#428]:https://github.com/puma/puma/pull/428 "PR by @alexeyfrank, merged 2014-01-25" +[#429]:https://github.com/puma/puma/pull/429 "PR by @namusyaka, merged 2013-12-16" +[#431]:https://github.com/puma/puma/pull/431 "PR by @mrb, merged 2014-01-25" +[#433]:https://github.com/puma/puma/pull/433 "PR by @alepore, merged 2014-02-28" +[#437]:https://github.com/puma/puma/pull/437 "PR by @ibrahima, merged 2014-01-25" +[#446]:https://github.com/puma/puma/pull/446 "PR by @sudara, merged 2014-01-27" +[#451]:https://github.com/puma/puma/pull/451 "PR by @pwiebe, merged 2014-02-04" +[#453]:https://github.com/puma/puma/pull/453 "PR by @joevandyk, merged 2014-02-28" +[#470]:https://github.com/puma/puma/pull/470 "PR by @arthurnn, merged 2014-02-28" +[#472]:https://github.com/puma/puma/pull/472 "PR by @rubencaro, merged 2014-02-21" +[#480]:https://github.com/puma/puma/pull/480 "PR by @jjb, merged 2014-02-26" +[#481]:https://github.com/puma/puma/pull/481 "PR by @schneems, merged 2014-02-25" +[#482]:https://github.com/puma/puma/pull/482 "PR by @prathamesh-sonpatki, merged 2014-02-26" +[#483]:https://github.com/puma/puma/pull/483 "PR by @maxilev, merged 2014-02-26" +[#422]:https://github.com/puma/puma/issues/422 "Issue by @alexandru-calinoiu, closed 2013-12-05" +[#334]:https://github.com/puma/puma/issues/334 "Issue by @srgpqt, closed 2013-07-18" +[#179]:https://github.com/puma/puma/issues/179 "Issue by @betelgeuse, closed 2013-07-18" +[#332]:https://github.com/puma/puma/issues/332 "Issue by @SamSaffron, closed 2013-07-18" +[#317]:https://github.com/puma/puma/issues/317 "Issue by @masterkain, closed 2013-07-11" +[#309]:https://github.com/puma/puma/issues/309 "Issue by @masterkain, closed 2013-07-09" +[#166]:https://github.com/puma/puma/issues/166 "Issue by @emassip, closed 2013-07-06" +[#292]:https://github.com/puma/puma/issues/292 "Issue by @pulse00, closed 2013-07-06" +[#274]:https://github.com/puma/puma/issues/274 "Issue by @mrbrdo, closed 2013-07-06" +[#304]:https://github.com/puma/puma/issues/304 "Issue by @nandosola, closed 2013-07-06" +[#287]:https://github.com/puma/puma/issues/287 "Issue by @runlevel5, closed 2013-07-06" +[#256]:https://github.com/puma/puma/issues/256 "Issue by @rkh, closed 2013-07-01" +[#285]:https://github.com/puma/puma/issues/285 "Issue by @mkwiatkowski, closed 2013-06-20" +[#270]:https://github.com/puma/puma/issues/270 "Issue by @iamroody, closed 2013-06-01" +[#246]:https://github.com/puma/puma/issues/246 "Issue by @amencarini, closed 2013-06-01" +[#278]:https://github.com/puma/puma/issues/278 "Issue by @titanous, closed 2013-06-18" +[#251]:https://github.com/puma/puma/issues/251 "Issue by @cure, closed 2013-06-18" +[#252]:https://github.com/puma/puma/issues/252 "Issue by @vixns, closed 2013-06-01" +[#234]:https://github.com/puma/puma/issues/234 "Issue by @jgarber, closed 2013-04-08" +[#228]:https://github.com/puma/puma/issues/228 "Issue by @joelmats, closed 2013-04-29" +[#192]:https://github.com/puma/puma/issues/192 "Issue by @steverandy, closed 2013-02-09" +[#206]:https://github.com/puma/puma/issues/206 "Issue by @moll, closed 2013-03-19" +[#154]:https://github.com/puma/puma/issues/154 "Issue by @trevor, closed 2013-03-19" +[#208]:https://github.com/puma/puma/issues/208 "Issue by @ochronus, closed 2013-03-18" +[#189]:https://github.com/puma/puma/issues/189 "Issue by @tolot27, closed 2013-02-09" +[#185]:https://github.com/puma/puma/issues/185 "Issue by @nicolai86, closed 2013-02-06" +[#182]:https://github.com/puma/puma/issues/182 "Issue by @sriedel, closed 2013-02-05" +[#183]:https://github.com/puma/puma/issues/183 "Issue by @concept47, closed 2013-02-05" +[#176]:https://github.com/puma/puma/issues/176 "Issue by @cryo28, closed 2013-02-05" +[#180]:https://github.com/puma/puma/issues/180 "Issue by @tscolari, closed 2013-02-05" +[#170]:https://github.com/puma/puma/issues/170 "Issue by @nixme, closed 2012-11-29" +[#148]:https://github.com/puma/puma/issues/148 "Issue by @rafaelss, closed 2012-11-18" +[#128]:https://github.com/puma/puma/issues/128 "Issue by @fbjork, closed 2012-10-20" +[#155]:https://github.com/puma/puma/issues/155 "Issue by @ehlertij, closed 2012-10-13" +[#123]:https://github.com/puma/puma/pull/123 "PR by @jcoene, closed 2012-07-19" +[#111]:https://github.com/puma/puma/pull/111 "PR by @kenkeiter, closed 2012-07-19" +[#98]:https://github.com/puma/puma/pull/98 "PR by @Flink, closed 2012-05-15" +[#94]:https://github.com/puma/puma/issues/94 "Issue by @ender672, closed 2012-05-08" +[#84]:https://github.com/puma/puma/issues/84 "Issue by @sigursoft, closed 2012-04-29" +[#78]:https://github.com/puma/puma/issues/78 "Issue by @dstrelau, closed 2012-04-28" +[#79]:https://github.com/puma/puma/issues/79 "Issue by @jammi, closed 2012-04-28" +[#65]:https://github.com/puma/puma/issues/65 "Issue by @bporterfield, closed 2012-04-11" +[#54]:https://github.com/puma/puma/issues/54 "Issue by @masterkain, closed 2012-04-10" +[#58]:https://github.com/puma/puma/pull/58 "PR by @paneq, closed 2012-04-10" +[#61]:https://github.com/puma/puma/issues/61 "Issue by @dustalov, closed 2012-04-10" +[#63]:https://github.com/puma/puma/issues/63 "Issue by @seamusabshere, closed 2012-04-11" +[#60]:https://github.com/puma/puma/issues/60 "Issue by @paneq, closed 2012-04-11" +[#53]:https://github.com/puma/puma/pull/53 "PR by @sxua, closed 2012-04-11"