PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- *) mod_proxy_hcheck: Don't validate timed out responses.
- trunk patch: http://svn.apache.org/r1779574
- http://svn.apache.org/r1779623
- 2.4.x patch: trunk works *after r1779573 above* (modulo CHANGES)
- +1: ylavic, jim, druggeri
-
*) mod_autoindex: Add IndexOptions UseOldDateFormat to allow the date
format from 2.2 in the Last Modified column. PR60846.
trunk patch: http://svn.apache.org/r1787525
r->connection->bucket_alloc = ba;
r->server = conn->base_server;
+ r->proxyreq = PROXYREQ_RESPONSE;
+
r->user = NULL;
r->ap_auth_type = NULL;
r->allowed_methods = ap_make_method_list(p, 2);
- r->headers_in = apr_table_make(r->pool, 25);
- r->trailers_in = apr_table_make(r->pool, 5);
+ r->headers_in = apr_table_make(r->pool, 1);
+ r->trailers_in = apr_table_make(r->pool, 1);
r->subprocess_env = apr_table_make(r->pool, 25);
r->headers_out = apr_table_make(r->pool, 12);
r->err_headers_out = apr_table_make(r->pool, 5);
- r->trailers_out = apr_table_make(r->pool, 5);
+ r->trailers_out = apr_table_make(r->pool, 1);
r->notes = apr_table_make(r->pool, 5);
r->kept_body = apr_brigade_create(r->pool, r->connection->bucket_alloc);
r->read_body = REQUEST_NO_BODY;
r->status = HTTP_OK; /* Until further notice */
- r->header_only = 1;
r->the_request = NULL;
/* Begin by presuming any module can make its own path_info assumptions,
r->method = method;
/* Provide quick information about the request method as soon as known */
r->method_number = ap_method_number_of(r->method);
- if (r->method_number == M_GET && r->method[0] == 'G') {
+ if (r->method_number == M_OPTIONS
+ || (r->method_number == M_GET && r->method[0] == 'H')) {
+ r->header_only = 1;
+ }
+ else {
r->header_only = 0;
}
APR_BLOCK_READ, len);
if (rv != APR_SUCCESS) {
- if (APR_STATUS_IS_TIMEUP(rv) || APR_STATUS_IS_EOF(rv)) {
+ if (APR_STATUS_IS_EOF(rv)) {
rv = APR_SUCCESS;
break;
}
if ((status = hc_read_headers(r)) != OK) {
return backend_cleanup("HCOH", backend, ctx->s, status);
}
- if (hc->s->method == GET) {
- if ((status = hc_read_body(r, bb)) != OK) {
+ if (!r->header_only) {
+ apr_table_t *saved_headers_in = r->headers_in;
+ r->headers_in = apr_table_copy(r->pool, r->headers_out);
+ ap_proxy_pre_http_request(backend->connection, r);
+ status = hc_read_body(r, bb);
+ r->headers_in = saved_headers_in;
+ if (status != OK) {
return backend_cleanup("HCOH", backend, ctx->s, status);
}
+ r->trailers_out = apr_table_copy(r->pool, r->trailers_in);
}
if (*worker->s->hcexpr &&