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 |
/* |