From d6ba77a74b3a013518f185f14b0467382b4292a6 Mon Sep 17 00:00:00 2001
From: Jeremy McNamara <jj@nufone.net>
Date: Sun, 14 Sep 2003 00:05:37 +0000
Subject: [PATCH] implement reload

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1510 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_skinny.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 3784b06dec..c50b49ab54 100755
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -2601,6 +2601,45 @@ static int reload_config(void)
 	return 0;
 }
 
+void delete_devices(void)
+{
+	struct skinny_device *d, *dlast;
+	struct skinny_line *l, *llast;
+	struct skinny_subchannel *sub, *slast;
+	
+	ast_mutex_lock(&devicelock);
+	
+	/* Delete all devices */
+	for (d=devices;d;) {
+		
+		/* Delete all lines for this device */
+		for (l=d->lines;l;) {
+			/* Delete all subchannels for this line */
+			for (sub=l->sub;sub;) {
+				slast = sub;
+				sub = sub->next;
+				free(slast);
+			}
+			llast = l;
+			l = l->next;
+			free(llast);
+		}
+		dlast = d;
+		d = d->next;
+		free(dlast);
+	}
+	devices=NULL;
+	ast_mutex_unlock(&devicelock);
+}
+
+int reload(void)
+{
+	delete_devices();
+	reload_config();
+	restart_monitor();
+	return 0;
+}
+
 
 int load_module()
 {
-- 
GitLab