[asterisk-commits] qwell: branch 1.4 r43469 - /branches/1.4/channels/chan_skinny.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Sep 21 20:01:17 MST 2006


Author: qwell
Date: Thu Sep 21 22:01:16 2006
New Revision: 43469

URL: http://svn.digium.com/view/asterisk?rev=43469&view=rev
Log:
First shot at unload_module in chan_skinny..

More to come.

Modified:
    branches/1.4/channels/chan_skinny.c

Modified: branches/1.4/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_skinny.c?rev=43469&r1=43468&r2=43469&view=diff
==============================================================================
--- branches/1.4/channels/chan_skinny.c (original)
+++ branches/1.4/channels/chan_skinny.c Thu Sep 21 22:01:16 2006
@@ -4549,52 +4549,40 @@
 
 static int unload_module(void)
 {
-#if 0
-	struct skinnysession *s;
-
-	/* 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;
-	}
-	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;
-	}
+	delete_devices();
+
+	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);
+
+#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)",



More information about the asterisk-commits mailing list