|
|
|
@ -2017,12 +2017,15 @@ static handler_t gw_recv_response(server *srv, gw_handler_ctx *hctx) {
|
|
|
|
|
? buffer_init() |
|
|
|
|
: hctx->response; |
|
|
|
|
|
|
|
|
|
switch (http_response_read(srv, hctx->remote_conn, &hctx->opts, |
|
|
|
|
b, hctx->fd, &hctx->fde_ndx)) { |
|
|
|
|
handler_t rc = http_response_read(srv, hctx->remote_conn, &hctx->opts, |
|
|
|
|
b, hctx->fd, &hctx->fde_ndx); |
|
|
|
|
|
|
|
|
|
if (b != hctx->response) buffer_free(b); |
|
|
|
|
|
|
|
|
|
switch (rc) { |
|
|
|
|
default: |
|
|
|
|
break; |
|
|
|
|
return HANDLER_GO_ON; |
|
|
|
|
case HANDLER_FINISHED: |
|
|
|
|
if (b != hctx->response) buffer_free(b); |
|
|
|
|
if (hctx->gw_mode == GW_AUTHORIZER |
|
|
|
|
&& (200 == con->http_status || 0 == con->http_status)) { |
|
|
|
|
/*
|
|
|
|
@ -2075,7 +2078,6 @@ static handler_t gw_recv_response(server *srv, gw_handler_ctx *hctx) {
|
|
|
|
|
return HANDLER_FINISHED; |
|
|
|
|
case HANDLER_COMEBACK: /*(not expected; treat as error)*/ |
|
|
|
|
case HANDLER_ERROR: |
|
|
|
|
if (b != hctx->response) buffer_free(b); |
|
|
|
|
/* (optimization to detect backend process exit while processing a
|
|
|
|
|
* large number of ready events; (this block could be removed)) */ |
|
|
|
|
if (proc->is_local && 1 == proc->load && proc->pid == hctx->pid |
|
|
|
@ -2127,9 +2129,6 @@ static handler_t gw_recv_response(server *srv, gw_handler_ctx *hctx) {
|
|
|
|
|
gw_connection_close(srv, hctx); |
|
|
|
|
return HANDLER_FINISHED; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (b != hctx->response) buffer_free(b); |
|
|
|
|
return HANDLER_GO_ON; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|