webrick 1.5.1 → 1.6.0

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

Potentially problematic release.


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

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 901e5eed67a1747d1b8359f3e22fedeede6c92d35cdc32166428e714d393a505
4
- data.tar.gz: ce5277a103aa620bc0228209f4554ea3b9792ffe32b1bdcda24e0fdea8da9e85
3
+ metadata.gz: 0b22d1a22487ddaea4a02b95387d97d6860f856578442b3466dc1476313422ab
4
+ data.tar.gz: '08bc9dac03f0340f332bdb65415443c749365245340e59467c039f32f2410366'
5
5
  SHA512:
6
- metadata.gz: 0411f18ca5d531964f58fc12d9961c74f14399fe2d0896537a8aae8cc95180c5927eba9c907a4aecaa89443ee1f409bac9574620de085ddfcb87ad4ed856a67e
7
- data.tar.gz: 531502100d1c9a38f97987a187f39f245777ef607adcc0d78ee225591e84b90fd17827a506d354dcb4f702d18e5959c29b4326714c08855a7d9edd6b29402aaa
6
+ metadata.gz: 7a7c7286591c28174ce5921164fcea59130c4ff0031f01fd1abf4c89073b8774cb3d409328d8644dbd83cc29de2e4a8b25c9bd2866ba618f8f66530a100d830b
7
+ data.tar.gz: 313497330c512f587d9e8af3ce3a1936c64c55b58f694c3088db872ef9628ac44f4029277d5178cb1ffc43ea1d94bc68b98bb4884d78f667bd435cad36dfafa6
@@ -149,11 +149,9 @@ module WEBrick
149
149
  # Escapes control characters in +data+
150
150
 
151
151
  def escape(data)
152
- if data.tainted?
153
- data.gsub(/[[:cntrl:]\\]+/) {$&.dump[1...-1]}.untaint
154
- else
155
- data
156
- end
152
+ data = data.gsub(/[[:cntrl:]\\]+/) {$&.dump[1...-1]}
153
+ data.untaint if RUBY_VERSION < '2.7'
154
+ data
157
155
  end
158
156
  end
159
157
  end
@@ -226,9 +226,9 @@ module WEBrick
226
226
  raise HTTPStatus::BadRequest, "bad URI `#{@unparsed_uri}'."
227
227
  end
228
228
 
229
- if /\Aclose\z/io =~ self["connection"]
229
+ if /close/io =~ self["connection"]
230
230
  @keep_alive = false
231
- elsif /\Akeep-alive\z/io =~ self["connection"]
231
+ elsif /keep-alive/io =~ self["connection"]
232
232
  @keep_alive = true
233
233
  elsif @http_version < "1.1"
234
234
  @keep_alive = false
@@ -503,7 +503,7 @@ module WEBrick
503
503
  return unless socket
504
504
  if tc = self['transfer-encoding']
505
505
  case tc
506
- when /\Achunked\z/io then read_chunked(socket, block)
506
+ when /chunked/io then read_chunked(socket, block)
507
507
  else raise HTTPStatus::NotImplemented, "Transfer-Encoding: #{tc}."
508
508
  end
509
509
  elsif self['content-length'] || @remaining_size
@@ -611,7 +611,12 @@ module WEBrick
611
611
  end
612
612
  if host_port = self["x-forwarded-host"]
613
613
  host_port = host_port.split(",", 2).first
614
- @forwarded_host, tmp = host_port.split(":", 2)
614
+ if host_port =~ /\A(\[[0-9a-fA-F:]+\])(?::(\d+))?\z/
615
+ @forwarded_host = $1
616
+ tmp = $2
617
+ else
618
+ @forwarded_host, tmp = host_port.split(":", 2)
619
+ end
615
620
  @forwarded_port = (tmp || (@forwarded_proto == "https" ? 443 : 80)).to_i
616
621
  end
617
622
  if addrs = self["x-forwarded-for"]
@@ -51,8 +51,21 @@ module WEBrick
51
51
  attr_accessor :reason_phrase
52
52
 
53
53
  ##
