Fix async and FastCGI timeout issues
This commit is contained in:
@ -256,7 +256,7 @@ void async_thread(void) {
|
|||||||
min_ts = -1000, cur_ts = clock_micros();
|
min_ts = -1000, cur_ts = clock_micros();
|
||||||
for (int i = 0; i < list_size(local); i++) {
|
for (int i = 0; i < list_size(local); i++) {
|
||||||
evt_listen_t *evt = local[i];
|
evt_listen_t *evt = local[i];
|
||||||
if (!evt->socket) continue;
|
if (!evt->socket || evt->socket->timeout_us < 0) continue;
|
||||||
|
|
||||||
ts = evt->socket->ts_last + evt->socket->timeout_us - cur_ts;
|
ts = evt->socket->ts_last + evt->socket->timeout_us - cur_ts;
|
||||||
if (min_ts == -1000 || ts < min_ts) min_ts = ts;
|
if (min_ts == -1000 || ts < min_ts) min_ts = ts;
|
||||||
@ -307,7 +307,7 @@ void async_thread(void) {
|
|||||||
evt_listen_t *evt = local[i];
|
evt_listen_t *evt = local[i];
|
||||||
if (!evt->socket) continue;
|
if (!evt->socket) continue;
|
||||||
|
|
||||||
if ((cur_ts - evt->socket->ts_last) >= evt->socket->timeout_us) {
|
if (evt->socket->timeout_us >= 0 && (cur_ts - evt->socket->ts_last) >= evt->socket->timeout_us) {
|
||||||
evt->to_cb(evt->arg);
|
evt->to_cb(evt->arg);
|
||||||
|
|
||||||
if (epoll_ctl(epoll_fd, EPOLL_CTL_DEL, evt->fd, NULL) == -1) {
|
if (epoll_ctl(epoll_fd, EPOLL_CTL_DEL, evt->fd, NULL) == -1) {
|
||||||
|
@ -195,6 +195,7 @@ int fastcgi_init(fastcgi_cnx_t *conn, int mode, unsigned int req_num, const sock
|
|||||||
|
|
||||||
conn->fd_out = pipes[1][1];
|
conn->fd_out = pipes[1][1];
|
||||||
conn->out.socket = pipes[1][0];
|
conn->out.socket = pipes[1][0];
|
||||||
|
sock_set_timeout(&conn->out, FASTCGI_TIMEOUT);
|
||||||
|
|
||||||
conn->fd_err = pipes[0][1];
|
conn->fd_err = pipes[0][1];
|
||||||
conn->err = fdopen(pipes[0][0], "r");
|
conn->err = fdopen(pipes[0][0], "r");
|
||||||
|
@ -162,6 +162,7 @@ static void fastcgi_error_cb(chunk_ctx_t *ctx) {
|
|||||||
|
|
||||||
logger_set_prefix("[%s%*s%s]%s", BLD_STR, ADDRSTRLEN, ctx->client->req_host, CLR_STR, ctx->client->log_prefix);
|
logger_set_prefix("[%s%*s%s]%s", BLD_STR, ADDRSTRLEN, ctx->client->req_host, CLR_STR, ctx->client->log_prefix);
|
||||||
|
|
||||||
|
// FIXME segfault on error_cb
|
||||||
warning("Closing connection due to FastCGI error");
|
warning("Closing connection due to FastCGI error");
|
||||||
if(ctx->client->fcgi_ctx) {
|
if(ctx->client->fcgi_ctx) {
|
||||||
fastcgi_close(ctx->client->fcgi_ctx);
|
fastcgi_close(ctx->client->fcgi_ctx);
|
||||||
|
Reference in New Issue
Block a user