mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-05 10:20:07 -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_arg = cbarg;
|
||||
/*
|
||||
* xxx: we cannot just call evhttp_connection_start_detectclose here
|
||||
* that's valid only for client initiated connections that currently
|
||||
* do not process any requests.
|
||||
* applications that stream to clients forever might want to
|
||||
* detect when a browser or client has stopped receiving the
|
||||
* 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
|
||||
@ -1376,6 +1378,9 @@ evhttp_send_done(struct evhttp_connection *evcon, void *arg)
|
||||
struct evhttp_request *req = TAILQ_FIRST(&evcon->requests);
|
||||
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) ||
|
||||
evhttp_is_connection_close(req->output_headers);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user