apr_interval_time_t saved_sock_timeout = UNSET;
reqtimeout_con_cfg *ccfg = f->ctx;
- /* connections can remove the filter even if configured */
- if (apr_table_get(f->c->notes, "remove-reqtimeout")) {
- ap_remove_input_filter(f);
- return ap_get_brigade(f->next, bb, mode, block, readbytes);
- }
-
- /* connections can bypass the filter even if configured */
- if (apr_table_get(f->c->notes, "bypass-reqtimeout")) {
- return ap_get_brigade(f->next, bb, mode, block, readbytes);
- }
-
if (ccfg->in_keep_alive) {
/* For this read, the normal keep-alive timeout must be used */
ccfg->in_keep_alive = 0;
return rv;
}
+/* Search thru the input filters and remove the reqtimeout one */
+static void remove_reqtimeout(ap_filter_t *next)
+{
+ ap_filter_t *reqto = NULL;
+ ap_filter_rec_t *filter;
+
+ filter = ap_get_input_filter_handle("reqtimeout");
+ if (!filter) {
+ return;
+ }
+
+ while (next) {
+ if (next->frec == filter) {
+ reqto = next;
+ break;
+ }
+ next = next->next;
+ }
+ if (reqto) {
+ ap_remove_input_filter(reqto);
+ }
+}
+
/*
* process the request and write the response.
*/
header_brigade = apr_brigade_create(p, backconn->bucket_alloc);
- apr_table_setn(c->notes, "bypass-reqtimeout", "1");
-
ap_log_rerror(APLOG_MARK, APLOG_TRACE2, 0, r, "sending request");
rv = ap_proxy_create_hdrbrgd(p, header_brigade, r, conn,
r->input_filters = c->input_filters;
r->proto_input_filters = c->input_filters;
+ remove_reqtimeout(r->input_filters);
+
while (1) { /* Infinite loop until error (one side closes the connection) */
if ((rv = apr_pollset_poll(pollset, -1, &pollcnt, &signalled))
!= APR_SUCCESS) {