detect if a client to a streaming reply hangs up; from dug song

comments from me :-)


svn:r300
This commit is contained in:
Niels Provos 2006-12-09 05:14:37 +00:00
parent de7db33a61
commit 04bdb2488c

11
http.c
View File

@ -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);