puma 5.0.4 → 5.1.0

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.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88dc01e1628aacb4ee705cc2ab0ecda793913c284737acf93c92674b45a8ec93
4
- data.tar.gz: bcfb46e65dc12b753628656ed7450643a6e6b2a451e2024c872275aa72f28422
3
+ metadata.gz: 924532a143ed6cf14fc8bdb83d981c96d726d9c8e7a12dcd89731de44de0df1d
4
+ data.tar.gz: ae9c1df1ac65e72b4304fb580e0ed7b75c4222411dae83a01623b11af2cba3ea
5
5
  SHA512:
6
- metadata.gz: 0b5815aa75f4b0f0af4e8e1a2ecb3f46d7fc9e9c6c9f340f5ee8b4c4f1def02d24736a685520699ed46946557a7b1355ff1df765fd7670fb8ecbbc5d4df5eb64
7
- data.tar.gz: f4294d0f1c811b4e230fa42162be39abab57c6c14d0c2b81a887893a997e8864b3afe9e06c32a2f5185166cfa680b6c1f66c473ef7f839c1430f41248f782793
6
+ metadata.gz: cdaa61be2208907f4c525273b48c621791f5858ad8ba007edfb7795012d6f8f01c66037d203803b7b0b67eaf735decf2fdb3195b67e67fc433b96249f672a175
7
+ data.tar.gz: d1034bd1c2af41740702ad4b905060600c47f5583e0debbdb9e482c320a1c5f84c4de49a4882b558d0b45f6284382100192aa9d286c122956c4f0a6fd56d5da9
data/History.md CHANGED
@@ -1,19 +1,29 @@
1
- ## 5.1.0
1
+ ## 5.1.0 / 2020-11-30
2
2
 
3
3
  * Features