54
- # Body may be a String or IO-like object that responds to #read and
55
- # #readpartial.
54
+ # Body may be:
55
+ # * a String;
56
+ # * an IO-like object that responds to +#read+ and +#readpartial+;
57
+ # * a Proc-like object that responds to +#call+.
58
+ #
59
+ # In the latter case, either #chunked= should be set to +true+,
60
+ # or <code>header['content-length']</code> explicitly provided.
61
+ # Example:
62
+ #
63
+ # server.mount_proc '/' do |req, res|
64
+ # res.chunked = true
65
+ # # or
66
+ # # res.header['content-length'] = 10
67
+ # res.body = proc { |out| out.write(Time.now.to_s) }
68
+ # end
56
69
 
57
70
  attr_accessor :body
58
71
 
@@ -142,6 +155,7 @@ module WEBrick
142
155
  # Sets the response header +field+ to +value+
143
156
 
144
157
  def []=(field, value)
158
+ @chunked = value.to_s.downcase == 'chunked' if field.downcase == 'transfer-encoding'
145
159
  @header[field.downcase] = value.to_s
146
160
  end
147
161
 
@@ -28,6 +28,7 @@ module WEBrick
28
28
  class CGIHandler < AbstractServlet
29
29
  Ruby = RbConfig.ruby # :nodoc:
30
30
  CGIRunner = "\"#{Ruby}\" \"#{WEBrick::Config::LIBDIR}/httpservlet/cgi_runner.rb\"" # :nodoc:
31
+ CGIRunnerArray = [Ruby, "#{WEBrick::Config::LIBDIR}/httpservlet/cgi_runner.rb".freeze].freeze # :nodoc:
31
32
 
32
33
  ##
33
34
  # Creates a new CGI script servlet for the script at +name+
@@ -36,7 +37,12 @@ module WEBrick
36
37
  super(server, name)
37
38
  @script_filename = name
38
39
  @tempdir = server[:TempDir]
39
- @cgicmd = "#{CGIRunner} #{server[:CGIInterpreter]}"
40
+ interpreter = server[:CGIInterpreter]
41
+ if interpreter.is_a?(Array)
42
+ @cgicmd = CGIRunnerArray + interpreter
43
+ else
44
+ @cgicmd = "#{CGIRunner} #{interpreter}"
45
+ end
40
46
  end
41
47
 
42
48
  # :stopdoc:
@@ -162,10 +162,7 @@ module WEBrick
162
162
  end
163
163
  }
164
164
  header.each{|key, values|
165
- values.each{|value|
166
- value.strip!
167
- value.gsub!(/\s+/, " ")
168
- }
165
+ values.each(&:strip!)
169
166
  }
170
167
  header
171
168
  end
@@ -14,5 +14,5 @@ module WEBrick
14
14
  ##
15
15
  # The WEBrick version
16
16
 
17
- VERSION = "1.5.1"
17
+ VERSION = "1.6.0"
18
18
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webrick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAKAHASHI Masayoshi
8
8
  - GOTOU YUUZOU
9
9
  - Eric Wong
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-09-29 00:00:00.000000000 Z
13
+ date: 2019-11-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -29,8 +29,8 @@ dependencies:
29
29
  description: WEBrick is an HTTP server toolkit that can be configured as an HTTPS
30
30
  server, a proxy server, and a virtual-host server.
31
31
  email:
32
- -
33
- -
32
+ -
33
+ -
34
34
  - normal@ruby-lang.org
35
35
  executables: []
36
36
  extensions: []
@@ -85,7 +85,7 @@ metadata:
85
85
  bug_tracker_uri: https://bugs.ruby-lang.org/projects/ruby-trunk/issues
86
86
  homepage_uri: https://www.ruby-lang.org
87
87
  source_code_uri: https://git.ruby-lang.org/ruby.git/
88
- post_install_message:
88
+ post_install_message:
89
89
  rdoc_options: []
90
90
  require_paths:
91
91
  - lib
@@ -100,8 +100,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  requirements: []
103
- rubygems_version: 3.2.0.rc.1
104
- signing_key:
103
+ rubygems_version: 3.0.3
104
+ signing_key:
105
105
  specification_version: 4
106
106
  summary: HTTP server toolkit
107
107
  test_files: []