puma 3.8.2 → 3.12.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puma might be problematic. Click here for more details.

Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/History.md +153 -0
  3. data/README.md +140 -230
  4. data/docs/architecture.md +36 -0
  5. data/docs/images/puma-connection-flow-no-reactor.png +0 -0
  6. data/docs/images/puma-connection-flow.png +0 -0
  7. data/docs/images/puma-general-arch.png +0 -0
  8. data/docs/plugins.md +28 -0
  9. data/docs/restart.md +39 -0
  10. data/docs/signals.md +56 -3
  11. data/docs/systemd.md +112 -37
  12. data/ext/puma_http11/http11_parser.c +87 -85
  13. data/ext/puma_http11/http11_parser.rl +12 -10
  14. data/ext/puma_http11/mini_ssl.c +31 -5
  15. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +13 -16
  16. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +15 -2
  17. data/lib/puma/app/status.rb +8 -0
  18. data/lib/puma/binder.rb +22 -17
  19. data/lib/puma/cli.rb +22 -7
  20. data/lib/puma/client.rb +41 -2
  21. data/lib/puma/cluster.rb +28 -7
  22. data/lib/puma/commonlogger.rb +2 -0
  23. data/lib/puma/configuration.rb +21 -14
  24. data/lib/puma/const.rb +17 -2
  25. data/lib/puma/control_cli.rb +16 -14
  26. data/lib/puma/convenient.rb +2 -0
  27. data/lib/puma/daemon_ext.rb +2 -0
  28. data/lib/puma/delegation.rb +2 -0
  29. data/lib/puma/detect.rb +2 -0
  30. data/lib/puma/dsl.rb +46 -9
  31. data/lib/puma/events.rb +3 -2
  32. data/lib/puma/io_buffer.rb +2 -0
  33. data/lib/puma/java_io_buffer.rb +2 -0
  34. data/lib/puma/jruby_restart.rb +2 -1
  35. data/lib/puma/launcher.rb +42 -20
  36. data/lib/puma/minissl.rb +67 -28
  37. data/lib/puma/null_io.rb +2 -0
  38. data/lib/puma/plugin/tmp_restart.rb +0 -1
  39. data/lib/puma/plugin.rb +2 -0
  40. data/lib/puma/rack/builder.rb +2 -1
  41. data/lib/puma/reactor.rb +137 -0
  42. data/lib/puma/runner.rb +16 -3
  43. data/lib/puma/server.rb +145 -29
  44. data/lib/puma/single.rb +14 -3
  45. data/lib/puma/state_file.rb +2 -0
  46. data/lib/puma/tcp_logger.rb +2 -0
  47. data/lib/puma/thread_pool.rb +55 -6
  48. data/lib/puma/util.rb +1 -0
  49. data/lib/puma.rb +8 -0
  50. data/lib/rack/handler/puma.rb +13 -2
  51. data/tools/jungle/README.md +12 -2
  52. data/tools/jungle/init.d/README.md +2 -0
  53. data/tools/jungle/init.d/puma +2 -2
  54. data/tools/jungle/init.d/run-puma +1 -1
  55. data/tools/jungle/rc.d/README.md +74 -0
  56. data/tools/jungle/rc.d/puma +61 -0
  57. data/tools/jungle/rc.d/puma.conf +10 -0
  58. data/tools/trickletest.rb +1 -1
  59. metadata +21 -95
  60. data/.github/issue_template.md +0 -20
  61. data/Gemfile +0 -12
  62. data/Manifest.txt +0 -78
  63. data/Rakefile +0 -158
  64. data/Release.md +0 -9
  65. data/gemfiles/2.1-Gemfile +0 -12
  66. data/puma.gemspec +0 -52
  67. /data/{DEPLOYMENT.md → docs/deployment.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7b623ac72b5bea3525cc1c76bd48385e0eef0a17
4
- data.tar.gz: d5a2ec55bef9deb959e22faa6c077e7b323a7834
2
+ SHA256:
3
+ metadata.gz: da843833fd17b4bb2283f4c5161a1aa9367a6613455b8fbf31bae49393db4f80
4
+ data.tar.gz: bd9259270bd27f8421827c66e7f515044f51a7672c3dc755836d2a6b1240e84d
5
5
  SHA512:
6
- metadata.gz: 33c903e1d88e6552d8146a9fd1a829f8c6e8f15d131ec37854d29025952186a9cafda9204b89d12682f3905973bb8c6c0606948587e34b36b62d24c16ad5572b
7
- data.tar.gz: d4137246420030c7e1deb7988c7cf15f20b8543211d6c1ef6fae240092941aeeae60c53353d81d8aa7b62064410119f4e4a80d8427b16a5d6c98d4a6fe51b495
6
+ metadata.gz: 74d807145c97b7714c04ebf7858af57b1cdf00e87217b8a88428494718893f7670ffd27216c31164f57bd96984cd8e79f3c7f856d39c1b54c192965fe8ecdec8
7
+ data.tar.gz: e0616e41dceddc3b8aad69a5baab5b49007053d151bf2689de173495f3160900269bab94c539a47fe2bbdd2db1aab98a0df8177ece857a06bea6261c5d37a704
data/History.md CHANGED
@@ -1,3 +1,156 @@
1
+ ## Master
2
+
3
+ * x features
4
+
5
+ * x bugfixes
6
+
7
+
8
+ ## 4.3.3 and 3.12.4 / 2020-02-28
9
+ * Bugfixes
10
+ * Fix: Fixes a problem where we weren't splitting headers correctly on newlines (#2132)
11
+ * Security
12
+ * Fix: Prevent HTTP Response splitting via CR in early hints.
13
+
14
+ ## 4.3.2 and 3.12.3 / 2020-02-27
15
+
16
+ * Security
17
+ * Fix: Prevent HTTP Response splitting via CR/LF in header values. CVE-2020-5247.
18
+
19
+ ## 4.3.1 and 3.12.2 / 2019-12-05
20
+
21
+ * Security
22
+ * Fix: a poorly-behaved client could use keepalive requests to monopolize Puma's reactor and create a denial of service attack. CVE-2019-16770.
23
+
24
+ ## 3.12.1 / 2019-03-19
25
+
26
+ * 1 features
27
+ * Internal strings are frozen (#1649)
28
+ * 3 bugfixes
29
+ * Fix chunked ending check (#1607)
30
+ * Rack handler should use provided default host (#1700)
31
+ * Better support for detecting runtimes that support `fork` (#1630)
32
+
33
+ ## 3.12.0 / 2018-07-13
34
+
35
+ * 5 features:
36
+ * You can now specify which SSL ciphers the server should support, default is unchanged (#1478)
37
+ * The setting for Puma's `max_threads` is now in `Puma.stats` (#1604)
38
+ * Pool capacity is now in `Puma.stats` (#1579)
39
+ * Installs restricted to Ruby 2.2+ (#1506)
40
+ * `--control` is now deprecated in favor of `--control-url` (#1487)
41
+
42
+ * 2 bugfixes:
43
+ * Workers will no longer accept more web requests than they have capacity to process. This prevents an issue where one worker would accept lots of requests while starving other workers (#1563)
44
+ * In a test env puma now emits the stack on an exception (#1557)
45
+
46
+ ## 3.11.4 / 2018-04-12
47
+
48
+ * 2 features:
49
+ * Manage puma as a service using rc.d (#1529)
50
+ * Server stats are now available from a top level method (#1532)
51
+ * 5 bugfixes:
52
+ * Fix parsing CLI options (#1482)
53
+ * Order of stderr and stdout is made before redirecting to a log file (#1511)
54
+ * Init.d fix of `ps -p` to check if pid exists (#1545)
55
+ * Early hints bugfix (#1550)
56
+ * Purge interrupt queue when closing socket fails (#1553)
57
+
58
+ ## 3.11.3 / 2018-03-05
59
+
60
+ * 3 bugfixes:
61
+ * Add closed? to MiniSSL::Socket for use in reactor (#1510)
62
+ * Handle EOFError at the toplevel of the server threads (#1524) (#1507)
63
+ * Deal with zero sized bodies when using SSL (#1483)
64
+
65
+ ## 3.11.2 / 2018-01-19
66
+
67
+ * 1 bugfix:
68
+ * Deal with read\_nonblock returning nil early
69
+
70
+ ## 3.11.1 / 2018-01-18
71
+
72
+ * 1 bugfix:
73
+ * Handle read\_nonblock returning nil when the socket close (#1502)
74
+
75
+ ## 3.11.0 / 2017-11-20
76
+
77
+ * 2 features:
78
+ * HTTP 103 Early Hints (#1403)
79
+ * 421/451 status codes now have correct status messages attached (#1435)
80
+
81
+ * 9 bugfixes:
82
+ * Environment config files (/config/puma/<ENV>.rb) load correctly (#1340)
83
+ * Specify windows dependencies correctly (#1434, #1436)
84
+ * puma/events required in test helper (#1418)
85
+ * Correct control CLI's option help text (#1416)
86
+ * Remove a warning for unused variable in mini_ssl (#1409)
87
+ * Correct pumactl docs argument ordering (#1427)
88
+ * Fix an uninitialized variable warning in server.rb (#1430)
89
+ * Fix docs typo/error in Launcher init (#1429)
90
+ * Deal with leading spaces in RUBYOPT (#1455)
91
+
92
+ * 2 other:
93
+ * Add docs about internals (#1425, #1452)
94
+ * Tons of test fixes from @MSP-Greg (#1439, #1442, #1464)
95
+
96
+ ## 3.10.0 / 2017-08-17
97
+
98
+ * 3 features:
99
+ * The status server has a new /gc and /gc-status command. (#1384)
100
+ * The persistent and first data timeouts are now configurable (#1111)
101
+ * Implemented RFC 2324 (#1392)
102
+
103
+ * 12 bugfixes:
104
+ * Not really a Puma bug, but @NickolasVashchenko created a gem to workaround a Ruby bug that some users of Puma may be experiencing. See README for more. (#1347)
105
+ * Fix hangups with SSL and persistent connections. (#1334)
106
+ * Fix Rails double-binding to a port (#1383)
107
+ * Fix incorrect thread names (#1368)
108
+ * Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. (#1318)
109
+ * Fix compatibility with RUBYOPT="--enable-frozen-string-literal" (#1376)
110
+ * Fixed some compiler warnings (#1388)
111
+ * We actually run the integration tests in CI now (#1390)
112
+ * No longer shipping unnecessary directories in the gemfile (#1391)
113
+ * If RUBYOPT is nil, we no longer blow up on restart. (#1385)
114
+ * Correct response to SIGINT (#1377)
115
+ * Proper exit code returned when we receive a TERM signal (#1337)
116
+
117
+ * 3 refactors:
118
+ * Various test improvements from @grosser
119
+ * Rubocop (#1325)
120
+ * Hoe has been removed (#1395)
121
+
122
+ * 1 known issue:
123
+ * Socket activation doesn't work in JRuby. Their fault, not ours. (#1367)
124
+
125
+ ## 3.9.1 / 2017-06-03
126
+
127
+ * 2 bugfixes:
128
+ * Fixed compatibility with older Bundler versions (#1314)
129
+ * Some internal test/development cleanup (#1311, #1313)
130
+
131
+ ## 3.9.0 / 2017-06-01
132
+
133
+ * 2 features:
134
+ * The ENV is now reset to its original values when Puma restarts via USR1/USR2 (#1260) (MRI only, no JRuby support)
135
+ * Puma will no longer accept more clients than the maximum number of threads. (#1278)
136
+
137
+ * 9 bugfixes:
138
+ * Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR (#1306)
139
+ * Fix SSL/WebSocket compatibility (#1274)
140
+ * HTTP headers with empty values are no longer omitted from responses. (#1261)
141
+ * Fix a Rack env key which was set to nil. (#1259)
142
+ * peercert has been implemented for JRuby (#1248)
143
+ * Fix port settings when using rails s (#1277, #1290)
144
+ * Fix compat w/LibreSSL (#1285)
145
+ * Fix restarting Puma w/symlinks and a new Gemfile (#1282)
146
+ * Replace Dir.exists? with Dir.exist? (#1294)
147
+
148
+ * 1 known issue:
149
+ * A bug in MRI 2.2+ can result in IOError: stream closed. See #1206. This issue has existed since at least Puma 3.6, and probably further back.
150
+
151
+ * 1 refactor:
152
+ * Lots of test fixups from @grosser.
153
+
1
154
  ## 3.8.2 / 2017-03-14
2
155
 
3
156
  * 1 bugfix: