Oh, nobody has an answer to the issue?
Okay...
Investigating, it appears that mod_xml2enc indeed grabs everything it
can lay hands on, if only it is tagged as some 'text/whatver', and
"converts" it (assuming it were ISO8859-1), no matter the damage, and
giving a f*** damn on compressed data. :((
This gets obvious from the code, it is also visible in the
debuglog:
[proxy_http:trace3] [pid 52505] mod_proxy_http.c(1402): [client
192.168.97.18:28882] Status from backend: 200
[proxy_http:trace4] [pid 52505] mod_proxy_http.c(1052): [client
192.168.97.18:28882] Headers received from backend:
[proxy_http:trace4] [pid 52505] mod_proxy_http.c(1075): [client
192.168.97.18:28882] Last-Modified: Sun, 14 Apr 2019 05:53:26 GMT
[proxy_http:trace4] [pid 52505] mod_proxy_http.c(1075): [client
192.168.97.18:28882] Content-Type: text/css
[proxy_http:trace4] [pid 52505] mod_proxy_http.c(1075): [client
192.168.97.18:28882] Content-Encoding: gzip
[proxy_http:trace4] [pid 52505] mod_proxy_http.c(1075): [client
192.168.97.18:28882] Vary: Accept-Encoding
[proxy_http:trace4] [pid 52505] mod_proxy_http.c(1075): [client
192.168.97.18:28882] Content-Length: 6194
[proxy_http:trace3] [pid 52505] mod_proxy_http.c(1672): [client
192.168.97.18:28882] start body send
[xml2enc:debug] [pid 52505] mod_xml2enc.c(176): [client 192.168.97.18:28882]
AH01430: Content-Type is text/css
[xml2enc:debug] [pid 52505] mod_xml2enc.c(250): [client 192.168.97.18:28882]
AH01434: Charset ISO-8859-1 not supported by libxml2; trying apr_xlate
[xml2enc:debug] [pid 52505] mod_xml2enc.c(464): [client 192.168.97.18:28882]
AH01439: xml2enc: consuming 6194 bytes from bucket
[xml2enc:debug] [pid 52505] mod_xml2enc.c(490): [client 192.168.97.18:28882]
AH01441: xml2enc: converted 4049/6193 bytes
[xml2enc:debug] [pid 52505] mod_xml2enc.c(490): [client 192.168.97.18:28882]
AH01441: xml2enc: converted 2145/3242 bytes
[proxy_html:trace1] [pid 52505] mod_proxy_html.c(832): [client
192.168.97.18:28882] Non-HTML content; not inserting proxy-html filter
[http:trace3] [pid 52505] http_filters.c(1125): [client 192.168.97.18:28882]
Response sent with status 200, headers:
[http:trace5] [pid 52505] http_filters.c(1134): [client 192.168.97.18:28882]
Date: Sun, 14 Apr 2019 16:07:20 GMT
[http:trace5] [pid 52505] http_filters.c(1137): [client 192.168.97.18:28882]
Server: Apache/2.4.39 (FreeBSD)
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Last-Modified: Sun, 14 Apr 2019 05:53:26 GMT
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Content-Type: text/css;charset=utf-8
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Content-Encoding: gzip
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Vary: Accept-Encoding
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Keep-Alive: timeout=15, max=100
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Connection: Keep-Alive
[http:trace4] [pid 52505] http_filters.c(955): [client 192.168.97.18:28882]
Transfer-Encoding: chunked
Then, depending on which filters are configured, this may or may not
happen. It may even be runtime dependent. I tried to put proxy_html
into a filter chain to get a more defined behaviour, but this is not
possible, it produces a configuration error with FilterProvider,
although the documentation says:
"Any content filter may be used as a provider to mod_filter;
no change to existing filter modules is required"
So this does not work, either.
Finally I decided to fix the code, as good as I can. (As stated before,
I have absolutely no idea about this stuff and it's conventions, I just
need to make the thing workable.)
---------------------------------------------------------------------------
--- modules/filters/mod_xml2enc.c.orig 2018-06-22 10:43:46.000000000 +0000
+++ modules/filters/mod_xml2enc.c 2019-04-14 23:33:16.661705000 +0000
@@ -305,6 +305,7 @@
apr_size_t insz = 0;
int pending_meta = 0;
char *ctype;
+ const char *c_enc = NULL;
char *p;
if (!ctx || !f->r->content_type) {
@@ -324,6 +325,17 @@
return ap_pass_brigade(f->next, bb) ;
}
+ if((c_enc = apr_table_get(f->r->headers_out, "Content-Encoding")) &&
+ !strstr(c_enc, "identity") &&
+ !apr_table_get(f->r->notes, "X-PMc-was-here")) {
+ ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, f->r, APLOGNO(66666)
+ "Probable deflated content, standing down") ;
+ ap_remove_output_filter(f);
+ return ap_pass_brigade(f->next, bb) ;
+ } else {
+ apr_table_set(f->r->notes, "X-PMc-was-here", "1");
+ }
+
if (ctx->bbsave == NULL) {
ctx->bbsave = apr_brigade_create(f->r->pool,
f->r->connection->bucket_alloc);
---------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]