Merge branch 'ye/http-extract-charset'
* ye/http-extract-charset: http: fix charset detection of extract_content_type()
This commit is contained in:
commit
a02ad882a1
4
http.c
4
http.c
@ -927,7 +927,7 @@ static int extract_param(const char *raw, const char *name,
|
||||
return -1;
|
||||
raw++;
|
||||
|
||||
while (*raw && !isspace(*raw))
|
||||
while (*raw && !isspace(*raw) && *raw != ';')
|
||||
strbuf_addch(out, *raw++);
|
||||
return 0;
|
||||
}
|
||||
@ -971,7 +971,7 @@ static void extract_content_type(struct strbuf *raw, struct strbuf *type,
|
||||
|
||||
strbuf_reset(charset);
|
||||
while (*p) {
|
||||
while (isspace(*p))
|
||||
while (isspace(*p) || *p == ';')
|
||||
p++;
|
||||
if (!extract_param(p, "charset", charset))
|
||||
return;
|
||||
|
@ -19,6 +19,10 @@ case "$PATH_INFO" in
|
||||
printf "text/plain; charset=utf-16"
|
||||
charset=utf-16
|
||||
;;
|
||||
*odd-spacing*)
|
||||
printf "text/plain; foo=bar ;charset=utf-16; other=nonsense"
|
||||
charset=utf-16
|
||||
;;
|
||||
esac
|
||||
printf "\n"
|
||||
|
||||
|
@ -191,5 +191,10 @@ test_expect_success 'http error messages are reencoded' '
|
||||
grep "this is the error message" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'reencoding is robust to whitespace oddities' '
|
||||
test_must_fail git clone "$HTTPD_URL/error/odd-spacing" 2>stderr &&
|
||||
grep "this is the error message" stderr
|
||||
'
|
||||
|
||||
stop_httpd
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user