diff options
author | jeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-09-14 00:05:37 +0000 |
---|---|---|
committer | jeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-09-14 00:05:37 +0000 |
commit | 085cbb8139cd4f3e87a190fd033958e521390f86 (patch) | |
tree | 2cc1cf56a93f8efa7ebdc4df3fa2647144469db7 /channels | |
parent | d8d1e1354c0876e927f3be4cb86971b9a68a85cb (diff) |
implement reload
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1510 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-x | channels/chan_skinny.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 3784b06de..c50b49ab5 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() { |