4
- * Your feature goes here <Most recent on the top, like GitHub> (#Github Number)
5
- * Integrate with systemd's watchdog and notification features (#2438)
6
- * Adds max_fast_inline as a configuration option for the Server object (#2406)
4
+ * Phased restart availability is now always logged, even if it is not available.
5
+ * Prints the loaded configuration if the environment variable `PUMA_LOG_CONFIG` is present ([#2472])
6
+ * Integrate with systemd's watchdog and notification features ([#2438])
7
+ * Adds max_fast_inline as a configuration option for the Server object ([#2406])
8
+ * You can now fork workers from worker 0 using SIGURG w/o fork_worker enabled [#2449]
9
+ * Add option to bind to systemd activated sockets ([#2362])
10
+ * Add compile option to change the `QUERY_STRING` max length ([#2485])
7
11
 
8
12
  * Bugfixes
9
- * Your bugfix goes here <Most recent on the top, like GitHub> (#Github Number)
10
- * Ignore illegal (by Rack spec) response header (#2439)
11
- * Close idle connections immediately on shutdown (#2460)
13
+ * Fix JRuby handling in Puma::DSL#ssl_bind ([#2489])
14
+ * control_cli.rb - all normal output should be to @stdout ([#2487])
15
+ * Catch 'Error in reactor loop escaped: mode not supported for this object: r' ([#2477])
16
+ * Ignore Rails' reaper thread (and any thread marked forksafe) for warning ([#2475])
17
+ * Ignore illegal (by Rack spec) response header ([#2439])
18
+ * Close idle connections immediately on shutdown ([#2460])
19
+ * Fix some instances of phased restart errors related to the `json` gem ([#2473])
20
+ * Remove use of `json` gem to fix phased restart errors ([#2479])
21
+ * Fix grouping regexp of ILLEGAL_HEADER_KEY_REGEX ([#2495])
12
22
 
13
23
  ## 5.0.4 / 2020-10-27
14
24
 
15
25
  * Bugfixes
16
- * Pass preloaded application into new workers if available when using `preload_app` (#2461)
26
+ * Pass preloaded application into new workers if available when using `preload_app` ([#2461], [#2454])
17
27
 
18
28
  ## 5.0.3 / 2020-10-26
19
29
 
@@ -21,7 +31,7 @@
21
31
  * Add Client#io_ok?, check before Reactor#register ([#2432])
22
32
  * Fix hang on shutdown in refork ([#2442])
23
33
  * Fix `Bundler::GemNotFound` errors for `nio4r` gem during phased restarts ([#2427], [#2018])
24
- * Server run thread safety fix ([#2435])
34
+ * Server run thread safety fix ([#2435])
25
35
  * Fire `on_booted` after server starts ([#2431], [#2212])
26
36
  * Cleanup daemonization in rc.d script ([#2409])
27
37
 
@@ -33,11 +43,12 @@
33
43
  * client.rb - remove JRuby specific 'finish' code ([#2412])
34
44
  * Consolidate fast_write calls in Server, extract early_hints assembly ([#2405])
35
45
  * Remove upstart from docs ([#2408])
46
+ * Extract worker process into separate class ([#2374])
36
47
  * Consolidate option handling in Server, Server small refactors, doc changes ([#2389])
37
48
 
38
49
  ## 5.0.2 / 2020-09-28
39
50
 
40
- * Bugfixes
51
+ * Bugfixes
41
52
  * Reverted API changes to Server.
42
53
 
43
54
  ## 5.0.1 / 2020-09-28
@@ -76,7 +87,7 @@
76
87
  * min_threads now set by environment variables PUMA_MIN_THREADS and MIN_THREADS. ([#2143])
77
88
  * max_threads now set by environment variables PUMA_MAX_THREADS and MAX_THREADS. ([#2143])
78
89
  * max_threads default to 5 in MRI or 16 for all other interpreters. ([#2143])
79
- * preload by default if workers > 1 ([#2143])
90
+ * `preload_app!` is on by default if number of workers > 1 and set via `WEB_CONCURRENCY` ([#2143])
80
91
  * Puma::Plugin.workers_supported? has been removed. Use Puma.forkable? instead. ([#2143])
81
92
  * `tcp_mode` has been removed without replacement. ([#2169])
82
93
  * Daemonization has been removed without replacement. ([#2170])
@@ -134,6 +145,11 @@
134
145
  * Explicitly include ctype.h to fix compilation warning and build error on macOS with Xcode 12 ([#2304])
135
146
  * Don't require json at boot ([#2269])
136
147
 
148
+ ## 4.3.7 / 2020-11-30
149
+
150
+ * Bugfixes
151
+ * Backport set CONTENT_LENGTH for chunked requests (Originally: [#2287], backport: [#2496])
152
+
137
153
  ## 4.3.4/4.3.5 and 3.12.5/3.12.6 / 2020-05-22
138
154
 
139
155
  Each patchlevel release contains a separate security fix. We recommend simply upgrading to 4.3.5/3.12.6.
@@ -1651,6 +1667,23 @@ be added back in a future date when a java Puma::MiniSSL is added.
1651
1667
  * Bugfixes
1652
1668
  * Your bugfix goes here <Most recent on the top, like GitHub> (#Github Number)
1653
1669
 
1670
+ [#2472]:https://github.com/puma/puma/pull/2472 "PR by @ccverak, merged 2020-11-02"
1671
+ [#2438]:https://github.com/puma/puma/pull/2438 "PR by @ekohl, merged 2020-10-26"
1672
+ [#2406]:https://github.com/puma/puma/pull/2406 "PR by @fdel15, merged 2020-10-19"
1673
+ [#2449]:https://github.com/puma/puma/pull/2449 "PR by @MSP-Greg, merged 2020-10-28"
1674
+ [#2362]:https://github.com/puma/puma/pull/2362 "PR by @ekohl, merged 2020-11-10"
1675
+ [#2485]:https://github.com/puma/puma/pull/2485 "PR by @elct9620, merged 2020-11-18"
1676
+ [#2489]:https://github.com/puma/puma/pull/2489 "PR by @MSP-Greg, merged 2020-11-27"
1677
+ [#2487]:https://github.com/puma/puma/pull/2487 "PR by @MSP-Greg, merged 2020-11-17"
1678
+ [#2477]:https://github.com/puma/puma/pull/2477 "PR by @MSP-Greg, merged 2020-11-16"
1679
+ [#2475]:https://github.com/puma/puma/pull/2475 "PR by @nateberkopec, merged 2020-11-02"
1680
+ [#2439]:https://github.com/puma/puma/pull/2439 "PR by @kuei0221, merged 2020-10-26"
1681
+ [#2460]:https://github.com/puma/puma/pull/2460 "PR by @cjlarose, merged 2020-10-27"
1682
+ [#2473]:https://github.com/puma/puma/pull/2473 "PR by @cjlarose, merged 2020-11-01"
1683
+ [#2479]:https://github.com/puma/puma/pull/2479 "PR by @cjlarose, merged 2020-11-10"
1684
+ [#2495]:https://github.com/puma/puma/pull/2495 "PR by @JuanitoFatas, merged 2020-11-27"
1685
+ [#2461]:https://github.com/puma/puma/pull/2461 "PR by @cjlarose, merged 2020-10-27"
1686
+ [#2454]:https://github.com/puma/puma/issues/2454 "Issue by @majksner, closed 2020-10-27"
1654
1687
  [#2432]:https://github.com/puma/puma/pull/2432 "PR by @MSP-Greg, merged 2020-10-25"
1655
1688
  [#2442]:https://github.com/puma/puma/pull/2442 "PR by @wjordan, merged 2020-10-22"
1656
1689
  [#2427]:https://github.com/puma/puma/pull/2427 "PR by @cjlarose, merged 2020-10-20"
@@ -1666,22 +1699,7 @@ be added back in a future date when a java Puma::MiniSSL is added.
1666
1699
  [#2412]:https://github.com/puma/puma/pull/2412 "PR by @MSP-Greg, merged 2020-10-06"
1667
1700
  [#2405]:https://github.com/puma/puma/pull/2405 "PR by @MSP-Greg, merged 2020-10-05"
1668
1701
  [#2408]:https://github.com/puma/puma/pull/2408 "PR by @fliiiix, merged 2020-10-03"
1669
- [#2389]:https://github.com/puma/puma/pull/2389 "PR by @MSP-Greg, merged 2020-09-29"
1670
- [#2432]:https://github.com/puma/puma/pull/2432 "PR by @MSP-Greg, merged 2020-10-25"
1671
- [#2442]:https://github.com/puma/puma/pull/2442 "PR by @wjordan, merged 2020-10-22"
1672
- [#2427]:https://github.com/puma/puma/pull/2427 "PR by @cjlarose, merged 2020-10-20"
1673
- [#2018]:https://github.com/puma/puma/issues/2018 "Issue by @gingerlime, closed 2020-10-20"
1674
- [#2435]:https://github.com/puma/puma/pull/2435 "PR by @wjordan, merged 2020-10-20"
1675
- [#2431]:https://github.com/puma/puma/pull/2431 "PR by @wjordan, merged 2020-10-16"
1676
- [#2212]:https://github.com/puma/puma/issues/2212 "Issue by @junaruga, closed 2020-10-16"
1677
- [#2409]:https://github.com/puma/puma/pull/2409 "PR by @fliiiix, merged 2020-10-03"
1678
- [#2448]:https://github.com/puma/puma/pull/2448 "PR by @MSP-Greg, merged 2020-10-25"
1679
- [#2450]:https://github.com/puma/puma/pull/2450 "PR by @MSP-Greg, merged 2020-10-25"
1680
- [#2419]:https://github.com/puma/puma/pull/2419 "PR by @MSP-Greg, merged 2020-10-09"
1681
- [#2279]:https://github.com/puma/puma/pull/2279 "PR by @wjordan, merged 2020-10-06"
1682
- [#2412]:https://github.com/puma/puma/pull/2412 "PR by @MSP-Greg, merged 2020-10-06"
1683
- [#2405]:https://github.com/puma/puma/pull/2405 "PR by @MSP-Greg, merged 2020-10-05"
1684
- [#2408]:https://github.com/puma/puma/pull/2408 "PR by @fliiiix, merged 2020-10-03"
1702
+ [#2374]:https://github.com/puma/puma/pull/2374 "PR by @cjlarose, merged 2020-09-29"
1685
1703
  [#2389]:https://github.com/puma/puma/pull/2389 "PR by @MSP-Greg, merged 2020-09-29"
1686
1704
  [#2381]:https://github.com/puma/puma/pull/2381 "PR by @joergschray, merged 2020-09-24"
1687
1705
  [#2271]:https://github.com/puma/puma/pull/2271 "PR by @wjordan, merged 2020-09-24"
@@ -1708,10 +1726,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1708
1726
  [#2288]:https://github.com/puma/puma/pull/2288 "PR by @FTLam11, merged 2020-06-02"
1709
1727
  [#1487]:https://github.com/puma/puma/pull/1487 "PR by @jxa, merged 2018-05-09"
1710
1728
  [#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21"
1711
- [#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21"
1712
- [#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21"
1713
- [#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21"
1714
- [#2143]:https://github.com/puma/puma/pull/2143 "PR by @jalevin, merged 2020-04-21"
1715
1729
  [#2169]:https://github.com/puma/puma/pull/2169 "PR by @nateberkopec, merged 2020-03-10"
1716
1730
  [#2170]:https://github.com/puma/puma/pull/2170 "PR by @nateberkopec, merged 2020-03-10"
1717
1731
  [#2076]:https://github.com/puma/puma/pull/2076 "PR by @drews256, merged 2020-02-27"
@@ -1732,7 +1746,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1732
1746
  [#2198]:https://github.com/puma/puma/pull/2198 "PR by @eregon, merged 2020-03-24"
1733
1747
  [#2216]:https://github.com/puma/puma/pull/2216 "PR by @praboud-stripe, merged 2020-04-06"
1734
1748
  [#2122]:https://github.com/puma/puma/pull/2122 "PR by @wjordan, merged 2020-04-10"
1735
- [#2220]:https://github.com/puma/puma/pull/2220 "PR by @wjordan, merged 2020-04-14"
1736
1749
  [#2177]:https://github.com/puma/puma/issues/2177 "Issue by @GuiTeK, closed 2020-04-08"
1737
1750
  [#2221]:https://github.com/puma/puma/pull/2221 "PR by @wjordan, merged 2020-04-17"
1738
1751
  [#2233]:https://github.com/puma/puma/pull/2233 "PR by @ayufan, merged 2020-04-25"
@@ -1741,7 +1754,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1741
1754
  [#2267]:https://github.com/puma/puma/pull/2267 "PR by @wjordan, merged 2020-05-20"
1742
1755
  [#2287]:https://github.com/puma/puma/pull/2287 "PR by @eugeneius, merged 2020-05-31"
1743
1756
  [#2317]:https://github.com/puma/puma/pull/2317 "PR by @MSP-Greg, merged 2020-09-01"
1744
- [#2312]:https://github.com/puma/puma/pull/2312 "PR by @MSP-Greg, merged 2020-07-20"
1745
1757
  [#2319]:https://github.com/puma/puma/issues/2319 "Issue by @AlexWayfer, closed 2020-09-03"
1746
1758
  [#2326]:https://github.com/puma/puma/pull/2326 "PR by @rkistner, closed 2020-09-04"
1747
1759
  [#2299]:https://github.com/puma/puma/issues/2299 "Issue by @JohnPhillips31416, closed 2020-09-17"
@@ -1750,12 +1762,11 @@ be added back in a future date when a java Puma::MiniSSL is added.
1750
1762
  [#2111]:https://github.com/puma/puma/pull/2111 "PR by @wjordan, merged 2020-02-20"
1751
1763
  [#1980]:https://github.com/puma/puma/pull/1980 "PR by @nateberkopec, merged 2020-02-27"
1752
1764
  [#2189]:https://github.com/puma/puma/pull/2189 "PR by @jkowens, merged 2020-03-19"
1753
- [#2220]:https://github.com/puma/puma/pull/2220 "PR by @wjordan, merged 2020-04-14"
1754
1765
  [#2124]:https://github.com/puma/puma/pull/2124 "PR by @wjordan, merged 2020-04-14"
1755
1766
  [#2223]:https://github.com/puma/puma/pull/2223 "PR by @wjordan, merged 2020-04-20"
1756
1767
  [#2239]:https://github.com/puma/puma/pull/2239 "PR by @wjordan, merged 2020-05-15"
1757
1768
  [#2304]:https://github.com/puma/puma/issues/2304 "Issue by @mpeltomaa, closed 2020-09-05"
1758
- [#2269]:https://github.com/puma/puma/pull/2269 "PR by @MSP-Greg, merged 2020-08-31"
1769
+ [#2496]:https://github.com/puma/puma/pull/2496 "PR by @TheRusskiy, merged 2020-11-30"
1759
1770
  [#2132]:https://github.com/puma/puma/issues/2132 "Issue by @bmclean, closed 2020-02-28"
1760
1771
  [#2010]:https://github.com/puma/puma/pull/2010 "PR by @nateberkopec, merged 2019-10-07"
1761
1772
  [#2012]:https://github.com/puma/puma/pull/2012 "PR by @headius, merged 2019-10-07"
@@ -1783,8 +1794,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1783
1794
  [#1961]:https://github.com/puma/puma/pull/1961 "PR by @nateberkopec, merged 2019-09-11"
1784
1795
  [#1970]:https://github.com/puma/puma/pull/1970 "PR by @MSP-Greg, merged 2019-09-18"
1785
1796
  [#1946]:https://github.com/puma/puma/pull/1946 "PR by @nateberkopec, merged 2019-09-02"
1786
- [#1941]:https://github.com/puma/puma/pull/1941 "PR by @MSP-Greg, merged 2019-09-02"
1787
- [#1908]:https://github.com/puma/puma/pull/1908 "PR by @MSP-Greg, merged 2019-08-23"
1788
1797
  [#1831]:https://github.com/puma/puma/pull/1831 "PR by @spk, merged 2019-07-27"
1789
1798
  [#1816]:https://github.com/puma/puma/pull/1816 "PR by @ylecuyer, merged 2019-08-01"
1790
1799
  [#1844]:https://github.com/puma/puma/pull/1844 "PR by @ylecuyer, merged 2019-08-01"
@@ -1808,7 +1817,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1808
1817
  [#1872]:https://github.com/puma/puma/pull/1872 "PR by @MSP-Greg, merged 2019-07-30"
1809
1818
  [#1833]:https://github.com/puma/puma/issues/1833 "Issue by @julik, closed 2019-07-09"
1810
1819
  [#1888]:https://github.com/puma/puma/pull/1888 "PR by @ClikeX, merged 2019-08-06"
1811
- [#1842]:https://github.com/puma/puma/issues/1842 "Issue by @nateberkopec, closed 2019-09-18"
1812
1820
  [#1829]:https://github.com/puma/puma/pull/1829 "PR by @Fudoshiki, merged 2019-07-09"
1813
1821
  [#1832]:https://github.com/puma/puma/pull/1832 "PR by @MSP-Greg, merged 2019-07-08"
1814
1822
  [#1827]:https://github.com/puma/puma/pull/1827 "PR by @amrrbakry, merged 2019-06-27"
@@ -1844,7 +1852,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1844
1852
  [#1604]:https://github.com/puma/puma/pull/1604 "PR by @schneems, merged 2018-07-02"
1845
1853
  [#1579]:https://github.com/puma/puma/pull/1579 "PR by @schneems, merged 2018-06-14"
1846
1854
  [#1506]:https://github.com/puma/puma/pull/1506 "PR by @dekellum, merged 2018-05-09"
1847
- [#1487]:https://github.com/puma/puma/pull/1487 "PR by @jxa, merged 2018-05-09"
1848
1855
  [#1563]:https://github.com/puma/puma/pull/1563 "PR by @dannyfallon, merged 2018-05-01"
1849
1856
  [#1557]:https://github.com/puma/puma/pull/1557 "PR by @swrobel, merged 2018-05-09"
1850
1857
  [#1529]:https://github.com/puma/puma/pull/1529 "PR by @desnudopenguino, merged 2018-03-20"
@@ -1940,11 +1947,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1940
1947
  [#1138]:https://github.com/puma/puma/pull/1138 "PR by @steakknife, merged 2016-12-13"
1941
1948
  [#1118]:https://github.com/puma/puma/pull/1118 "PR by @hiroara, merged 2016-11-20"
1942
1949
  [#1075]:https://github.com/puma/puma/issues/1075 "Issue by @pvalena, closed 2016-09-06"
1943
- [#1118]:https://github.com/puma/puma/pull/1118 "PR by @hiroara, merged 2016-11-20"
1944
- [#1036]:https://github.com/puma/puma/issues/1036 "Issue by @matobinder, closed 2016-08-03"
1945
- [#1120]:https://github.com/puma/puma/pull/1120 "PR by @prathamesh-sonpatki, merged 2016-11-21"
1946
- [#1002]:https://github.com/puma/puma/issues/1002 "Issue by @mattyb, closed 2016-07-26"
1947
- [#1089]:https://github.com/puma/puma/issues/1089 "Issue by @AdamBialas, closed 2016-09-17"
1948
1950
  [#932]:https://github.com/puma/puma/issues/932 "Issue by @everplays, closed 2016-07-24"
1949
1951
  [#519]:https://github.com/puma/puma/issues/519 "Issue by @tmornini, closed 2016-07-25"
1950
1952
  [#828]:https://github.com/puma/puma/issues/828 "Issue by @Zapotek, closed 2016-07-24"
@@ -1955,7 +1957,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1955
1957
  [#925]:https://github.com/puma/puma/issues/925 "Issue by @lokenmakwana, closed 2016-07-24"
1956
1958
  [#911]:https://github.com/puma/puma/issues/911 "Issue by @veganstraightedge, closed 2016-07-24"
1957
1959
  [#620]:https://github.com/puma/puma/issues/620 "Issue by @javanthropus, closed 2016-07-25"
1958
- [#1027]:https://github.com/puma/puma/issues/1027 "Issue by @rosenfeld, closed 2016-07-24"
1959
1960
  [#778]:https://github.com/puma/puma/issues/778 "Issue by @niedhui, closed 2016-07-24"
1960
1961
  [#1021]:https://github.com/puma/puma/pull/1021 "PR by @sarahzrf, merged 2016-07-20"
1961
1962
  [#1022]:https://github.com/puma/puma/issues/1022 "Issue by @AKovtunov, closed 2017-08-16"
@@ -1983,7 +1984,6 @@ be added back in a future date when a java Puma::MiniSSL is added.
1983
1984
  [#788]:https://github.com/puma/puma/issues/788 "Issue by @herregroen, closed 2016-04-07"
1984
1985
  [#894]:https://github.com/puma/puma/issues/894 "Issue by @rafbm, closed 2016-04-07"
1985
1986
  [#937]:https://github.com/puma/puma/issues/937 "Issue by @huangxiangdan, closed 2016-04-07"
1986
- [#840]:https://github.com/puma/puma/issues/840 "Issue by @maxkwallace, closed 2016-04-07"
1987
1987
  [#945]:https://github.com/puma/puma/pull/945 "PR by @dekellum, merged 2016-04-07"
1988
1988
  [#946]:https://github.com/puma/puma/pull/946 "PR by @vipulnsward, merged 2016-04-07"
1989
1989
  [#947]:https://github.com/puma/puma/pull/947 "PR by @vipulnsward, merged 2016-04-07"
data/README.md CHANGED
@@ -64,20 +64,30 @@ You can run your Sinatra application with Puma from the command line like this:
64
64
  $ ruby app.rb -s Puma
65
65
  ```
66
66
 
67
- Or you can configure your Sinatra application to always use Puma:
67
+ In order to actually configure Puma using a config file, like `puma.rb`, however, you need to use the `puma` executable. To do this, you must add a rackup file to your Sinatra app:
68
68
 
69
69
  ```ruby
70
- require 'sinatra'
71
- configure { set :server, :puma }
70
+ # config.ru
71
+ require './app'
72
+ run Sinatra::Application
73
+ ```
74
+
75
+ You can then start your application using:
76
+
77
+ ```
78
+ $ bundle exec puma
72
79
  ```
73
80
 
74
81
  ## Configuration
75
82
 
76
- Puma provides numerous options. Consult `puma -h` (or `puma --help`) for a full list of CLI options, or see [dsl.rb](https://github.com/puma/puma/blob/master/lib/puma/dsl.rb).
83
+ Puma provides numerous options. Consult `puma -h` (or `puma --help`) for a full list of CLI options, or see `Puma::DSL` or [dsl.rb](https://github.com/puma/puma/blob/master/lib/puma/dsl.rb).
77
84
 
78
85
  You can also find several configuration examples as part of the
79
86
  [test](https://github.com/puma/puma/tree/master/test/config) suite.
80
87
 
88
+ For debugging purposes, you can set the environment variable `PUMA_LOG_CONFIG` with a value
89
+ and the loaded configuration will be printed as part of the boot process.
90
+
81
91
  ### Thread Pool
82
92
 
83
93
  Puma uses a thread pool. You can set the minimum and maximum number of threads that are available in the pool with the `-t` (or `--threads`) flag:
@@ -136,12 +146,12 @@ before_fork do
136
146
  end
137
147
  ```
138
148
 
139
- Preloading can’t be used with phased restart, since phased restart kills and restarts workers one-by-one, and preload_app copies the code of master into the workers.
149
+ Preloading can’t be used with phased restart, since phased restart kills and restarts workers one-by-one, and `preload_app!` copies the code of master into the workers.
140
150
 
141
151
  ### Error handling
142
152
 
143
153
  If puma encounters an error outside of the context of your application, it will respond with a 500 and a simple
144
- textual error message (see `lowlevel_error` in [this file](https://github.com/puma/puma/blob/master/lib/puma/server.rb)).
154
+ textual error message (see `Puma::Server#lowlevel_error` or [server.rb](https://github.com/puma/puma/blob/master/lib/puma/server.rb)).
145
155
  You can specify custom behavior for this scenario. For example, you can report the error to your third-party
146
156
  error-tracking service (in this example, [rollbar](https://rollbar.com)):
147
157
 
@@ -194,7 +204,7 @@ $ puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert&ssl_cipher_fil
194
204
  $ puma -b 'ssl://127.0.0.1:9292?keystore=path_to_keystore&keystore-pass=keystore_password&ssl_cipher_list=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA'
195
205
  ```
196
206
 
197
- See https://www.openssl.org/docs/man1.0.2/apps/ciphers.html for cipher filter format and full list of cipher suites.
207
+ See https://www.openssl.org/docs/man1.1.1/man1/ciphers.html for cipher filter format and full list of cipher suites.
198
208
 
199
209
  Disable TLS v1 with the `no_tlsv1` option:
200
210
 
@@ -210,7 +220,7 @@ Puma has a built-in status and control app that can be used to query and control
210
220
  $ puma --control-url tcp://127.0.0.1:9293 --control-token foo
211
221
  ```
212
222
 
213
- Puma will start the control server on localhost port 9293. All requests to the control server will need to include control token (in this case, `token=foo`) as a query parameter. This allows for simple authentication. Check out [status.rb](https://github.com/puma/puma/blob/master/lib/puma/app/status.rb) to see what the status app has available.
223
+ Puma will start the control server on localhost port 9293. All requests to the control server will need to include control token (in this case, `token=foo`) as a query parameter. This allows for simple authentication. Check out `Puma::App::Status` or [status.rb](https://github.com/puma/puma/blob/master/lib/puma/app/status.rb) to see what the status app has available.
214
224
 
215
225
  You can also interact with the control server via `pumactl`. This command will restart Puma:
216
226
 
@@ -236,19 +246,19 @@ If you want to prevent Puma from looking for a configuration file in those locat
236
246
  $ puma -C "-"
237
247
  ```
238
248
 
239
- The other side-effects of setting the environment are whether to show stack traces (in `development` or `test`), and setting RACK_ENV may potentially affect middleware looking for this value to change their behavior. The default puma RACK_ENV value is `development`. You can see all config default values [here](https://github.com/puma/puma/blob/12d1706ddc71b89ed2ee26275e31c788e94ff541/lib/puma/configuration.rb#L170).
249
+ The other side-effects of setting the environment are whether to show stack traces (in `development` or `test`), and setting RACK_ENV may potentially affect middleware looking for this value to change their behavior. The default puma RACK_ENV value is `development`. You can see all config default values in `Puma::Configuration#puma_default_options` or [configuration.rb](https://github.com/puma/puma/blob/61c6213fbab/lib/puma/configuration.rb#L182-L204).
240
250
 
241
- Check out [dsl.rb](https://github.com/puma/puma/blob/master/lib/puma/dsl.rb) to see all available options.
251
+ Check out `Puma::DSL` or [dsl.rb](https://github.com/puma/puma/blob/master/lib/puma/dsl.rb) to see all available options.
242
252
 
243
253
  ## Restart
244
254
 
245
255
  Puma includes the ability to restart itself. When available (MRI, Rubinius, JRuby), Puma performs a "hot restart". This is the same functionality available in *Unicorn* and *NGINX* which keep the server sockets open between restarts. This makes sure that no pending requests are dropped while the restart is taking place.
246
256
 
247
- For more, see the [restart documentation](https://github.com/puma/puma/blob/master/docs/restart.md).
257
+ For more, see the [Restart documentation](docs/restart.md).
248
258
 
249
259
  ## Signals
250
260
 
251
- Puma responds to several signals. A detailed guide to using UNIX signals with Puma can be found in the [signals documentation](https://github.com/puma/puma/blob/master/docs/signals.md).
261
+ Puma responds to several signals. A detailed guide to using UNIX signals with Puma can be found in the [Signals documentation](docs/signals.md).
252
262
 
253
263
  ## Platform Constraints
254
264
 
@@ -278,8 +288,8 @@ It is common to use process monitors with Puma. Modern process monitors like sys
278
288
  provide continuous monitoring and restarts for increased
279
289
  reliability in production environments:
280
290
 
281
- * [docs/jungle](https://github.com/puma/puma/tree/master/docs/jungle) for rc.d
282
- * [docs/systemd](https://github.com/puma/puma/blob/master/docs/systemd.md)
291
+ * [rc.d](docs/jungle/rc.d/README.md)
292
+ * [systemd](docs/systemd.md)
283
293
 
284
294
  ## Community Extensions
285
295
 
@@ -295,9 +305,7 @@ reliability in production environments:
295
305
 
296
306
  ## Contributing
297
307
 
298
- Find details for contributing in the [contribution guide].
299
-
300
- [contribution guide]: https://github.com/puma/puma/blob/master/CONTRIBUTING.md
308
+ Find details for contributing in the [contribution guide](CONTRIBUTING.md).
301
309
 
302
310
  ## License
303
311
 
@@ -0,0 +1,19 @@
1
+ # Compile Options
2
+
3
+ There provide some `cflags` to change Puma's default configuration for C.
4
+
5
+ ## Query String
6
+
7
+ By default, the max length of `QUERY_STRING` is `1024 * 10`. But you may want to adjust it to allow accept large queries in the GET requests.
8
+
9
+ For manual install
10
+
11
+ ```
12
+ gem install puma -- --with-cflags="-D PUMA_QUERY_STRING_MAX_LENGTH=64000"
13
+ ```
14
+
15
+ For bundler config
16
+
17
+ ```
18
+ bundle config build.puma --with-cflags="-D PUMA_QUERY_STRING_MAX_LENGTH=64000"
19
+ ```
@@ -24,6 +24,8 @@ Similar to the `preload_app!` option, the `fork_worker` option allows your appli
24
24
 
25
25
  ### Limitations
26
26
 
27
+ - Not compatible with the `preload_app!` option
28
+
27
29
  - This mode is still very experimental so there may be bugs or edge-cases, particularly around expected behavior of existing hooks. Please open a [bug report](https://github.com/puma/puma/issues/new?template=bug_report.md) if you encounter any issues.
28
30
 
29
31
  - In order to fork new workers cleanly, worker 0 shuts down its server and stops serving requests so there are no open file descriptors or other kinds of shared global state between processes, and to maximize copy-on-write efficiency across the newly-forked workers. This may temporarily reduce total capacity of the cluster during a phased restart / refork.
@@ -24,8 +24,15 @@ After=network.target
24
24
  # Requires=puma.socket
25
25
 
26
26
  [Service]
27
- # Foreground process (do not use --daemon in ExecStart or config.rb)
28
- Type=simple
27
+ # Puma supports systemd's `Type=notify` and watchdog service
28
+ # monitoring, if the [sd_notify](https://github.com/agis/ruby-sdnotify) gem is installed,
29
+ # as of Puma 5.1 or later.
30
+ # On earlier versions of Puma or JRuby, change this to `Type=simple` and remove
31
+ # the `WatchdogSec` line.
32
+ Type=notify
33
+
34
+ # If your Puma process locks up, systemd's watchdog will restart it within seconds.
35
+ WatchdogSec=10
29
36
 
30
37
  # Preferably configure a non-privileged user
31
38
  # User=
@@ -122,6 +129,21 @@ Puma will detect the release path socket as different than the one provided by
122
129
  systemd and attempt to bind it again, resulting in the exception
123
130
  `There is already a server bound to:`.
124
131
 
132
+ ### Binding
133
+
134
+ By default you need to configure puma to have binds matching with all
135
+ ListenStream statements. Any mismatched systemd ListenStreams will be closed by
136
+ puma.
137
+
138
+ To automatically bind to all activated sockets, the option
139
+ `--bind-to-activated-sockets` can be used. This matches the config DSL
140
+ `bind_to_activated_sockets` statement. This will cause puma to create a bind
141
+ automatically for any activated socket. When systemd socket activation is not
142
+ enabled, this option does nothing.
143
+
144
+ This also accepts an optional argument `only` (DSL: `'only'`) to discard any
145
+ binds that's not socket activated.
146
+
125
147
  ## Usage
126
148
 
127
149
  Without socket activation, use `systemctl` as root (e.g. via `sudo`) as
@@ -17,12 +17,11 @@ unless ENV["DISABLE_SSL"]
17
17
  have_header "openssl/bio.h"
18
18
 
19
19
  # below is yes for 1.0.2 & later
20
- have_func "DTLS_method" , "openssl/ssl.h"
20
+ have_func "DTLS_method" , "openssl/ssl.h"
21
21
 
22
- # below are yes for 1.1.0 & later, may need to check func rather than macro
23
- # with versions after 1.1.1
24
- have_func "TLS_server_method" , "openssl/ssl.h"
25
- have_macro "SSL_CTX_set_min_proto_version", "openssl/ssl.h"
22
+ # below are yes for 1.1.0 & later
23
+ have_func "TLS_server_method" , "openssl/ssl.h"
24
+ have_func "SSL_CTX_set_min_proto_version(NULL, 0)", "openssl/ssl.h"
26
25
  end
27
26
  end
28
27
 
@@ -33,12 +33,12 @@ static void snake_upcase_char(char *c)
33
33
  /** Machine **/
34
34
 
35
35
 
36
- #line 79 "ext/puma_http11/http11_parser.rl"
36
+ #line 81 "ext/puma_http11/http11_parser.rl"
37
37
 
38
38
 
39
39
  /** Data **/
40
40
 
41
- #line 40 "ext/puma_http11/http11_parser.c"
41
+ #line 42 "ext/puma_http11/http11_parser.c"
42
42
  static const int puma_parser_start = 1;
43
43
  static const int puma_parser_first_final = 46;
44
44
  static const int puma_parser_error = 0;
@@ -46,17 +46,17 @@ static const int puma_parser_error = 0;
46
46
  static const int puma_parser_en_main = 1;
47
47
 
48
48
 
49
- #line 83 "ext/puma_http11/http11_parser.rl"
49
+ #line 85 "ext/puma_http11/http11_parser.rl"
50
50
 
51
51
  int puma_parser_init(puma_parser *parser) {
52
52
  int cs = 0;
53
53
 
54
- #line 53 "ext/puma_http11/http11_parser.c"
54
+ #line 55 "ext/puma_http11/http11_parser.c"
55
55
  {
56
56
  cs = puma_parser_start;
57
57
  }
58
58
 
59
- #line 87 "ext/puma_http11/http11_parser.rl"
59
+ #line 89 "ext/puma_http11/http11_parser.rl"
60
60
  parser->cs = cs;
61
61
  parser->body_start = 0;
62
62
  parser->content_len = 0;
@@ -85,7 +85,7 @@ size_t puma_parser_execute(puma_parser *parser, const char *buffer, size_t len,
85
85
  assert((size_t) (pe - p) == len - off && "pointers aren't same distance");
86
86
 
87
87
 
88
- #line 87 "ext/puma_http11/http11_parser.c"
88
+ #line 89 "ext/puma_http11/http11_parser.c"
89
89
  {
90
90
  if ( p == pe )
91
91
  goto _test_eof;
@@ -109,14 +109,14 @@ st0:
109
109
  cs = 0;
110
110
  goto _out;
111
111
  tr0:
112
- #line 35 "ext/puma_http11/http11_parser.rl"
112
+ #line 37 "ext/puma_http11/http11_parser.rl"
113
113
  { MARK(mark, p); }
114
114
  goto st2;
115
115
  st2:
116
116
  if ( ++p == pe )
117
117
  goto _test_eof2;
118
118
  case 2:
119
- #line 118 "ext/puma_http11/http11_parser.c"
119
+ #line 120 "ext/puma_http11/http11_parser.c"
120
120
  switch( (*p) ) {
121
121
  case 32: goto tr2;
122
122
  case 36: goto st27;
@@ -132,7 +132,7 @@ case 2:
132
132
  goto st27;
133
133
  goto st0;
134
134
  tr2:
135
- #line 48 "ext/puma_http11/http11_parser.rl"
135
+ #line 50 "ext/puma_http11/http11_parser.rl"
136
136
  {
137
137
  parser->request_method(parser, PTR_TO(mark), LEN(mark, p));
138
138
  }
@@ -141,7 +141,7 @@ st3:
141
141
  if ( ++p == pe )
142
142
  goto _test_eof3;
143
143
  case 3:
144
- #line 143 "ext/puma_http11/http11_parser.c"
144
+ #line 145 "ext/puma_http11/http11_parser.c"
145
145
  switch( (*p) ) {
146
146
  case 42: goto tr4;
147
147
  case 43: goto tr5;
@@ -158,67 +158,67 @@ case 3:
158
158
  goto tr5;
159
159
  goto st0;
160
160
  tr4:
161
- #line 35 "ext/puma_http11/http11_parser.rl"
161
+ #line 37 "ext/puma_http11/http11_parser.rl"
162
162
  { MARK(mark, p); }
163
163
  goto st4;
164
164
  st4:
165
165
  if ( ++p == pe )
166
166
  goto _test_eof4;
167
167
  case 4:
168
- #line 167 "ext/puma_http11/http11_parser.c"
168
+ #line 169 "ext/puma_http11/http11_parser.c"
169
169
  switch( (*p) ) {
170
170
  case 32: goto tr8;
171
171
  case 35: goto tr9;
172
172
  }
173
173
  goto st0;
174
174
  tr8:
175
- #line 51 "ext/puma_http11/http11_parser.rl"
175
+ #line 53 "ext/puma_http11/http11_parser.rl"
176
176
  {
177
177
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
178
178
  }
179
179
  goto st5;
180
180
  tr31:
181
- #line 35 "ext/puma_http11/http11_parser.rl"
181
+ #line 37 "ext/puma_http11/http11_parser.rl"
182
182
  { MARK(mark, p); }
183
- #line 54 "ext/puma_http11/http11_parser.rl"
183
+ #line 56 "ext/puma_http11/http11_parser.rl"
184
184
  {
185
185
  parser->fragment(parser, PTR_TO(mark), LEN(mark, p));
186
186
  }
187
187
  goto st5;
188
188
  tr33:
189
- #line 54 "ext/puma_http11/http11_parser.rl"
189
+ #line 56 "ext/puma_http11/http11_parser.rl"
190
190
  {
191
191
  parser->fragment(parser, PTR_TO(mark), LEN(mark, p));
192
192
  }
193
193
  goto st5;
194
194
  tr37:
195
- #line 67 "ext/puma_http11/http11_parser.rl"
195
+ #line 69 "ext/puma_http11/http11_parser.rl"
196
196
  {
197
197
  parser->request_path(parser, PTR_TO(mark), LEN(mark,p));
198
198
  }
199
- #line 51 "ext/puma_http11/http11_parser.rl"
199
+ #line 53 "ext/puma_http11/http11_parser.rl"
200
200
  {
201
201
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
202
202
  }
203
203
  goto st5;
204
204
  tr41:
205
- #line 58 "ext/puma_http11/http11_parser.rl"
205
+ #line 60 "ext/puma_http11/http11_parser.rl"
206
206
  { MARK(query_start, p); }
207
- #line 59 "ext/puma_http11/http11_parser.rl"
207
+ #line 61 "ext/puma_http11/http11_parser.rl"
208
208
  {
209
209
  parser->query_string(parser, PTR_TO(query_start), LEN(query_start, p));
210
210
  }
211
- #line 51 "ext/puma_http11/http11_parser.rl"
211
+ #line 53 "ext/puma_http11/http11_parser.rl"
212
212
  {
213
213
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
214
214
  }
215
215
  goto st5;
216
216
  tr44:
217
- #line 59 "ext/puma_http11/http11_parser.rl"
217
+ #line 61 "ext/puma_http11/http11_parser.rl"
218
218
  {
219
219
  parser->query_string(parser, PTR_TO(query_start), LEN(query_start, p));
220
220
  }
221
- #line 51 "ext/puma_http11/http11_parser.rl"
221
+ #line 53 "ext/puma_http11/http11_parser.rl"
222
222
  {
223
223
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
224
224
  }
@@ -227,19 +227,19 @@ st5:
227
227
  if ( ++p == pe )
228
228
  goto _test_eof5;
229
229
  case 5:
230
- #line 229 "ext/puma_http11/http11_parser.c"
230
+ #line 231 "ext/puma_http11/http11_parser.c"
231
231
  if ( (*p) == 72 )
232
232
  goto tr10;
233
233
  goto st0;
234
234
  tr10:
235
- #line 35 "ext/puma_http11/http11_parser.rl"
235
+ #line 37 "ext/puma_http11/http11_parser.rl"
236
236
  { MARK(mark, p); }
237
237
  goto st6;
238
238
  st6:
239
239
  if ( ++p == pe )
240
240
  goto _test_eof6;
241
241
  case 6:
242
- #line 241 "ext/puma_http11/http11_parser.c"
242
+ #line 243 "ext/puma_http11/http11_parser.c"
243
243
  if ( (*p) == 84 )
244
244
  goto st7;
245
245
  goto st0;
@@ -297,21 +297,21 @@ case 13:
297
297
  goto st13;
298
298
  goto st0;
299
299
  tr18:
300
- #line 63 "ext/puma_http11/http11_parser.rl"
300
+ #line 65 "ext/puma_http11/http11_parser.rl"
301
301
  {
302
302
  parser->http_version(parser, PTR_TO(mark), LEN(mark, p));
303
303
  }
304
304
  goto st14;
305
305
  tr26:
306
- #line 44 "ext/puma_http11/http11_parser.rl"
306
+ #line 46 "ext/puma_http11/http11_parser.rl"
307
307
  { MARK(mark, p); }
308
- #line 45 "ext/puma_http11/http11_parser.rl"
308
+ #line 47 "ext/puma_http11/http11_parser.rl"
309
309
  {
310
310
  parser->http_field(parser, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
311
311
  }
312
312
  goto st14;
313
313
  tr29:
314
- #line 45 "ext/puma_http11/http11_parser.rl"
314
+ #line 47 "ext/puma_http11/http11_parser.rl"
315
315
  {
316
316
  parser->http_field(parser, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
317
317
  }
@@ -320,7 +320,7 @@ st14:
320
320
  if ( ++p == pe )
321
321
  goto _test_eof14;
322
322
  case 14:
323
- #line 322 "ext/puma_http11/http11_parser.c"
323
+ #line 324 "ext/puma_http11/http11_parser.c"
324
324
  if ( (*p) == 10 )
325
325
  goto st15;
326
326
  goto st0;
@@ -360,7 +360,7 @@ case 16:
360
360
  goto tr22;
361
361
  goto st0;
362
362
  tr22:
363
- #line 71 "ext/puma_http11/http11_parser.rl"
363
+ #line 73 "ext/puma_http11/http11_parser.rl"
364
364
  {
365
365
  parser->body_start = p - buffer + 1;
366
366
  parser->header_done(parser, p + 1, pe - p - 1);
@@ -371,23 +371,23 @@ st46:
371
371
  if ( ++p == pe )
372
372
  goto _test_eof46;
373
373
  case 46:
374
- #line 373 "ext/puma_http11/http11_parser.c"
374
+ #line 375 "ext/puma_http11/http11_parser.c"
375
375
  goto st0;
376
376
  tr21:
377
- #line 38 "ext/puma_http11/http11_parser.rl"
377
+ #line 40 "ext/puma_http11/http11_parser.rl"
378
378
  { MARK(field_start, p); }
379
- #line 39 "ext/puma_http11/http11_parser.rl"
379
+ #line 41 "ext/puma_http11/http11_parser.rl"
380
380
  { snake_upcase_char((char *)p); }
381
381
  goto st17;
382
382
  tr23:
383
- #line 39 "ext/puma_http11/http11_parser.rl"
383
+ #line 41 "ext/puma_http11/http11_parser.rl"
384
384
  { snake_upcase_char((char *)p); }
385
385
  goto st17;
386
386
  st17:
387
387
  if ( ++p == pe )
388
388
  goto _test_eof17;
389
389
  case 17:
390
- #line 389 "ext/puma_http11/http11_parser.c"
390
+ #line 391 "ext/puma_http11/http11_parser.c"
391
391
  switch( (*p) ) {
392
392
  case 33: goto tr23;
393
393
  case 58: goto tr24;
@@ -413,71 +413,71 @@ case 17:
413
413
  goto tr23;
414
414
  goto st0;
415
415
  tr24:
416
- #line 40 "ext/puma_http11/http11_parser.rl"
416
+ #line 42 "ext/puma_http11/http11_parser.rl"
417
417
  {
418
418
  parser->field_len = LEN(field_start, p);
419
419
  }
420
420
  goto st18;
421
421
  tr27:
422
- #line 44 "ext/puma_http11/http11_parser.rl"
422
+ #line 46 "ext/puma_http11/http11_parser.rl"
423
423
  { MARK(mark, p); }
424
424
  goto st18;
425
425
  st18:
426
426
  if ( ++p == pe )
427
427
  goto _test_eof18;
428
428
  case 18:
429
- #line 428 "ext/puma_http11/http11_parser.c"
429
+ #line 430 "ext/puma_http11/http11_parser.c"
430
430
  switch( (*p) ) {
431
431
  case 13: goto tr26;
432
432
  case 32: goto tr27;
433
433
  }
434
434
  goto tr25;
435
435
  tr25:
436
- #line 44 "ext/puma_http11/http11_parser.rl"
436
+ #line 46 "ext/puma_http11/http11_parser.rl"
437
437
  { MARK(mark, p); }
438
438
  goto st19;
439
439
  st19:
440
440
  if ( ++p == pe )
441
441
  goto _test_eof19;
442
442
  case 19:
443
- #line 442 "ext/puma_http11/http11_parser.c"
443
+ #line 444 "ext/puma_http11/http11_parser.c"
444
444
  if ( (*p) == 13 )
445
445
  goto tr29;
446
446
  goto st19;
447
447
  tr9:
448
- #line 51 "ext/puma_http11/http11_parser.rl"
448
+ #line 53 "ext/puma_http11/http11_parser.rl"
449
449
  {
450
450
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
451
451
  }
452
452
  goto st20;
453
453
  tr38:
454
- #line 67 "ext/puma_http11/http11_parser.rl"
454
+ #line 69 "ext/puma_http11/http11_parser.rl"
455
455
  {
456
456
  parser->request_path(parser, PTR_TO(mark), LEN(mark,p));
457
457
  }
458
- #line 51 "ext/puma_http11/http11_parser.rl"
458
+ #line 53 "ext/puma_http11/http11_parser.rl"
459
459
  {
460
460
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
461
461
  }
462
462
  goto st20;
463
463
  tr42:
464
- #line 58 "ext/puma_http11/http11_parser.rl"
464
+ #line 60 "ext/puma_http11/http11_parser.rl"
465
465
  { MARK(query_start, p); }
466
- #line 59 "ext/puma_http11/http11_parser.rl"
466
+ #line 61 "ext/puma_http11/http11_parser.rl"
467
467
  {
468
468
  parser->query_string(parser, PTR_TO(query_start), LEN(query_start, p));
469
469
  }
470
- #line 51 "ext/puma_http11/http11_parser.rl"
470
+ #line 53 "ext/puma_http11/http11_parser.rl"
471
471
  {
472
472
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
473
473
  }
474
474
  goto st20;
475
475
  tr45:
476
- #line 59 "ext/puma_http11/http11_parser.rl"
476
+ #line 61 "ext/puma_http11/http11_parser.rl"
477
477
  {
478
478
  parser->query_string(parser, PTR_TO(query_start), LEN(query_start, p));
479
479
  }
480
- #line 51 "ext/puma_http11/http11_parser.rl"
480
+ #line 53 "ext/puma_http11/http11_parser.rl"
481
481
  {
482
482
  parser->request_uri(parser, PTR_TO(mark), LEN(mark, p));
483
483
  }
@@ -486,7 +486,7 @@ st20:
486
486
  if ( ++p == pe )
487
487
  goto _test_eof20;
488
488
  case 20:
489
- #line 488 "ext/puma_http11/http11_parser.c"
489
+ #line 490 "ext/puma_http11/http11_parser.c"
490
490
  switch( (*p) ) {
491
491
  case 32: goto tr31;
492
492
  case 60: goto st0;
@@ -500,14 +500,14 @@ case 20:
500
500
  goto st0;
501
501
  goto tr30;
502
502
  tr30:
503
- #line 35 "ext/puma_http11/http11_parser.rl"
503
+ #line 37 "ext/puma_http11/http11_parser.rl"
504
504
  { MARK(mark, p); }
505
505
  goto st21;
506
506
  st21:
507
507
  if ( ++p == pe )
508
508
  goto _test_eof21;
509
509
  case 21:
510
- #line 509 "ext/puma_http11/http11_parser.c"
510
+ #line 511 "ext/puma_http11/http11_parser.c"
511
511
  switch( (*p) ) {
512
512
  case 32: goto tr33;
513
513
  case 60: goto st0;
@@ -521,14 +521,14 @@ case 21:
521
521
  goto st0;
522
522
  goto st21;
523
523
  tr5:
524
- #line 35 "ext/puma_http11/http11_parser.rl"
524
+ #line 37 "ext/puma_http11/http11_parser.rl"
525
525
  { MARK(mark, p); }
526
526
  goto st22;
527
527
  st22:
528
528
  if ( ++p == pe )
529
529
  goto _test_eof22;
530
530
  case 22:
531
- #line 530 "ext/puma_http11/http11_parser.c"
531
+ #line 532 "ext/puma_http11/http11_parser.c"
532
532
  switch( (*p) ) {
533
533
  case 43: goto st22;
534
534
  case 58: goto st23;
@@ -546,14 +546,14 @@ case 22:
546
546
  goto st22;
547
547
  goto st0;
548
548
  tr7:
549
- #line 35 "ext/puma_http11/http11_parser.rl"
549
+ #line 37 "ext/puma_http11/http11_parser.rl"
550
550
  { MARK(mark, p); }
551
551
  goto st23;
552
552
  st23:
553
553
  if ( ++p == pe )
554
554
  goto _test_eof23;
555
555
  case 23:
556
- #line 555 "ext/puma_http11/http11_parser.c"
556
+ #line 557 "ext/puma_http11/http11_parser.c"
557
557
  switch( (*p) ) {
558
558
  case 32: goto tr8;
559
559
  case 34: goto st0;
@@ -566,14 +566,14 @@ case 23:
566
566
  goto st0;
567
567
  goto st23;
568
568
  tr6:
569
- #line 35 "ext/puma_http11/http11_parser.rl"
569
+ #line 37 "ext/puma_http11/http11_parser.rl"
570
570
  { MARK(mark, p); }
571
571
  goto st24;
572
572
  st24:
573
573
  if ( ++p == pe )
574
574
  goto _test_eof24;
575
575
  case 24:
576
- #line 575 "ext/puma_http11/http11_parser.c"
576
+ #line 577 "ext/puma_http11/http11_parser.c"
577
577
  switch( (*p) ) {
578
578
  case 32: goto tr37;
579
579
  case 34: goto st0;
@@ -587,7 +587,7 @@ case 24:
587
587
  goto st0;
588
588
  goto st24;
589
589
  tr39:
590
- #line 67 "ext/puma_http11/http11_parser.rl"
590
+ #line 69 "ext/puma_http11/http11_parser.rl"
591
591
  {
592
592
  parser->request_path(parser, PTR_TO(mark), LEN(mark,p));
593
593
  }
@@ -596,7 +596,7 @@ st25:
596
596
  if ( ++p == pe )
597
597
  goto _test_eof25;
598
598
  case 25:
599
- #line 598 "ext/puma_http11/http11_parser.c"
599
+ #line 600 "ext/puma_http11/http11_parser.c"
600
600
  switch( (*p) ) {
601
601
  case 32: goto tr41;
602
602
  case 34: goto st0;
@@ -609,14 +609,14 @@ case 25:
609
609
  goto st0;
610
610
  goto tr40;
611
611
  tr40:
612
- #line 58 "ext/puma_http11/http11_parser.rl"
612
+ #line 60 "ext/puma_http11/http11_parser.rl"
613
613
  { MARK(query_start, p); }
614
614
  goto st26;
615
615
  st26:
616
616
  if ( ++p == pe )
617
617
  goto _test_eof26;
618
618
  case 26:
619
- #line 618 "ext/puma_http11/http11_parser.c"
619
+ #line 620 "ext/puma_http11/http11_parser.c"
620
620
  switch( (*p) ) {
621
621
  case 32: goto tr44;
622
622
  case 34: goto st0;
@@ -1010,7 +1010,7 @@ case 45:
1010
1010
  _out: {}
1011
1011
  }
1012
1012
 
1013
- #line 115 "ext/puma_http11/http11_parser.rl"
1013
+ #line 117 "ext/puma_http11/http11_parser.rl"
1014
1014
 
1015
1015
  if (!puma_parser_has_error(parser))
1016
1016
  parser->cs = cs;