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();
|
||||
for (int i = 0; i < list_size(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;
|
||||
if (min_ts == -1000 || ts < min_ts) min_ts = ts;
|
||||
@ -307,7 +307,7 @@ void async_thread(void) {
|
||||
evt_listen_t *evt = local[i];
|
||||
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);
|
||||
|
||||
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->out.socket = pipes[1][0];
|
||||
sock_set_timeout(&conn->out, FASTCGI_TIMEOUT);
|
||||
|
||||
conn->fd_err = pipes[0][1];
|
||||
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);
|
||||
|
||||
// FIXME segfault on error_cb
|
||||
warning("Closing connection due to FastCGI error");
|
||||
if(ctx->client->fcgi_ctx) {
|
||||
fastcgi_close(ctx->client->fcgi_ctx);
|
||||
|
Reference in New Issue
Block a user