https://issues.apache.org/bugzilla/show_bug.cgi?id=53420
--- Comment #5 from Rainer Jung <[email protected]> --- The reason is broken header handling. Headers are read from the origin server and then directly put into r->headers_out. In 2.2 those headers are copied to the request struct (rp) used in ap_discard_request_body. therefore the http infput filter can detect the end of the body using the Content-Length header and sets EOS as soon as all the expected bytes are read. In 2.4 and trunk, copying the headers from r->headers_out to backend->r-headers_in happens *after* the error_override handling. Thus the http input filter must read until timeout. Either we rearrange the original order of code, or we at least copy Content-Length and Transfer-Encoding headers from r->headers_out to backend->r_headers_in before doing ap_discard_request_body. Somethin like const char *tmp; if (tmp = apr_table_get(r->headers_out, "Content-Length")) { apr_table_set(backend->r->headers_in, "Content-Length", tmp); } else if (tmp = apr_table_get(r->headers_out, "Transfer-Encoding")) { apr_table_set(backend->r->headers_in, "Transfer-Encoding", tmp); } else if (te) { apr_table_set(backend->r->headers_in, "Transfer-Encoding", te); } ap_discard_request_body(backend->r); ... I will check svn history to get an idea, why the code order was changed. -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
