mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-05 18:30:32 -04:00
detect if a client to a streaming reply hangs up; from dug song
comments from me :-) svn:r300
This commit is contained in:
parent
de7db33a61
commit
04bdb2488c
11
http.c
11
http.c
@ -1265,10 +1265,12 @@ evhttp_connection_set_closecb(struct evhttp_connection *evcon,
|
|||||||
evcon->closecb = cb;
|
evcon->closecb = cb;
|
||||||
evcon->closecb_arg = cbarg;
|
evcon->closecb_arg = cbarg;
|
||||||
/*
|
/*
|
||||||
* xxx: we cannot just call evhttp_connection_start_detectclose here
|
* applications that stream to clients forever might want to
|
||||||
* that's valid only for client initiated connections that currently
|
* detect when a browser or client has stopped receiving the
|
||||||
* do not process any requests.
|
* stream. this would be detected on the next write in any case,
|
||||||
|
* however, we can release resources earlier using this.
|
||||||
*/
|
*/
|
||||||
|
evhttp_connection_start_detectclose(evcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1376,6 +1378,9 @@ evhttp_send_done(struct evhttp_connection *evcon, void *arg)
|
|||||||
struct evhttp_request *req = TAILQ_FIRST(&evcon->requests);
|
struct evhttp_request *req = TAILQ_FIRST(&evcon->requests);
|
||||||
TAILQ_REMOVE(&evcon->requests, req, next);
|
TAILQ_REMOVE(&evcon->requests, req, next);
|
||||||
|
|
||||||
|
/* delete possible close detection events */
|
||||||
|
evhttp_connection_stop_detectclose(evcon);
|
||||||
|
|
||||||
need_close = evhttp_is_connection_close(req->input_headers) ||
|
need_close = evhttp_is_connection_close(req->input_headers) ||
|
||||||
evhttp_is_connection_close(req->output_headers);
|
evhttp_is_connection_close(req->output_headers);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user