mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
Stopped the CORE filter from sending off an HTTP response when a
CONNECT tunnel was closed. Fixed some filter definition madness that proves that I need some sleep. PR: Obtained from: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88770 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -56,6 +56,8 @@
|
||||
* University of Illinois, Urbana-Champaign.
|
||||
*/
|
||||
|
||||
#define CORE_PRIVATE
|
||||
|
||||
#include "mod_proxy.h"
|
||||
|
||||
/*
|
||||
@@ -717,10 +719,9 @@ static void register_hooks(apr_pool_t *p)
|
||||
ap_hook_handler(proxy_handler, NULL, NULL, APR_HOOK_FIRST);
|
||||
/* filename-to-URI translation */
|
||||
ap_hook_translate_name(proxy_trans, NULL, NULL, APR_HOOK_FIRST);
|
||||
#ifdef FTP_FILTER
|
||||
/* filters */
|
||||
ap_register_output_filter("PROXY_SEND_DIR", ap_proxy_send_dir_filter, AP_FTYPE_CONNECTION);
|
||||
#endif
|
||||
ap_register_output_filter("PROXY_NULL", ap_proxy_null_filter, AP_FTYPE_NETWORK);
|
||||
/* fixups */
|
||||
ap_hook_fixups(proxy_fixup, NULL, NULL, APR_HOOK_FIRST);
|
||||
/* post read_request handling */
|
||||
|
@@ -90,19 +90,19 @@
|
||||
#include "apr_pools.h"
|
||||
#include "apr_strings.h"
|
||||
|
||||
#include "httpd.h"
|
||||
#include "http_config.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_core.h"
|
||||
#include "http_protocol.h"
|
||||
#include "http_request.h"
|
||||
#include "http_vhost.h"
|
||||
#include "http_main.h"
|
||||
#include "http_log.h"
|
||||
#include "http_connection.h"
|
||||
#include "util_filter.h"
|
||||
#include "util_date.h"
|
||||
#include "util_uri.h"
|
||||
#include "httpd.h"
|
||||
#include "http_config.h"
|
||||
#include "http_protocol.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_log.h"
|
||||
#include "http_main.h"
|
||||
#include "http_core.h"
|
||||
#include "http_connection.h"
|
||||
#include "http_vhost.h"
|
||||
#include "http_request.h"
|
||||
#include "mod_core.h"
|
||||
|
||||
|
||||
@@ -223,12 +223,13 @@ typedef struct {
|
||||
|
||||
int ap_proxy_connect_handler(request_rec *r, char *url,
|
||||
const char *proxyhost, int proxyport);
|
||||
apr_status_t ap_proxy_null_filter(ap_filter_t *f, apr_bucket_brigade *bb);
|
||||
|
||||
/* proxy_ftp.c */
|
||||
|
||||
int ap_proxy_ftp_canon(request_rec *r, char *url);
|
||||
int ap_proxy_ftp_handler(request_rec *r, char *url);
|
||||
apr_status_t ap_proxy_send_dir_filter(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode);
|
||||
apr_status_t ap_proxy_send_dir_filter(ap_filter_t *f, apr_bucket_brigade *bb);
|
||||
|
||||
/* proxy_http.c */
|
||||
|
||||
|
@@ -58,6 +58,8 @@
|
||||
|
||||
/* CONNECT method for Apache proxy */
|
||||
|
||||
#define CORE_PRIVATE
|
||||
|
||||
#include "mod_proxy.h"
|
||||
|
||||
#if 0
|
||||
@@ -102,6 +104,11 @@ allowed_port(proxy_server_conf *conf, int port)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* a NULL filter for the connect tunnel */
|
||||
apr_status_t ap_proxy_null_filter(ap_filter_t *f, apr_bucket_brigade *bb)
|
||||
{
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
int ap_proxy_connect_handler(request_rec *r, char *url,
|
||||
const char *proxyname, int proxyport)
|
||||
@@ -254,14 +261,14 @@ int ap_proxy_connect_handler(request_rec *r, char *url,
|
||||
* Send the HTTP/1.1 CONNECT request to the remote server
|
||||
*/
|
||||
|
||||
/* XXXX FIXME: we are acting as a tunnel - the output filter stack should ideally
|
||||
/* we are acting as a tunnel - the output filter stack should
|
||||
* be completely empty, because when we are done here we are done completely.
|
||||
* Is there such a thing as a NULL filter?
|
||||
* We add the NULL filter to the stack to do this...
|
||||
*/
|
||||
/* r->output_filters = NULL;
|
||||
* r->connection->output_filters = NULL;
|
||||
* ap_add_output_filter("NULL", NULL, r, r->connection);
|
||||
*/
|
||||
r->output_filters = NULL;
|
||||
r->connection->output_filters = NULL;
|
||||
ap_add_output_filter("PROXY_NULL", NULL, r, r->connection);
|
||||
|
||||
|
||||
/* If we are connecting through a remote proxy, we need to pass
|
||||
* the CONNECT request on to it.
|
||||
|
@@ -253,7 +253,7 @@ static int ftp_getrc_msg(conn_rec *c, apr_bucket_brigade *bb, char *msgbuf, int
|
||||
* all in good time...! :)
|
||||
*/
|
||||
|
||||
apr_status_t ap_proxy_send_dir_filter(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode)
|
||||
apr_status_t ap_proxy_send_dir_filter(ap_filter_t *f, apr_bucket_brigade *bb)
|
||||
{
|
||||
conn_rec *c = f->r->connection;
|
||||
apr_pool_t *p = f->r->pool;
|
||||
|
Reference in New Issue
Block a user