aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2006-09-22 03:09:22 +0000
committerqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2006-09-22 03:09:22 +0000
commit640a7028c3fa01f3f61fe8c81291fe9ec196e578 (patch)
treee3db2214ac6f289e4c6e41287d16e140462a9298
parentfa3f01d95f322b09ba0ccab4f0164fd86e5db8d1 (diff)
Merged revisions 43469 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r43469 | qwell | 2006-09-21 20:01:16 -0700 (Thu, 21 Sep 2006) | 4 lines First shot at unload_module in chan_skinny.. More to come. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@43470 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_skinny.c62
1 files changed, 25 insertions, 37 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 984164449..e8c4d326f 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -4521,52 +4521,40 @@ static int load_module(void)
static int unload_module(void)
{
-#if 0
- struct skinnysession *s;
+ delete_devices();
- /* close all IP connections */
- if (!ast_mutex_lock(&devicelock)) {
- /* Terminate tcp listener thread */
- } else {
- ast_log(LOG_WARNING, "Unable to lock the monitor\n");
- return -1;
- }
- if (!ast_mutex_lock(&monlock)) {
- if (monitor_thread && (monitor_thread != AST_PTHREADT_STOP)) {
- pthread_cancel(monitor_thread);
- pthread_kill(monitor_thread, SIGURG);
- pthread_join(monitor_thread, NULL);
- }
- monitor_thread = AST_PTHREADT_STOP;
- ast_mutex_unlock(&monlock);
- } else {
- ast_log(LOG_WARNING, "Unable to lock the monitor\n");
- return -1;
+ ast_mutex_lock(&monlock);
+ if (monitor_thread && (monitor_thread != AST_PTHREADT_STOP)) {
+ pthread_cancel(monitor_thread);
+ pthread_kill(monitor_thread, SIGURG);
+ pthread_join(monitor_thread, NULL);
}
- if (!ast_mutex_lock(&iflock)) {
- /* Destroy all the interfaces and free their memory */
- p = iflist;
- while(p) {
- pl = p;
- p = p->next;
- /* Free associated memory */
- ast_mutex_destroy(&pl->lock);
- free(pl);
- }
- iflist = NULL;
- ast_mutex_unlock(&iflock);
- } else {
- ast_log(LOG_WARNING, "Unable to lock the monitor\n");
- return -1;
+ monitor_thread = AST_PTHREADT_STOP;
+ ast_mutex_unlock(&monlock);
+
+#if 0 /* XXX This is...funky. Will fix shortly */
+ ast_mutex_lock(&sessionlock);
+ /* Destroy all the interfaces and free their memory */
+ p = iflist;
+ while(p) {
+ pl = p;
+ p = p->next;
+ /* Free associated memory */
+ ast_mutex_destroy(&pl->lock);
+ free(pl);
}
+ iflist = NULL;
+ ast_mutex_unlock(&sessionlock);
+#endif
ast_rtp_proto_unregister(&skinny_rtp);
ast_channel_unregister(&skinny_tech);
ast_cli_unregister_multiple(cli_skinny, sizeof(cli_skinny) / sizeof(struct ast_cli_entry));
+ close(skinnysock);
+ sched_context_destroy(sched);
+
return 0;
-#endif
- return -1;
}
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Skinny Client Control Protocol (Skinny)",