puma 4.3.7-java → 4.3.11-java

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +20 -0
  3. data/LICENSE +0 -0
  4. data/README.md +0 -0
  5. data/bin/puma-wild +0 -0
  6. data/docs/architecture.md +0 -0
  7. data/docs/deployment.md +0 -0
  8. data/docs/images/puma-connection-flow-no-reactor.png +0 -0
  9. data/docs/images/puma-connection-flow.png +0 -0
  10. data/docs/images/puma-general-arch.png +0 -0
  11. data/docs/nginx.md +0 -0
  12. data/docs/plugins.md +0 -0
  13. data/docs/restart.md +0 -0
  14. data/docs/signals.md +0 -0
  15. data/docs/systemd.md +0 -0
  16. data/docs/tcp_mode.md +0 -0
  17. data/ext/puma_http11/PumaHttp11Service.java +0 -0
  18. data/ext/puma_http11/ext_help.h +0 -0
  19. data/ext/puma_http11/extconf.rb +0 -0
  20. data/ext/puma_http11/http11_parser.c +23 -10
  21. data/ext/puma_http11/http11_parser.h +0 -0
  22. data/ext/puma_http11/http11_parser.java.rl +0 -0
  23. data/ext/puma_http11/http11_parser.rl +0 -0
  24. data/ext/puma_http11/http11_parser_common.rl +1 -1
  25. data/ext/puma_http11/io_buffer.c +0 -0
  26. data/ext/puma_http11/mini_ssl.c +0 -0
  27. data/ext/puma_http11/org/jruby/puma/Http11.java +0 -0
  28. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +48 -46
  29. data/ext/puma_http11/org/jruby/puma/IOBuffer.java +0 -0
  30. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +0 -0
  31. data/ext/puma_http11/puma_http11.c +0 -0
  32. data/lib/puma/accept_nonblock.rb +0 -0
  33. data/lib/puma/app/status.rb +0 -0
  34. data/lib/puma/binder.rb +0 -0
  35. data/lib/puma/cli.rb +0 -0
  36. data/lib/puma/client.rb +0 -0
  37. data/lib/puma/cluster.rb +0 -0
  38. data/lib/puma/commonlogger.rb +0 -0
  39. data/lib/puma/configuration.rb +0 -0
  40. data/lib/puma/const.rb +1 -1
  41. data/lib/puma/control_cli.rb +0 -0
  42. data/lib/puma/detect.rb +0 -0
  43. data/lib/puma/dsl.rb +0 -0
  44. data/lib/puma/events.rb +0 -0
  45. data/lib/puma/io_buffer.rb +0 -0
  46. data/lib/puma/jruby_restart.rb +0 -0
  47. data/lib/puma/launcher.rb +0 -0
  48. data/lib/puma/minissl/context_builder.rb +0 -0
  49. data/lib/puma/minissl.rb +0 -0
  50. data/lib/puma/null_io.rb +0 -0
  51. data/lib/puma/plugin/tmp_restart.rb +0 -0
  52. data/lib/puma/plugin.rb +0 -0
  53. data/lib/puma/puma_http11.jar +0 -0
  54. data/lib/puma/rack/builder.rb +0 -0
  55. data/lib/puma/rack/urlmap.rb +0 -0
  56. data/lib/puma/rack_default.rb +0 -0
  57. data/lib/puma/reactor.rb +0 -0
  58. data/lib/puma/runner.rb +0 -0
  59. data/lib/puma/server.rb +20 -12
  60. data/lib/puma/single.rb +0 -0
  61. data/lib/puma/state_file.rb +0 -0
  62. data/lib/puma/tcp_logger.rb +0 -0
  63. data/lib/puma/thread_pool.rb +0 -0
  64. data/lib/puma/util.rb +0 -0
  65. data/lib/puma.rb +0 -0
  66. data/lib/rack/handler/puma.rb +0 -0
  67. data/tools/docker/Dockerfile +0 -0
  68. data/tools/jungle/README.md +0 -0
  69. data/tools/jungle/init.d/README.md +0 -0
  70. data/tools/jungle/rc.d/README.md +0 -0
  71. data/tools/jungle/rc.d/puma.conf +0 -0
  72. data/tools/jungle/upstart/README.md +0 -0
  73. data/tools/jungle/upstart/puma-manager.conf +0 -0
  74. data/tools/jungle/upstart/puma.conf +0 -0
  75. data/tools/trickletest.rb +0 -0
  76. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 781f3047448b2b27145e6c7c6f4a98f9d61485ca579242ec5760fea20cabe642
