]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 43469 via svnmerge from
authorJason Parker <jparker@digium.com>
Fri, 22 Sep 2006 03:09:22 +0000 (03:09 +0000)
committerJason Parker <jparker@digium.com>
Fri, 22 Sep 2006 03:09:22 +0000 (03:09 +0000)
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: https://origsvn.digium.com/svn/asterisk/trunk@43470 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_skinny.c

index 98416444929798ac7ba205908becbb49f4fcf753..e8c4d326fed99cf8eb2e5440946fdef4f6372ee2 100644 (file)
@@ -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)",