* University of Illinois, Urbana-Champaign.
*/
+#define CORE_PRIVATE
+
#include "mod_proxy.h"
/*
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 */
#include "apr_pools.h"
#include "apr_strings.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_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 "mod_core.h"
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 */
/* CONNECT method for Apache proxy */
+#define CORE_PRIVATE
+
#include "mod_proxy.h"
#if 0
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)
* 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.
* 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;