4
- data.tar.gz: 161a15f8d95b8aafb36596d15efcd58feb37f5777656c6d755e061e3208667b0
3
+ metadata.gz: 6070a263b047d59b416396b2c0ec6b1f1b05b4f5e603305d928b27ed4a122aa6
4
+ data.tar.gz: 7d18b63d60bc8b10c32182fda0a841895d97366cd5a6ca6888d5768259649c87
5
5
  SHA512:
6
- metadata.gz: 026e69eb534503bae1b15b76f120678941cadd743630f4b93c3941719b4fcd49616af0bbc89fdad3e06bea86ebd7d11bc438d6223d368b21cb434c36f9d39db0
7
- data.tar.gz: 10aa9559de2ecdbb9fe7dd5760075d65618c408023de766994bc6e3c0679e7e76480a1f5b9bf51874805ca68047dd34574323e5dcc7d0ef0874f8c433abea648
6
+ metadata.gz: 52f32ac33c6d02ceeda415fc9090dd75d79e389209d60bb1cffda005839a895ee7dfe8f0c141fb5a66414c58875a942569e54a9bd9bbf3ceceaa2dbaf3518a5b
7
+ data.tar.gz: 98807e22469d6c78d4c01e6a7a07473803546913833b81e68638366ec7ebb33a9a8b8b804f5caa1c86be8fbe61b8deb0920113a0ffdbddb2da8417cb2ec2fa85
data/History.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## 4.3.11 / 2022-02-11
2
+
3
+ * Security
4
+ * Always close the response body (GHSA-rmj8-8hhh-gv5h)
5
+
6
+ ## 4.3.10 / 2021-10-12
7
+
8
+ * Bugfixes
9
+ * Allow UTF-8 in HTTP header values
10
+
11
+ ## 4.3.9 / 2021-10-12
12
+
13
+ * Security
14
+ * Do not allow LF as a line ending in a header (CVE-2021-41136)
15
+
16
+ ## 4.3.8 / 2021-05-11
17
+
18
+ * Security
19
+ * Close keepalive connections after the maximum number of fast inlined requests (#2625)
20
+
1
21
  ## 4.3.7 / 2020-11-30
2
22
 
3
23
  * Bugfixes
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
File without changes
data/bin/puma-wild CHANGED
File without changes
data/docs/architecture.md CHANGED
File without changes
data/docs/deployment.md CHANGED
File without changes
File without changes
File without changes
File without changes
data/docs/nginx.md CHANGED
File without changes
data/docs/plugins.md CHANGED
File without changes
data/docs/restart.md CHANGED
File without changes
data/docs/signals.md CHANGED
File without changes
data/docs/systemd.md CHANGED
File without changes
data/docs/tcp_mode.md CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -430,7 +430,13 @@ case 18:
430
430
  switch( (*p) ) {
431
431
  case 13: goto tr26;
432
432
  case 32: goto tr27;
433
+ case 127: goto st0;
433
434
  }
435
+ if ( (*p) > 8 ) {
436
+ if ( 10 <= (*p) && (*p) <= 31 )
437
+ goto st0;
438
+ } else if ( (*p) >= 0 )
439
+ goto st0;
434
440
  goto tr25;
435
441
  tr25:
436
442
  #line 44 "ext/puma_http11/http11_parser.rl"
@@ -440,9 +446,16 @@ st19:
440
446
  if ( ++p == pe )
441
447
  goto _test_eof19;
442
448
  case 19:
443
- #line 442 "ext/puma_http11/http11_parser.c"
444
- if ( (*p) == 13 )
445
- goto tr29;
449
+ #line 448 "ext/puma_http11/http11_parser.c"
450
+ switch( (*p) ) {
451
+ case 13: goto tr29;
452
+ case 127: goto st0;
453
+ }
454
+ if ( (*p) > 8 ) {
455
+ if ( 10 <= (*p) && (*p) <= 31 )
456
+ goto st0;
457
+ } else if ( (*p) >= 0 )
458
+ goto st0;
446
459
  goto st19;
447
460
  tr9:
448
461
  #line 51 "ext/puma_http11/http11_parser.rl"
@@ -486,7 +499,7 @@ st20:
486
499
  if ( ++p == pe )
487
500
  goto _test_eof20;
488
501
  case 20:
489
- #line 488 "ext/puma_http11/http11_parser.c"
502
+ #line 501 "ext/puma_http11/http11_parser.c"
490
503
  switch( (*p) ) {
491
504
  case 32: goto tr31;
492
505
  case 60: goto st0;
@@ -507,7 +520,7 @@ st21:
507
520
  if ( ++p == pe )
508
521
  goto _test_eof21;
509
522
  case 21:
510
- #line 509 "ext/puma_http11/http11_parser.c"
523
+ #line 522 "ext/puma_http11/http11_parser.c"
511
524
  switch( (*p) ) {
512
525
  case 32: goto tr33;
513
526
  case 60: goto st0;
@@ -528,7 +541,7 @@ st22:
528
541
  if ( ++p == pe )
529
542
  goto _test_eof22;
530
543
  case 22:
531
- #line 530 "ext/puma_http11/http11_parser.c"
544
+ #line 543 "ext/puma_http11/http11_parser.c"
532
545
  switch( (*p) ) {
533
546
  case 43: goto st22;
534
547
  case 58: goto st23;
@@ -553,7 +566,7 @@ st23:
553
566
  if ( ++p == pe )
554
567
  goto _test_eof23;
555
568
  case 23:
556
- #line 555 "ext/puma_http11/http11_parser.c"
569
+ #line 568 "ext/puma_http11/http11_parser.c"
557
570
  switch( (*p) ) {
558
571
  case 32: goto tr8;
559
572
  case 34: goto st0;
@@ -573,7 +586,7 @@ st24:
573
586
  if ( ++p == pe )
574
587
  goto _test_eof24;
575
588
  case 24:
576
- #line 575 "ext/puma_http11/http11_parser.c"
589
+ #line 588 "ext/puma_http11/http11_parser.c"
577
590
  switch( (*p) ) {
578
591
  case 32: goto tr37;
579
592
  case 34: goto st0;
@@ -596,7 +609,7 @@ st25:
596
609
  if ( ++p == pe )
597
610
  goto _test_eof25;
598
611
  case 25:
599
- #line 598 "ext/puma_http11/http11_parser.c"
612
+ #line 611 "ext/puma_http11/http11_parser.c"
600
613
  switch( (*p) ) {
601
614
  case 32: goto tr41;
602
615
  case 34: goto st0;
@@ -616,7 +629,7 @@ st26:
616
629
  if ( ++p == pe )
617
630
  goto _test_eof26;
618
631
  case 26:
619
- #line 618 "ext/puma_http11/http11_parser.c"
632
+ #line 631 "ext/puma_http11/http11_parser.c"
620
633
  switch( (*p) ) {
621
634
  case 32: goto tr44;
622
635
  case 34: goto st0;
File without changes
File without changes
File without changes
@@ -43,7 +43,7 @@
43
43
 
44
44
  field_name = ( token -- ":" )+ >start_field $snake_upcase_field %write_field;
45
45
 
46
- field_value = any* >start_value %write_value;
46
+ field_value = ( (any -- CTL) | "\t" )* >start_value %write_value;
47
47
 
48
48
  message_header = field_name ":" " "* field_value :> CRLF;
49
49
 
File without changes
File without changes
File without changes
@@ -34,9 +34,9 @@ private static short[] init__puma_parser_key_offsets_0()
34
34
  {
35
35
  return new short [] {
36
36
  0, 0, 8, 17, 27, 29, 30, 31, 32, 33, 34, 36,
37
- 39, 41, 44, 45, 61, 62, 78, 80, 81, 89, 97, 107,
38
- 115, 124, 132, 140, 149, 158, 167, 176, 185, 194, 203, 212,
39
- 221, 230, 239, 248, 257, 266, 275, 284, 293, 302, 303
37
+ 39, 41, 44, 45, 61, 62, 78, 85, 91, 99, 107, 117,
38
+ 125, 134, 142, 150, 159, 168, 177, 186, 195, 204, 213, 222,
39
+ 231, 240, 249, 258, 267, 276, 285, 294, 303, 312, 313
40
40
  };
41
41
  }
42
42
 
@@ -52,26 +52,27 @@ private static char[] init__puma_parser_trans_keys_0()
52
52
  46, 48, 57, 48, 57, 13, 48, 57, 10, 13, 33, 124,
53
53
  126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90, 94,
54
54
  122, 10, 33, 58, 124, 126, 35, 39, 42, 43, 45, 46,
55
- 48, 57, 65, 90, 94, 122, 13, 32, 13, 32, 60, 62,
56
- 127, 0, 31, 34, 35, 32, 60, 62, 127, 0, 31, 34,
57
- 35, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 32,
58
- 34, 35, 60, 62, 127, 0, 31, 32, 34, 35, 60, 62,
59
- 63, 127, 0, 31, 32, 34, 35, 60, 62, 127, 0, 31,
60
- 32, 34, 35, 60, 62, 127, 0, 31, 32, 36, 95, 45,
61
- 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57,
62
- 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32,
63
- 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45,
64
- 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57,
65
- 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32,
66
- 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45,
67
- 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57,
68
- 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32,
69
- 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45,
70
- 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57,
71
- 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32,
72
- 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45,
73
- 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57,
74
- 65, 90, 32, 0
55
+ 48, 57, 65, 90, 94, 122, 13, 32, 127, 0, 8, 10,
56
+ 31, 13, 127, 0, 8, 10, 31, 32, 60, 62, 127, 0,
57
+ 31, 34, 35, 32, 60, 62, 127, 0, 31, 34, 35, 43,
58
+ 58, 45, 46, 48, 57, 65, 90, 97, 122, 32, 34, 35,
59
+ 60, 62, 127, 0, 31, 32, 34, 35, 60, 62, 63, 127,
60
+ 0, 31, 32, 34, 35, 60, 62, 127, 0, 31, 32, 34,
61
+ 35, 60, 62, 127, 0, 31, 32, 36, 95, 45, 46, 48,
62
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
63
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
64
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
65
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
66
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
67
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
68
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
69
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
70
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
71
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
72
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
73
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
74
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
75
+ 32, 0
75
76
  };
76
77
  }
77
78
 
@@ -82,7 +83,7 @@ private static byte[] init__puma_parser_single_lengths_0()
82
83
  {
83
84
  return new byte [] {
84
85
  0, 2, 3, 4, 2, 1, 1, 1, 1, 1, 0, 1,
85
- 0, 1, 1, 4, 1, 4, 2, 1, 4, 4, 2, 6,
86
+ 0, 1, 1, 4, 1, 4, 3, 2, 4, 4, 2, 6,
86
87
  7, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3,
87
88
  3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0
88
89
  };
@@ -95,7 +96,7 @@ private static byte[] init__puma_parser_range_lengths_0()
95
96
  {
96
97
  return new byte [] {
97
98
  0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1,
98
- 1, 1, 0, 6, 0, 6, 0, 0, 2, 2, 4, 1,
99
+ 1, 1, 0, 6, 0, 6, 2, 2, 2, 2, 4, 1,
99
100
  1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
100
101
  3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0
101
102
  };
@@ -108,9 +109,9 @@ private static short[] init__puma_parser_index_offsets_0()
108
109
  {
109
110
  return new short [] {
110
111
  0, 0, 6, 13, 21, 24, 26, 28, 30, 32, 34, 36,
111
- 39, 41, 44, 46, 57, 59, 70, 73, 75, 82, 89, 96,
112
- 104, 113, 121, 129, 136, 143, 150, 157, 164, 171, 178, 185,
113
- 192, 199, 206, 213, 220, 227, 234, 241, 248, 255, 257
112
+ 39, 41, 44, 46, 57, 59, 70, 76, 81, 88, 95, 102,
113
+ 110, 119, 127, 135, 142, 149, 156, 163, 170, 177, 184, 191,
114
+ 198, 205, 212, 219, 226, 233, 240, 247, 254, 261, 263
114
115
  };
115
116
  }
116
117
 
@@ -126,22 +127,23 @@ private static byte[] init__puma_parser_indicies_0()
126
127
  16, 15, 1, 17, 1, 18, 17, 1, 19, 1, 20, 21,
127
128
  21, 21, 21, 21, 21, 21, 21, 21, 1, 22, 1, 23,
128
129
  24, 23, 23, 23, 23, 23, 23, 23, 23, 1, 26, 27,
129
- 25, 29, 28, 30, 1, 1, 1, 1, 1, 31, 32, 1,
130
- 1, 1, 1, 1, 33, 34, 35, 34, 34, 34, 34, 1,
131
- 8, 1, 9, 1, 1, 1, 1, 35, 36, 1, 38, 1,
132
- 1, 39, 1, 1, 37, 40, 1, 42, 1, 1, 1, 1,
133
- 41, 43, 1, 45, 1, 1, 1, 1, 44, 2, 46, 46,
134
- 46, 46, 46, 1, 2, 47, 47, 47, 47, 47, 1, 2,
135
- 48, 48, 48, 48, 48, 1, 2, 49, 49, 49, 49, 49,
136
- 1, 2, 50, 50, 50, 50, 50, 1, 2, 51, 51, 51,
137
- 51, 51, 1, 2, 52, 52, 52, 52, 52, 1, 2, 53,
138
- 53, 53, 53, 53, 1, 2, 54, 54, 54, 54, 54, 1,
139
- 2, 55, 55, 55, 55, 55, 1, 2, 56, 56, 56, 56,
140
- 56, 1, 2, 57, 57, 57, 57, 57, 1, 2, 58, 58,
141
- 58, 58, 58, 1, 2, 59, 59, 59, 59, 59, 1, 2,
142
- 60, 60, 60, 60, 60, 1, 2, 61, 61, 61, 61, 61,
143
- 1, 2, 62, 62, 62, 62, 62, 1, 2, 63, 63, 63,
144
- 63, 63, 1, 2, 1, 1, 0
130
+ 1, 1, 1, 25, 29, 1, 1, 1, 28, 30, 1, 1,
131
+ 1, 1, 1, 31, 32, 1, 1, 1, 1, 1, 33, 34,
132
+ 35, 34, 34, 34, 34, 1, 8, 1, 9, 1, 1, 1,
133
+ 1, 35, 36, 1, 38, 1, 1, 39, 1, 1, 37, 40,
134
+ 1, 42, 1, 1, 1, 1, 41, 43, 1, 45, 1, 1,
135
+ 1, 1, 44, 2, 46, 46, 46, 46, 46, 1, 2, 47,
136
+ 47, 47, 47, 47, 1, 2, 48, 48, 48, 48, 48, 1,
137
+ 2, 49, 49, 49, 49, 49, 1, 2, 50, 50, 50, 50,
138
+ 50, 1, 2, 51, 51, 51, 51, 51, 1, 2, 52, 52,
139
+ 52, 52, 52, 1, 2, 53, 53, 53, 53, 53, 1, 2,
140
+ 54, 54, 54, 54, 54, 1, 2, 55, 55, 55, 55, 55,
141
+ 1, 2, 56, 56, 56, 56, 56, 1, 2, 57, 57, 57,
142
+ 57, 57, 1, 2, 58, 58, 58, 58, 58, 1, 2, 59,
143
+ 59, 59, 59, 59, 1, 2, 60, 60, 60, 60, 60, 1,
144
+ 2, 61, 61, 61, 61, 61, 1, 2, 62, 62, 62, 62,
145
+ 62, 1, 2, 63, 63, 63, 63, 63, 1, 2, 1, 1,
146
+ 0
145
147
  };
146
148
  }
147
149
 
@@ -217,7 +219,7 @@ static final int puma_parser_en_main = 1;
217
219
  cs = puma_parser_start;
218
220
  }
219
221
 
220
- // line 90 "ext/puma_http11/http11_parser.java.rl"
222
+ // line 88 "ext/puma_http11/http11_parser.java.rl"
221
223
 
222
224
  body_start = 0;
223
225
  content_len = 0;
@@ -420,7 +422,7 @@ case 5:
420
422
  break; }
421
423
  }
422
424
 
423
- // line 116 "ext/puma_http11/http11_parser.java.rl"
425
+ // line 114 "ext/puma_http11/http11_parser.java.rl"
424
426
 
425
427
  parser.cs = cs;
426
428
  parser.nread += (p - off);
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/puma/binder.rb CHANGED
File without changes
data/lib/puma/cli.rb CHANGED
File without changes
data/lib/puma/client.rb CHANGED
File without changes
data/lib/puma/cluster.rb CHANGED
File without changes
File without changes
File without changes
data/lib/puma/const.rb CHANGED
@@ -100,7 +100,7 @@ module Puma
100
100
  # too taxing on performance.
101
101
  module Const
102
102
 
103
- PUMA_VERSION = VERSION = "4.3.7".freeze
103
+ PUMA_VERSION = VERSION = "4.3.11".freeze
104
104
  CODE_NAME = "Mysterious Traveller".freeze
105
105
  PUMA_SERVER_STRING = ['puma', PUMA_VERSION, CODE_NAME].join(' ').freeze
106
106
 
File without changes
data/lib/puma/detect.rb CHANGED
File without changes
data/lib/puma/dsl.rb CHANGED
File without changes
data/lib/puma/events.rb CHANGED
File without changes
File without changes
File without changes
data/lib/puma/launcher.rb CHANGED
File without changes
File without changes
data/lib/puma/minissl.rb CHANGED
File without changes
data/lib/puma/null_io.rb CHANGED
File without changes
File without changes
data/lib/puma/plugin.rb CHANGED
File without changes
Binary file
File without changes
File without changes
File without changes
data/lib/puma/reactor.rb CHANGED
File without changes
data/lib/puma/runner.rb CHANGED
File without changes
data/lib/puma/server.rb CHANGED
@@ -483,15 +483,20 @@ module Puma
483
483
 
484
484
  requests += 1
485
485
 
486
- check_for_more_data = @status == :run
486
+ # Closing keepalive sockets after they've made a reasonable
487
+ # number of requests allows Puma to service many connections
488
+ # fairly, even when the number of concurrent connections exceeds
489
+ # the size of the threadpool. It also allows cluster mode Pumas
490
+ # to keep load evenly distributed across workers, because clients
491
+ # are randomly assigned a new worker when opening a new connection.
492
+ #
493
+ # Previously, Puma would kick connections in this conditional back
494
+ # to the reactor. However, because this causes the todo set to increase
495
+ # in size, the wait_until_full mutex would never unlock, leaving
496
+ # any additional connections unserviced.
497
+ break if requests >= MAX_FAST_INLINE
487
498
 
488
- if requests >= MAX_FAST_INLINE
489
- # This will mean that reset will only try to use the data it already
490
- # has buffered and won't try to read more data. What this means is that
491
- # every client, independent of their request speed, gets treated like a slow
492
- # one once every MAX_FAST_INLINE requests.
493
- check_for_more_data = false
494
- end
499
+ check_for_more_data = @status == :run
495
500
 
496
501
  unless client.reset(check_for_more_data)
497
502
  close_socket = false
@@ -868,11 +873,14 @@ module Puma
868
873
  end
869
874
 
870
875
  ensure
871
- uncork_socket client
876
+ begin
877
+ uncork_socket client
872
878
 
873
- body.close
874
- req.tempfile.unlink if req.tempfile
875
- res_body.close if res_body.respond_to? :close
879
+ body.close
880
+ req.tempfile.unlink if req.tempfile
881
+ ensure
882
+ res_body.close if res_body.respond_to? :close
883
+ end
876
884
 
877
885
  after_reply.each { |o| o.call }
878
886
  end
data/lib/puma/single.rb CHANGED
File without changes
File without changes
File without changes
File without changes
data/lib/puma/util.rb CHANGED
File without changes
data/lib/puma.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/tools/trickletest.rb CHANGED
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puma
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.7
4
+ version: 4.3.11
5
5
  platform: java
6
6
  authors:
7
7
  - Evan Phoenix
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-30 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -17,8 +17,8 @@ dependencies:
17
17
  - !ruby/object:Gem::Version
18
18
  version: '2.0'
19
19
  name: nio4r
20
- type: :runtime
21
20
  prerelease: false
21
+ type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  requirements: []
139
- rubygems_version: 3.0.6
139
+ rubygems_version: 3.2.29
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server for