mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
mod_http2: mergine trunk+2.4.x code divergences back into a single source with proper MMN checks.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1849296 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include <assert.h>
|
||||
|
||||
#include <apr_strings.h>
|
||||
#include <ap_mmn.h>
|
||||
|
||||
#include <httpd.h>
|
||||
#include <http_core.h>
|
||||
@@ -206,13 +207,75 @@ h2_request *h2_request_clone(apr_pool_t *p, const h2_request *src)
|
||||
return dst;
|
||||
}
|
||||
|
||||
#if !AP_MODULE_MAGIC_AT_LEAST(20150222, 13)
|
||||
static request_rec *my_ap_create_request(conn_rec *c)
|
||||
{
|
||||
apr_pool_t *p;
|
||||
request_rec *r;
|
||||
|
||||
apr_pool_create(&p, c->pool);
|
||||
apr_pool_tag(p, "request");
|
||||
r = apr_pcalloc(p, sizeof(request_rec));
|
||||
AP_READ_REQUEST_ENTRY((intptr_t)r, (uintptr_t)c);
|
||||
r->pool = p;
|
||||
r->connection = c;
|
||||
r->server = c->base_server;
|
||||
|
||||
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, 5);
|
||||
r->trailers_in = apr_table_make(r->pool, 5);
|
||||
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->notes = apr_table_make(r->pool, 5);
|
||||
|
||||
r->request_config = ap_create_request_config(r->pool);
|
||||
/* Must be set before we run create request hook */
|
||||
|
||||
r->proto_output_filters = c->output_filters;
|
||||
r->output_filters = r->proto_output_filters;
|
||||
r->proto_input_filters = c->input_filters;
|
||||
r->input_filters = r->proto_input_filters;
|
||||
ap_run_create_request(r);
|
||||
r->per_dir_config = r->server->lookup_defaults;
|
||||
|
||||
r->sent_bodyct = 0; /* bytect isn't for body */
|
||||
|
||||
r->read_length = 0;
|
||||
r->read_body = REQUEST_NO_BODY;
|
||||
|
||||
r->status = HTTP_OK; /* Until further notice */
|
||||
r->header_only = 0;
|
||||
r->the_request = NULL;
|
||||
|
||||
/* Begin by presuming any module can make its own path_info assumptions,
|
||||
* until some module interjects and changes the value.
|
||||
*/
|
||||
r->used_path_info = AP_REQ_DEFAULT_PATH_INFO;
|
||||
|
||||
r->useragent_addr = c->client_addr;
|
||||
r->useragent_ip = c->client_ip;
|
||||
|
||||
return r;
|
||||
}
|
||||
#endif
|
||||
|
||||
request_rec *h2_request_create_rec(const h2_request *req, conn_rec *c)
|
||||
{
|
||||
int access_status = HTTP_OK;
|
||||
const char *rpath;
|
||||
const char *s;
|
||||
|
||||
#if AP_MODULE_MAGIC_AT_LEAST(20150222, 13)
|
||||
request_rec *r = ap_create_request(c);
|
||||
#else
|
||||
request_rec *r = my_ap_create_request(c);
|
||||
#endif
|
||||
|
||||
r->headers_in = apr_table_clone(r->pool, req->headers);
|
||||
|
||||
@@ -291,3 +354,4 @@ traceout:
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user