Commit 87e97a39 authored by Ian Holsman's avatar Ian Holsman
Browse files

initial port of new Request-mode HTTP_IN filter to proxy.

Status: It serves a reverse-proxy page.. but SLOWLY.
VERY SLOWLY.
still looking at why, but now it serves pages instead of dumping core.
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91363 13f79535-47bb-0310-9956-ffa450edef68
parent b005afb0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -258,7 +258,8 @@ PROXY_DECLARE(int) ap_proxy_is_domainname(struct dirconn_entry *This, apr_pool_t
PROXY_DECLARE(int) ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p);
PROXY_DECLARE(int) ap_proxy_is_word(struct dirconn_entry *This, apr_pool_t *p);
PROXY_DECLARE(int) ap_proxy_checkproxyblock(request_rec *r, proxy_server_conf *conf, apr_sockaddr_t *uri_addr);
PROXY_DECLARE(int) ap_proxy_pre_http_connection(conn_rec *c, request_rec *r);
PROXY_DECLARE(int) ap_proxy_pre_http_connection(conn_rec *c);
PROXY_DECLARE(int) ap_proxy_pre_http_request(conn_rec *c, request_rec *r);
PROXY_DECLARE(apr_status_t) ap_proxy_string_read(conn_rec *c, apr_bucket_brigade *bb, char *buff, size_t bufflen, int *eos);
PROXY_DECLARE(void) ap_proxy_reset_output_filters(conn_rec *c);

+2 −2
Original line number Diff line number Diff line
@@ -774,7 +774,7 @@ int ap_proxy_ftp_handler(request_rec *r, proxy_server_conf *conf,
     */

    /* set up the connection filters */
    ap_proxy_pre_http_connection(origin, NULL);
    ap_proxy_pre_http_connection(origin);

    /* possible results: */
    /*   120 Service ready in nnn minutes. */
@@ -1558,7 +1558,7 @@ int ap_proxy_ftp_handler(request_rec *r, proxy_server_conf *conf,
    }

    /* set up the connection filters */
    ap_proxy_pre_http_connection(remote, NULL);
    ap_proxy_pre_http_connection(remote);


    /*
+1 −1
Original line number Diff line number Diff line
@@ -432,7 +432,7 @@ apr_status_t ap_proxy_http_create_connection(apr_pool_t *p, request_rec *r,
                     "proxy: connection complete");

        /* set up the connection filters */
        ap_proxy_pre_http_connection(*origin, NULL);
        ap_proxy_pre_http_connection(*origin);
    }
    return OK;
}
+11 −4
Original line number Diff line number Diff line
@@ -373,8 +373,11 @@ PROXY_DECLARE(request_rec *)ap_proxy_make_fake_req(conn_rec *c, request_rec *r)
    rp->server = r->server;
    rp->request_time = r->request_time;
    rp->connection      = c;
    rp->output_filters=NULL;
    rp->input_filters=NULL;
    rp->output_filters  = c->output_filters;
    rp->input_filters   = c->input_filters;
    ap_proxy_pre_http_request(c,rp);

    rp->request_config  = ap_create_request_config(c->pool);
    req_cfg = apr_pcalloc(rp->pool, sizeof(core_request_config));
@@ -976,14 +979,18 @@ PROXY_DECLARE(int) ap_proxy_checkproxyblock(request_rec *r, proxy_server_conf *c
}

/* set up the minimal filter set */
PROXY_DECLARE(int) ap_proxy_pre_http_connection(conn_rec *c, request_rec *r)
PROXY_DECLARE(int) ap_proxy_pre_http_connection(conn_rec *c)
{
//    ap_add_input_filter("HTTP_IN", NULL, r, c);
    ap_add_input_filter("CORE_IN", NULL, NULL, c);
    ap_add_output_filter("CORE", NULL, NULL, c);
    return OK;
}
PROXY_DECLARE(int) ap_proxy_pre_http_request(conn_rec *c, request_rec *r)
{
    ap_add_input_filter("HTTP_IN", NULL, r, c);
    ap_add_input_filter("CORE_IN", NULL, r, c);
    ap_add_output_filter("CORE", NULL, r, c);
    return OK;
}

/* converts a series of buckets into a string */
PROXY_DECLARE(apr_status_t) ap_proxy_string_read(conn_rec *c, apr_bucket_brigade *bb,
				  char *buff, size_t bufflen, int *eos)