Account for new evhttp behaviour on failed incoming connections

The evcon associated with a request is freed by evhttp when the connection
fails. Protect against a NULL evcon when handling the connection failure.
This commit is contained in:
Julien BLACHE 2010-07-23 18:15:18 +02:00
parent e396906fee
commit 81d09ed234
3 changed files with 12 additions and 5 deletions

View File

@ -129,6 +129,7 @@ static pthread_t tid_httpd;
static void
stream_end(struct stream_ctx *st, int failed)
{
if (st->req->evcon)
evhttp_connection_set_closecb(st->req->evcon, NULL, NULL);
if (!failed)

View File

@ -647,6 +647,7 @@ update_fail_cb(struct evhttp_connection *evcon, void *arg)
DPRINTF(E_DBG, L_DAAP, "Update request: client closed connection\n");
if (ur->req->evcon)
evhttp_connection_set_closecb(ur->req->evcon, NULL, NULL);
if (ur == update_requests)
@ -2873,7 +2874,9 @@ daap_deinit(void)
{
update_requests = ur->next;
if (ur->req->evcon)
evhttp_connection_set_closecb(ur->req->evcon, NULL, NULL);
free(ur);
}
}

View File

@ -351,6 +351,7 @@ update_fail_cb(struct evhttp_connection *evcon, void *arg)
DPRINTF(E_DBG, L_DACP, "Update request: client closed connection\n");
if (ur->req->evcon)
evhttp_connection_set_closecb(ur->req->evcon, NULL, NULL);
if (ur == update_requests)
@ -1703,7 +1704,9 @@ dacp_deinit(void)
{
update_requests = ur->next;
if (ur->req->evcon)
evhttp_connection_set_closecb(ur->req->evcon, NULL, NULL);
free(ur);
}