diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 093b0833863703582c8ff2a4d65d6a7b232be2e5..bd86147f1edafc02cbd187c85788501f6ec2638e 100755
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -2539,6 +2539,7 @@ static int reload_config(void)
 		hp = ast_gethostbyname(ourhost, &ahp);
 		if (!hp) {
 			ast_log(LOG_WARNING, "Unable to get our IP address, Skinny disabled\n");
+			ast_destroy(cfg);
 			return 0;
 		}
 		memcpy(&__ourip, hp->h_addr, sizeof(__ourip));
@@ -2574,6 +2575,7 @@ static int reload_config(void)
 		skinnysock = socket(AF_INET, SOCK_STREAM, 0);
 		if(setsockopt(skinnysock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) {
 			ast_log(LOG_ERROR, "Set Socket Options failed: errno %d, %s", errno, strerror(errno));
+			ast_destroy(cfg);
 			return 0;
 		}
 
@@ -2586,6 +2588,7 @@ static int reload_config(void)
 							strerror(errno));
 				close(skinnysock);
 				skinnysock = -1;
+				ast_destroy(cfg);
 				return 0;
 			} 
 
@@ -2595,6 +2598,7 @@ static int reload_config(void)
 							strerror(errno));
 					close(skinnysock);
 					skinnysock = -1;
+					ast_destroy(cfg);
 					return 0;
 			}