View | Details | Raw Unified | Return to bug 61284
Collapse All | Expand All

(-)modules/proxy/mod_proxy_wstunnel.c (-7 / +17 lines)
Lines 117-122 static int proxy_wstunnel_request(apr_pool_t *p, r Link Here
117
    apr_socket_t *client_socket = ap_get_conn_socket(c);
117
    apr_socket_t *client_socket = ap_get_conn_socket(c);
118
    int done = 0, replied = 0;
118
    int done = 0, replied = 0;
119
    const char *upgrade_method = *worker->s->upgrade ? worker->s->upgrade : "WebSocket";
119
    const char *upgrade_method = *worker->s->upgrade ? worker->s->upgrade : "WebSocket";
120
    ap_filter_t *saved_output_filters, *saved_proto_output_filters;
121
    int status = OK;
120
122
121
    header_brigade = apr_brigade_create(p, backconn->bucket_alloc);
123
    header_brigade = apr_brigade_create(p, backconn->bucket_alloc);
122
124
Lines 169-174 static int proxy_wstunnel_request(apr_pool_t *p, r Link Here
169
    pollfd.desc.s = client_socket;
171
    pollfd.desc.s = client_socket;
170
    apr_pollset_add(pollset, &pollfd);
172
    apr_pollset_add(pollset, &pollfd);
171
173
174
    saved_output_filters = r->output_filters;
175
    saved_proto_output_filters = r->proto_output_filters;
172
    ap_remove_input_filter_byhandle(c->input_filters, "reqtimeout");
176
    ap_remove_input_filter_byhandle(c->input_filters, "reqtimeout");
173
177
174
    r->output_filters = c->output_filters;
178
    r->output_filters = c->output_filters;
Lines 187-193 static int proxy_wstunnel_request(apr_pool_t *p, r Link Here
187
                continue;
191
                continue;
188
            }
192
            }
189
            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(02444) "error apr_poll()");
193
            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(02444) "error apr_poll()");
190
            return HTTP_INTERNAL_SERVER_ERROR;
194
            if (!replied) {
195
                status = HTTP_INTERNAL_SERVER_ERROR;
196
            }
197
            else {
198
                status = DONE;
199
            }
200
            break;
191
        }
201
        }
192
        ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, APLOGNO(02445)
202
        ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, APLOGNO(02445)
193
                      "woke from poll(), i=%d", pollcnt);
203
                      "woke from poll(), i=%d", pollcnt);
Lines 260-272 static int proxy_wstunnel_request(apr_pool_t *p, r Link Here
260
                  "finished with poll() - cleaning up");
270
                  "finished with poll() - cleaning up");
261
271
262
    if (!replied) {
272
    if (!replied) {
263
        return HTTP_BAD_GATEWAY;
273
        r->output_filters = saved_output_filters;
274
        r->proto_output_filters = saved_proto_output_filters;
275
        if (status == OK) {
276
            status = HTTP_BAD_GATEWAY;
277
        }
264
    }
278
    }
265
    else {
279
    return status;
266
        return OK;
267
    }
268
269
    return OK;
270
}
280
}
271
281
272
/*
282
/*

Return to bug 61284