net.http: cookie parsing fixes (#14420)

master
David Valdespino Pavon 2022-06-07 05:52:43 -04:00 committed by GitHub
parent 8027919285
commit 1d462136bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -68,10 +68,11 @@ pub fn read_cookies(h map[string][]string, filter string) []&Cookie {
mut line := line_.trim_space()
mut part := ''
for line.len > 0 {
if line.index_any(';') > 0 {
line_parts := line.split(';')
mut semicolon_position := line.index_any(';') // Store the position of the next semicolon
if semicolon_position > 0 { // So, there is a semicolon, let's parse until that position
line_parts := line[..semicolon_position].split(';') // split the line only until that semicolon
line = line[(semicolon_position + 1)..] // and then skip everything before the semicolon
part = line_parts[0]
line = line_parts[1]
} else {
part = line
line = ''

View File

@ -214,11 +214,17 @@ pub fn parse_request_head(mut reader io.BufferedReader) ?Request {
}
header.coerce(canonicalize: true)
mut request_cookies := map[string]string{}
for _, cookie in read_cookies(header.data, '') {
request_cookies[cookie.name] = cookie.value
}
return Request{
method: method
url: target.str()
header: header
version: version
cookies: request_cookies
}
}