net: use custom error for invalid headers (#10323)
parent
fedf07ddd8
commit
c8d5e783a3
|
@ -566,11 +566,24 @@ fn (mut h Header) add_key(key string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Custom error struct for invalid header tokens
|
||||||
|
struct HeaderKeyError {
|
||||||
|
msg string
|
||||||
|
code int
|
||||||
|
header string
|
||||||
|
invalid_char byte
|
||||||
|
}
|
||||||
|
|
||||||
// Checks if the header token is valid
|
// Checks if the header token is valid
|
||||||
fn is_valid(header string) ? {
|
fn is_valid(header string) ? {
|
||||||
for _, c in header {
|
for _, c in header {
|
||||||
if int(c) >= 128 || !is_token(c) {
|
if int(c) >= 128 || !is_token(c) {
|
||||||
return error('Invalid header key')
|
return IError(HeaderKeyError{
|
||||||
|
msg: "Invalid header key: '$header'"
|
||||||
|
code: 1
|
||||||
|
header: header
|
||||||
|
invalid_char: c
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,7 +291,7 @@ pub fn parse_response(resp string) Response {
|
||||||
pos := h.index(':') or { continue }
|
pos := h.index(':') or { continue }
|
||||||
mut key := h[..pos]
|
mut key := h[..pos]
|
||||||
val := h[pos + 2..].trim_space()
|
val := h[pos + 2..].trim_space()
|
||||||
header.add_custom(key, val) or { eprintln('error parsing header: $err') }
|
header.add_custom(key, val) or { eprintln('$err; skipping header') }
|
||||||
}
|
}
|
||||||
// set cookies
|
// set cookies
|
||||||
for cookie in header.values(.set_cookie) {
|
for cookie in header.values(.set_cookie) {
|
||||||
|
|
Loading…
Reference in New Issue