mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-25 10:59:35 -05:00
Handle canceled read during sending data over stats channel
An assertion failure would be triggered when the TCP connection is canceled during sending the data back to the client. Don't require the state to be `RECV` on non successful read to gracefully handle canceled TCP connection during the SEND state of the HTTPD channel.
This commit is contained in:
parent
0ffa8d1a9c
commit
6562227cc8
1 changed files with 4 additions and 2 deletions
|
|
@ -907,13 +907,14 @@ httpd_request(isc_nmhandle_t *handle, isc_result_t eresult,
|
|||
|
||||
httpd = isc_nmhandle_getdata(handle);
|
||||
|
||||
REQUIRE(httpd->state == RECV);
|
||||
REQUIRE(httpd->handle == handle);
|
||||
|
||||
if (eresult != ISC_R_SUCCESS) {
|
||||
goto cleanup_readhandle;
|
||||
}
|
||||
|
||||
REQUIRE(httpd->state == RECV);
|
||||
|
||||
result = process_request(
|
||||
httpd, region == NULL ? &(isc_region_t){ NULL, 0 } : region,
|
||||
&buflen);
|
||||
|
|
@ -1200,7 +1201,6 @@ httpd_senddone(isc_nmhandle_t *handle, isc_result_t result, void *arg) {
|
|||
isc_httpd_t *httpd = (isc_httpd_t *)arg;
|
||||
|
||||
REQUIRE(VALID_HTTPD(httpd));
|
||||
REQUIRE(httpd->state == SEND);
|
||||
REQUIRE(httpd->handle == handle);
|
||||
|
||||
isc_buffer_free(&httpd->sendbuffer);
|
||||
|
|
@ -1227,6 +1227,8 @@ httpd_senddone(isc_nmhandle_t *handle, isc_result_t result, void *arg) {
|
|||
goto cleanup_readhandle;
|
||||
}
|
||||
|
||||
REQUIRE(httpd->state == SEND);
|
||||
|
||||
httpd->state = RECV;
|
||||
httpd->sendhandle = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue