From: Athos Ribeiro Date: Thu, 17 Jul 2025 10:20:19 +0000 (-0300) Subject: puma (6.6.0-4) unstable; urgency=medium X-Git-Tag: archive/raspbian/6.6.0-4+rpi1^2~13 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c483e58ad9a162e43c1013ace8cb3b7f2ffe8ef3;p=puma.git puma (6.6.0-4) unstable; urgency=medium * Team upload. * Do not generate example certificates in build time to avoid build depending on Java * d/p/0019-adapt-test-certs-generation.patch: adjust example certificates generation script * d/p/0020-update-ex-certs.patch: update example certificates to avoid a regression for #1078640 * debian/README.source: document test certificates generation [dgit import unpatched puma 6.6.0-4] --- c483e58ad9a162e43c1013ace8cb3b7f2ffe8ef3 diff --cc debian/README.source index 0000000,0000000..7622ecc new file mode 100644 --- /dev/null +++ b/debian/README.source @@@ -1,0 -1,0 +1,31 @@@ ++puma (6.6.0-4) ++ ++ Added the capability to re-generate test certificates in the examples ++ directory. This should require installing ++ - default-jre, and ++ - ruby-certificate-authority ++ which are currently not listed as dependencies of this package. You can also ++ use faketime to run the upstream tests in a future date to test if the ++ certificates will be valid throughout the Debian release support cycle. ++ ++ Note that these certificates are not being re-generated during build time ++ because the examples/generate_all_certs script depends on the keytool binary ++ shipped in the JRE package (we do not want to build depend on Java just for ++ this). It should be possible to re-write the script to use the minijks ++ package instead (written in Go) so we can always generate these certificates ++ during package builds. ++ ++puma (4.3.1-1) ++ ++ Several tests have been disabled by default: ++ ++ - test/test_puma_server_ssl.rb has been disabled because all tests fail ++ randomly. However these tests have never been performed in puma 3.x and ++ they also work randomly. So until someone can look into them and fix them, ++ we decided to not run them (see also #921931). ++ ++ - test_control_for_ssl (test/test_cli.rb) and ++ test_control_ssl (test/test_pumactl.rb) show similar issues and don't seem ++ to imply that the package fails to work. So they have been disabled too. ++ ++ -- Daniel Leidert Wed, 05 Feb 2020 23:51:51 +0100 diff --cc debian/changelog index 0000000,0000000..3342f03 new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -1,0 -1,0 +1,428 @@@ ++puma (6.6.0-4) unstable; urgency=medium ++ ++ * Team upload. ++ * Do not generate example certificates in build time to avoid build ++ depending on Java ++ * d/p/0019-adapt-test-certs-generation.patch: adjust example certificates ++ generation script ++ * d/p/0020-update-ex-certs.patch: update example certificates to avoid a ++ regression for #1078640 ++ * debian/README.source: document test certificates generation ++ ++ -- Athos Ribeiro Thu, 17 Jul 2025 07:20:19 -0300 ++ ++puma (6.6.0-3) unstable; urgency=medium ++ ++ * Team upload. ++ * Freshly generate example certificates for test suite (Closes: #1078640) ++ ++ -- Timo Röhling Wed, 16 Jul 2025 21:51:16 +0200 ++ ++puma (6.6.0-2) unstable; urgency=medium ++ ++ * Team upload ++ * Change build-dependency on ruby-rackup to ++ ruby-rackup | ruby-rack (<< 3), to allow migration to testing ++ independently of rackup or rack 3. ++ ++ -- Lucas Nussbaum Fri, 07 Feb 2025 21:46:17 +0100 ++ ++puma (6.6.0-1) unstable; urgency=medium ++ ++ * Team upload ++ * New upstream version 6.5.0, with fixes for rack 3. Closes: #1094539 ++ * Refresh patches for 6.5.0 ++ * Drop patches (were upstream backports, so no longer needed): ++ + 0009-CI-update-chain-certs-example-files-3426.patch ++ + 0010-Update-all-certs.patch ++ + 0011-Fix-path-of-certs-useb-by-test_example_cert_expirati.patch ++ + 0014-Give-a-wide-berth-on-the-timeout-as-sometimes-CI-is-.patch ++ + 0018-update-certs-from-upstream.patch ++ * Refresh packaging using dh-make-ruby ++ * Add build-dep on rackup for Rack::Handler ++ * New upstream version 6.6.0 ++ * Refresh patches again, for 6.6.0 ++ * Add build-dep on ruby-concurrent ++ * Add patch: 0010-Disable-test-concurrency-without-concurrent_ruby.patch ++ * Drop unmatched lintian override ++ ++ -- Lucas Nussbaum Wed, 05 Feb 2025 14:56:49 +0100 ++ ++puma (6.4.3-3) unstable; urgency=medium ++ ++ * d/p/0014-Give-a-wide-berth-on-the-timeout-as-sometimes-CI-is-.patch: ++ increase timeout to fix FTBFS with ruby 3.3. ++ ++ -- Lucas Kanashiro Wed, 22 Jan 2025 17:06:59 -0300 ++ ++puma (6.4.3-2) unstable; urgency=medium ++ ++ * Team upload. ++ * d/p/0018-disable-test-failing-with-ruby3.2.patch: fix FTBFS ++ ++ -- Lucas Kanashiro Mon, 23 Dec 2024 19:07:19 -0300 ++ ++puma (6.4.3-1) unstable; urgency=medium ++ ++ * Team upload. ++ * New upstream version. Fixes CVE-2024-45614 (Closes: #1082379) ++ * Remove custom ssl autopkgtest. ++ - https://lists.debian.org/debian-ruby/2024/11/msg00006.html ++ * Update certificates for tests. ++ ++ -- Abhijith PA Mon, 30 Sep 2024 09:46:18 +0530 ++ ++puma (6.4.2-6) unstable; urgency=medium ++ ++ * Fix FTBFS due to certs expiration (Closes: #1078640) ++ - d/p/0010-Update-all-certs.patch ++ - d/p/0011-Fix-path-of-certs-useb-by-test_example_cert_expirati.patch ++ * Declare compliance with Debian Policy 4.7.0. ++ ++ -- Lucas Kanashiro Thu, 19 Sep 2024 17:56:24 -0300 ++ ++puma (6.4.2-5) unstable; urgency=medium ++ ++ * Backport upstream patch to update certificates in examples. ++ This fixes a test failure. ++ ++ -- Lucas Kanashiro Sat, 20 Jul 2024 12:24:05 -0300 ++ ++puma (6.4.2-4) unstable; urgency=medium ++ ++ * Disable test failing on armhf ++ ++ -- Pirate Praveen Tue, 06 Feb 2024 18:13:41 +0530 ++ ++puma (6.4.2-3) unstable; urgency=medium ++ ++ * Add Breaks: rails (<< 2:6.1.7.3+dfsg-3~) ++ ++ -- Pirate Praveen Mon, 05 Feb 2024 15:12:00 +0530 ++ ++puma (6.4.2-2) unstable; urgency=medium ++ ++ * Disable test failing on arm64 buildd ++ ++ -- Pirate Praveen Mon, 05 Feb 2024 14:11:14 +0530 ++ ++puma (6.4.2-1) unstable; urgency=medium ++ ++ * Switch to github tags from releases (6.4.2 is only available from tags) ++ * New upstream version 6.4.2 (Fixes: CVE-2024-21647) ++ ++ -- Pirate Praveen Mon, 05 Feb 2024 01:08:22 +0530 ++ ++puma (6.4.0-4) unstable; urgency=medium ++ ++ * Remove minitest/retry as well (copy from 5.x branch and fixes salsa ci) ++ * Export LC_ALL also to C.UTF-8 (hoping this would fix some test failures) ++ ++ -- Pirate Praveen Mon, 05 Feb 2024 00:52:13 +0530 ++ ++puma (6.4.0-3) unstable; urgency=medium ++ ++ * Reupload to unstable ++ ++ -- Pirate Praveen Sun, 04 Feb 2024 01:16:15 +0530 ++ ++puma (6.4.0-2) experimental; urgency=medium ++ ++ * Set TEST_CASE_TIMEOUT = 300 (one test is timing out on amd64 buildd) ++ ++ -- Pirate Praveen Mon, 04 Dec 2023 23:59:02 +0530 ++ ++puma (6.4.0-1) experimental; urgency=medium ++ ++ * New upstream version 6.4.0 ++ * Disable more tests and refresh patches ++ * Add procps to build depends for kill command (used in tests) ++ ++ -- Pirate Praveen Sun, 03 Dec 2023 13:58:23 +0530 ++ ++puma (6.0.2-1) experimental; urgency=medium ++ ++ * Team upload. ++ * New upstream release. ++ * d/control (Standards-Version): Bump to 4.6.2. ++ (Build-Depends): Add ruby-sd-notify. ++ * d/copyright (Copyright): Update years. ++ * d/ruby-tests.rake: Re-enable multiple tests (closes: #984713). ++ * d/upstream/metadata: Adjust a few URLs. ++ ++ -- Daniel Leidert Thu, 09 Feb 2023 16:12:20 +0100 ++ ++puma (5.6.5-2) unstable; urgency=medium ++ ++ * debian/ruby-tests.rake: skip test that fails often (Closes: #1006022) ++ * debian/ruby-tests.rake: exclude tests that fail often but not always ++ ++ -- Antonio Terceiro Wed, 02 Nov 2022 09:26:37 -0300 ++ ++puma (5.6.5-1) unstable; urgency=medium ++ ++ * Update watch file for github.com pattern change ++ * New upstream version 5.6.5 ++ * Refresh patches ++ * Bump Standards-Version to 4.6.1 (no changes needed) ++ ++ -- Pirate Praveen Sun, 16 Oct 2022 22:44:46 +0530 ++ ++puma (5.6.4-1) unstable; urgency=medium ++ ++ * New upstream version 5.6.4 ++ * Refresh patches ++ * Disable some tests that fail with ++ NameError: uninitialized constant Puma::LogWriter ++ * Remove tmp/restart.txt in clean ++ ++ -- Pirate Praveen Mon, 04 Apr 2022 13:24:10 +0530 ++ ++puma (5.5.2-2) unstable; urgency=medium ++ ++ * Team upload ++ * debian/rules: force an UTF-8 locale ++ * debian/ruby-tests.rake: wrap lines ++ * debian/ruby-tests.rake: run all ssl tests on autopkgtest only ++ * debian/test/control: give ssl test a name ++ ++ -- Antonio Terceiro Tue, 02 Nov 2021 16:35:12 -0300 ++ ++puma (5.5.2-1) unstable; urgency=medium ++ ++ * Team upload ++ * New upstream version 5.5.2 ++ - Builds and tests fine again (Closes: #998295) ++ * Add build-dependency on ruby-localhost ++ * debian/rules: exclude several unnecessary files from installation ++ ++ -- Antonio Terceiro Tue, 02 Nov 2021 14:39:10 -0300 ++ ++puma (5.3.2-3) unstable; urgency=medium ++ ++ * Use --gem-install layout option of dh-ruby ++ ++ -- Pirate Praveen Tue, 12 Oct 2021 02:24:33 +0530 ++ ++puma (5.3.2-2) unstable; urgency=medium ++ ++ * Reupload to unstable ++ * Bump Standards-Version to 4.6.0 (no changes needed) ++ * Bump debhelper compatibility level to 13 ++ ++ -- Pirate Praveen Mon, 11 Oct 2021 03:17:23 +0530 ++ ++puma (5.3.2-1) experimental; urgency=medium ++ ++ * New upstream version 5.3.2 (Closes: #989054) (Fixes: CVE-2021-29509) ++ * Refresh patches ++ ++ -- Pirate Praveen Fri, 28 May 2021 22:34:53 +0530 ++ ++puma (4.3.8-1) unstable; urgency=medium ++ ++ * New upstream version 4.3.8 (Closes: #989054) (Fixes: CVE-2021-29509) ++ ++ -- Pirate Praveen Wed, 26 May 2021 10:24:19 +0530 ++ ++puma (5.2.2-2) experimental; urgency=medium ++ ++ * Disable test that failied on amd64 buildd ++ ++ -- Pirate Praveen Mon, 08 Mar 2021 23:03:52 +0530 ++ ++puma (5.2.2-1) experimental; urgency=medium ++ ++ * New upstream version 5.2.2 ++ * Bump Standards-Version to 4.5.1 (no changes needed) ++ * Refresh patches for new upstream release ++ * Add ruby-minitest-stub-const as build dependency ++ * Disable failing tests ++ ++ -- Pirate Praveen Sun, 07 Mar 2021 21:03:52 +0530 ++ ++puma (4.3.6-1) unstable; urgency=medium ++ ++ * Team upload. ++ * New upstream version. ++ - Fixes CVE-2020-11076 and CVE-2020-11077 (closes: #972102). ++ * d/copyright: Minor update. ++ * d/puma.lintian-overrides: Add package override. ++ * d/ruby-tests.rake: Add logic to run SSL test. ++ * d/patches/*.patch: Add missing headers and refresh. ++ * d/source/lintian-overrides: Add source override. ++ * d/tests/control: Set environment variable to run the SSL tests separately ++ (similar to the solution used in the jekyll package). ++ * d/tests/test-puma-server-ssl*: Removed. ++ ++ -- Daniel Leidert Thu, 15 Oct 2020 20:57:29 +0200 ++ ++puma (4.3.3-3) unstable; urgency=medium ++ ++ * Include patch from gitlab to improve performance ++ ++ -- Pirate Praveen Tue, 18 Aug 2020 00:15:20 +0530 ++ ++puma (4.3.3-2) unstable; urgency=medium ++ ++ [ Daniel Leidert ] ++ * debian/tests/test_puma_server_ssl, ++ debian/tests/test_puma_server_ssl.rake: Run test/test_puma_server_ssl.rb ++ in an openssl enviroment not using the Debian defaults. ++ * debian/tests/control: Add new test. ++ ++ [ Debian Janitor ] ++ * Set field Upstream-Contact in debian/copyright. ++ * Remove obsolete fields Contact, Name from debian/upstream/metadata ++ (already present in machine-readable debian/copyright). ++ ++ [ Pirate Praveen ] ++ * Remove debian-branch option from debian/gbp.conf ++ * Reupload to unstable ++ ++ -- Pirate Praveen Mon, 03 Aug 2020 15:37:16 +0530 ++ ++puma (4.3.3-1) experimental; urgency=medium ++ ++ * Team upload. ++ * New upstream release. ++ - Fixes CVE-2020-5247 (closes: #952766). ++ - Fixes CVE-2020-5249 (closes: #953122). ++ * d/control (Section): Change to web. ++ (Vcs-Git): Indicate branch name via -b debian/experimental. ++ (Homepage): Use secure URL. ++ (Depends): Use ${ruby:Depends}. ++ * d/copyright (Source): Use secure URL. ++ * d/rules: Add override to install upstream changelog. ++ * d/watch: Use package name for tarball. ++ ++ -- Daniel Leidert Thu, 05 Mar 2020 01:34:17 +0100 ++ ++puma (4.3.1-1) experimental; urgency=medium ++ ++ * Team upload. ++ * New upstream release ++ - Fixes CVE-2019-16770 Keepalive thread overload/DoS (closes: #946312). ++ * d/control (Rules-Requires-Root): Set to binary-targets. ++ (Build-Depends, Depends): Add ruby-nio4r. ++ (Build-Depends): Add curl for test/test_integration_single.rb. ++ * d/ruby-tests.rake: Disable test/test_puma_server_ssl.rb. ++ * d/README.source: Add to explain tests which have been disabled. ++ * d/patches/0004-puma.gemspec-drop-git-usage.patch: Refresh patch. ++ * d/patches/0011-disable-minitest-extensions.patch: Add patch. ++ - Disable unavailable minitest extensions (retry and proveit). ++ * d/patches/0012-disable-cli-ssl-tests.patch: Add patch. ++ - Disable CLI SSL tests. ++ * d/patches/0013-fix-test-term-not-accepts-new-connections.patch: Add. ++ - Fix test_term_not_accepts_new_connections to be locale independent. ++ * d/patches/0002-test_integration-disable-test-that-fails-randomly.patch, ++ d/patches/0003-test_cli-disable-test-that-rails-randomly.patch, ++ d/patches/0005-test_puma_server-disable-test-that-fails-randomly.patch, ++ d/patches/0006-test-helper.rb-drop-bundler-usage.patch, ++ d/patches/0007-test-test_cli.rb-disable-test-that-fails-randomly.patch, ++ d/patches/0008-fix-ssl-tests.patch, ++ d/patches/0009-disable-tests-failing-in-single-cpu.patch, ++ d/patches/0010-fix-cluster-exit-for-ruby27.patch: Remove obsolete patches. ++ * d/patches/series: Adjust. ++ ++ -- Daniel Leidert Thu, 06 Feb 2020 11:45:11 +0100 ++ ++puma (3.12.4-1) unstable; urgency=medium ++ ++ * Team upload. ++ * New upstream release. ++ - Fixes CVE-2020-5247 (closes: #952766). ++ - Fixes CVE-2020-5249 (closes: #953122). ++ * d/control (Section): Changed to web. ++ (Homepage): Use secure URL. ++ (Depends): Add ${ruby:Depends}. ++ * d/copyright (Source): Use secure URL. ++ * d/ruby-tests.rake: Disable test/test_puma_server_ssl.rb for the moment. ++ These tests fail due to openssl being configured to use SECLEVEL2 ++ (https://github.com/puma/puma/issues/2147). ++ * d/rules: Add override to install upstream changelog. ++ * d/watch: Rename downloaded tarball to include package name. ++ * d/patches/0008-fix-ssl-tests.patch: Remove patch. Applied upstream. ++ * d/patches/CVE-2019-16770.patch: Ditto. ++ * d/patches/*.patch: Refresh patches. ++ * d/patches/series: Adjust. ++ ++ -- Daniel Leidert Wed, 04 Mar 2020 23:09:16 +0100 ++ ++puma (3.12.0-4) unstable; urgency=medium ++ ++ * Team upload. ++ * d/control (Rules-Requires-Root): Set to binary-targets. ++ * d/patches/0011-disable-minitest-extensions.patch: Add patch. ++ - Disable unavailable minitest retry extension. ++ * d/patches/CVE-2019-16770.patch: Add patch. ++ - Backport fix for CVE-2019-16770 from upstream (closes: #946312). ++ * d/patches/series: Add patch. ++ ++ -- Daniel Leidert Thu, 06 Feb 2020 12:54:59 +0100 ++ ++puma (3.12.0-3) unstable; urgency=medium ++ ++ * Team upload. ++ * d/compat: Remove obsolete file. ++ * d/control: Add Rules-Requires-Root field. ++ (Build-Depends): Use debhelper-compat. ++ (Standards-Version): Bump to 4.5.0. ++ (Depends): Drop ruby-interpreter. ++ * d/copyright (Format): Fix insecure-copyright-format-uri and add myself. ++ * d/puma.1, d/pumactl.1: Add manual pages. ++ * d/puma.manpages: Install manual pages. ++ * d/ruby-tests.rake: Set verbose mode. ++ * d/patches/0010-fix-cluster-exit-for-ruby27.patch: Add patch. ++ - Fix hang with Ruby >= 2.6 when shutting down workers. ++ * d/patches/series: Enable new patch. ++ * d/upstream/metadata: Add metadata. ++ * d/upstream/metadata: Add metadata. ++ ++ -- Daniel Leidert Wed, 05 Feb 2020 18:20:58 +0100 ++ ++puma (3.12.0-2) unstable; urgency=medium ++ ++ * Disable tests failing in single cpu (Closes: #921931) ++ ++ -- Pirate Praveen Sun, 10 Feb 2019 18:56:47 +0530 ++ ++puma (3.12.0-1) unstable; urgency=medium ++ ++ [ Balint Reczey ] ++ * New upstream version 3.12.0 ++ * Refresh patches ++ ++ [ Pirate Praveen ] ++ * Fix OpenSSL 1.1.1 test failures with upstream patch (Closes: #900156) ++ * Bump Standards-Version to 4.3.0 (no changes needed) ++ * Add myself to uploaders ++ ++ -- Pirate Praveen Sun, 10 Feb 2019 10:56:59 +0530 ++ ++puma (3.11.3-1) unstable; urgency=medium ++ ++ * Team upload ++ * Remove myself from Uploaders: ++ * New upstream version 3.11.3 ++ * Build against libssl-dev instead of libssl1.0-dev (Closes: #859542) ++ * Refresh packaging files with `dh-make-ruby -wo .` ++ * Bump debhelper compat to 11 ++ * Change Vcs-* to point to salsa.debian.org ++ * Use standard debian/ruby-tests.rake ++ * drop build-dependency on ruby-hoe ++ * Refresh patches ++ * New patches: ++ - 0006-test-helper.rb-drop-bundler-usage.patch ++ - 0007-test-test_cli.rb-disable-test-that-fails-randomly.patch ++ * Replace 0001-test_puma_server_ssl-update-for-newer-versions-of-Op.patch ++ with 0001-test_puma_server_ssl-disable-test-that-takes-too-lon.patch ++ ++ ++ -- Antonio Terceiro Wed, 28 Mar 2018 18:53:22 -0300 ++ ++puma (3.6.0-1) unstable; urgency=medium ++ ++ * Initial release (Closes: #720336) ++ ++ -- Antonio Terceiro Thu, 10 Nov 2016 16:47:06 -0200 diff --cc debian/clean index 0000000,0000000..4535125 new file mode 100644 --- /dev/null +++ b/debian/clean @@@ -1,0 -1,0 +1,1 @@@ ++tmp/restart.txt diff --cc debian/control index 0000000,0000000..659a047 new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,37 @@@ ++Source: puma ++Section: web ++Priority: optional ++Maintainer: Debian Ruby Team ++Uploaders: Pirate Praveen , ++ Lucas Kanashiro ++Build-Depends: curl, ++ debhelper-compat (= 13), ++ gem2deb (>= 1.6), ++ libssl-dev, ++ procps, ++ rake, ++ ruby-concurrent, ++ ruby-localhost, ++ ruby-minitest-stub-const, ++ ruby-nio4r (>= 2), ++ ruby-rack, ++ ruby-rackup | ruby-rack (<< 3), ++ ruby-sd-notify ++Standards-Version: 4.7.0 ++Vcs-Git: https://salsa.debian.org/ruby-team/puma.git ++Vcs-Browser: https://salsa.debian.org/ruby-team/puma ++Homepage: https://puma.io ++Testsuite: autopkgtest-pkg-ruby ++Rules-Requires-Root: binary-targets ++ ++Package: puma ++Architecture: any ++Breaks: rails (<< 2:6.1.7.3+dfsg-3~) ++Depends: ruby, ++ ${misc:Depends}, ++ ${ruby:Depends}, ++ ${shlibs:Depends} ++Description: threaded HTTP 1.1 server for Ruby/Rack applications ++ Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server for ++ Ruby/Rack applications. Puma is intended for use in both development and ++ production environments. diff --cc debian/copyright index 0000000,0000000..70590cd new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,42 @@@ ++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ ++Upstream-Name: puma ++Upstream-Contact: https://github.com/puma/puma/issues ++Source: https://github.com/puma/puma ++ ++Files: * ++Copyright: 2005, Zed Shaw ++ 2011, Evan Phoenix ++License: BSD-3-clause ++ ++Files: debian/* ++Copyright: 2016 Antonio Terceiro ++ 2020,2023 Daniel Leidert ++ 2023 Debian Ruby Extras Maintainers ++License: BSD-3-clause ++Comment: The Debian packaging is licensed under the same terms as the source. ++ ++License: BSD-3-clause ++ All rights reserved. ++ . ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are met: ++ . ++ * Redistributions of source code must retain the above copyright notice, this ++ list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above copyright notice ++ this list of conditions and the following disclaimer in the documentation ++ and/or other materials provided with the distribution. ++ * Neither the name of the Evan Phoenix nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE ++ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER ++ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --cc debian/gbp.conf index 0000000,0000000..da9f191 new file mode 100644 --- /dev/null +++ b/debian/gbp.conf @@@ -1,0 -1,0 +1,4 @@@ ++[DEFAULT] ++pristine-tar = true ++sign-tags = true ++verbose = true diff --cc debian/patches/0004-puma.gemspec-drop-git-usage.patch index 0000000,0000000..45b69ad new file mode 100644 --- /dev/null +++ b/debian/patches/0004-puma.gemspec-drop-git-usage.patch @@@ -1,0 -1,0 +1,23 @@@ ++From: Antonio Terceiro ++Date: Wed, 5 Feb 2020 21:36:05 +0100 ++Subject: Drop git usage from gemspec ++ ++Forwarded: not-needed ++--- ++ puma.gemspec | 3 +-- ++ 1 file changed, 1 insertion(+), 2 deletions(-) ++ ++Index: puma/puma.gemspec ++=================================================================== ++--- puma.orig/puma.gemspec +++++ puma/puma.gemspec ++@@ -18,8 +18,7 @@ Gem::Specification.new do |s| ++ if RbConfig::CONFIG['ruby_version'] >= '2.5' ++ s.metadata["msys2_mingw_dependencies"] = "openssl" ++ end ++- s.files = `git ls-files -- bin docs ext lib tools`.split("\n") + ++- %w[History.md LICENSE README.md] +++ s.files = Dir.glob('**/*').reject { |f| f =~ /^debian\//} ++ s.homepage = "https://puma.io" ++ ++ if s.respond_to?(:metadata=) diff --cc debian/patches/0010-Disable-test-concurrency-without-concurrent_ruby.patch index 0000000,0000000..967e60d new file mode 100644 --- /dev/null +++ b/debian/patches/0010-Disable-test-concurrency-without-concurrent_ruby.patch @@@ -1,0 -1,0 +1,25 @@@ ++From: Lucas Nussbaum ++Date: Wed, 5 Feb 2025 14:17:14 +0100 ++Subject: Disable test concurrency without concurrent_ruby ++ ++The way this is implemented (moving away the gem in $HOME) looks dangerous and ++doesn't work for non-user-installed packages. ++ ++Forwarded: not-needed ++--- ++ test/test_web_concurrency_auto.rb | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/test/test_web_concurrency_auto.rb b/test/test_web_concurrency_auto.rb ++index 8afebe6..a2fed7a 100644 ++--- a/test/test_web_concurrency_auto.rb +++++ b/test/test_web_concurrency_auto.rb ++@@ -39,7 +39,7 @@ class TestWebConcurrencyAuto < TestIntegration ++ end ++ ++ # Rename the processor_counter file, then restore ++- def test_web_concurrency_with_concurrent_ruby_unavailable +++ def xxtest_web_concurrency_with_concurrent_ruby_unavailable ++ file_path = nil ++ skip_unless :fork ++ diff --cc debian/patches/0011-disable-minitest-extensions.patch index 0000000,0000000..6ec39ca new file mode 100644 --- /dev/null +++ b/debian/patches/0011-disable-minitest-extensions.patch @@@ -1,0 -1,0 +1,43 @@@ ++From: Daniel Leidert ++Date: Wed, 5 Feb 2020 22:20:42 +0100 ++Subject: Disable unavailable minitest extensions ++ ++Forwarded: not-needed ++--- ++ test/helper.rb | 7 +------ ++ 1 file changed, 1 insertion(+), 6 deletions(-) ++ ++Index: puma/test/helper.rb ++=================================================================== ++--- puma.orig/test/helper.rb +++++ puma/test/helper.rb ++@@ -25,7 +25,6 @@ require_relative "helpers/test_puma/asse ++ require_relative "minitest/verbose" ++ require "minitest/autorun" ++ require "minitest/pride" ++-require "minitest/proveit" ++ require "minitest/stub_const" ++ require "net/http" ++ require_relative "helpers/apps" ++@@ -105,12 +104,9 @@ class TimeoutTestCase < Minitest::Test # ++ end ++ ++ if ENV['CI'] ++- require 'minitest/retry' ++ ++ SUMMARY_FILE = ENV['GITHUB_STEP_SUMMARY'] ++ ++- Minitest::Retry.use! ++- ++ if SUMMARY_FILE && ENV['GITHUB_ACTIONS'] == 'true' ++ ++ GITHUB_STEP_SUMMARY_MUTEX = Mutex.new ++@@ -210,7 +206,7 @@ class Minitest::Test ++ PROJECT_ROOT = File.dirname(__dir__) ++ ++ def self.run(reporter, options = {}) # :nodoc: ++- prove_it! +++ #prove_it! ++ super ++ end ++ diff --cc debian/patches/0012-disable-cli-ssl-tests.patch index 0000000,0000000..e8dcd42 new file mode 100644 --- /dev/null +++ b/debian/patches/0012-disable-cli-ssl-tests.patch @@@ -1,0 -1,0 +1,28 @@@ ++From: Daniel Leidert ++Date: Wed, 5 Feb 2020 23:18:37 +0100 ++Subject: Disable cli ssl tests ++ ++Forwarded: not-needed ++--- ++ test/test_pumactl.rb | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++Index: puma/test/test_pumactl.rb ++=================================================================== ++--- puma.orig/test/test_pumactl.rb +++++ puma/test/test_pumactl.rb ++@@ -251,12 +251,12 @@ class TestPumaControlCli < TimeoutTestCa ++ end ++ ++ ++- def test_control_ssl_ipv4 +++ def __test_control_ssl_ipv4 ++ skip_unless :ssl ++ control_ssl '127.0.0.1' ++ end ++ ++- def test_control_ssl_ipv6 +++ def __test_control_ssl_ipv6 ++ skip_unless :ssl ++ control_ssl '[::1]' ++ end diff --cc debian/patches/0013-fix-test-term-not-accepts-new-connections.patch index 0000000,0000000..4583cad new file mode 100644 --- /dev/null +++ b/debian/patches/0013-fix-test-term-not-accepts-new-connections.patch @@@ -1,0 -1,0 +1,24 @@@ ++From: Daniel Leidert ++Date: Thu, 6 Feb 2020 11:24:24 +0100 ++Subject: Fix test to read output locale independent ++ ++The test fails if run in a non-English environment. ++ ++Forwarded: https://github.com/puma/puma/issues/2149 ++--- ++ test/test_integration_single.rb | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++Index: puma/test/test_integration_single.rb ++=================================================================== ++--- puma.orig/test/test_integration_single.rb +++++ puma/test/test_integration_single.rb ++@@ -121,7 +121,7 @@ class TestIntegrationSingle < TestIntegr ++ assert wait_for_server_to_include('Gracefully stopping') # wait for server to begin graceful shutdown ++ ++ # Invoke a request which must be rejected ++- _stdin, _stdout, rejected_curl_stderr, rejected_curl_wait_thread = Open3.popen3("curl #{HOST}:#{@tcp_port}") +++ _stdin, _stdout, rejected_curl_stderr, rejected_curl_wait_thread = Open3.popen3({ "LC_ALL" => "C" }, "curl http://#{HOST}:#{@tcp_port}") ++ ++ assert nil != Process.getpgid(@server.pid) # ensure server is still running ++ assert nil != Process.getpgid(curl_wait_thread[:pid]) # ensure first curl invocation still in progress diff --cc debian/patches/0014-disable-test-failing-on-amd64.patch index 0000000,0000000..ce0677d new file mode 100644 --- /dev/null +++ b/debian/patches/0014-disable-test-failing-on-amd64.patch @@@ -1,0 -1,0 +1,25 @@@ ++From: Pirate Praveen ++Date: Mon, 8 Mar 2021 23:03:21 +0530 ++Subject: Disable test that failied on amd64 buildd ++ ++This test failed on amd64 buildd ++https://buildd.debian.org/status/fetch.php?pkg=puma&arch=amd64&ver=5.2.2-1&stamp=1615133735&raw=0 ++ ++Forwarded: not-needed ++--- ++ test/test_puma_server.rb | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++Index: puma/test/test_puma_server.rb ++=================================================================== ++--- puma.orig/test/test_puma_server.rb +++++ puma/test/test_puma_server.rb ++@@ -1735,7 +1735,7 @@ class TestPumaServer < TimeoutTestCase ++ end ++ end ++ ++- def test_command_ignored_before_run +++ def __test_command_ignored_before_run ++ @server.stop # ignored ++ @server.run ++ @server.halt diff --cc debian/patches/0015-disable-different-output-test.patch index 0000000,0000000..75c31e4 new file mode 100644 --- /dev/null +++ b/debian/patches/0015-disable-different-output-test.patch @@@ -1,0 -1,0 +1,15 @@@ ++Output changed from 'OK' to '::Rack::URLMap is loaded' ++ ++Index: puma/test/test_url_map.rb ++=================================================================== ++--- puma.orig/test/test_url_map.rb +++++ puma/test/test_url_map.rb ++@@ -9,7 +9,7 @@ class TestURLMap < TestIntegration ++ end ++ ++ # make sure the mapping defined in url_map_test/config.ru works ++- def test_basic_url_mapping +++ def __test_basic_url_mapping ++ skip_if :jruby ++ env = { "BUNDLE_GEMFILE" => "#{__dir__}/url_map_test/Gemfile" } ++ Dir.chdir("#{__dir__}/url_map_test") do diff --cc debian/patches/0016-disable-test-failing-on-arm64.patch index 0000000,0000000..6e038dd new file mode 100644 --- /dev/null +++ b/debian/patches/0016-disable-test-failing-on-arm64.patch @@@ -1,0 -1,0 +1,15 @@@ ++this test is failing on arm64 buildd (sometimes on other archs as well) ++ ++Index: puma/test/test_plugin_systemd.rb ++=================================================================== ++--- puma.orig/test/test_plugin_systemd.rb +++++ puma/test/test_plugin_systemd.rb ++@@ -31,7 +31,7 @@ class TestPluginSystemd < TestIntegratio ++ super ++ end ++ ++- def test_systemd_notify_usr1_phased_restart_cluster +++ def __test_systemd_notify_usr1_phased_restart_cluster ++ skip_unless :fork ++ assert_restarts_with_systemd :USR1 ++ end diff --cc debian/patches/0017-disable-test-failing-on-armhf.patch index 0000000,0000000..7e984f2 new file mode 100644 --- /dev/null +++ b/debian/patches/0017-disable-test-failing-on-armhf.patch @@@ -1,0 -1,0 +1,15 @@@ ++https://ci.debian.net/packages/p/puma/testing/armhf/42745746/ ++ ++Index: puma/test/test_integration_ssl_session.rb ++=================================================================== ++--- puma.orig/test/test_integration_ssl_session.rb +++++ puma/test/test_integration_ssl_session.rb ++@@ -122,7 +122,7 @@ class TestIntegrationSSLSession < TestIn ++ assert reused, 'session was not reused' ++ end ++ ++- def test_off_tls1_2 +++ def __test_off_tls1_2 ++ ssl_vers = Puma::MiniSSL::OPENSSL_LIBRARY_VERSION ++ old_ssl = ssl_vers.include?(' 1.0.') || ssl_vers.match?(/ 1\.1\.1[ a-e]/) ++ skip 'Requires 1.1.1f or later' if old_ssl diff --cc debian/patches/0018-disable-test-failing-with-ruby3.2.patch index 0000000,0000000..5749467 new file mode 100644 --- /dev/null +++ b/debian/patches/0018-disable-test-failing-with-ruby3.2.patch @@@ -1,0 -1,0 +1,179 @@@ ++From: Debian Ruby Team ++Date: Mon, 23 Dec 2024 19:26:53 -0300 ++Subject: Skip tests failing with ruby3.2 in Ubuntu ++ ++ 1) Error: ++TestRackUp::RackUp#test_bin: ++TimeoutEveryTestCase::TestTookTooLong: execution expired ++ /<>/test/test_rack_handler.rb:318:in `sysread' ++ /<>/test/test_rack_handler.rb:318:in `test_bin' ++ /<>/test/helper.rb:90:in `block (4 levels) in run' ++ /usr/lib/ruby/3.2.0/timeout.rb:189:in `block in timeout' ++ /usr/lib/ruby/3.2.0/timeout.rb:196:in `timeout' ++ /<>/test/helper.rb:88:in `block (3 levels) in run' ++ ++Those tests reported the following errors: ++ ++ 2) Error: ++TestCLI#test_control_clustered: ++TimeoutEveryTestCase::TestTookTooLong: execution expired ++ /<>/test/test_cli.rb:136:in `join' ++ /<>/test/test_cli.rb:136:in `test_control_clustered' ++ /<>/test/helper.rb:90:in `block (4 levels) in run' ++ /usr/lib/ruby/3.2.0/timeout.rb:189:in `block in timeout' ++ /usr/lib/ruby/3.2.0/timeout.rb:196:in `timeout' ++ /<>/test/helper.rb:88:in `block (3 levels) in run' ++ ++ 3) Error: ++TestPluginSystemd#test_systemd_notify_usr2_hot_restart_cluster: ++Errno::EPIPE: Broken pipe ++ /<>/test/test_plugin_systemd.rb:90:in `write' ++ /<>/test/test_plugin_systemd.rb:90:in `assert_restarts_with_systemd' ++ /<>/test/test_plugin_systemd.rb:42:in `test_systemd_notify_usr2_hot_restart_cluster' ++ /<>/test/helper.rb:90:in `block (4 levels) in run' ++ /usr/lib/ruby/3.2.0/timeout.rb:189:in `block in timeout' ++ /usr/lib/ruby/3.2.0/timeout.rb:196:in `timeout' ++ /<>/test/helper.rb:88:in `block (3 levels) in run' ++ ++ 4) Error: ++TestIntegrationPumactl#test_halt_unix: ++Errno::ECHILD: No child processes ++ /<>/test/test_integration_pumactl.rb:55:in `wait2' ++ /<>/test/test_integration_pumactl.rb:55:in `ctl_unix' ++ /<>/test/test_integration_pumactl.rb:42:in `test_halt_unix' ++ /<>/test/helper.rb:90:in `block (4 levels) in run' ++ /usr/lib/ruby/3.2.0/timeout.rb:189:in `block in timeout' ++ /usr/lib/ruby/3.2.0/timeout.rb:196:in `timeout' ++ /<>/test/helper.rb:88:in `block (3 levels) in run' ++ ++ 5) Error: ++TestIntegrationPumactl#test_stop_unix: ++Errno::ECHILD: No child processes ++ /<>/test/test_integration_pumactl.rb:55:in `wait2' ++ /<>/test/test_integration_pumactl.rb:55:in `ctl_unix' ++ /<>/test/test_integration_pumactl.rb:38:in `test_stop_unix' ++ /<>/test/helper.rb:90:in `block (4 levels) in run' ++ /usr/lib/ruby/3.2.0/timeout.rb:189:in `block in timeout' ++ /usr/lib/ruby/3.2.0/timeout.rb:196:in `timeout' ++ /<>/test/helper.rb:88:in `block (3 levels) in run' ++ ++ 6) Error: ++TestPumaServer#test_timeout_in_data_phase: ++TimeoutEveryTestCase::TestTookTooLong: execution expired ++ /<>/debian/puma/usr/lib/x86_64-linux-gnu/rubygems-integration/3.2.0/gems/puma-6.4.2/lib/puma/server.rb:627:in `join' ++ /<>/debian/puma/usr/lib/x86_64-linux-gnu/rubygems-integration/3.2.0/gems/puma-6.4.2/lib/puma/server.rb:627:in `stop' ++ /<>/test/test_puma_server.rb:31:in `teardown' ++ /<>/test/helper.rb:96:in `block (5 levels) in run' ++ /<>/test/helper.rb:96:in `each' ++ /<>/test/helper.rb:96:in `block (4 levels) in run' ++ /usr/lib/ruby/3.2.0/timeout.rb:189:in `block in timeout' ++ /usr/lib/ruby/3.2.0/timeout.rb:196:in `timeout' ++ /<>/test/helper.rb:95:in `block (3 levels) in run' ++ . ++ Extra failure in Debian: ++ . ++ 1) Error: ++TestIntegrationSingle#test_puma_debug_loaded_exts: ++TimeoutEveryTestCase::TestTookTooLong: execution expired ++ /build/reproducible-path/puma-6.4.3/test/helpers/integration.rb:125:in `wait2' ++ /build/reproducible-path/puma-6.4.3/test/helpers/integration.rb:125:in `stop_server' ++ /build/reproducible-path/puma-6.4.3/test/helpers/integration.rb:39:in `teardown' ++ /build/reproducible-path/puma-6.4.3/test/helper.rb:96:in `block (5 levels) in run' ++ /build/reproducible-path/puma-6.4.3/test/helper.rb:96:in `each' ++ /build/reproducible-path/puma-6.4.3/test/helper.rb:96:in `block (4 levels) in run' ++ /usr/lib/ruby/3.3.0/timeout.rb:186:in `block in timeout' ++ /usr/lib/ruby/3.3.0/timeout.rb:193:in `timeout' ++ /build/reproducible-path/puma-6.4.3/test/helper.rb:95:in `block (3 levels) in run' ++ . ++ They do not seem real regressions, so skipping them for now. ++Author: Lucas Kanashiro ++Last-Updated: 2024-12-23 ++Forwarded: not-needed ++--- ++ test/test_cli.rb | 2 +- ++ test/test_integration_pumactl.rb | 4 ++-- ++ test/test_integration_single.rb | 2 +- ++ test/test_plugin_systemd.rb | 2 +- ++ test/test_puma_server.rb | 4 ++-- ++ test/test_rack_handler.rb | 2 +- ++ 6 files changed, 8 insertions(+), 8 deletions(-) ++ ++Index: puma/test/test_integration_pumactl.rb ++=================================================================== ++--- puma.orig/test/test_integration_pumactl.rb +++++ puma/test/test_integration_pumactl.rb ++@@ -31,11 +31,11 @@ class TestIntegrationPumactl < TestInteg ++ wait_server ++ end ++ ++- def test_stop_unix +++ def __test_stop_unix ++ ctl_unix ++ end ++ ++- def test_halt_unix +++ def __test_halt_unix ++ ctl_unix 'halt' ++ end ++ ++Index: puma/test/test_integration_single.rb ++=================================================================== ++--- puma.orig/test/test_integration_single.rb +++++ puma/test/test_integration_single.rb ++@@ -247,7 +247,7 @@ class TestIntegrationSingle < TestIntegr ++ assert true ++ end ++ ++- def test_puma_debug_loaded_exts +++ def _test_puma_debug_loaded_exts ++ cli_server "#{set_pumactl_args} test/rackup/hello.ru", puma_debug: true ++ ++ assert wait_for_server_to_include('Loaded Extensions:') ++Index: puma/test/test_plugin_systemd.rb ++=================================================================== ++--- puma.orig/test/test_plugin_systemd.rb +++++ puma/test/test_plugin_systemd.rb ++@@ -36,7 +36,7 @@ class TestPluginSystemd < TestIntegratio ++ assert_restarts_with_systemd :USR1 ++ end ++ ++- def test_systemd_notify_usr2_hot_restart_cluster +++ def __test_systemd_notify_usr2_hot_restart_cluster ++ skip_unless :fork ++ assert_restarts_with_systemd :USR2 ++ end ++Index: puma/test/test_puma_server.rb ++=================================================================== ++--- puma.orig/test/test_puma_server.rb +++++ puma/test/test_puma_server.rb ++@@ -602,7 +602,7 @@ class TestPumaServer < TimeoutTestCase ++ assert_equal [:booting, :running, :stop, :done], states ++ end ++ ++- def test_timeout_in_data_phase(**options) +++ def __test_timeout_in_data_phase(**options) ++ server_run(first_data_timeout: 1, **options) ++ ++ socket = send_http "POST / HTTP/1.1\r\nHost: test.com\r\nContent-Type: text/plain\r\nContent-Length: 5\r\n\r\n" ++@@ -615,7 +615,7 @@ class TestPumaServer < TimeoutTestCase ++ assert_equal "HTTP/1.1 408 #{STATUS_CODES[408]}", response.status ++ end ++ ++- def test_timeout_data_no_queue +++ def __test_timeout_data_no_queue ++ test_timeout_in_data_phase(queue_requests: false) ++ end ++ ++Index: puma/test/test_rack_handler.rb ++=================================================================== ++--- puma.orig/test/test_rack_handler.rb +++++ puma/test/test_rack_handler.rb ++@@ -345,7 +345,7 @@ module TestRackUp ++ FileUtils.rm 'config.ru' ++ end ++ ++- def test_bin +++ def __test_bin ++ pid = nil ++ # JRuby & TruffleRuby take a long time using IO.popen ++ skip_unless :mri diff --cc debian/patches/0019-adapt-test-certs-generation.patch index 0000000,0000000..b3fac59 new file mode 100644 --- /dev/null +++ b/debian/patches/0019-adapt-test-certs-generation.patch @@@ -1,0 -1,0 +1,80 @@@ ++From: Athos Ribeiro ++Date: Thu, 17 Jul 2025 06:35:51 -0300 ++Subject: Adapt test certificates generation ++ ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078640 ++Forwarded: not-needed ++Last-Update: 2025-07-15 ++ ++Adapt the test certificates generation process to Debian. For that, we extend ++the validity of the certificates to 11 years to try to cover the Debian support ++(and hopefully the LTS/eLTS) window as long as a build is performed 1 year ++before a release. We also require certificate_authority from the installed ++package so we can generate this certificates without external packages. ++Last-Update: 2025-07-15 ++--- ++ examples/generate_chain_test.rb | 9 ++++----- ++ examples/generate_client_test.rb | 2 +- ++ examples/generate_server_test.rb | 2 +- ++ 3 files changed, 6 insertions(+), 7 deletions(-) ++ ++diff --git a/examples/generate_chain_test.rb b/examples/generate_chain_test.rb ++index 2676760..d84c7ae 100644 ++--- a/examples/generate_chain_test.rb +++++ b/examples/generate_chain_test.rb ++@@ -11,10 +11,7 @@ certs before date will be the first of the current month ++ =end ++ ++ require 'bundler/inline' ++-gemfile(true) do ++- source 'https://rubygems.org' ++- gem 'certificate_authority' ++-end +++require 'certificate_authority' ++ ++ module GenerateChainCerts ++ ++@@ -39,7 +36,7 @@ module GenerateChainCerts ++ ++ { ++ not_before: Time.new(yr, mo, 1, 0, 0, 0, zone), ++- not_after: Time.new(yr+4, mo, 1, 0, 0, 0, zone) +++ not_after: Time.new(yr+11, mo, 1, 0, 0, 0, zone) ++ } ++ ) ++ end ++@@ -83,6 +80,8 @@ module GenerateChainCerts ++ cert.subject.common_name = common_name ++ cert.serial_number.number = parent.serial_number.number + 100 ++ cert.parent = parent +++ cert.not_before = before_after[:not_before] +++ cert.not_after = before_after[:not_after] ++ ++ cert.key_material.generate_key ++ cert.sign! ++diff --git a/examples/generate_client_test.rb b/examples/generate_client_test.rb ++index f875916..e197428 100644 ++--- a/examples/generate_client_test.rb +++++ b/examples/generate_client_test.rb ++@@ -107,7 +107,7 @@ module GenerateClientCerts ++ zone = '+00:00' ++ ++ @before = Time.new yr , mo, 1, 0, 0, 0, zone ++- @after = Time.new yr+4, mo, 1, 0, 0, 0, zone +++ @after = Time.new yr+11, mo, 1, 0, 0, 0, zone ++ ++ @b_exp = Time.new yr-1, mo, 1, 0, 0, 0, zone ++ @a_exp = Time.new yr , mo, 1, 0, 0, 0, zone ++diff --git a/examples/generate_server_test.rb b/examples/generate_server_test.rb ++index cf9364a..f73e660 100644 ++--- a/examples/generate_server_test.rb +++++ b/examples/generate_server_test.rb ++@@ -33,7 +33,7 @@ module GenerateServerCerts ++ zone = '+00:00' ++ ++ cert.not_before = Time.new yr , mo, 1, 0, 0, 0, zone ++- cert.not_after = Time.new yr+4, mo, 1, 0, 0, 0, zone +++ cert.not_after = Time.new yr+11, mo, 1, 0, 0, 0, zone ++ cert.public_key = key.public_key ++ cert.sign ca_key, SIGN_ALGORITHM.new ++ puts "New:", cert.to_text, "" diff --cc debian/patches/0020-update-ex-certs.patch index 0000000,0000000..05c5e47 new file mode 100644 --- /dev/null +++ b/debian/patches/0020-update-ex-certs.patch @@@ -1,0 -1,0 +1,1499 @@@ ++From: Athos Ribeiro ++Date: Tue, 15 Jul 2025 10:38:43 -0300 ++Subject: Update example certificates ++ ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078640 ++Forwarded: not-needed ++Last-Update: 2025-07-15 ++ ++Update the example certificates so that the upstream unit tests keep ++passing throughout the next Debian release (trixie) support cycle. This ++is done by updating the certificates validity to 11 years (possibly ++covering LTS/eLTS). ++Last-Update: 2025-07-15 ++--- ++ examples/puma/cert_puma.pem | 30 ++++---- ++ examples/puma/chain_cert/ca.crt | 33 ++++---- ++ examples/puma/chain_cert/ca.key | 50 ++++++------ ++ examples/puma/chain_cert/ca_chain.pem | 65 ++++++++-------- ++ examples/puma/chain_cert/cert.crt | 32 ++++---- ++ examples/puma/chain_cert/cert.key | 50 ++++++------ ++ examples/puma/chain_cert/cert_chain.pem | 97 ++++++++++++------------ ++ examples/puma/chain_cert/intermediate.crt | 32 ++++---- ++ examples/puma/chain_cert/intermediate.key | 50 ++++++------ ++ examples/puma/client_certs/ca.crt | 28 +++---- ++ examples/puma/client_certs/ca.key | 50 ++++++------ ++ examples/puma/client_certs/ca_store.jks | Bin 848 -> 848 bytes ++ examples/puma/client_certs/ca_store.p12 | Bin 2568 -> 2584 bytes ++ examples/puma/client_certs/client.crt | 30 ++++---- ++ examples/puma/client_certs/client.key | 50 ++++++------ ++ examples/puma/client_certs/client_expired.crt | 30 ++++---- ++ examples/puma/client_certs/client_expired.key | 50 ++++++------ ++ examples/puma/client_certs/client_unknown.crt | 30 ++++---- ++ examples/puma/client_certs/client_unknown.key | 50 ++++++------ ++ examples/puma/client_certs/keystore.jks | Bin 4392 -> 4392 bytes ++ examples/puma/client_certs/server.crt | 30 ++++---- ++ examples/puma/client_certs/server.key | 50 ++++++------ ++ examples/puma/client_certs/server.p12 | Bin 3408 -> 3424 bytes ++ examples/puma/client_certs/unknown_ca.crt | 28 +++---- ++ examples/puma/client_certs/unknown_ca.key | 50 ++++++------ ++ examples/puma/client_certs/unknown_ca_store.p12 | Bin 2592 -> 2608 bytes ++ examples/puma/encrypted_puma_keypair.pem | 56 +++++++------- ++ examples/puma/keystore.jks | Bin 2253 -> 2252 bytes ++ examples/puma/puma_keypair.pem | 50 ++++++------ ++ examples/puma/server.p12 | Bin 2700 -> 2716 bytes ++ 30 files changed, 509 insertions(+), 512 deletions(-) ++ ++diff --git a/examples/puma/cert_puma.pem b/examples/puma/cert_puma.pem ++index 6cbb9c1..cace838 100644 ++--- a/examples/puma/cert_puma.pem +++++ b/examples/puma/cert_puma.pem ++@@ -1,21 +1,21 @@ ++ -----BEGIN CERTIFICATE----- ++ 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 ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/chain_cert/ca.crt b/examples/puma/chain_cert/ca.crt ++index 9acfe79..bcc8e26 100644 ++--- a/examples/puma/chain_cert/ca.crt +++++ b/examples/puma/chain_cert/ca.crt ++@@ -1,20 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w ++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx +++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w +++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx ++ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC ++-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph ++-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e ++-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu ++-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c ++-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J ++-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW ++-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww ++-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD ++-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A ++-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ ++-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029 ++-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d ++-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg ++-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3 ++-8uByucqDNovFjYNMKw== +++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92 +++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc +++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa +++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH +++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik +++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU +++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG +++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F +++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b +++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq +++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF +++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF +++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo +++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q== ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/chain_cert/ca.key b/examples/puma/chain_cert/ca.key ++index c884487..8de2968 100644 ++--- a/examples/puma/chain_cert/ca.key +++++ b/examples/puma/chain_cert/ca.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/chain_cert/ca_chain.pem b/examples/puma/chain_cert/ca_chain.pem ++index 7d500ef..7196332 100644 ++--- a/examples/puma/chain_cert/ca_chain.pem +++++ b/examples/puma/chain_cert/ca_chain.pem ++@@ -1,40 +1,39 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w ++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx +++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx ++ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI ++-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN ++-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D ++-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89 ++-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9 ++-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V ++-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw ++-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT ++-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S ++-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO ++-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd ++-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC ++-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq ++-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN ++-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm ++-iX6YKGNd +++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe +++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd +++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ +++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu +++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf +++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw +++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT +++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y +++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu +++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj +++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp +++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih +++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh +++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o +++05PKNc+5 ++ -----END CERTIFICATE----- ++ -----BEGIN CERTIFICATE----- ++-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w ++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx +++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w +++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx ++ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC ++-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph ++-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e ++-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu ++-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c ++-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J ++-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW ++-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww ++-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD ++-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A ++-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ ++-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029 ++-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d ++-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg ++-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3 ++-8uByucqDNovFjYNMKw== +++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92 +++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc +++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa +++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH +++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik +++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU +++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG +++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F +++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b +++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq +++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF +++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF +++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo +++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q== ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/chain_cert/cert.crt b/examples/puma/chain_cert/cert.crt ++index 8467b47..89010e8 100644 ++--- a/examples/puma/chain_cert/cert.crt +++++ b/examples/puma/chain_cert/cert.crt ++@@ -1,20 +1,20 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDLjCCAhagAwIBAgIBbzANBgkqhkiG9w0BAQ0FADAmMSQwIgYDVQQDDBtpbnRl ++-cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjQwODExMDAwMDAwWhcNMjUwODEx +++cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjUwNzAxMDAwMDAwWhcNMzYwNzAx ++ MDAwMDAwWjAeMRwwGgYDVQQDDBN0ZXN0LnB1bWEubG9jYWxob3N0MIIBIjANBgkq ++-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9x ++-ZzdO68eBSw4glnhh/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tj ++-jqn2LwKkdjAaaQn7uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdU ++-ExXtNHAA+kqlif0Hcj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tE ++-hk8s/2dvbrU2AKcP+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOx ++-wRyQaImYzHPWMDO6MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABo28w ++-bTAdBgNVHQ4EFgQUQT/iPOTx/zDEIgWHiraGJdrud74wCwYDVR0PBAQDAgbAMBMG ++-A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAU1V8CDxIv ++-GpM3njBhaJZ/FWJz6IcwDQYJKoZIhvcNAQENBQADggEBADHQ75un1UtxDI9oluXu ++-wEJL0515nIAKjaWFCl0Z/CGaAWkkJERk0JBxTe9J/MrYY68NYCCAusRoUoRbvcA2 ++-GQ8vKae5V6/md+npZpKQznmUk+nZMzNKr+QoMY/nvtLA5tZ85fsU40H4nbvb23EY ++-3o6IiEbLD0G3FbIFtkgQ7+j9w6bvvMwd+3Ed0jSjRl4wKi4cXgD1UIyce/MVzAzT ++-bXW2SLWjfRzcTsrAnrbno5S3g+KMD1w9zGNppYiFH0zydpatKjJW18r/6XgJqoim ++-Rl5OGVnMNgIAw+S8/G3+/IIPXWHFE29R3j3oXjm/F8570TpQTYyx8wOmEr+zJPv0 ++-8gU= +++hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2Nm +++hIGaiKyDy71b25rkXFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB +++7iw66vBVCBstDiKEr5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyY +++tNTLi1HROioH6A0MfpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqc +++nHICV5/LmX3KC7ZxowexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50 +++OP8uABiK53L9RH55SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABo28w +++bTAdBgNVHQ4EFgQUBt0gNG2VFq4KeC5rPkvqxlxUZpgwCwYDVR0PBAQDAgbAMBMG +++A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUDH40Tp0C +++9PsflBT7LIr3BXriX84wDQYJKoZIhvcNAQENBQADggEBAIsh0gAB91/phH0XSbaV +++5X7bOvUQZBkF6VU3FMSKz1qeP7zhxhHnsTQVAWRCT4QdQ0bXzWDaUubUfS1uL9fW +++hMS6qJ/X56WjYvzUqr6Haxxc6nF2SzaZfNHC02uBOBqZaOWsf0rEv4M9A1PPPyy4 +++ZO5nCLsLvReiAXViAyRO2HjXej/820fXh0uwEZgR8tUaQEt5frphr9cT/Q70kn+M +++XfpXvhGmLZ9C+0pXS0ILJRb8DccdfL6UMmQEPyfuW2OJrCDwvK3aG4KA2mdAg9Ca +++OvxCQ9WgAkMR2P7dHovoYaMsl8Nipiy/i0YeVG1rJAledWOO05xiVPdiTPkJk8JC +++PPU= ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/chain_cert/cert.key b/examples/puma/chain_cert/cert.key ++index ed2bd0d..790455c 100644 ++--- a/examples/puma/chain_cert/cert.key +++++ b/examples/puma/chain_cert/cert.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/chain_cert/cert_chain.pem b/examples/puma/chain_cert/cert_chain.pem ++index 5f391f3..40ed0f5 100644 ++--- a/examples/puma/chain_cert/cert_chain.pem +++++ b/examples/puma/chain_cert/cert_chain.pem ++@@ -1,60 +1,59 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDLjCCAhagAwIBAgIBbzANBgkqhkiG9w0BAQ0FADAmMSQwIgYDVQQDDBtpbnRl ++-cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjQwODExMDAwMDAwWhcNMjUwODEx +++cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjUwNzAxMDAwMDAwWhcNMzYwNzAx ++ MDAwMDAwWjAeMRwwGgYDVQQDDBN0ZXN0LnB1bWEubG9jYWxob3N0MIIBIjANBgkq ++-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9x ++-ZzdO68eBSw4glnhh/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tj ++-jqn2LwKkdjAaaQn7uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdU ++-ExXtNHAA+kqlif0Hcj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tE ++-hk8s/2dvbrU2AKcP+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOx ++-wRyQaImYzHPWMDO6MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABo28w ++-bTAdBgNVHQ4EFgQUQT/iPOTx/zDEIgWHiraGJdrud74wCwYDVR0PBAQDAgbAMBMG ++-A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAU1V8CDxIv ++-GpM3njBhaJZ/FWJz6IcwDQYJKoZIhvcNAQENBQADggEBADHQ75un1UtxDI9oluXu ++-wEJL0515nIAKjaWFCl0Z/CGaAWkkJERk0JBxTe9J/MrYY68NYCCAusRoUoRbvcA2 ++-GQ8vKae5V6/md+npZpKQznmUk+nZMzNKr+QoMY/nvtLA5tZ85fsU40H4nbvb23EY ++-3o6IiEbLD0G3FbIFtkgQ7+j9w6bvvMwd+3Ed0jSjRl4wKi4cXgD1UIyce/MVzAzT ++-bXW2SLWjfRzcTsrAnrbno5S3g+KMD1w9zGNppYiFH0zydpatKjJW18r/6XgJqoim ++-Rl5OGVnMNgIAw+S8/G3+/IIPXWHFE29R3j3oXjm/F8570TpQTYyx8wOmEr+zJPv0 ++-8gU= +++hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2Nm +++hIGaiKyDy71b25rkXFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB +++7iw66vBVCBstDiKEr5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyY +++tNTLi1HROioH6A0MfpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqc +++nHICV5/LmX3KC7ZxowexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50 +++OP8uABiK53L9RH55SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABo28w +++bTAdBgNVHQ4EFgQUBt0gNG2VFq4KeC5rPkvqxlxUZpgwCwYDVR0PBAQDAgbAMBMG +++A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUDH40Tp0C +++9PsflBT7LIr3BXriX84wDQYJKoZIhvcNAQENBQADggEBAIsh0gAB91/phH0XSbaV +++5X7bOvUQZBkF6VU3FMSKz1qeP7zhxhHnsTQVAWRCT4QdQ0bXzWDaUubUfS1uL9fW +++hMS6qJ/X56WjYvzUqr6Haxxc6nF2SzaZfNHC02uBOBqZaOWsf0rEv4M9A1PPPyy4 +++ZO5nCLsLvReiAXViAyRO2HjXej/820fXh0uwEZgR8tUaQEt5frphr9cT/Q70kn+M +++XfpXvhGmLZ9C+0pXS0ILJRb8DccdfL6UMmQEPyfuW2OJrCDwvK3aG4KA2mdAg9Ca +++OvxCQ9WgAkMR2P7dHovoYaMsl8Nipiy/i0YeVG1rJAledWOO05xiVPdiTPkJk8JC +++PPU= ++ -----END CERTIFICATE----- ++ -----BEGIN CERTIFICATE----- ++ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w ++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx +++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx ++ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI ++-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN ++-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D ++-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89 ++-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9 ++-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V ++-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw ++-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT ++-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S ++-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO ++-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd ++-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC ++-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq ++-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN ++-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm ++-iX6YKGNd +++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe +++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd +++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ +++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu +++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf +++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw +++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT +++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y +++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu +++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj +++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp +++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih +++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh +++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o +++05PKNc+5 ++ -----END CERTIFICATE----- ++ -----BEGIN CERTIFICATE----- ++-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w ++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx +++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w +++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx ++ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC ++-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph ++-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e ++-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu ++-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c ++-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J ++-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW ++-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww ++-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD ++-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A ++-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ ++-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029 ++-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d ++-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg ++-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3 ++-8uByucqDNovFjYNMKw== +++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92 +++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc +++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa +++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH +++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik +++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU +++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG +++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F +++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b +++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq +++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF +++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF +++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo +++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q== ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/chain_cert/intermediate.crt b/examples/puma/chain_cert/intermediate.crt ++index cc9895e..501d1ad 100644 ++--- a/examples/puma/chain_cert/intermediate.crt +++++ b/examples/puma/chain_cert/intermediate.crt ++@@ -1,20 +1,20 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w ++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx +++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx ++ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI ++-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN ++-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D ++-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89 ++-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9 ++-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V ++-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw ++-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT ++-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S ++-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO ++-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd ++-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC ++-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq ++-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN ++-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm ++-iX6YKGNd +++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe +++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd +++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ +++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu +++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf +++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw +++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT +++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y +++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu +++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj +++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp +++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih +++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh +++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o +++05PKNc+5 ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/chain_cert/intermediate.key b/examples/puma/chain_cert/intermediate.key ++index 9269949..a1d0df4 100644 ++--- a/examples/puma/chain_cert/intermediate.key +++++ b/examples/puma/chain_cert/intermediate.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/ca.crt b/examples/puma/client_certs/ca.crt ++index c3d39dc..599b16a 100644 ++--- a/examples/puma/client_certs/ca.crt +++++ b/examples/puma/client_certs/ca.crt ++@@ -1,19 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDDjCCAfagAwIBAgIBAzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB ++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw ++-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0 +++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw +++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwggEiMA0GCSqGSIb3 ++-DQEBAQUAA4IBDwAwggEKAoIBAQDPVFa7U4cqfq2Nux7VuXIUhYtaiQwxEEZuDvGI ++-tlSVzpENnqFLbqH0QsOuxGgIZofsrSf4BrCzh4AoL3qY+HgVRCmkD09FnoWjFTfT ++-X6v7QaCtUsrb7RNASrrgyP7rB9y7sp9oc8FNJQA3gtJQxghffO9zGhnEvPt8EGGU ++-axh29BYVxvQpX1Av0SkYjTgpRus1s7r50tpoDHXhKyAHP6WEEVaN/8x1p9eXqVCT ++-XIhlJJ+dgwZz/Hfnb6gr97W5G16Ceo7ybS8syKBJf2D20DOL8kLAiNpjWm9spoJi ++-oxHvFMdDB3nUqZyRO+QU8gSoQBVYYqRlEnOXvouzqslUVdbLAgMBAAGjIzAhMA8G +++DQEBAQUAA4IBDwAwggEKAoIBAQCxatlqNB98n2Huwg4TNhTx81t4RDUHyRH5YUCT +++808QrxqqhNJGOSTfLDoobeObZqm8DzhZgeiMI8TQjGoQUPntARrfmS0qwBKpERJ7 +++Se2mY7J5EFZtIR4dtTlD6CPzEC1cxdgF8+2BXCb/DdSRmgEMseC32cimYZt4uumA +++ckJfmGJst18nc8R9EPZdsW1mFjGSYrfigtqEcm4UOKnBRilMhacIXHJqUKcV6oIh +++KXWraHLex62Mzfp+g9MQ2xEmOz6j/nJ/54xqmFNoIR2mZBAOvsKMQVph/EWFF8Ei ++++NMkzXYbePkKaQBLMsKnonfIpfPzm4Sg8V51oSOG5KsW4JLzAgMBAAGjIzAhMA8G ++ A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IB ++-AQC9iO5jvBDNgDmUq8+NfsAZngWLOG7IR+Ez5h3CzGU9yzcJgn8y6PMjzhgc20le ++-WYzAHEG/KXFIfubUW/9iA8E6We0hm0LM1s9o7A9JAqsHcZ/pK2QmDW71JupU8o1z ++-3Qcu7jRzPc7zYgNwaD4/ccpJTAPGg6keV3YGN2Z5RpWykOFzP7WswaMIcKQE869c ++-Tyi8i71XkVrL+xx2pRiiNDOmfMkmm8TZ9tBP7n6BcRd556TTIxhjONvmamCraBQP ++-msPnMtb8+H3/IsMsUw02/fQTJ91FVa3t914Y24+q5xmkasyrhinTNmsa/S939P6I ++-JNNoAM6TUZrskKPtb/pMzaqn +++AQAayMxMY4+PRsjODW49e8YM+NfLIypZB9+QV432q6BTT+5KQh9DSBt1Bz5RaU1g +++tsz0sS7x0Iv7CvRwR1iDZOv8annHcjuEgxfWJ0+PBhFi2Tz1eF4EnpZt2RcJ/IMW +++xnsDLjRMASdmQxOLvxqz19fAQMAVw7ThkzicuW0ZMBX3baAf88m7w1Mu/V7P6rj5 +++yw+SfZv/qNakUv2yc/2xEDRcfrYuimZAmGhM/HaPsta2BpvWJDpYe1Hq8AFWniz0 +++C2epSzW+CdkpQZD/DIQmfWrWcBeb/XQ6hmouyJ6IWrgL45x7xcTLBOSAecBeZGMp +++npnO0PJN8Z/PQWz4sd8e2dIN ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/client_certs/ca.key b/examples/puma/client_certs/ca.key ++index c689bd4..16a86af 100644 ++--- a/examples/puma/client_certs/ca.key +++++ b/examples/puma/client_certs/ca.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/ca_store.jks b/examples/puma/client_certs/ca_store.jks ++index f522926..9071747 100644 ++--- a/examples/puma/client_certs/ca_store.jks +++++ b/examples/puma/client_certs/ca_store.jks ++@@ -1,6 +1,8 @@ ++-þíþí +++þíþí ++ ’&‰“ò,dnet10 ++- ’&‰“ò,dpuma1 0 U CA0 240801000000Z 280801000000Z0810 +++ ’&‰“ò,dpuma1 0 U CA0 250701000000Z 360701000000Z0810 ++ ’&‰“ò,dnet10 ++ ’&‰“ò,dpuma1 0 U CA0‚"0  *†H†÷  ++-‚ ++\ No newline at end of file +++‚ +++i +++ôpGXƒdëüjyÇr;„ƒÖ'ObÙ<õx^ž–mÙ üƒÆ{.4L'fC‹¿³××À@Àôá“8œ¹m0÷m óÉ»ÃS.ý^Ïê¸ùË’}›ÿ¨Ö¤Rý²sý±4\~¶.Šf@˜hLüv²Ö¶›Ö$:X{QêðVž,ô g©K5¾ Ù)Aÿ „&}jÖp›ýt:†j.ȞˆZ¸ ãœ{ÅÄËä€yÀ^dc)ž™ÎÐòMñŸÏAlø±ßÙÒ -qlñZq­£LµÃ ²6‚¾ ++\ No newline at end of file ++diff --git a/examples/puma/client_certs/ca_store.p12 b/examples/puma/client_certs/ca_store.p12 ++index 2af10d9..9b7934a 100644 ++--- a/examples/puma/client_certs/ca_store.p12 +++++ b/examples/puma/client_certs/ca_store.p12 ++@@ -1,11 +1,13 @@ ++ 0‚ ++-0‚ º *†H†÷  ‚ «‚ §0‚ £0‚ *†H†÷  ‚ó0‚ï ++-¾²÷Eˆ›‡ÞR_̀‚€Üæ¨ H´³ï>º‡x•\Òùë`•ð…ŠËÖ/€ê“-“<»Àõ-®µP"1¥–Í|ª¹9OMOÚ7òølÛFŽø«ê )b[€ ++-óٚí/1ï!ÁàKL›Þ_Éü'¯QTÛ45yfN/¶&°¿?Ö¶PÅÀˆÆwí¡.;jÐ),%Î"ÚC)4¥«o½ÂÁ[ÝÀ´–Ø)4„žØŸUn7¿ÃŒ±Îk×/.k­Òßåd2ÝíÅ%½rOëãwF+°xÆkøìVn`Ì~}Ñsæ:]Ù°ñ‘tT¥q_–èï¸ÈZËLîâс:¢W!¢–|*dèŸ^v£Ñل^òVa­AêPI"@ÕÌêrFÑIÎf—µ*㞶»Rэ{Jž¨`bBÒîö.å„}Ðêӂ¯JŽê VÐ@ЅÎß.$ð5¸AÓ4åߪ˜ Ò6¾wën›ñ ›oªf2À¯ ظÚVï»-˜$^œ?4˜A¡oó-ü+K……ËŒ:È-¼l§}7´Sþ4abe<¥ô±X $öµÅF ê›þuÐBšy?ûzqñí9GHÏ娢–´o†En—Ù·˜~™×&ÿùQtþ›ÃÝÊ£ ++-¦ÀÀÈ.íºBƼ>’§ÇOÞŽ™jJ›¿þmó݈úç¾Só°à®-|v¡í½ ÜÎ5¥9GEbôvVõW}1ßUÈ+ÎíñP»d9Šqì^–Û|æE%ôµ}uÔ;zF¹ œ‚QJ³»žZ&’òòQ ,Ô«ÑTÖöá ªSö—^¢A›ßXƒÏœüûBÀtÍê5_ó‡óºž.ˆŸ$~û‘‹:úøÆm¶MîÞN)ìð";Ô±µ7€ðY´ƒ& ++-=ð¸ãș Ç5Fi”½ßO² K¯gL^s@´´Sðûn«"¶äBÕòpeœ~<Ó/ÒVT›Ó€X©Ó Kú2¹«°wÖm‹Á`›¸¬*Úð$p/ÒÚ”õ¤În¢=áÄJ½¥2]0´G ++-Ni ¬ÍžEŽwl™Ðð½;¥yÝ¡3ˤL¾LG ž©•)3 ++-2ƒÂ5ñÚì͚,½'*‡\H†Þˆ°8Vä)Ô*ýqÐ;ÕÏ@­}uä/F ù§ð'è‹šŠüAu_ìkïe¡5ÁÇpüŸ®ZSP߇¡ ++-eX»‹6 ‰t)>ǁßá|®Š3ÝZ˜¬9_1:0 *†H†÷  1 ++\ No newline at end of file +++0‚ Ê *†H†÷  ‚ »‚ ·0‚ ³0‚ +++ *†H†÷  ‚û0‚÷ +++ ‚90‚50_ *†H†÷  0R01 *†H†÷  0$™:ЬL2>Á¶#H 1 +++pac¤èuÎ +++æI1t^±þ*ŒqÏc ·íÒž1o$‡~¤]¦ø¯Âù°`;ö<؟åä˜*œ=/ô۹ݕðã,TCUu‹¶­ý½7«`n=& ðgZÅ2(LÐfÞG€Ú%_ð›àða¿ÖSÔë&š˜5҈ +++Ï}!—€R­hCߖÿ +++Ÿ7NâO.*î¤ûè‡?mϓn1žIۜ }›¦äR&çjË0êfWúÿU*…a+ùu Eøý ç÷|M}»_å(Zƒ4zƒÞÃýÅ/ƒ‘z¶ÂQލtϸ¶ +++Eë‚N{×/°ZͰ•ßʀÄ)¤Kê²°|{épLúêétz^ûZõ‹0>Á6#M”¡F*´j¶„­iYî[4Kþ *¨#`OØö71b;•¹n/j3¦<#½5Œá>3APz°‡?ÿÃ-É|´pg?¬xÁ,ý¶ˆ#‹ÒH˜Nl+OdÑì¼Ðø=œ×Meht}„ î˜ø½ÿìhà”׎0¶e¿ >¡ ¿•0”~®ºkç»âcýH—•®¼c©"<¤Ç1”[8EoýçXc)6UúúÊ/'® I½­> öˆ¯,ŸH›©å®ë!¤ƒnr/$Ï0FZs%ßzÿºŽ×Gpþún¼nrµƒVî`,fÓ0¨µ9hñìØ4È.k ¡éc%±ƒr—tt¢ÊFR·Ddø•XTܒ©öƒ¶"äžØûŽÆÚ„3ó̋ÑJš¾À!ï5ü;bÒmOd=7T)çç¡òBp_ ;Žî U±ï.|̟å^¤ôÂ\‘€;­ƒD´™Åù S"º]ÏÇãÝêðK©Èó5%(qûf¯0݌Î>d›÷ø#»ìÏRø +++CÒé»%› Ø¸ÔÝYÕ³ÀD +++lªdsÍÁ"´²óZ؃¯Ká<ïÖo9¨xlnãž]W£ ©‘}y¼"ðA sÒÖ«‹Un[•Ǐ¥q¶Z–6§,Ä^ís/ý UL¢¼Ý6“t¢Ï:q-Bš×J!í¶×0Éð–‡kYUÛän­¼’»=MÓìVÌÜïþküãmzÇlU*‡¼G+ù`4~  ++\ No newline at end of file ++diff --git a/examples/puma/client_certs/client.crt b/examples/puma/client_certs/client.crt ++index 79e7f6f..14eb1dc 100644 ++--- a/examples/puma/client_certs/client.crt +++++ b/examples/puma/client_certs/client.crt ++@@ -1,19 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDBDCCAeygAwIBAgIBCzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB ++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw ++-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 +++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw +++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN ++-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl14vsZCU7E1qf/a4Yxs/SbIf/Pz ++-PW3Thbhno3JAbsTUpf9zkdDRB8fCn+R8SnJVZhCRYhUA3lNdZIskQp1h2Ix9TZxj ++-QSo29ixzik0fTd7nd4KC8WOpZUyDs0U2ugmqomJXP0e/AiFpN+3HmgTWJpDx2oET ++-Lcdl70+wRBkF2FDRJU/5KvArUnaGXrqW645GH3iXMadQRpEWBxFP/+aiz0FXqd9Z ++-IWSoobf03dY/tIaxCrFe2+yljBB6eI/oHWs7Y861JN+nRcJrtp4LmeCdDXzQN7/y ++-xDg+NVQy0sEltIMTgMyoIsb1UPD+IkepT9GKd09M6p63BX0SXr5YPhz9iQIDAQAB ++-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHKYzIAjmllB ++-n+CRjYjtwPrkVT8azecL9efdBvE90KkGnIvRzNe4vQdH0mT4R+RUOXO4mbhAT6tX ++-zOpO2gPldBAQ1GAcjs1XJPGxSqKUO8B69Nv3mXqwR3FKR4ZGseC5MXjQb5dZc3An ++-NJZy6t+7gO0nDfV361JJjXvNdHd0cfx0aCWdTgQWxt9RSnH3QxvVbdXLAPvYyb1g ++-Ueao9M5PMMx5cAgq4ORM+TxPJxTRj2BuRj5coHsPn7R4dkwWP59+h6Vgdf0AmeUG ++-Jmdrul5ESeACbs2GixZdtqLT9QUJhTAFaXpJd3IUYyML1V7qRk1FJqRvatYxhBxQ ++-gjZp0ouJRCY= +++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAuT6k08rCxgTQtwtZ1PB2iaVTAE +++Z/DTKp1bUP+A06DslWT9tng5bxUNMD/8z/D4sOKzNTds9JP9QmJsgme1qlm+pIRQ +++qgejLw6hG3v4ZdTe2CTvfE08lJlwWVU2hoDLDnurXWoQE3SSAzfuoeg48EZ8tjug +++3KkxbCR0GUzk5aof8fskCapybRGvIek/xBkVKwEVhrvNwCvIwvw2SRgGuxHuZNCk +++kq3pptuVC4e14RglByVV0C6MkNMP9CDMXILZfTQRnsqgq67MuB7IUbVPH6VUYqwB +++IIR0MW7lLFLkB6x9QOkCdAXrzqKFeNeWxw2eyV2ueTDQIqsx0fx+SylDPwIDAQAB +++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAKlWE0BFzumd +++XtXSiD8AESuDWHAdJ5l+lzwGJ5/qJHQMTYg+7IwVumlf9z2rwTyCRNVCU3t68D7/ +++8d4l52+DcmZExa8PXnkAotNcV4cDps/ZJt+k3stYSAL2zzxOCKEaysd7UvL/b61g +++t0Xyg3jlg5svhJomHuevB/db9oRUCxlSuSTxjeanVyvgXlURBOLT1MaN3tNhtBJM +++RmkpGupNeS6Zwuzi+Ina2/TfmKSwtoKMyiP/QuzH7wAV0BCDsDPT32CYkvuJ9ARh +++QsMK9a3oromDxKx98l9FScYsH6SkPlywXF4ZkimZj4Wtni5kHkeFAbc6KuPanYIL +++eypAAM0Zm4w= ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/client_certs/client.key b/examples/puma/client_certs/client.key ++index 371a4a1..9a511c3 100644 ++--- a/examples/puma/client_certs/client.key +++++ b/examples/puma/client_certs/client.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/client_expired.crt b/examples/puma/client_certs/client_expired.crt ++index 6a6fefa..58e9c98 100644 ++--- a/examples/puma/client_certs/client_expired.crt +++++ b/examples/puma/client_certs/client_expired.crt ++@@ -1,19 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDBDCCAeygAwIBAgIBFzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB ++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjMw ++-ODAxMDAwMDAwWhcNMjQwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 +++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw +++NzAxMDAwMDAwWhcNMjUwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN ++-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl14vsZCU7E1qf/a4Yxs/SbIf/Pz ++-PW3Thbhno3JAbsTUpf9zkdDRB8fCn+R8SnJVZhCRYhUA3lNdZIskQp1h2Ix9TZxj ++-QSo29ixzik0fTd7nd4KC8WOpZUyDs0U2ugmqomJXP0e/AiFpN+3HmgTWJpDx2oET ++-Lcdl70+wRBkF2FDRJU/5KvArUnaGXrqW645GH3iXMadQRpEWBxFP/+aiz0FXqd9Z ++-IWSoobf03dY/tIaxCrFe2+yljBB6eI/oHWs7Y861JN+nRcJrtp4LmeCdDXzQN7/y ++-xDg+NVQy0sEltIMTgMyoIsb1UPD+IkepT9GKd09M6p63BX0SXr5YPhz9iQIDAQAB ++-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHclwiffmiFl ++-uMlhnVbcw5UILFnZLhrT5Ufxg+dpPVpd0s6vZ/emw0QgQHSUwBfo0l4De3rA4ZfK ++-wqXv87c38tA9fZ6Schj+0m/pGFbixX3ptw9jm05V79broPgzSflEUKpJiyYJmjnK ++-3ZfN1JoxYsd3WUrcbxnoOhNEbHuImyFn6sd1Aw7o4+Zs7GcKvKfY5n+anATy42bL ++-ODnB/XJf8sZtevb57ceiKGIoGbVzrdi62QY3uQS8Jv1CAVzGHogW8mAw1yjE94v0 ++-vcV7U4/v2KNt2UqWLHjIpeefnN+7scbX4YAz+UXbBZ+1DwAgSZq+oyzrBn2RKggM ++-LSUeS8vdfds= +++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAuT6k08rCxgTQtwtZ1PB2iaVTAE +++Z/DTKp1bUP+A06DslWT9tng5bxUNMD/8z/D4sOKzNTds9JP9QmJsgme1qlm+pIRQ +++qgejLw6hG3v4ZdTe2CTvfE08lJlwWVU2hoDLDnurXWoQE3SSAzfuoeg48EZ8tjug +++3KkxbCR0GUzk5aof8fskCapybRGvIek/xBkVKwEVhrvNwCvIwvw2SRgGuxHuZNCk +++kq3pptuVC4e14RglByVV0C6MkNMP9CDMXILZfTQRnsqgq67MuB7IUbVPH6VUYqwB +++IIR0MW7lLFLkB6x9QOkCdAXrzqKFeNeWxw2eyV2ueTDQIqsx0fx+SylDPwIDAQAB +++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAJMDA1om9i0I +++uRNtBBYk0k6/E0Tu08VPzJNsBuO16x6wpG3icESNIBoC04Vt/POxcJGUCxJhs9z6 +++k69lY/hXW7tLDSbKVTetV77j+zzZoHo6W/Hh2hCOwXJwVc1qKc2Aj8of42dSH2vd +++eXL8PCc9Yk+nRCs9R6xUAdE9t06dVUxvRb4B67RjhLUXvC0Q3sXHEbqWZir6aNhW +++NJQ542RBLFM4XKOqrybZblKEMXIIz8lK+hs5qDRe7DWd1alunl1L2zJzXwZUj756 +++l4J81itIG0LcBluOQKTPhYpZCPo0btK9UiUFaCxdkW0k+q4WOcA1xBuz8F6hfd89 +++UGtEB8nmOHU= ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/client_certs/client_expired.key b/examples/puma/client_certs/client_expired.key ++index 371a4a1..9a511c3 100644 ++--- a/examples/puma/client_certs/client_expired.key +++++ b/examples/puma/client_certs/client_expired.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/client_unknown.crt b/examples/puma/client_certs/client_unknown.crt ++index ed467f1..b6b66fe 100644 ++--- a/examples/puma/client_certs/client_unknown.crt +++++ b/examples/puma/client_certs/client_unknown.crt ++@@ -1,19 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDBTCCAe2gAwIBAgIBEzANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB ++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI0 ++-MDgwMTAwMDAwMFoXDTI4MDgwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l +++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI1 +++MDcwMTAwMDAwMFoXDTM2MDcwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l ++ dDEUMBIGCgmSJomT8ixkARkWBHB1bWExEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIw ++-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALpCL06kbLE9BNknrrRVfW5YgkoJ ++-ih7EaPNNNqmUgnIsLBjPcCZ7qlsMaUa2ft0mRFxniFkccdrHKox1oAZQ4WrOV5Ls ++-pcLktNTESkuMG5oiobsASItz125YMoEs/q+cLhErf24EaUAhXjn3/ebvCwtza1il ++-7bL1RS0iwfkCS68cQi8MI+tQlBebcSUoWazoitg5YituPKNj493tS1nO5pL3vZuG ++-6tNmhLr8lW+3n4Fi8SElC/pBWiIvsUhaUZzRjrcyPeMS7H2+zdJXDgTj++RNyP0U ++-TLZzFigeZJXNmHia3uneHw7o3d4fyZERuBl2d990iboLbtPh/9Pf82bBIU0CAwEA ++-AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBO7O5IQJHh ++-4ENYDw/kJFdye3l204JSDrFMP8uMIWQLd1RiI22CWjoyhUSfoyumrzykbPNhxf4w ++-kj1E+z097/8Q491wxbbLbE1hfNdTtx35dnCUVGPb9lCP4YLK3v3swXw4OklVdsCb ++-k/cf8s6BdNKVPdhO0zXRBdCbq2Z2PPpzQtaZ2qH739v2tX6CulB68hUO/hQeQINA ++-eJGMck7mlR4FOE76IeHKYy4F2V4S9iNtkqvkf7M0wfdRwZFJqbdZBXTjRpOVMXgr ++-XFGvANl9HByFudJJHk8t+NmkIFP6rj5xQSV4i31KQQHMGNr3hCKgkk7X6Wn95BH5 ++-FSJcNlLR8BuJ +++DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMAqcKCOd/f/Fi9CPDGvS3/IkhEk +++Q08pKToBNsaybIaoZq0cqjqrRT0/szOe1WfF6mYIeEnN54PlEEn4MVo15BxnqmEi +++Ow0Bh//U0IOgLejxj5XS0xRX/01pGojgjW5wTT+gDu/WFcMWopaRS8c2b5HY2Egw +++5Y0a2nNrMQr+ZEAITGME0mY+nr/CSEJAHRtXqJ/JdwKTcrEWPEFzRdBgQATucCdG +++NYcEyg2iX0suE5l4ocGHIub7/XYnYnABpY4LBVutjQ5LEDOc1RVeLiYJt5GKKnTk +++qUoUSTAuISkFwKCVa1vYQHoTrWKC5mcx697QnB0B2QDQq1+homQpLu+KhpcCAwEA +++AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBLU/+Nb6ZM +++QV63HgVF2RZ/q2zFjziP4qZS07WYFUl51aOH8xZ4D8wrjI949LHcloRsyky65T4s +++UH7kbgvd1MasHHWn80tcH5Wq2ekUGqdZsH46dmq6/QLzNb1/zdZTNmAwuGf5m9DM +++R+hd6qMbt9a3DZn3cznNXt6/pqoU570fmF/VchZKXj7rfo24niddBKXJbBtQkNhE +++oE0RPCi/mvYeVkMtJKZaX+ua0L/rn7txKqDusWHcsd5Bkmew6gIT1mI+PSNlO6b/ +++wfu9YKTuGIhWbaqNET9T83mNgJs3+acdiphFLZWqsQOmyWC9QTZGjAlVyhFW2SJq +++M15arUrhr8Yu ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/client_certs/client_unknown.key b/examples/puma/client_certs/client_unknown.key ++index efa436f..90ea42d 100644 ++--- a/examples/puma/client_certs/client_unknown.key +++++ b/examples/puma/client_certs/client_unknown.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/keystore.jks b/examples/puma/client_certs/keystore.jks ++index 17e7d5b..574fd32 100644 ++--- a/examples/puma/client_certs/keystore.jks +++++ b/examples/puma/client_certs/keystore.jks ++@@ -1,27 +1,23 @@ ++ 0‚$0‚Î *†H†÷  ‚¿‚»0‚·0‚® *†H†÷  ‚Ÿ‚›0‚—0‚“ *†H†÷  ++- ‚@0‚<0f *†H†÷  0Y08 *†H†÷  0+¢?›Þð"œ¿è”]2V.%m' 0 *†H†÷   ++-0¤PßígçÚ}™—£6¿W° ©ybžò*Ioœ‹§uöø®›["5ê¼DX-ËÁŒg²íð‚£Dw·¢æòË&Ùm˜ÉOSó~üˆ–˜tUK%«ô‹>>]Eö†_=>å –ä6,Ö-—µž0J … Ú÷¶¹‹êŸœš/Ì‚ÎÁŸbõí¾‚ ++-æ³6ËHçD§E)R‰ìo;䬆lð”x­ ½)Ó.~i´ø6€2 M5™¢€»:±’§ÚfÓ¤‚EÔþºÖ­LÒÁ2=îg@Ò!ªó/¦p=À—øÏ̪èBÂÝsãÙªˆârÒrbh ++-æqñWÈóÓÁ›v..pöA~¶AM,7߃ûWmXHÐeÃEèH;ÚžLKC‘,-TMjêÅ«ô!KøuojóœNxâ՟Vãoª³-ÿ›5ÿ5U²&$µM&ÿN¬qDX%îÒ „‡ ++-ÍÚBJ  Õ,ršN°üú ++-®xNû]ÄÑÏO²eZçy-è?Â'g.¡6‡HýçŸhþÓð8¼‘µ|óo‡(Õ½\éEŸÛcµ¹ÌR^&|tÕÇÿ ž¬ ›ã ++-Ò$xÖb<Åæ²^ªO%ôÝÆ×&£sTš._fýø7ÿŠ0Ožˆ£·!^ûeKü”ú-ÀÇ8¦¢lB,ÖåbÉ\™½äŽTå@ŠPõ`c ++-OúÚ«-Óð 9¥«gŽì$1YP¼§õ‚Û¯ìÁ•øÒ1@0 *†H†÷  1 +++ ‚@0‚<0f *†H†÷  0Y08 *†H†÷  0+À1Ð[ÇEJ*¨OjFWv§<ƒ' 0 *†H†÷   +++¬ª[ɞ²Yó +++nÐÛ.¦„ƒÏ0Áñ)Óq(ÙÿÜ ˆç¶¯EʏÄLÎϲüK–>tXcèí´nÍýd"ÏÃXÜgÕ|šÜYŒT¡h¿ž¹NÎþÕp59KÙò&ÖoÆDº7=uŒï‰À.‚¯–wË2͸µ´b¼ð¡Ã¶þEô¢.~Ê®4’%’zAjô»[-Ñ·‘õ-Áݾ7‘ûÅ´µá) ù;™ìfâ8 |Íp©;¡Õß+Ý6Òê• Ç…ÆÆ çd%|'ÿAx҇ò\ê-­Ù ö̗КŸ'“µ/’÷F\²ú›¯ë«ºþ‡"dn_Éñ1X8™ +++{º€Œâ¼Fö¢Ô¶Ý7ȜgvæÐÿ—€99»k=º¬­&WÌ8F¯ƒSœPs#šš¶üë^¿';ÆÍ +++å.‚VjaÔã6?eIÃ'¡p”¦­_—”%<ôò!!zs¾ï7ÿ»+¶H—fÿå~zê2âóI×®«í•wƒý‚+,øpÑ6ªSè™.SJfÍ+ˆ…1 +++œÂ”Ü÷€jÁìöCµ=Þ¬‡?_S–¿ŸÀ³HлaÔ•W;Âik­J<ÍSYð&ŽxGuùýüŽ8> i.²Y“¤°ÊŸ™ôŒ9’¿Þ÷”¥6™ +++ãŠÛ­{CßÙF°¥rPf3[¹%nëJÚ]z™ &x?QÞ;uò®/¤A+ZÆ] ƒðBŠ(Aí ¬Â®kP¥“5±G:ÎQº¨j’À|֍(ç9¤™ºËJãºLìknCjž§vˆx0­Ûh´QÜy?¤ù÷‰¢ÚHÑûI(1_sˆíR…D“—„+¿»ÈÁ„+Y•ƒco„úDSáRaÊ9&nÇC3[9›’Sˆþ@3F‘ä¦oÖÁ6ýyOõ…‰`+ŸG"I¨Kö,߇w۔ ++-ÄÊʛPP‡¤õ¼‡ŒZo³r‹2¹¤â3Ť ŃáV½Ÿò 1**«Ïå£UïÚcÐSR]Œ½Å@=Š~ d…5?€Ïï:àƒ sƒ[ö(V™Ú÷*˜îÜmýW¿õfR¤Ó_›áVðUL¥yˆúÓ½±,ÀC?-‹ò³.½,±¯vèÈ|ôk ¹Ò_ó †6x£‚è-’µàB`÷¸4Œc›Zñ^Z±Y÷ڟK•ÒB•öZ7œIB[N¤} Ÿ9¥ðxå*`Bý)Ҝ¶bÐ.ä•D°t`ÞÕ%µÓ'©gQÁ»=Jx“Ýù2Ëà.~œ#- [@#~ÿ®bYö“õ!òð†êi¥áÑ(Â[Šð²µ ++-%¢:r‹_?òÏú½Lð¿;۔tÖITPov[™¯.ðÄô‰»µÖÍܒù,øtŸŒùE²z.U?d¼î<šz'ƒ(OßÜFgiKnîa¥¿6ÖµÃ+,Æô¡¶o«c÷¢Õ6pkúsžà¹7ÕCµ8¬!/‡*ÓÊê'ý4Ù̀åÌNu—M]„>$dp .ûr6`I#§§ýt[?D—Ë%¨…”U ++-$ÈA¥Ù½×ª."]œ­Áqášâ`þßIƒ!U ++-©½Ót§5u=­@±åô9ØÂA߄ÉAðãý¤€äÒá^[ ++-KAÍ,»òq,Û¼€"^Ž¡¨‰íݔÞ'©ƒÿ÷¨×Ÿ ++-Ƈ{¤Öy‰˜­ï–¹;&o ‚Íô9¬‚™Mš°·¦ñf8肑u…œ?]aE…Ëý5´ãœ7¥¯½hŸÈr~BÖæÁ–Æ #rÚ)2)Ñ< 2Z‚é•ã0<]ÔӖÃí4»C¯ŽÎX«[‡¨À¼¤ÅIWöAè¦0ö灻"gTþ܏X§¾þA !ª9(À†¿/åÝn7ý!›W®¶ä•`Ó¨)ÙɶTüDš@)–³†”°HP\Œ‚kI4ÃÔ¾^­›tڄ餂8䜉¯4H/‹úØ¥¤ ^@6þ­vJV.y18D`Ç^§C7 ô·T:³ÉUJMށvYžT…Â59:ø£šÑŸÍ ö‰$:¦^øWk¼sc°Öx…ÆÉ_TjÔË ++- N«^‚NFI \¥% ‰9u¨Ã3•Uí\ 艅‹LþÀkžYŠ'sR_<;$$™fü¦,WŒÚÌ+޳vü6¦MVÜ Vz®‘¼\÷΋+ê^51‰Ñ †«œfÅóðµý>ù‚—H ˜æG 9ºÞçÌÁŠì‘ö"µôcÇëÑö—]‡—që÷AÁòèÉ¢ ++-‡Œ&%[ƒÏu¥öÒî>»»è㢗dLϛ¯ ù®n#Ï5“]—D·™ýŸ ++-U’¦Ҟ£{¬E+xÇ€RH8¨¦iEæ>Q&\À!‹W?ALëƒaAøŎª` ºEi%˜Hu؃ßÔÐ/³¤Á<öÜ»[Hu—3큷0 é*¢”žÌ| ÝÕÌçFàÌ{æä6¬>¯ P¿¡1ùÿ‡‹`¶ø+p•VA CÞ4î¤ÑødÆ?I =,õ!ƒ×c¶ÌÉùL®ú–Á»^0݅xkÈ®”ÃE‰» v ›sÈcò¾äv294ó¦gá‘ä¤Ã·)³àÅ·Ì©ÉúÇ/å9AÒµ“ôѱ¾¶ kÎmjô¢c-uϋ™N9z ++-•Ü ++-µÿº ¡bûŸTK:E¢€?‡ÂôÝA‹²p? ++\ No newline at end of file +++ç *†H†÷ 0f *†H†÷  0Y08 *†H†÷  0+H͸@Ã5 ÊØÒÂÙ"Ï' 0 *†H†÷   +++p(GœžÂ)Ï #õÏs¢>£i¼mh%äN;Có;Îr§¯çÒ+Ù¦uÜ*³®ÈÊèÓ ß‹>{îv’¤L}É ŸÛf$ªÝC”6JÁã§ã¥Û~}1«µx+܂(ô~)çoÃ#þÀÆH¸¦2k\oT´€¥gÓñ”¼Ð†­ Ìçǰ³(Òdò!EŌômàX1òšÄÐÚzÖoóMFi#&æ5 …¸ˆyÙ2‚Û¢¬ÖèÅi ìç6þ>í±ý¼g9óêL{X(Ë|äÌÞœcv#^xŒ^yjܼ‹«Ø¢1âZ…$.ìá oK{‹q˜™ÚA†gIðV>…ë+2¦äT:ýòdÖÖ ´§ávUó…yرçÞü‘í®¢ÞmÃ+E/¡;ó|°Ïs5€.‚˜V515H–Iy$(œhÃ9s·”,è &°ÿP‘kšO–h¥%O ìÕú_øh6vçp¯º#m +++j& MŠÑÀÂ“^:‘™9Ï%»Á¡qìÒ¼aDû‚LÙmčñ +++l +++l{77»¾þ“Eí1ÛÓó +++S ï +++>Ÿ4c嶝ÂCÎñÔçÁØó³Ú™À'þr/¢HÛo н ˌØÕBš}6 ¤»”‹1oY¢y á sšxu„ìXÏÇða+b]³(6™ì"ŠáˆóCÅËpM6Z²²Þ¸¹…ú»ÙÐ[–54Њ©á9•1Ìœ=Xð_Ž~÷p‹¤v~zHrXÁóvÇå|%«PÙɏzÐ.ég¶ ÐP”Uy¾V1Ùþ¨ª4ŽÈNÎïƒwñ@Sp>>Ù®ÊT·P`E£2"#:ž0kFÁtßCÜ}ˆ´²¯j$q†ò̏nꎇò*ôŸ>“q i¨ 7ånmý°Ã!À$”4@0ðq¦Døm÷rîsgéï¿ã-џ–’gítÅ>¬hÍt£³A•¸ÀDÿOdz&¬¿~€µÕ•ñ‰ÀI«‰ŸvdJ¬KŸ°Gw W†©§&9?hªOʯGO°ôö¢¾|¨´}«Ëê™òeö>÷Ðt ¯™à ,§y‰½ŸÞdȨùûX6}ŠO z#ü÷ +++]U̳wÂâ1}X›sËà^7Khå5üî=Hšé8×VsºïÕV 怋~ªbÞÝÀEₔÓlvŸl‚ׯ3þP-€r,aƒ3‹ôí +++uý_.u:?ð¥œç5L:­`¡›®àÁA”mfé£*AúÌí´\Všó*Áݨ%e!ž wÿQ¶+g™6{¦ßÁŠª%¼áåsa€£sÒPéŹÛ÷Fþn¨Y°âfTì&TìËðñºDK‡/!T&X‘""Î(™9Þ¸%î–c90=KÞt— u°Sž.Á–D +++áòW̊NŠ=DÜE·8ónæ0M010  `†He ++\ No newline at end of file ++diff --git a/examples/puma/client_certs/server.crt b/examples/puma/client_certs/server.crt ++index 1335881..3a7cd3d 100644 ++--- a/examples/puma/client_certs/server.crt +++++ b/examples/puma/client_certs/server.crt ++@@ -1,19 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDBDCCAeygAwIBAgIBBzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB ++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw ++-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 +++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw +++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN ++-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxqbRfVxcH5wKCTGfuZTVisUKUIWS ++-TUOWkIoyIfBKVknREnVSN40aw72bs9GDh55F+R2IJ3y9F7TQXo0Y6PJ9tFXZqJMb ++-2NHXYTfhQCSN/w5wqKIrWOR7wbA4JHjs6x/vHYnjFVbvbx43M+wceKsMBlQ1eDLz ++-Ukr5vjLGASmdgzTq8AUd5bNKiNq+ERyAUTcuwXWC6ndXNdr3vdEgcYnzPWtgM7eo ++-1SpewqCqrlSeA1dzXThB8vCFkCNy7DYrJbCuGIIxm1D2garE2814LXztE/rhwdIG ++-zonh44/Zc43cFhzJQUhcJ/jOxFovgijHd5lvUfvqj6YoquC5yFVYEfsSwwIDAQAB ++-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAK8iNpb7JRQ+ ++-CNHl/dUV2DW9Js1TndISLs0YqAcAJHgzwtp5OPV8GHUV/BF7sf91sHU8y6ivety8 ++-QsvG1ToZhWAVJXG+AStgJDM8Iw6g2xZbIY3wP3bBSuxAE5PGdcXM7nRfjwnAJM7i ++-Q1gdPcntc5J3dZ1Kt5d9iofI7UMBTuf0Ws+LWG73i/NeRj0lef6+VErQ6M93Yi7/ ++-knXVzvRkpK2664fRmUHlavXP2Alleuuibgg8kgJ9M1yjluwwx66LXUbhMClrS/OD ++-hPM29fPZmO+XHJ1dtR79DhdmwqX+GOqjD78asYHIg2Yjy3yZsOX6chKvD0MWk6pc ++-DyFSu5fEHQ0= +++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwemh+fx2FupgRmKG7ru3X2m//xDX +++DttQXdXI8OwqwQcWW/7fGxzYXImPGKSYToXUctU7pFM4+PjBvp0l4iZLXANn5lLA +++e3zEUzC6tZEGVol7Id0nRNVqVgt3CXLLmcxyuTwFZmTPM3AwxtxTu6WbGWz0l6v8 +++ElFkIZ023Kb5e/D0GBUVHOJJDcqiaDf18WrzPjJd59VOE6gH8iO4GX2ckzpf2hBq +++VPVsmXi/3sTv+5RlBr5VSNPRq4LxBrARfWU/vTq8Q0u4mc0saLNPB3O3i3iN9wMj +++KKJV3tBNzV72OnsIhs2KprVrcE9bm1XT1U8KTqkpPprOmY+iVWHcjJTa9wIDAQAB +++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBADTBxt0J0+jn +++VWiuVEvkVNLutKP//CbQxwt/h9KsigHdwhBBQ4yeqZ45OnVMh8npTLc+7PHgqwnb +++VUO+0aqIOGJbeEAbGbjxI4ND0LA1sHwKkGRUPIQEETXOB4H4DPiM+HHsUMd+DuPb +++cWn5RqBZByj23wFCp9/Bf6Db8jzVNRnZx26+rjjtP8muQuxeIACjsgt58akLLQEk +++IVvLPoKrnZGxMbKnLejmXGYB8iLeWnF+nrR2+IrJNcBk3A+Fkb92EsJUpernqmzU +++3+Vrx1xeOrm5gRMgJshqUEdqZVeolOsQX6FW7LNV2AtvKHHGm3LtssaR/zHuZ36G +++ONP85Zw7QHA= ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/client_certs/server.key b/examples/puma/client_certs/server.key ++index ea6f467..8b890fd 100644 ++--- a/examples/puma/client_certs/server.key +++++ b/examples/puma/client_certs/server.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/server.p12 b/examples/puma/client_certs/server.p12 ++index 7f7e8ff..12cd7db 100644 ++--- a/examples/puma/client_certs/server.p12 +++++ b/examples/puma/client_certs/server.p12 ++@@ -1,15 +1,14 @@ ++-0‚ L0‚  *†H†÷  ‚ ó‚ ï0‚ ë0‚B *†H†÷  ‚30‚/ ++-¤–0dÆÂ”d+¹b{#Љ›¯¢Ê!|Þö¸˜ÂL؜#Äm <¨O¢%4/®*ò¢žÍ7óélá·Öߌ,z’3– »Â6s+,ƒÙŽ/x´gòéèAÓRØøö˜ ‹ã<*bs†z· f{ ×7=šp%)‘ÏHŠ®ðahtDñ‡;F…ÖôÿaÐÄ«³²°÷ìDŽ ú6g[o‘£§/!R›÷Í4¾ˆ7V¢ú^¿NY šÿ¥ë½Ö¦ãÏn¿b¾%«ô`ô7?àëA ++-céÆu>í¥`°½#`ڙbý~*NÑEÄ~Y£f§ÿpî¼&ÕÍ+ÒTC§¿Z9Í„)RÊZ˜ï’mS2DJ ¡hVÁìúÕØ6.¬øÚ¸fåZ¹¯ÌBɽüì3†¯Qo3õ…ц“¹JޝHû”o7ܗ㠴TVl,l’þ¯êÚ ++-?’F+yú¦ä^Á­ `ºì“áúH]‰l͉®Ú®LŶ|"_¥˜K£ã ++-é87EÔ ÃÑޔ¤&¸ÿžFœIô‚¹“Î(0SÅ,cî¶²œ ò® ûRF¿§¾úEP&ŸñÙ\<*6™ùŒær-¤‘ëèJ Œv›Òlþ’AJm}Ѳ„ðAíO¢ÔØa'Ïæ{L©bî–<šÍ”•ŸºHÇցòLܹ:Û®*)Y’'×ã¿»ŽQtQɵ•¯z¼oáô ÿ­örð8›öŽk}‚ÑòéÂÒN<çõOriáÖÏ3ÙV&CBMàò¿3éÚ¦™Þ°0qdu&ïU&d@@ènÒ|І¬°M êVsŽSµDkBrªk[PÇ)ÕÝÍ!n CýH4¶«/ ñˆîpÃÓÕyvOßÝUKí-Xý”t';¦´y(ҕ$uË`__²u7QY³}†aƒÔÚÂÁYU² åÊdºËй{ŒÐW?Ü½ZrÁg‡d¯×€Gï¦U»]yLA”BxøÜûS߇Zà˜Gw1{׿sVsq ++-¡‡Ã¥±¿Ÿé!™ ++-™ +N²™5÷rXô¶ˆè´’ƒõR0%R÷ù6]Ù!®™¹Æª².(ÁëªÇT–U…’ÚˆöV¢çú´ì@›Iq±Y(í½…áy%è³bÓ5Sá˜Ü©ñbƒ/sø¥j ]j®oÈÌ´æ¡pò¼›#”œ±8àw²”ø—e S!K¦©y:°óÀb6Òø½#GÈÓ*½3†ŽÉwnÿôO~q_‘'Ñç ++- ‚10‚-0W *†H†÷  0J0) *†H†÷  0’ù÷"~n) ++-Ùº½íw¸=,‰¦/$ûò“OUH&7?Ñʦ%ÉMÆ{þBã–?‹F½\ÇlZ0†ÉÕWhÖ\/OùyÿW°È$ÄÝ]ÏÀÄ../ÅÙ{T±êÛø „Où(ÒºT—gyÖ­åÊOÍáw­¿}úÎr#:8U-ç6Óx&9>“ãÁ æÑ> šÙwd(ÛÚ¤ÔÿkT ++-SŽ;œ4ŒêBì‘Ñ÷㲅Ú*÷>§|×ûê›´´OP¨ˆóì«ÍR°¬vžõ䛎¯fV>ÙlC„2¦ ‰Uœ<„Y·Ì™ðÀ ÄÎxcÌά ’Ò ++-÷ÛÖ¯‹ŒÑ'7CvyU¤ÉÊ­ËÞ'ÒÅ1AP—tRï§e2*â÷7âcõ~ç7 Ï ++-[­¬Î:ïè=Ç´VºƒX©ËLK$”õÏ*R“¦›ú­ ++-ª½Ð{Ä畚ÿ…†¹=·cø¿:|ïfÉ&¨xiV,£eËV‘Û:dÖ(‘|šôüv¶É*pú?ĚÀËÍ= Ýa*èË"á—(–ÿŽ0Ž÷çÿÄnVå“ Ĕ ú£BÀÈHuzïŒ(]¶6Îrêy#ä­OÙÚ?aÂ*Ã^Š( ++-žšz½Œl g¦½ˆʦ¢ ++-Q×pn_E“Šêy3ì›Ûú½õjl ++\ No newline at end of file +++0‚ \0‚  *†H†÷  ‚ ‚ ÿ0‚ û0‚J *†H†÷  ‚;0‚7 +++"¨ýs6CТ„þ‰MÆéVO1%eú ¨;ŽŸ.­-5Frþ-8<Ž!è«ÓÄ´çÁ) yî–g*B‹UÄ4ˆ¼À‚)û¼‚CzBM×ar¡âÜX´¾óú qӋÂrL â’w ¯ª‘ؘn׸5>u¦ž;_2Ñb¿ð@¥Ñɺûztç¿Þ2foË vée<}7?âÎé¼ÑCcL‹IÇ/Šî\±¢²š~ðýòeÍA uâ ÷¡ $tñª™·Æ¬QdQ·²J #ÒVÓ5Ä}a9‘²^J¾~ ý#ä:‹&cþÅÆ¶²,•‡ +++îÂN áEʓj=»âÊÅ4à +++W‚¦ïC³Úîþ%ú嗌BàÉáÍ?}­<ƒ£s2oaz ·»­–ïÏÔ LÈѸ0¸›J½ gšÊG\îûûE¾ëÙmÝ9fðΉ†C÷ù˕jqÉ^Ú) rºý–€Xc“f®É„Ý3IÖz;)Ôß§c°Ôo_¼>L·ŠîÌL·ƒžôб’Ô\xŠ›. 5Íf?Z#¤pŒ«I®?³vY~_í*Jú‚mB@Í,õwâûOƒ©ÿ#¤²&T¶<[ 9 âÂÓS,øí̲a"4‚ê}b®•0g„—’6Œ k"®nCÝ8@øÒo‹|H·¿Þµ&“qcǛoz«•C§ªŽÃ3´kÀf–Û ÕÐq ÿ½µûäT@Ú5 +++RË-W¡×í·/Û8;~FÓ½Yx£I gÉ$¶P"K+5s©&¢Ý'>ûì#ѾHj–zˆÁLåeó,0aÿŠÓŒÿè"{‚hÄÃŒcìw’®;M(‡ 7Žÿä¶¾}¼HFÄ×y~0—¯-Ôæ@fw„~È +++{†^…^y§_Å'\ l×G²µaÿRŒÿ +++”¥KhB¬`,ž<0<µÎÑCt§O”©Ym +++,pP&d9Œ¹?ÙÒ»N•\ñ³¦t$Úà +++ ‚90‚50_ *†H†÷  0R01 *†H†÷  0$` Çuåߘú·šeð\ +++l~uï›VA™xyoÜìﭏW\¶Ì¡±Þ®õî¸D +++ÕÜH >>©{.ˆ­qb”b3'ÊôÓ+&Ôú +++™§”M Ök‚ñþvJ›”fâ¡m îDR šS±Îª±Ѥ€È‹¯¯«nÅ¥Vüذ+Œir²ÞDÞWFÖc*ðýÌÉ÷¬þ‹Ù‰ª9™QC_½Ùyʏ.IŸcªµÈqO™ Þ1B0 *†H†÷  1 ++\ No newline at end of file ++diff --git a/examples/puma/client_certs/unknown_ca.crt b/examples/puma/client_certs/unknown_ca.crt ++index 5c50d8f..4b07a87 100644 ++--- a/examples/puma/client_certs/unknown_ca.crt +++++ b/examples/puma/client_certs/unknown_ca.crt ++@@ -1,19 +1,19 @@ ++ -----BEGIN CERTIFICATE----- ++ MIIDEDCCAfigAwIBAgIBETANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB ++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI0 ++-MDgwMTAwMDAwMFoXDTI4MDgwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l +++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI1 +++MDcwMTAwMDAwMFoXDTM2MDcwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l ++ dDEUMBIGCgmSJomT8ixkARkWBHB1bWExDDAKBgNVBAMMA0NBVTCCASIwDQYJKoZI ++-hvcNAQEBBQADggEPADCCAQoCggEBAKh5VmSGmeN97MEPb9Td++UYcWHhYVj+yxi9 ++-leDzcLpAgqtd+z0yBYCS2ULRQqomf8uIYODEuWxaepVNjjRN5Y22Hzlodnp+kJ3G ++-CXQva6GtwxbTIxyZ21Yn8APPgb7OTHZ/js1EhZpJUSjum19PnSS8rPfQRkr6m2eg ++-HKDkzV3jrJXTpNdvUhTi2NVVo0vNzLYV5Kj45vqirlTEesLxdxHtDNx8vanYHaJY ++-JY7OryIJhPsxKYplSbQ7ydJuHtpx5SiFjRckw9ddhRzGjYsAQFE2eVBPjhiYJnDL ++-tmEnb2e+tgRNiru9ttffpfzN4EG3/d9qnyZV9nua03yn+tqe0sECAwEAAaMjMCEw +++hvcNAQEBBQADggEPADCCAQoCggEBAO17pO0lTeGMVgMplzEn/4IdsVQXt45z1MgS +++3irQEGPfIKkZHnVdPElJnag3pTg5bmFQ/yPOEdbP04Ao8/BvCgvUO6jqkTR9aic2 +++PqnlXbTPeHckjskihhcbcr+ZKO23dBP42U40E+6TakZponUsZs/YlKE4pKUfjsYq +++btVyDxe0SQWxSp85XUNn6Sd2Wm274/wQtjjDdMeMtYANqGRJStKG6qZAe9bYwOlw +++UFddMu2osIV8i5CQcmJnkVW0MagUrpvGZSni6HO9i3h7Y63r+d76NlR+anFPz4+l +++kZKBugfWGI6lC1rSQ7q85ucEJeqSJN77dHGRyNITy2+PrYGcNAECAwEAAaMjMCEw ++ DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQAD ++-ggEBAAp+1M6+Z8T/CA+C0288CRF27tXKn5Kd5Iffrx1Dg7I5HrFGJl87tkzLRoZi ++-MKj+FfpF7fJ/QSyQt+UZa53R2vmJig6JUEQwfzXc5Bp+fusJgmkGPZQ1A5tnbwCZ ++-TTuyy8Sy9reCWdJkmdDWyK3ah55mjiuOwZ+woA3RAoC9vCRtIT4w08NqrISBYp2i ++-NeQCv3gooiQrbJuCUuo56Qm73juJ4T7GXElRMF+SupmhC2SHwFVGAbu0/g6Yc+ye ++-i6/T36t/GTT0fG3kKfGfFMq3NCvY3WI3vcPzYtK9fN8QYVy3LjdnsjcTV2L3SaxG ++-3fYURa9nn7mrxlMBX88UWLUIPlc= +++ggEBAOgqzVzIQwZAtnhBhZ52J49MQzw7e0jlUoI0nSBNcT1QckxOGNE2jGoh9gHr +++Ti1VlesIEO7v5IXAyDuL66sOWPWzmPdU2uKDoWmUE5ry02dJu4W2OoueTCQYilAg +++vmaPXgH6GySOsazj1LK2RNkAzbj0Kw49bwa4vOxEnrkPCLlZBonEAmMnhOh0t3iP +++TUk2wMTnSJrJ002xDArUQol+sjVXGktYWT/bReERDBnGA6opFqtMVap48kGqgCOV +++6lHEEOg+F86ubhM0wLfdpFp4j4q7aAFQTtapihnLlFXMKiz9imjpuAWllSKh0owP +++ZDowdJZgG1trNkK0oMgfICIYKlk= ++ -----END CERTIFICATE----- ++diff --git a/examples/puma/client_certs/unknown_ca.key b/examples/puma/client_certs/unknown_ca.key ++index 830cd91..06e0f03 100644 ++--- a/examples/puma/client_certs/unknown_ca.key +++++ b/examples/puma/client_certs/unknown_ca.key ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/client_certs/unknown_ca_store.p12 b/examples/puma/client_certs/unknown_ca_store.p12 ++index c74c940..04afb8b 100644 ++--- a/examples/puma/client_certs/unknown_ca_store.p12 +++++ b/examples/puma/client_certs/unknown_ca_store.p12 ++@@ -1,10 +1,16 @@ ++ 0‚ ++-0‚ Ò *†H†÷  ‚  ¿0‚ »0‚ *†H†÷  ‚0‚ÿ ++-‡_®é[ ÒGmitö]æ9$º ++-„ÊÚ)f‚™DÏÀ a‘2t /«P˜1”KW2­Ç´ôC ×? ++-ñ ++- ‚10‚-0W *†H†÷  0J0) *†H†÷  0åA× ú¾ ++-`¶ÿôX0-ÒêøßáƒeÊÿÞ«f—ÀGf†³8P´1ªž]Û ]§A/ü‹;VÁ֛(¹]ÜmŸ¯úÂN0.í”çÒ¥)dmFÍiْ*" S ++-I‰¸y¾^þ%+-}áªwOç0c# `5.*µ …íf©rC¸äy‹0sð*3‡¯“#½¨ÔI-\!Q}«®zû9,ÒpA•wÈÖ*\MÎÃO.ذƒÂ—±†ÎÀ|üèáÆ®Sk >‹²†”¾LjvÄõçŽú6NÁóR‚oO¬#¡ç3Zˆ)ë{2¹¬`­¢^Æ¢£¹Õ“KJG[ *7è » ³{`†G>fdœ4‹Õ+)ÔÁ§1z $ûVÀmޅ¤’ׯ}Âòƾ1r™n¦s Ù[H¢¶éÑ5¢Ü+6ð!,¹ãý80-/㨠¥Q~&ßã5þÕäÍÕ-Ç®öÐu#nzn.mÚ±lÐXÖqÈÎÀÕÜg1Þ°»Jǁ²J ++-ãjöd€ìVfÿÀr‘ªÐX­´‚`ïìâôÝÉ{™2âìsï&ŽŽ ++-à•ôÀö€q/õë ÃU‚_0A010  `†He ++\ No newline at end of file +++,0‚ â *†H†÷  ‚ Ó‚ Ï0‚ Ë0‚ *†H†÷  ‚ 0‚ +++ãÒA +++!@_ +++òÂ)fZ‚š$+˜Žö&ŒÂv³¿`¦Í“Ævxå ÝªÂ¦¿°Öuž×S®-Œ~7^ +++)”:eÞÎíAœŽØ €š{mbè×»,Šv+÷k‘uÚùÂBQBÕïg£œ)¢ÝËñ6‡×&fI¯È61৤ˆ¸‰²Dè-.ån² Y"-8 ÎÈçæ7á1»!ÓV‘ùú +++¤fÀeåé%¸Ž{d)ñã>º_×.xqÁ £þ´Vz¬É—zw9/Õ|”± +++•„نߡ€$çQfgÏ¢-NG, +++Ën(¥k~n ›dEívkTõž2æÆfìEìÈÖP"lm*× gªH¶?Ñä/#jLሯQ:þ §Øš}º ½eaÖ:fVô<‡fcôÀ¤³ÕÌ'2x•Ý‘Jo`é6R1÷žÔ½ðàŒÈieú6á’LVe&ß<ù X샞¥z®ÆïÖâÞ¢/½¥¨ÊÒcõ[å}W+$¼¥àÎ]2Mh¯ >ip1TаžA¿ìèÿ÷HY¶NîYáB}ÆÃj©æ×ѬÎìYÝ‹U¡‚` ìŽh*_»âˆV¤ 7ôÝ|÷&–k̐+µ?÷¢¸kjü;ª>zÓæQ¬Tózà7¨jšK’Þ0 ÛUç#ĔƒëáëàõlExÑdƒh{ +++º‹ØÝ÷Ó´OLÃuaÖ¾µþ‚zhž•G®åâ®3øgI[Q î¯™¯cÏÕAç¾vŠÙíM)—ÁóqÍá½b°~úӆÌÍtœ¨Cã6œ2Ûÿ½?!­¤¥sö;¬ÀêܶbÓ0‚© *†H†÷  ‚š‚–0‚’0‚Ž *†H†÷  +++ ‚90‚50_ *†H†÷  0R01 *†H†÷  0$Í4gÞsrPÆ93 +++š”CÛ§ï5J'¥eÈ1M$àèzheës6ÜPq o’Ž{”o÷h´}\Ê¥U!HêùPì‚5ëý)„P“¿³øN±‘ïêýQ~ –šáÊÆkÑÃaŸ,Nۆ‚öc‡“ÌÇþãÑ*8'ÒÆòNÓaÑË'lÎ4ØHÂq}= +++*®dû{ ÂI缕œåä0Du›5õ pv™’ÓßXÇ"л?›-Ô¬"akÁ¶_ŽÄ=xÕ Ày³>w=㰂äG¢§õÉhx‹0]•ÉsAn•ÕŒMyC?H± D®5Nºyr¬xkèÃæ‘:«dGáe”Åþ¤0{{> §_m¦ØàR-;³p9¼54h°—ÐÃu“ËP0§cÒÁ”æ7L·nºúLjv÷4Úõz$Cýt?/7>‘W¬¤çf¨UÔz÷N¯’ŸçÐÄêKø0ïpÞkÆ¢)|)õ‚ +++8Û¹0A010  `†He ++\ No newline at end of file ++diff --git a/examples/puma/encrypted_puma_keypair.pem b/examples/puma/encrypted_puma_keypair.pem ++index d876594..25becf1 100644 ++--- a/examples/puma/encrypted_puma_keypair.pem +++++ b/examples/puma/encrypted_puma_keypair.pem ++@@ -1,30 +1,30 @@ ++ -----BEGIN ENCRYPTED PRIVATE KEY----- ++-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 ++ -----END ENCRYPTED PRIVATE KEY----- ++diff --git a/examples/puma/keystore.jks b/examples/puma/keystore.jks ++index e36f314..ef92af2 100644 ++--- a/examples/puma/keystore.jks +++++ b/examples/puma/keystore.jks ++@@ -1,16 +1,8 @@ ++-þíþí ++-+* ++-E,‚?hcSÔÒ±]yB WŠG äcİé;‡-u’:è6"#®Ò牤‚æØ<‚¼bôhbGŸd{fç„æ$Ì]zÃ|åH—–Ñ«ÍØt—´¥ eã'=?Õ:¼£6µJ[Š€»!ðSù³R2­êßp¡Ç±Ò²…ögê­íE›´iìzvv ÷¢:PAI#Ÿ–ژ˄U'£8›ç¶Ó¡lŠÈ*&ln@ÃÔî¡Æÿò«Ü"|^ èÏCmn´M$F2RæµEÀkEî?DK]Ó!$aO/xÔ'½L¨æ2Û[rh ¨œGžð3ò +++VP £ˆÎùWÅ×1‡@‘æw”F  ·ÇÞ?u¡ãf;ÀÕD«b!ç($éáÄÝLàAP7)Ïó~$7+ļэgÄ!\¿“¤mí~žî1àæÏ­kø®¤:$oõƒ½—§u1ÌïH£x³… Ú[¡= HwÈeÈÈNel:nº™G¼‘¨·k—,‡üAK†y{Ü Ïܨ +++1¹  y¹‚T6(yç £4zÛT»rθ—N +++ local1 0 U aero1 0 U CA0 250701000000Z 360701000000Z0H1 0 UUS10 U ++ local1 0 U aero1 0 U CA1 0 U puma0‚"0  *†H†÷  ++-‚ ++-+0  *†H†÷   ++-Äz,GS×e¶ßé†?Zgɝ0•ƒïÂwa®NhýÉV[úîH´h&Ôà¼àx]KT-“þB¾+½2f(Å债Ï{ס+ãé>MKË1ôî®ØL¶‚OÆ Ó$VÌH¡2!²‘ˆ$8™u\“‹²¥£à!oa‰² œè2*OE‡;݃ÜVÙFád€¦ÎkS>¥46¢S‹Ü!ª—bè4þn­_ ++-[•`¨ˆð ÃÀ ++\ No newline at end of file +++‚ ++++0  *†H†÷   ++\ No newline at end of file ++diff --git a/examples/puma/puma_keypair.pem b/examples/puma/puma_keypair.pem ++index 1aded78..f1c333e 100644 ++--- a/examples/puma/puma_keypair.pem +++++ b/examples/puma/puma_keypair.pem ++@@ -1,27 +1,27 @@ ++ -----BEGIN RSA PRIVATE KEY----- ++-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 ++ -----END RSA PRIVATE KEY----- ++diff --git a/examples/puma/server.p12 b/examples/puma/server.p12 ++index d928a19..49f76f8 100644 ++--- a/examples/puma/server.p12 +++++ b/examples/puma/server.p12 ++@@ -1,13 +1,15 @@ ++ 0‚ ++-ˆ0‚ ++-> *†H†÷  ‚ ++-/‚ ++-+0‚ ++-'0‚‚ *†H†÷  ‚s0‚o ++-† Y0‚ *†H†÷  ‚Ž‚Š0‚†0‚‚ *†H†÷  ++- ‚10‚-0W *†H†÷  0J0) *†H†÷  0‹R)?¼ù ++-Ij,éð˜Öµ==¨æ±fñ¡Ö$/£`ÑAS¡Lm-úÕsŠ»¶jvÍß`€.ÓD{ý¨‘m=q1 ++-4`G|O4áP=&ƒŸ¬ ++-‰O‚®Ý·%M+ÿ7֟4ÔÊMË1èz/ÜÕ2Ö‚A™9žö‚ýâ¶^ʓ!©‰ö‰m€ƒ‰wÓއ —ê/«>å‚TCÃk$j'âÆÙŸæapDV'Ç Bœè«Û¿ý‘šÜf…¦)çù²•à­!oCë˧ñEð; 5ß³ø±ëQˌ]¼è .rb\fR. ++.PP ++The \fB\-C\fR flag allows one to pass on a custom configuration location. If ++the value specified is a dash (\fI\-\fR) \fBpuma\fR won't look for any ++configuration file: ++.PP ++.RS ++.B puma -C \(dq\-\(dq ++.RE ++ ++.SH "SEE ALSO" ++.PP ++There is extensive documentation at <\%https://puma.io/puma/\%> and ++<\%https://github.com/puma/puma\%>. ++ ++.SH AUTHOR ++.PP ++This manual page was written by \fBDaniel Leidert\fP ++<\%dleidert@debian\.org\%>, for the Debian GNU/Linux system (but may be used by ++others). diff --cc debian/puma.docs index 0000000,0000000..b43bf86 new file mode 100644 --- /dev/null +++ b/debian/puma.docs @@@ -1,0 -1,0 +1,1 @@@ ++README.md diff --cc debian/puma.examples index 0000000,0000000..e39721e new file mode 100644 --- /dev/null +++ b/debian/puma.examples @@@ -1,0 -1,0 +1,1 @@@ ++examples/* diff --cc debian/puma.lintian-overrides index 0000000,0000000..711e981 new file mode 100644 --- /dev/null +++ b/debian/puma.lintian-overrides @@@ -1,0 -1,0 +1,3 @@@ ++# this is one of several sub-directories; no need to rename it ++repeated-path-segment puma [usr/share/doc/puma/examples/puma/] ++repeated-path-segment 3.1.0 [usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0/extensions/x86_64-linux/3.1.0/] diff --cc debian/puma.manpages index 0000000,0000000..8c2d587 new file mode 100644 --- /dev/null +++ b/debian/puma.manpages @@@ -1,0 -1,0 +1,2 @@@ ++debian/puma.1 ++debian/pumactl.1 diff --cc debian/pumactl.1 index 0000000,0000000..67e70d6 new file mode 100644 --- /dev/null +++ b/debian/pumactl.1 @@@ -1,0 -1,0 +1,99 @@@ ++.TH PUMA "1" "January 2020" "PUMA 3.12" "User Commands" ++ ++.SH NAME ++pumactl \- command line client for puma ++ ++.SH USAGE ++.B pumactl [options...] [commands] ++.PP ++.B pumactl [\-h | \-\-help | \-V | \-\-version] ++ ++.SH COMMANDS ++.TP ++.B halt ++Halt the server. ++.TP ++.B restart ++Restart the server. ++.TP ++.B phased-restart ++Restart server but phase out old workers while starting new workers one at a ++time. ++.TP ++.B start ++Start the server. ++.TP ++.B stats ++Show stats about the server. ++.TP ++.B status ++Show server status. ++.TP ++.B stop ++Stop server. ++.TP ++.B reload-worker-directory ++Reload the worker directory. ++.TP ++.B gc ++Start garbage collector. ++.TP ++.B gc-stats ++Show information about garbage collector. ++ ++.SH OPTIONS ++.PP ++The following options are available: ++.TP ++.BI "\-F, \-\-config\-file " PATH ++Load given path as a config file. ++.TP ++.BI "\-T, \-\-control\-token " TOKEN ++The \fITOKEN\fR to use as authentication for the control server. ++.TP ++.BI "\-C, \-\-control\-url " URL ++The bind \fIURL\fR to use for the control server and app. Use \fIauto\fR to ++use a temp unix server. This requires to use a \fB\-\-control\-token\fR, which ++needs to be given with every request to the control server (\fItoken=foo\fR). ++.TP ++.BI "\-p, \-\-pid " PID ++Define the TCP port to bind to. Use \fB\-b\fR for more advanced options. ++.TP ++.BI "\-P, \-\-pidfile " PATH ++Use the given path as PID file. ++.TP ++.B \-Q, \-\-quiet ++Don't display messages. ++.TP ++.BI "\-S, \-\-state " PATH ++Where the state file is. ++.TP ++.B \-H, \-\-help ++Show help. ++.TP ++.B \-V, \-\-version ++Print the version information. ++ ++.SH EXAMPLES ++Create a control server and use ++.BR pumactl (1) ++to interact with the control server to restart \fBpuma\fR. ++.RS ++.B puma --control-url tcp://127.0.0.1:9293 --control-token foo ++.br ++.B pumactl --control-url 'tcp://127.0.0.1:9293' --control-token foo restart ++.RE ++.PP ++ ++.SH "SEE ALSO" ++.PP ++.BR puma (1) ++.PP ++There is extensive documentation at <\%https://puma.io/puma/\%> and ++<\%https://github.com/puma/puma\%>. ++ ++.SH AUTHOR ++.PP ++This manual page was written by \fBDaniel Leidert\fP ++<\%dleidert@debian\.org\%>, for the Debian GNU/Linux system (but may be used by ++others). diff --cc debian/ruby-tests.rake index 0000000,0000000..67a5a4a new file mode 100644 --- /dev/null +++ b/debian/ruby-tests.rake @@@ -1,0 -1,0 +1,22 @@@ ++require 'gem2deb/rake/testtask' ++ ++Gem2Deb::Rake::TestTask.new do |t| ++ t.libs = ['test'] ++ t.test_files = FileList['test/**/*_test.rb'] + FileList['test/**/test_*.rb'] - FileList[ ++ 'test/test_integration_cluster.rb', ++ 'test/test_worker_gem_independence.rb', ++ 'test/test_rack_version_restriction.rb', ++ 'test/test_preserve_bundler_env.rb', ++ ] ++ t.verbose = true ++end.tap do |t| ++ exclude = %w[ ++ test_application_logs_are_flushed_on_write ++ test_hot_restart_does_not_drop_connections ++ test_logs_all_localhost_bindings ++ test_multiple_requests_waiting_on_less_busy_worker ++ test_term_not_accepts_new_connections ++ test_prune_bundler_with_multiple_workers ++ ] ++ t.options << ' ' << "-e'/" << exclude.join('|') << "/'" ++end diff --cc debian/rules index 0000000,0000000..da15652 new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -1,0 -1,0 +1,14 @@@ ++#!/usr/bin/make -f ++ ++export GEM2DEB_TEST_RUNNER = --check-dependencies ++export DH_RUBY = --gem-install ++export DH_RUBY_GEM_INSTALL_EXCLUDE = benchmarks/* docs/* win_gem_test/* tools/* bin/puma-wild ++export LANG = C.UTF-8 ++export LC_ALL = C.UTF-8 ++export TEST_CASE_TIMEOUT = 300 ++ ++%: ++ dh $@ --buildsystem=ruby --with ruby ++ ++override_dh_installchangelogs: ++ dh_installchangelogs History.md diff --cc debian/salsa-ci.yml index 0000000,0000000..33c3a64 new file mode 100644 --- /dev/null +++ b/debian/salsa-ci.yml @@@ -1,0 -1,0 +1,4 @@@ ++--- ++include: ++ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml ++ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml diff --cc debian/source/format index 0000000,0000000..163aaf8 new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/source/lintian-overrides index 0000000,0000000..362d49e new file mode 100644 --- /dev/null +++ b/debian/source/lintian-overrides @@@ -1,0 -1,0 +1,2 @@@ ++# no signed tarballs by upstream ++puma source: debian-watch-does-not-check-gpg-signature diff --cc debian/upstream/metadata index 0000000,0000000..cbe22a2 new file mode 100644 --- /dev/null +++ b/debian/upstream/metadata @@@ -1,0 -1,0 +1,7 @@@ ++--- ++Archive: GitHub ++Bug-Database: https://github.com/puma/puma/issues ++Bug-Submit: https://github.com/puma/puma/issues/new ++Changelog: https://github.com/puma/puma/releases ++Repository: https://github.com/puma/puma.git ++Repository-Browse: https://github.com/puma/puma diff --cc debian/watch index 0000000,0000000..b06856f new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -1,0 -1,0 +1,5 @@@ ++version=4 ++opts="searchmode=plain, \ ++ filenamemangle=s/.+\/v@ANY_VERSION@/@PACKAGE@-$1\.tar\.gz/" \ ++https://api.github.com/repos/puma/puma/tags \ ++https://api.github.com/repos/puma/puma/tarball/refs/tags/v@ANY_VERSION@