From c4dfb3f2fd7dcf76cc8cfaa3775f32f854db6bb2 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Tue, 7 Mar 2006 19:28:41 +0000 Subject: [PATCH] Don't leak file pointers (and hence file descriptors) if we can't parse a range request. svn path=/icecast/trunk/icecast/; revision=10977 --- src/fserve.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/fserve.c b/src/fserve.c index 0a8cffee..2e5e54aa 100644 --- a/src/fserve.c +++ b/src/fserve.c @@ -526,21 +526,11 @@ int fserve_client_create (client_t *httpclient, const char *path) fserve_content_type(path)); } else { - httpclient->respcode = 416; - sock_write (httpclient->con->sock, - "HTTP/1.0 416 Request Range Not Satisfiable\r\n\r\n"); - client_destroy (httpclient); - return -1; + goto fail; } } else { - /* If we run into any issues with the ranges - we fallback to a normal/non-range request */ - httpclient->respcode = 416; - sock_write (httpclient->con->sock, - "HTTP/1.0 416 Request Range Not Satisfiable\r\n\r\n"); - client_destroy (httpclient); - return -1; + goto fail; } } else { @@ -560,6 +550,14 @@ int fserve_client_create (client_t *httpclient, const char *path) fserve_add_client (httpclient, file); return 0; + +fail: + fclose (file); + httpclient->respcode = 416; + sock_write (httpclient->con->sock, + "HTTP/1.0 416 Request Range Not Satisfiable\r\n\r\n"); + client_destroy (httpclient); + return -1; }