diff --git a/src/document/renderer.c b/src/document/renderer.c index 58db6d95..07e53bfe 100644 --- a/src/document/renderer.c +++ b/src/document/renderer.c @@ -205,7 +205,6 @@ render_encoded_document(struct cache_entry *cached, struct document *document) { struct uri *uri = cached->uri; enum stream_encoding encoding = ENCODING_NONE; - unsigned char *extension; struct fragment *fragment = get_cache_fragment(cached); struct string buffer = INIT_STRING("", 0); @@ -216,23 +215,26 @@ render_encoded_document(struct cache_entry *cached, struct document *document) buffer.length = fragment->length; } - extension = get_extension_from_uri(uri); - if (extension) { - encoding = guess_encoding(extension); - mem_free(extension); - } + if (uri->protocol != PROTOCOL_FILE) { + unsigned char *extension = get_extension_from_uri(uri); - if (encoding != ENCODING_NONE) { - int length = 0; - unsigned char *source; + if (extension) { + encoding = guess_encoding(extension); + mem_free(extension); + } - source = decode_encoded_buffer(encoding, buffer.source, + if (encoding != ENCODING_NONE) { + int length = 0; + unsigned char *source; + + source = decode_encoded_buffer(encoding, buffer.source, buffer.length, &length); - if (source) { - buffer.source = source; - buffer.length = length; - } else { - encoding = ENCODING_NONE; + if (source) { + buffer.source = source; + buffer.length = length; + } else { + encoding = ENCODING_NONE; + } } }