[BUG] process_response must not enable the read FD

Since the separation of TCP and HTTP state machines, the HTTP
code must not play anymore with the file descriptor status
without checking if they are closed. Remains of such practice
have caused busy loops under some circumstances (mainly when
client closed during headers response).
This commit is contained in:
Willy Tarreau 2008-08-16 16:11:07 +02:00
parent 7a52a5c468
commit 9a8c5de375

View File

@ -2570,17 +2570,6 @@ int process_response(struct session *t)
}
}
if ((rep->l < rep->rlim - rep->data) && !tick_isset(rep->rex)) {
EV_FD_COND_S(t->srv_fd, DIR_RD);
/* fd in DIR_RD was disabled, perhaps because of a previous buffer
* full. We cannot loop here since stream_sock_read will disable it only if
* rep->l == rlim-data
*/
rep->rex = tick_add_ifset(now_ms, t->be->timeout.server);
}
/*
* Now we quickly check if we have found a full valid response.
* If not so, we check the FD and buffer states before leaving.