diff --git a/AUTHORS b/AUTHORS index 0ca2ce93..60faec24 100644 --- a/AUTHORS +++ b/AUTHORS @@ -265,6 +265,9 @@ Jon Shapcott John Tab browsing initial patch +Johannes Stezenbach + Precedence of HTTP vs. HTTP meta tag when setting Content-Type + Johannes Zellner Minor misc hacking diff --git a/NEWS b/NEWS index 251914de..58517295 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,8 @@ Miscellaneous: * bug 963: New option document.css.ignore_display_none. * bug 977: Fixed crash when opening in new tab a non link with onclick attribute. +* bug 983: Give preference to the Content-Type specified in the HTTP + header over that specified via the HTML meta tag. * bug 1008: File upload fields in HTML forms now stream the files to the server, instead of reading them to memory in advance. This lets you upload larger files. The downsides are that ELinks may use a diff --git a/src/document/renderer.c b/src/document/renderer.c index ecc240af..b21ef45f 100644 --- a/src/document/renderer.c +++ b/src/document/renderer.c @@ -588,17 +588,14 @@ get_convert_table(unsigned char *head, int to_cp, while (cp_index == -1) { unsigned char *ct_charset; - unsigned char *meta; + /* scan_http_equiv() appends the meta http-equiv directives to + * the protocol header before this function is called, but the + * HTTP Content-Type header has precedence, so the HTTP header + * will be used if it exists and the meta header is only used + * as a fallback. See bug 983. */ unsigned char *a = parse_header(part, "Content-Type", &part); if (!a) break; - /* Content type info from document meta header. - * scan_http_equiv() appends the meta stuff to the protocol header before - * this function is called. Last Content-Type header field is used. */ - - while ((meta = parse_header(part, "Content-Type", &part))) { - mem_free_set(&a, meta); - } parse_header_param(a, "charset", &ct_charset); if (ct_charset) {