[Asterisk-code-review] pbx dundi: Run cleanup on failed load. (asterisk[master])

Corey Farrell asteriskteam at digium.com
Sat Jan 9 18:07:19 CST 2016


Corey Farrell has uploaded a new change for review.

  https://gerrit.asterisk.org/1972

Change subject: pbx_dundi: Run cleanup on failed load.
......................................................................

pbx_dundi: Run cleanup on failed load.

During failed startup of pbx_dundi no cleanup was performed.  Add a call
to unload_module before returning AST_MODULE_LOAD_DECLINE.

ASTERISK-25677 #close

Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29
---
M pbx/pbx_dundi.c
1 file changed, 13 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/72/1972/1

diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c
index ec1d218..10495ac 100644
--- a/pbx/pbx_dundi.c
+++ b/pbx/pbx_dundi.c
@@ -5014,30 +5014,31 @@
 	io = io_context_create();
 	sched = ast_sched_context_create();
 
-	if (!io || !sched)
-		return AST_MODULE_LOAD_DECLINE;
+	if (!io || !sched) {
+		goto declined;
+	}
 
-	if (set_config("dundi.conf", &sin, 0))
-		return AST_MODULE_LOAD_DECLINE;
+	if (set_config("dundi.conf", &sin, 0)) {
+		goto declined;
+	}
 
 	netsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
 
 	if (netsocket < 0) {
 		ast_log(LOG_ERROR, "Unable to create network socket: %s\n", strerror(errno));
-		return AST_MODULE_LOAD_DECLINE;
+		goto declined;
 	}
 	if (bind(netsocket, (struct sockaddr *) &sin, sizeof(sin))) {
 		ast_log(LOG_ERROR, "Unable to bind to %s port %d: %s\n",
 			ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port), strerror(errno));
-		return AST_MODULE_LOAD_DECLINE;
+		goto declined;
 	}
 
 	ast_set_qos(netsocket, tos, 0, "DUNDi");
 
 	if (start_network_thread()) {
 		ast_log(LOG_ERROR, "Unable to start network thread\n");
-		close(netsocket);
-		return AST_MODULE_LOAD_DECLINE;
+		goto declined;
 	}
 
 	ast_cli_register_multiple(cli_dundi, ARRAY_LEN(cli_dundi));
@@ -5050,6 +5051,10 @@
 	ast_verb(2, "DUNDi Ready and Listening on %s port %d\n", ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
 
 	return AST_MODULE_LOAD_SUCCESS;
+
+declined:
+	unload_module();
+	return AST_MODULE_LOAD_DECLINE;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Distributed Universal Number Discovery (DUNDi)",

-- 
To view, visit https://gerrit.asterisk.org/1972
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Corey Farrell <git at cfware.com>



More information about the asterisk-code-review mailing list