* @param conf current proxy server configuration
* @param worker worker used for processing request
* @param conn proxy connection struct
- * @param ppool long living memory pool
* @param uri processed uri
* @param url request url
* @param proxyname are we connecting directly or via s proxy
proxy_server_conf *conf,
proxy_worker *worker,
proxy_conn_rec *conn,
- apr_pool_t *ppool,
apr_uri_t *uri,
char **url,
const char *proxyname,
backend->close_on_recycle = 0;
/* Step One: Determine Who To Connect To */
- status = ap_proxy_determine_connection(p, r, conf, worker, backend, c->pool,
+ status = ap_proxy_determine_connection(p, r, conf, worker, backend,
uri, &url, proxyname, proxyport,
server_portstr,
sizeof(server_portstr));
/* Step One: Determine Who To Connect To */
if ((status = ap_proxy_determine_connection(p, r, conf, worker, backend,
- c->pool, uri, &url, proxyname,
+ uri, &url, proxyname,
proxyport, server_portstr,
sizeof(server_portstr))) != OK)
goto cleanup;
/* deterimine if the connection need to be closed */
if (conn->close_on_recycle || conn->close) {
- if (conn->sock)
- apr_socket_close(conn->sock);
- conn->sock = NULL;
+ apr_pool_t *p = conn->pool;
+ apr_pool_clear(conn->pool);
+ memset(conn, 0, sizeof(proxy_conn_rec));
+ conn->pool = p;
+ conn->worker = worker;
}
#if APR_HAS_THREADS
if (worker->hmax && worker->cp->res) {
* when disconnecting from backend.
*/
apr_pool_create(&ctx, pool);
- conn = apr_pcalloc(ctx, sizeof(proxy_conn_rec));
+ conn = apr_pcalloc(pool, sizeof(proxy_conn_rec));
conn->pool = ctx;
conn->worker = worker;
proxy_server_conf *conf,
proxy_worker *worker,
proxy_conn_rec *conn,
- apr_pool_t *ppool,
apr_uri_t *uri,
char **url,
const char *proxyname,
*/
/* are we connecting directly, or via a proxy? */
if (proxyname) {
- conn->hostname = apr_pstrdup(ppool, proxyname);
+ conn->hostname = apr_pstrdup(conn->pool, proxyname);
conn->port = proxyport;
} else {
- conn->hostname = apr_pstrdup(ppool, uri->hostname);
+ conn->hostname = apr_pstrdup(conn->pool, uri->hostname);
conn->port = uri->port;
*url = apr_pstrcat(p, uri->path, uri->query ? "?" : "",
uri->query ? uri->query : "",
err = apr_sockaddr_info_get(&(conn->addr),
conn->hostname, APR_UNSPEC,
conn->port, 0,
- p);
+ conn->pool);
}
else if (!worker->cp->addr) {
/* Worker can have the single constant backend adress.