@@ -178,20 +178,23 @@ def parse_header(raw)
178
178
field . downcase!
179
179
header [ field ] = HEADER_CLASSES [ field ] . new unless header . has_key? ( field )
180
180
header [ field ] << value
181
- when /^\s +([^\r \n \0 ]*?)\r \n /om
181
+ when /^[ \t ] +([^\r \n \0 ]*?)\r \n /om
182
182
unless field
183
183
raise HTTPStatus ::BadRequest , "bad header '#{ line } '."
184
184
end
185
185
value = line
186
- value . lstrip!
186
+ value . gsub! ( / \A [ \t ]+/ , '' )
187
187
value . slice! ( -2 ..-1 )
188
188
header [ field ] [ -1 ] << " " << value
189
189
else
190
190
raise HTTPStatus ::BadRequest , "bad header '#{ line } '."
191
191
end
192
192
}
193
193
header . each { |key , values |
194
- values . each ( &:strip! )
194
+ values . each { |value |
195
+ value . gsub! ( /\A [ \t ]+/ , '' )
196
+ value . gsub! ( /[ \t ]+\z / , '' )
197
+ }
195
198
}
196
199
header
197
200
end
@@ -202,7 +205,7 @@ def parse_header(raw)
202
205
203
206
def split_header_value ( str )
204
207
str . scan ( %r'\G ((?:"(?:\\ .|[^"])+?"|[^",]++)+)
205
- (?:,\s *|\Z )'xn ) . flatten
208
+ (?:,[ \t ] *|\Z )'xn ) . flatten
206
209
end
207
210
module_function :split_header_value
208
211
@@ -230,9 +233,9 @@ def parse_range_header(ranges_specifier)
230
233
def parse_qvalues ( value )
231
234
tmp = [ ]
232
235
if value
233
- parts = value . split ( /,\s */ )
236
+ parts = value . split ( /,[ \t ] */ )
234
237
parts . each { |part |
235
- if m = %r{^([^\s ,]+?)(?:;\s *q=(\d +(?:\. \d +)?))?$} . match ( part )
238
+ if m = %r{^([^ \t ,]+?)(?:;[ \t ] *q=(\d +(?:\. \d +)?))?$} . match ( part )
236
239
val = m [ 1 ]
237
240
q = ( m [ 2 ] or 1 ) . to_f
238
241
tmp . push ( [ val , q ] )
@@ -331,8 +334,8 @@ def <<(str)
331
334
elsif str == CRLF
332
335
@header = HTTPUtils ::parse_header ( @raw_header . join )
333
336
if cd = self [ 'content-disposition' ]
334
- if /\s +name="(.*?)"/ =~ cd then @name = $1 end
335
- if /\s +filename="(.*?)"/ =~ cd then @filename = $1 end
337
+ if /[ \t ] +name="(.*?)"/ =~ cd then @name = $1 end
338
+ if /[ \t ] +filename="(.*?)"/ =~ cd then @filename = $1 end
336
339
end
337
340
else
338
341
@raw_header << str
0 commit comments