From 29829640bf10b2d517c1aed12cc31deb5897285c Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Tue, 18 Oct 2005 22:52:21 +0000
Subject: [PATCH] it's a good idea to unregister everything before calling
 STANDARD_HANGUP_LOCALUSERS

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6828 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_adsiprog.c              |  7 ++-
 apps/app_alarmreceiver.c         |  7 ++-
 apps/app_authenticate.c          |  7 ++-
 apps/app_cdr.c                   |  7 ++-
 apps/app_chanisavail.c           |  7 ++-
 apps/app_chanspy.c               |  7 ++-
 apps/app_controlplayback.c       |  6 ++-
 apps/app_curl.c                  | 21 ++++++---
 apps/app_cut.c                   | 25 ++++++----
 apps/app_datetime.c              |  7 ++-
 apps/app_db.c                    |  3 +-
 apps/app_dial.c                  | 15 ++++--
 apps/app_dictate.c               |  7 ++-
 apps/app_directed_pickup.c       |  6 ++-
 apps/app_directory.c             |  7 ++-
 apps/app_disa.c                  |  7 ++-
 apps/app_dumpchan.c              |  7 ++-
 apps/app_echo.c                  |  7 ++-
 apps/app_enumlookup.c            | 21 +++++----
 apps/app_eval.c                  |  7 ++-
 apps/app_exec.c                  |  7 ++-
 apps/app_externalivr.c           |  6 ++-
 apps/app_festival.c              |  7 ++-
 apps/app_flash.c                 |  7 ++-
 apps/app_forkcdr.c               |  7 ++-
 apps/app_getcpeid.c              |  7 ++-
 apps/app_groupcount.c            | 13 ++++--
 apps/app_hasnewvoicemail.c       | 11 +++--
 apps/app_ices.c                  |  7 ++-
 apps/app_image.c                 | 20 ++++++--
 apps/app_intercom.c              | 10 +++-
 apps/app_ivrdemo.c               |  7 ++-
 apps/app_lookupblacklist.c       |  7 ++-
 apps/app_lookupcidname.c         |  9 +++-
 apps/app_macro.c                 | 21 ++++++---
 apps/app_math.c                  |  8 ++--
 apps/app_md5.c                   |  7 ++-
 apps/app_meetme.c                | 30 +++++++-----
 apps/app_milliwatt.c             |  7 ++-
 apps/app_mixmonitor.c            | 17 +++++--
 apps/app_mp3.c                   |  7 ++-
 apps/app_muxmon.c                | 17 +++++--
 apps/app_nbscat.c                |  7 ++-
 apps/app_osplookup.c             | 19 ++++----
 apps/app_page.c                  |  6 ++-
 apps/app_parkandannounce.c       |  7 ++-
 apps/app_playback.c              |  7 ++-
 apps/app_privacy.c               |  9 +++-
 apps/app_queue.c                 | 78 +++++++++++++++++---------------
 apps/app_random.c                |  7 ++-
 apps/app_read.c                  |  7 ++-
 apps/app_readfile.c              |  7 ++-
 apps/app_realtime.c              | 25 ++++++----
 apps/app_record.c                |  7 ++-
 apps/app_sayunixtime.c           | 19 ++++----
 apps/app_senddtmf.c              |  7 ++-
 apps/app_sendtext.c              |  6 ++-
 apps/app_setcallerid.c           | 17 +++++--
 apps/app_setcdruserfield.c       | 11 +++--
 apps/app_setcidname.c            |  7 ++-
 apps/app_setcidnum.c             |  7 ++-
 apps/app_setrdnis.c              |  7 ++-
 apps/app_settransfercapability.c |  7 ++-
 apps/app_skel.c                  |  7 ++-
 apps/app_sms.c                   |  7 ++-
 apps/app_softhangup.c            |  7 ++-
 apps/app_sql_postgres.c          |  7 ++-
 apps/app_striplsd.c              |  7 ++-
 apps/app_substring.c             |  7 ++-
 apps/app_system.c                | 17 +++++--
 apps/app_talkdetect.c            |  7 ++-
 apps/app_test.c                  | 17 +++++--
 apps/app_transfer.c              |  6 ++-
 apps/app_txtcidname.c            | 13 +++---
 apps/app_url.c                   |  7 ++-
 apps/app_userevent.c             |  7 ++-
 apps/app_verbose.c               |  7 ++-
 apps/app_voicemail.c             |  9 ++--
 apps/app_waitforring.c           |  7 ++-
 apps/app_waitforsilence.c        |  7 ++-
 apps/app_while.c                 | 21 ++++++---
 apps/app_zapateller.c            |  7 ++-
 apps/app_zapbarge.c              |  7 ++-
 apps/app_zapras.c                |  7 ++-
 apps/app_zapscan.c               |  7 ++-
 85 files changed, 671 insertions(+), 225 deletions(-)

diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c
index 08f7117eeb..bf6260bde1 100755
--- a/apps/app_adsiprog.c
+++ b/apps/app_adsiprog.c
@@ -1570,8 +1570,13 @@ static int adsi_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);	
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_alarmreceiver.c b/apps/app_alarmreceiver.c
index 2b12fd4c2e..4513acf0f8 100755
--- a/apps/app_alarmreceiver.c
+++ b/apps/app_alarmreceiver.c
@@ -829,8 +829,13 @@ static int load_config(void)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_authenticate.c b/apps/app_authenticate.c
index d7dcf08ffb..d9e69fd430 100755
--- a/apps/app_authenticate.c
+++ b/apps/app_authenticate.c
@@ -199,8 +199,13 @@ static int auth_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_cdr.c b/apps/app_cdr.c
index 49fa399610..e5d18faadc 100755
--- a/apps/app_cdr.c
+++ b/apps/app_cdr.c
@@ -55,8 +55,13 @@ static int nocdr_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(nocdr_app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(nocdr_app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_chanisavail.c b/apps/app_chanisavail.c
index 7dc2ba023a..6f60fba155 100755
--- a/apps/app_chanisavail.c
+++ b/apps/app_chanisavail.c
@@ -148,8 +148,13 @@ static int chanavail_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res = 0;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 6d6f38db17..defb190fee 100755
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -709,8 +709,13 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_controlplayback.c b/apps/app_controlplayback.c
index c0968695a9..8576cbb799 100755
--- a/apps/app_controlplayback.c
+++ b/apps/app_controlplayback.c
@@ -132,9 +132,13 @@ static int controlplayback_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
 
-	return ast_unregister_application(app);
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_curl.c b/apps/app_curl.c
index d69d3626c2..e146585bc6 100755
--- a/apps/app_curl.c
+++ b/apps/app_curl.c
@@ -204,22 +204,31 @@ struct ast_custom_function acf_curl = {
 	.synopsis = "Retrieves the contents of a URL",
 	.syntax = "CURL(url[|post-data])",
 	.desc =
-"  url       - URL to retrieve\n"
-"  post-data - Optional data to send as a POST (GET is default action)\n",
+	"  url       - URL to retrieve\n"
+	"  post-data - Optional data to send as a POST (GET is default action)\n",
 	.read = acf_curl_exec,
 };
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_custom_function_unregister(&acf_curl);
+	res |= ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_custom_function_unregister(&acf_curl);
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
 {
-	ast_custom_function_register(&acf_curl);
-	return ast_register_application(app, curl_exec, synopsis, descrip);
+	int res;
+
+	res = ast_custom_function_register(&acf_curl);
+	res |= ast_register_application(app, curl_exec, synopsis, descrip);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_cut.c b/apps/app_cut.c
index 9c0629adb4..96f0f9c3f0 100755
--- a/apps/app_cut.c
+++ b/apps/app_cut.c
@@ -427,19 +427,28 @@ struct ast_custom_function acf_cut = {
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_custom_function_unregister(&acf_cut);
+	res |= ast_custom_function_unregister(&acf_sort);
+	res |= ast_unregister_application(app_sort);
+	res |= ast_unregister_application(app_cut);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_custom_function_unregister(&acf_cut);
-	ast_custom_function_unregister(&acf_sort);
-	ast_unregister_application(app_sort);
-	return ast_unregister_application(app_cut);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_custom_function_register(&acf_cut);
-	ast_custom_function_register(&acf_sort);
-	ast_register_application(app_sort, sort_exec, app_sort_synopsis, app_sort_descrip);
-	return ast_register_application(app_cut, cut_exec, cut_synopsis, cut_descrip);
+	int res;
+
+	res = ast_custom_function_register(&acf_cut);
+	res |= ast_custom_function_register(&acf_sort);
+	res |= ast_register_application(app_sort, sort_exec, app_sort_synopsis, app_sort_descrip);
+	res |= ast_register_application(app_cut, cut_exec, cut_synopsis, cut_descrip);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_datetime.c b/apps/app_datetime.c
index 5a75910aa9..345fc8a484 100755
--- a/apps/app_datetime.c
+++ b/apps/app_datetime.c
@@ -69,8 +69,13 @@ static int datetime_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_db.c b/apps/app_db.c
index 670d091a78..b0c3d1339f 100755
--- a/apps/app_db.c
+++ b/apps/app_db.c
@@ -241,12 +241,13 @@ int unload_module(void)
 {
 	int retval;
 
-	STANDARD_HANGUP_LOCALUSERS;
 	retval = ast_unregister_application(dt_app);
 	retval |= ast_unregister_application(d_app);
 	retval |= ast_unregister_application(p_app);
 	retval |= ast_unregister_application(g_app);
 
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return retval;
 }
 
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 5a14d5ba94..7675a917c0 100755
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1791,16 +1791,23 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	res |= ast_unregister_application(rapp);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_unregister_application(app);
-	return ast_unregister_application(rapp);
+	
+	return res;
 }
 
 int load_module(void)
 {
 	int res;
-	if (!(res = ast_register_application(app, dial_exec, synopsis, descrip)))
-		res = ast_register_application(rapp, retrydial_exec, rsynopsis, rdescrip);
+
+	res = ast_register_application(app, dial_exec, synopsis, descrip);
+	res |= ast_register_application(rapp, retrydial_exec, rsynopsis, rdescrip);
+	
 	return res;
 }
 
diff --git a/apps/app_dictate.c b/apps/app_dictate.c
index 9cadf85810..d1b2015323 100755
--- a/apps/app_dictate.c
+++ b/apps/app_dictate.c
@@ -322,8 +322,13 @@ static int dictate_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_directed_pickup.c b/apps/app_directed_pickup.c
index df766366d5..66aab01fe4 100755
--- a/apps/app_directed_pickup.c
+++ b/apps/app_directed_pickup.c
@@ -129,9 +129,13 @@ static int pickup_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
 
-	return ast_unregister_application(app);
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_directory.c b/apps/app_directory.c
index c7d2a8bf02..1ebd77b1d7 100755
--- a/apps/app_directory.c
+++ b/apps/app_directory.c
@@ -476,8 +476,13 @@ static int directory_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_disa.c b/apps/app_disa.c
index 173441d467..20e5228377 100755
--- a/apps/app_disa.c
+++ b/apps/app_disa.c
@@ -379,8 +379,13 @@ reorder:
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_dumpchan.c b/apps/app_dumpchan.c
index cfc297a7ec..0a295e9ba0 100755
--- a/apps/app_dumpchan.c
+++ b/apps/app_dumpchan.c
@@ -155,8 +155,13 @@ static int dumpchan_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_echo.c b/apps/app_echo.c
index 96e0f1c1bd..6c4faaad9e 100755
--- a/apps/app_echo.c
+++ b/apps/app_echo.c
@@ -88,8 +88,13 @@ static int echo_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_enumlookup.c b/apps/app_enumlookup.c
index 70a5130ab5..48e007977c 100755
--- a/apps/app_enumlookup.c
+++ b/apps/app_enumlookup.c
@@ -194,27 +194,32 @@ static int load_config(void)
 /*--- unload_module: Unload this application from PBX */
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 /*--- load_module: Load this application into PBX */
 int load_module(void)
 {
 	int res;
+	
 	res = ast_register_application(app, enumlookup_exec, synopsis, descrip);
-	if (res)
-		return(res);
-	if ((res=load_config())) {
-		return(res);
-	}
-	return(0);
+	
+	if (!res)
+		res = load_config();
+	
+	return res;
 }
 
 /*--- reload: Reload configuration file */
 int reload(void)
 {
-	return(load_config());
+	return load_config();
 }
 
 
diff --git a/apps/app_eval.c b/apps/app_eval.c
index 6b0f612e73..0b0f3b28ab 100755
--- a/apps/app_eval.c
+++ b/apps/app_eval.c
@@ -93,8 +93,13 @@ static int eval_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app_eval);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app_eval);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_exec.c b/apps/app_exec.c
index a58baeaa13..4b277cf3bb 100755
--- a/apps/app_exec.c
+++ b/apps/app_exec.c
@@ -100,8 +100,13 @@ static int exec_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app_exec);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app_exec);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_externalivr.c b/apps/app_externalivr.c
index c8ea555f0b..e5af548ff3 100755
--- a/apps/app_externalivr.c
+++ b/apps/app_externalivr.c
@@ -545,9 +545,13 @@ static int app_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
 
-	return ast_unregister_application(app);
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_festival.c b/apps/app_festival.c
index d1f2571c84..59b0c5be53 100755
--- a/apps/app_festival.c
+++ b/apps/app_festival.c
@@ -470,8 +470,13 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_flash.c b/apps/app_flash.c
index 64099791ee..2fd3870caa 100755
--- a/apps/app_flash.c
+++ b/apps/app_flash.c
@@ -108,8 +108,13 @@ static int flash_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_forkcdr.c b/apps/app_forkcdr.c
index d0a725d1fe..601e8ff579 100755
--- a/apps/app_forkcdr.c
+++ b/apps/app_forkcdr.c
@@ -85,8 +85,13 @@ static int forkcdr_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_getcpeid.c b/apps/app_getcpeid.c
index b5e55886ab..45a2a4b964 100755
--- a/apps/app_getcpeid.c
+++ b/apps/app_getcpeid.c
@@ -134,8 +134,13 @@ static int cpeid_exec(struct ast_channel *chan, void *idata)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_groupcount.c b/apps/app_groupcount.c
index 63702bbf40..493070f42a 100755
--- a/apps/app_groupcount.c
+++ b/apps/app_groupcount.c
@@ -267,23 +267,28 @@ static struct ast_cli_entry  cli_show_channels =
 int unload_module(void)
 {
 	int res;
-	STANDARD_HANGUP_LOCALUSERS;
-	ast_cli_unregister(&cli_show_channels);
-	res = ast_unregister_application(app_group_count);
+
+	res = ast_cli_unregister(&cli_show_channels);
+	res |= ast_unregister_application(app_group_count);
 	res |= ast_unregister_application(app_group_set);
 	res |= ast_unregister_application(app_group_check);
 	res |= ast_unregister_application(app_group_match_count);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return res;
 }
 
 int load_module(void)
 {
 	int res;
+
 	res = ast_register_application(app_group_count, group_count_exec, group_count_synopsis, group_count_descrip);
 	res |= ast_register_application(app_group_set, group_set_exec, group_set_synopsis, group_set_descrip);
 	res |= ast_register_application(app_group_check, group_check_exec, group_check_synopsis, group_check_descrip);
 	res |= ast_register_application(app_group_match_count, group_match_count_exec, group_match_count_synopsis, group_match_count_descrip);
-	ast_cli_register(&cli_show_channels);
+	res |= ast_cli_register(&cli_show_channels);
+	
 	return res;
 }
 
diff --git a/apps/app_hasnewvoicemail.c b/apps/app_hasnewvoicemail.c
index 83f8349138..5d681eb742 100755
--- a/apps/app_hasnewvoicemail.c
+++ b/apps/app_hasnewvoicemail.c
@@ -189,27 +189,32 @@ struct ast_custom_function acf_vmcount = {
 	.synopsis = "Counts the voicemail in a specified mailbox",
 	.syntax = "VMCOUNT(vmbox[@context][|folder])",
 	.desc =
-"  context - defaults to \"default\"\n"
-"  folder  - defaults to \"INBOX\"\n",
+	"  context - defaults to \"default\"\n"
+	"  folder  - defaults to \"INBOX\"\n",
 	.read = acf_vmcount_exec,
 };
 
 int unload_module(void)
 {
 	int res;
-	STANDARD_HANGUP_LOCALUSERS;
+	
 	res = ast_custom_function_unregister(&acf_vmcount);
 	res |= ast_unregister_application(app_hasvoicemail);
 	res |= ast_unregister_application(app_hasnewvoicemail);
+	
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return res;
 }
 
 int load_module(void)
 {
 	int res;
+
 	res = ast_custom_function_register(&acf_vmcount);
 	res |= ast_register_application(app_hasvoicemail, hasvoicemail_exec, hasvoicemail_synopsis, hasvoicemail_descrip);
 	res |= ast_register_application(app_hasnewvoicemail, hasvoicemail_exec, hasnewvoicemail_synopsis, hasnewvoicemail_descrip);
+
 	return res;
 }
 
diff --git a/apps/app_ices.c b/apps/app_ices.c
index 776dfdaf50..1ce63ad903 100755
--- a/apps/app_ices.c
+++ b/apps/app_ices.c
@@ -184,8 +184,13 @@ static int ices_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_image.c b/apps/app_image.c
index e0a48c1060..e54c90820a 100755
--- a/apps/app_image.c
+++ b/apps/app_image.c
@@ -60,26 +60,38 @@ static int sendimage_exec(struct ast_channel *chan, void *data)
 {
 	int res = 0;
 	struct localuser *u;
+	
+	LOCAL_USER_ADD(u);
+
 	if (!data || !strlen((char *)data)) {
 		ast_log(LOG_WARNING, "SendImage requires an argument (filename)\n");
+		LOCAL_USER_REMOVE(u);
 		return -1;
 	}
-	LOCAL_USER_ADD(u);
+
 	if (!ast_supports_images(chan)) {
 		/* Does not support transport */
-		if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->cid.cid_num))
-			chan->priority += 100;
+		ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+		LOCAL_USER_REMOVE(u);
 		return 0;
 	}
+
 	res = ast_send_image(chan, data);
+	
 	LOCAL_USER_REMOVE(u);
+	
 	return res;
 }
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res; 
 }
 
 int load_module(void)
diff --git a/apps/app_intercom.c b/apps/app_intercom.c
index 522be5b2a3..996576b88a 100755
--- a/apps/app_intercom.c
+++ b/apps/app_intercom.c
@@ -192,10 +192,16 @@ static int intercom_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
-	STANDARD_HANGUP_LOCALUSERS;
+	int res;
+
 	if (sound > -1)
 		close(sound);
-	return ast_unregister_application(app);
+
+	res = ast_unregister_application(app);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_ivrdemo.c b/apps/app_ivrdemo.c
index be214c40c2..fa28f51a6c 100755
--- a/apps/app_ivrdemo.c
+++ b/apps/app_ivrdemo.c
@@ -104,8 +104,13 @@ static int skel_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_lookupblacklist.c b/apps/app_lookupblacklist.c
index 8916d7b16e..98efa9f248 100755
--- a/apps/app_lookupblacklist.c
+++ b/apps/app_lookupblacklist.c
@@ -96,8 +96,13 @@ lookupblacklist_exec (struct ast_channel *chan, void *data)
 
 int unload_module (void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application (app);
+
+	return res;	
 }
 
 int load_module (void)
diff --git a/apps/app_lookupcidname.c b/apps/app_lookupcidname.c
index cc9db230d8..a2ce8b4f84 100755
--- a/apps/app_lookupcidname.c
+++ b/apps/app_lookupcidname.c
@@ -81,8 +81,13 @@ lookupcidname_exec (struct ast_channel *chan, void *data)
 int
 unload_module (void)
 {
-  STANDARD_HANGUP_LOCALUSERS;
-  return ast_unregister_application (app);
+	int res;
+
+	res = ast_unregister_application (app);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
+	return res;
 }
 
 int
diff --git a/apps/app_macro.c b/apps/app_macro.c
index 720e66cf91..c63886e9f9 100755
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -333,17 +333,26 @@ static int macro_exit_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(if_app);
+	res |= ast_unregister_application(exit_app);
+	res |= ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_unregister_application(if_app);
-	ast_unregister_application(exit_app);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_register_application(exit_app, macro_exit_exec, exit_synopsis, exit_descrip);
-	ast_register_application(if_app, macroif_exec, if_synopsis, if_descrip);
-	return ast_register_application(app, macro_exec, synopsis, descrip);
+	int res;
+
+	res = ast_register_application(exit_app, macro_exit_exec, exit_synopsis, exit_descrip);
+	res |= ast_register_application(if_app, macroif_exec, if_synopsis, if_descrip);
+	res |= ast_register_application(app, macro_exec, synopsis, descrip);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_math.c b/apps/app_math.c
index 201882aad5..225c929df0 100755
--- a/apps/app_math.c
+++ b/apps/app_math.c
@@ -258,17 +258,17 @@ static int math_exec(struct ast_channel *chan, void *data)
 int unload_module(void)
 {
 	int res;
+	
+	res = ast_unregister_application(app_math);
+
 	STANDARD_HANGUP_LOCALUSERS;
 
-	res  = ast_unregister_application(app_math);
 	return res;
 }
 
 int load_module(void)
 {
-	int res;
-	res = ast_register_application(app_math, math_exec, math_synopsis, math_descrip);
-	return res;
+	return ast_register_application(app_math, math_exec, math_synopsis, math_descrip);
 }
 
 char *description(void)
diff --git a/apps/app_md5.c b/apps/app_md5.c
index 5f9c506ac2..11f59a05f6 100755
--- a/apps/app_md5.c
+++ b/apps/app_md5.c
@@ -141,9 +141,11 @@ int unload_module(void)
 {
 	int res;
 
-	STANDARD_HANGUP_LOCALUSERS;
-	res =ast_unregister_application(app_md5);
+	res = ast_unregister_application(app_md5);
 	res |= ast_unregister_application(app_md5check);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return res;
 }
 
@@ -153,6 +155,7 @@ int load_module(void)
 
 	res = ast_register_application(app_md5check, md5check_exec, desc_md5check, synopsis_md5check);
 	res |= ast_register_application(app_md5, md5_exec, desc_md5, synopsis_md5);
+	
 	return res;
 }
 
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index dc4f8fb03d..aa3e6153e3 100755
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -2106,23 +2106,31 @@ static void *recordthread(void *args)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_cli_unregister(&cli_show_confs);
+	res |= ast_cli_unregister(&cli_conf);
+	res |= ast_unregister_application(app3);
+	res |= ast_unregister_application(app2);
+	res |= ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_cli_unregister(&cli_show_confs);
-	ast_cli_unregister(&cli_conf);
-	ast_unregister_application(app3);
-	ast_unregister_application(app2);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_cli_register(&cli_show_confs);
-	ast_cli_register(&cli_conf);
-	ast_register_application(app3, admin_exec, synopsis3, descrip3);
-	ast_register_application(app2, count_exec, synopsis2, descrip2);
-	return ast_register_application(app, conf_exec, synopsis, descrip);
-}
+	int res;
+
+	res = ast_cli_register(&cli_show_confs);
+	res |= ast_cli_register(&cli_conf);
+	res |= ast_register_application(app3, admin_exec, synopsis3, descrip3);
+	res |= ast_register_application(app2, count_exec, synopsis2, descrip2);
+	res |= ast_register_application(app, conf_exec, synopsis, descrip);
 
+	return res;
+}
 
 char *description(void)
 {
diff --git a/apps/app_milliwatt.c b/apps/app_milliwatt.c
index 7c12bea372..587085dd16 100755
--- a/apps/app_milliwatt.c
+++ b/apps/app_milliwatt.c
@@ -137,8 +137,13 @@ static int milliwatt_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
index 73e5c5a500..c389353623 100755
--- a/apps/app_mixmonitor.c
+++ b/apps/app_mixmonitor.c
@@ -495,15 +495,24 @@ static struct ast_cli_entry cli_muxmon = {
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_cli_unregister(&cli_muxmon);
+	res |= ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_cli_unregister(&cli_muxmon);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_cli_register(&cli_muxmon);
-	return ast_register_application(app, muxmon_exec, synopsis, desc);
+	int res;
+
+	res = ast_cli_register(&cli_muxmon);
+	res |= ast_register_application(app, muxmon_exec, synopsis, desc);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_mp3.c b/apps/app_mp3.c
index 95a2f194bc..63f6546b75 100755
--- a/apps/app_mp3.c
+++ b/apps/app_mp3.c
@@ -218,8 +218,13 @@ static int mp3_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_muxmon.c b/apps/app_muxmon.c
index 73e5c5a500..c389353623 100755
--- a/apps/app_muxmon.c
+++ b/apps/app_muxmon.c
@@ -495,15 +495,24 @@ static struct ast_cli_entry cli_muxmon = {
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_cli_unregister(&cli_muxmon);
+	res |= ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_cli_unregister(&cli_muxmon);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_cli_register(&cli_muxmon);
-	return ast_register_application(app, muxmon_exec, synopsis, desc);
+	int res;
+
+	res = ast_cli_register(&cli_muxmon);
+	res |= ast_register_application(app, muxmon_exec, synopsis, desc);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_nbscat.c b/apps/app_nbscat.c
index 7e59aa8dcd..515806941b 100755
--- a/apps/app_nbscat.c
+++ b/apps/app_nbscat.c
@@ -201,8 +201,13 @@ static int NBScat_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_osplookup.c b/apps/app_osplookup.c
index dfd819d2bc..d141ae14e4 100755
--- a/apps/app_osplookup.c
+++ b/apps/app_osplookup.c
@@ -243,26 +243,25 @@ static int ospfinished_exec(struct ast_channel *chan, void *data)
 int unload_module(void)
 {
 	int res;
-	STANDARD_HANGUP_LOCALUSERS;
+	
 	res = ast_unregister_application(app3);
 	res |= ast_unregister_application(app2);
 	res |= ast_unregister_application(app);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return res;
 }
 
 int load_module(void)
 {
 	int res;
+	
 	res = ast_register_application(app, osplookup_exec, synopsis, descrip);
-	if (res)
-		return(res);
-	res = ast_register_application(app2, ospnext_exec, synopsis2, descrip2);
-	if (res)
-		return(res);
-	res = ast_register_application(app3, ospfinished_exec, synopsis3, descrip3);
-	if (res)
-		return(res);
-	return(0);
+	res |= ast_register_application(app2, ospnext_exec, synopsis2, descrip2);
+	res |= ast_register_application(app3, ospfinished_exec, synopsis3, descrip3);
+	
+	return res;
 }
 
 int reload(void)
diff --git a/apps/app_page.c b/apps/app_page.c
index aac200b79a..6f6463e201 100755
--- a/apps/app_page.c
+++ b/apps/app_page.c
@@ -170,9 +170,13 @@ static int page_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res =  ast_unregister_application(app_page);
+
 	STANDARD_HANGUP_LOCALUSERS;
 
-	return ast_unregister_application(app_page);
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_parkandannounce.c b/apps/app_parkandannounce.c
index 59115aac37..ff49e80c6a 100755
--- a/apps/app_parkandannounce.c
+++ b/apps/app_parkandannounce.c
@@ -238,8 +238,13 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_playback.c b/apps/app_playback.c
index 0d27160426..66f4fd05f5 100755
--- a/apps/app_playback.c
+++ b/apps/app_playback.c
@@ -116,8 +116,13 @@ static int playback_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_privacy.c b/apps/app_privacy.c
index 2404f0c792..90eb381e8e 100755
--- a/apps/app_privacy.c
+++ b/apps/app_privacy.c
@@ -169,8 +169,13 @@ privacy_exec (struct ast_channel *chan, void *data)
 int
 unload_module (void)
 {
-  STANDARD_HANGUP_LOCALUSERS;
-  return ast_unregister_application (app);
+	int res;
+
+	res = ast_unregister_application (app);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
+	return res;
 }
 
 int
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 7a09914149..27d73ca71c 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3693,50 +3693,56 @@ static struct ast_cli_entry cli_remove_queue_member = {
 
 int unload_module(void)
 {
-	STANDARD_HANGUP_LOCALUSERS;
-	ast_cli_unregister(&cli_show_queue);
-	ast_cli_unregister(&cli_show_queues);
-	ast_cli_unregister(&cli_add_queue_member);
-	ast_cli_unregister(&cli_remove_queue_member);
-	ast_manager_unregister("Queues");
-	ast_manager_unregister("QueueStatus");
-	ast_manager_unregister("QueueAdd");
-	ast_manager_unregister("QueueRemove");
-	ast_manager_unregister("QueuePause");
+	int res;
+
+	res = ast_cli_unregister(&cli_show_queue);
+	res |= ast_cli_unregister(&cli_show_queues);
+	res |= ast_cli_unregister(&cli_add_queue_member);
+	res |= ast_cli_unregister(&cli_remove_queue_member);
+	res |= ast_manager_unregister("Queues");
+	res |= ast_manager_unregister("QueueStatus");
+	res |= ast_manager_unregister("QueueAdd");
+	res |= ast_manager_unregister("QueueRemove");
+	res |= ast_manager_unregister("QueuePause");
 	ast_devstate_del(statechange_queue, NULL);
-	ast_unregister_application(app_aqm);
-	ast_unregister_application(app_rqm);
-	ast_unregister_application(app_pqm);
-	ast_unregister_application(app_upqm);
-	ast_custom_function_unregister(&queueagentcount_function);
-	return ast_unregister_application(app);
+	res |= ast_unregister_application(app_aqm);
+	res |= ast_unregister_application(app_rqm);
+	res |= ast_unregister_application(app_pqm);
+	res |= ast_unregister_application(app_upqm);
+	res |= ast_custom_function_unregister(&queueagentcount_function);
+	res |= ast_unregister_application(app);
+
+	STANDARD_HANGUP_LOCALUSERS;
+
+	return res;
 }
 
 int load_module(void)
 {
 	int res;
+	
 	res = ast_register_application(app, queue_exec, synopsis, descrip);
-	if (!res) {
-		ast_cli_register(&cli_show_queue);
-		ast_cli_register(&cli_show_queues);
-		ast_cli_register(&cli_add_queue_member);
-		ast_cli_register(&cli_remove_queue_member);
-		ast_devstate_add(statechange_queue, NULL);
-		ast_manager_register( "Queues", 0, manager_queues_show, "Queues" );
-		ast_manager_register( "QueueStatus", 0, manager_queues_status, "Queue Status" );
-		ast_manager_register( "QueueAdd", EVENT_FLAG_AGENT, manager_add_queue_member, "Add interface to queue." );
-		ast_manager_register( "QueueRemove", EVENT_FLAG_AGENT, manager_remove_queue_member, "Remove interface from queue." );
-		ast_manager_register( "QueuePause", EVENT_FLAG_AGENT, manager_pause_queue_member, "Makes a queue member temporarily unavailable" );
-		ast_register_application(app_aqm, aqm_exec, app_aqm_synopsis, app_aqm_descrip) ;
-		ast_register_application(app_rqm, rqm_exec, app_rqm_synopsis, app_rqm_descrip) ;
-		ast_register_application(app_pqm, pqm_exec, app_pqm_synopsis, app_pqm_descrip) ;
-		ast_register_application(app_upqm, upqm_exec, app_upqm_synopsis, app_upqm_descrip) ;
-		ast_custom_function_register(&queueagentcount_function);
+	res |= ast_cli_register(&cli_show_queue);
+	res |= ast_cli_register(&cli_show_queues);
+	res |= ast_cli_register(&cli_add_queue_member);
+	res |= ast_cli_register(&cli_remove_queue_member);
+	res |= ast_devstate_add(statechange_queue, NULL);
+	res |= ast_manager_register( "Queues", 0, manager_queues_show, "Queues" );
+	res |= ast_manager_register( "QueueStatus", 0, manager_queues_status, "Queue Status" );
+	res |= ast_manager_register( "QueueAdd", EVENT_FLAG_AGENT, manager_add_queue_member, "Add interface to queue." );
+	res |= ast_manager_register( "QueueRemove", EVENT_FLAG_AGENT, manager_remove_queue_member, "Remove interface from queue." );
+	res |= ast_manager_register( "QueuePause", EVENT_FLAG_AGENT, manager_pause_queue_member, "Makes a queue member temporarily unavailable" );
+	res |= ast_register_application(app_aqm, aqm_exec, app_aqm_synopsis, app_aqm_descrip) ;
+	res |= ast_register_application(app_rqm, rqm_exec, app_rqm_synopsis, app_rqm_descrip) ;
+	res |= ast_register_application(app_pqm, pqm_exec, app_pqm_synopsis, app_pqm_descrip) ;
+	res |= ast_register_application(app_upqm, upqm_exec, app_upqm_synopsis, app_upqm_descrip) ;
+	res |= ast_custom_function_register(&queueagentcount_function);
+
+	if (!res) {	
+		reload_queues();
+		if (queue_persistent_members)
+			reload_queue_members();
 	}
-	reload_queues();
-	
-	if (queue_persistent_members)
-	    reload_queue_members();
 
 	return res;
 }
diff --git a/apps/app_random.c b/apps/app_random.c
index 7054057e26..bbd1e0c119 100755
--- a/apps/app_random.c
+++ b/apps/app_random.c
@@ -85,8 +85,13 @@ static int random_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app_random);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app_random);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_read.c b/apps/app_read.c
index c1e0aca42f..4fd6401124 100755
--- a/apps/app_read.c
+++ b/apps/app_read.c
@@ -188,8 +188,13 @@ static int read_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_readfile.c b/apps/app_readfile.c
index 805760ce3d..537786f041 100755
--- a/apps/app_readfile.c
+++ b/apps/app_readfile.c
@@ -104,8 +104,13 @@ static int readfile_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app_readfile);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app_readfile);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_realtime.c b/apps/app_realtime.c
index f1ed42fe34..4e2883228d 100755
--- a/apps/app_realtime.c
+++ b/apps/app_realtime.c
@@ -212,19 +212,28 @@ static int realtime_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_cli_unregister(&cli_load_realtime_cmd);
+	res |= ast_cli_unregister(&cli_update_realtime_cmd);
+	res |= ast_unregister_application(uapp);
+	res |= ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_cli_unregister(&cli_load_realtime_cmd);
-	ast_cli_unregister(&cli_update_realtime_cmd);
-	ast_unregister_application(uapp);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_cli_register(&cli_load_realtime_cmd);
-	ast_cli_register(&cli_update_realtime_cmd);
-	ast_register_application(uapp, realtime_update_exec, usynopsis, udesc);
-	return ast_register_application(app, realtime_exec, synopsis, desc);
+	int res;
+
+	res = ast_cli_register(&cli_load_realtime_cmd);
+	res |= ast_cli_register(&cli_update_realtime_cmd);
+	res |= ast_register_application(uapp, realtime_update_exec, usynopsis, udesc);
+	res |= ast_register_application(app, realtime_exec, synopsis, desc);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_record.c b/apps/app_record.c
index bed5bd3987..7b8e145128 100755
--- a/apps/app_record.c
+++ b/apps/app_record.c
@@ -321,8 +321,13 @@ static int record_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_sayunixtime.c b/apps/app_sayunixtime.c
index 960d0b55f0..0abce7b8b5 100755
--- a/apps/app_sayunixtime.c
+++ b/apps/app_sayunixtime.c
@@ -127,22 +127,23 @@ static int sayunixtime_exec(struct ast_channel *chan, void *data)
 int unload_module(void)
 {
 	int res;
-	STANDARD_HANGUP_LOCALUSERS;
+	
 	res = ast_unregister_application(app_sayunixtime);
-	if (! res)
-		return ast_unregister_application(app_datetime);
-	else
-		return res;
+	res |= ast_unregister_application(app_datetime);
+
+	STANDARD_HANGUP_LOCALUSERS;
+	
+	return res;
 }
 
 int load_module(void)
 {
 	int res;
+	
 	res = ast_register_application(app_sayunixtime, sayunixtime_exec, sayunixtime_synopsis, sayunixtime_descrip);
-	if (! res)
-		return ast_register_application(app_datetime, sayunixtime_exec, sayunixtime_synopsis, datetime_descrip);
-	else
-		return res;
+	res |= ast_register_application(app_datetime, sayunixtime_exec, sayunixtime_synopsis, datetime_descrip);
+	
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c
index a4bdf5c0c2..79001accaf 100755
--- a/apps/app_senddtmf.c
+++ b/apps/app_senddtmf.c
@@ -82,8 +82,13 @@ static int senddtmf_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_sendtext.c b/apps/app_sendtext.c
index 36ab85c9a3..c33561af26 100755
--- a/apps/app_sendtext.c
+++ b/apps/app_sendtext.c
@@ -98,9 +98,13 @@ static int sendtext_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
 
-	return ast_unregister_application(app);
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_setcallerid.c b/apps/app_setcallerid.c
index a1b2c41dd0..4fd381fe56 100755
--- a/apps/app_setcallerid.c
+++ b/apps/app_setcallerid.c
@@ -121,15 +121,24 @@ static int setcallerid_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app2);
+	res |= ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_unregister_application(app2);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_register_application(app2, setcallerid_pres_exec, synopsis2, descrip2);
-	return ast_register_application(app, setcallerid_exec, synopsis, descrip);
+	int res;
+	
+	res = ast_register_application(app2, setcallerid_pres_exec, synopsis2, descrip2);
+	res |= ast_register_application(app, setcallerid_exec, synopsis, descrip);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_setcdruserfield.c b/apps/app_setcdruserfield.c
index e204d5ae12..143ca73e0b 100755
--- a/apps/app_setcdruserfield.c
+++ b/apps/app_setcdruserfield.c
@@ -141,19 +141,24 @@ static int appendcdruserfield_exec(struct ast_channel *chan, void *data)
 int unload_module(void)
 {
 	int res;
-	STANDARD_HANGUP_LOCALUSERS;
+	
 	res = ast_unregister_application(setcdruserfield_app);
 	res |= ast_unregister_application(appendcdruserfield_app);
-	ast_manager_unregister("SetCDRUserField");
+	res |= ast_manager_unregister("SetCDRUserField");
+
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return res;
 }
 
 int load_module(void)
 {
 	int res;
+
 	res = ast_register_application(setcdruserfield_app, setcdruserfield_exec, setcdruserfield_synopsis, setcdruserfield_descrip);
 	res |= ast_register_application(appendcdruserfield_app, appendcdruserfield_exec, appendcdruserfield_synopsis, appendcdruserfield_descrip);
-	ast_manager_register("SetCDRUserField", EVENT_FLAG_CALL, action_setcdruserfield, "Set the CDR UserField");
+	res |= ast_manager_register("SetCDRUserField", EVENT_FLAG_CALL, action_setcdruserfield, "Set the CDR UserField");
+	
 	return res;
 }
 
diff --git a/apps/app_setcidname.c b/apps/app_setcidname.c
index 053903912b..019adeb808 100755
--- a/apps/app_setcidname.c
+++ b/apps/app_setcidname.c
@@ -85,8 +85,13 @@ static int setcallerid_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_setcidnum.c b/apps/app_setcidnum.c
index dbd78bdb89..07a064bb4b 100755
--- a/apps/app_setcidnum.c
+++ b/apps/app_setcidnum.c
@@ -90,8 +90,13 @@ static int setcallerid_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_setrdnis.c b/apps/app_setrdnis.c
index e9fbc0fbc1..c0f155f20e 100755
--- a/apps/app_setrdnis.c
+++ b/apps/app_setrdnis.c
@@ -93,8 +93,13 @@ static int setrdnis_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_settransfercapability.c b/apps/app_settransfercapability.c
index f9ea43c396..1b05533771 100755
--- a/apps/app_settransfercapability.c
+++ b/apps/app_settransfercapability.c
@@ -103,8 +103,13 @@ static int settransfercapability_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_skel.c b/apps/app_skel.c
index 9f301249a0..15817444f2 100755
--- a/apps/app_skel.c
+++ b/apps/app_skel.c
@@ -108,8 +108,13 @@ static int app_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_sms.c b/apps/app_sms.c
index d6ae221432..80ad3ddb09 100755
--- a/apps/app_sms.c
+++ b/apps/app_sms.c
@@ -1507,8 +1507,13 @@ static int sms_exec (struct ast_channel *chan, void *data)
 
 int unload_module (void)
 {
+	int res;
+
+	res = ast_unregister_application (app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application (app);
+
+	return res;	
 }
 
 int load_module (void)
diff --git a/apps/app_softhangup.c b/apps/app_softhangup.c
index 94a3474349..9c57465eb1 100755
--- a/apps/app_softhangup.c
+++ b/apps/app_softhangup.c
@@ -102,8 +102,13 @@ static int softhangup_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_sql_postgres.c b/apps/app_sql_postgres.c
index d9c85ff0ba..94dc8ea040 100755
--- a/apps/app_sql_postgres.c
+++ b/apps/app_sql_postgres.c
@@ -546,8 +546,13 @@ static int PGSQL_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+	
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_striplsd.c b/apps/app_striplsd.c
index fcc4ca5449..8c1c97e880 100755
--- a/apps/app_striplsd.c
+++ b/apps/app_striplsd.c
@@ -85,8 +85,13 @@ static int striplsd_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_substring.c b/apps/app_substring.c
index 63242900e7..bb1b835775 100755
--- a/apps/app_substring.c
+++ b/apps/app_substring.c
@@ -123,8 +123,13 @@ static int substring_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_system.c b/apps/app_system.c
index 1e332a0cf0..00fed1058a 100755
--- a/apps/app_system.c
+++ b/apps/app_system.c
@@ -135,15 +135,24 @@ static int trysystem_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	res |= ast_unregister_application(app2);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_unregister_application(app2);
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_register_application(app2, trysystem_exec, synopsis2, descrip2);
-	return ast_register_application(app, system_exec, synopsis, descrip);
+	int res;
+
+	res = ast_register_application(app2, trysystem_exec, synopsis2, descrip2);
+	res |= ast_register_application(app, system_exec, synopsis, descrip);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_talkdetect.c b/apps/app_talkdetect.c
index 3d678b3af2..7729f616e9 100755
--- a/apps/app_talkdetect.c
+++ b/apps/app_talkdetect.c
@@ -208,8 +208,13 @@ static int background_detect_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_test.c b/apps/app_test.c
index e1ffdba8b0..4ded538d3f 100755
--- a/apps/app_test.c
+++ b/apps/app_test.c
@@ -488,15 +488,24 @@ static int testserver_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(testc_app);
+	res |= ast_unregister_application(tests_app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_unregister_application(testc_app);
-	return ast_unregister_application(tests_app);
+
+	return res;	
 }
 
 int load_module(void)
 {
-	ast_register_application(testc_app, testclient_exec, testc_synopsis, testc_descrip);
-	return ast_register_application(tests_app, testserver_exec, tests_synopsis, tests_descrip);
+	int res;
+
+	res = ast_register_application(testc_app, testclient_exec, testc_synopsis, testc_descrip);
+	res |= ast_register_application(tests_app, testserver_exec, tests_synopsis, tests_descrip);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_transfer.c b/apps/app_transfer.c
index 85d1e5ea9a..7a1d17b6ff 100755
--- a/apps/app_transfer.c
+++ b/apps/app_transfer.c
@@ -120,9 +120,13 @@ static int transfer_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
 
-	return ast_unregister_application(app);
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_txtcidname.c b/apps/app_txtcidname.c
index 25547c20b6..f1970adf62 100755
--- a/apps/app_txtcidname.c
+++ b/apps/app_txtcidname.c
@@ -96,17 +96,18 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
 {
-	int res;
-	
-	res = ast_register_application(app, txtcidname_exec, synopsis, descrip);
-	
-	return res;
+	return ast_register_application(app, txtcidname_exec, synopsis, descrip);
 }
 
 char *description(void)
diff --git a/apps/app_url.c b/apps/app_url.c
index 86d2db3bc7..512ea9d9ee 100755
--- a/apps/app_url.c
+++ b/apps/app_url.c
@@ -154,8 +154,13 @@ out:
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_userevent.c b/apps/app_userevent.c
index 737949ccb7..681231ab01 100755
--- a/apps/app_userevent.c
+++ b/apps/app_userevent.c
@@ -97,8 +97,13 @@ static int userevent_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_verbose.c b/apps/app_verbose.c
index 434b822df5..e23bf1a062 100755
--- a/apps/app_verbose.c
+++ b/apps/app_verbose.c
@@ -98,8 +98,13 @@ static int verbose_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app_verbose);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app_verbose);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 8f19fbbaa0..54351f9d60 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -6212,14 +6212,17 @@ int reload(void)
 int unload_module(void)
 {
 	int res;
-	STANDARD_HANGUP_LOCALUSERS;
+	
 	res = ast_unregister_application(app);
 	res |= ast_unregister_application(app2);
 	res |= ast_unregister_application(app3);
 	res |= ast_unregister_application(app4);
-	ast_cli_unregister(&show_voicemail_users_cli);
-	ast_cli_unregister(&show_voicemail_zones_cli);
+	res |= ast_cli_unregister(&show_voicemail_users_cli);
+	res |= ast_cli_unregister(&show_voicemail_zones_cli);
 	ast_uninstall_vm_functions();
+	
+	STANDARD_HANGUP_LOCALUSERS;
+
 	return res;
 }
 
diff --git a/apps/app_waitforring.c b/apps/app_waitforring.c
index a6ed89d3e6..30ba1d45d2 100755
--- a/apps/app_waitforring.c
+++ b/apps/app_waitforring.c
@@ -118,8 +118,13 @@ static int waitforring_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_waitforsilence.c b/apps/app_waitforsilence.c
index abe77870c8..a5e7a7766e 100755
--- a/apps/app_waitforsilence.c
+++ b/apps/app_waitforsilence.c
@@ -174,8 +174,13 @@ static int waitforsilence_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_while.c b/apps/app_while.c
index 5de2172d0f..49c631221c 100755
--- a/apps/app_while.c
+++ b/apps/app_while.c
@@ -319,17 +319,26 @@ static int while_end_exec(struct ast_channel *chan, void *data) {
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(start_app);
+	res |= ast_unregister_application(exec_app);
+	res |= ast_unregister_application(stop_app);
+
 	STANDARD_HANGUP_LOCALUSERS;
-	ast_unregister_application(start_app);
-	ast_unregister_application(exec_app);
-	return ast_unregister_application(stop_app);
+
+	return res;
 }
 
 int load_module(void)
 {
-	ast_register_application(start_app, while_start_exec, start_synopsis, start_desc);
-	ast_register_application(exec_app, execif_exec, exec_synopsis, exec_desc);
-	return ast_register_application(stop_app, while_end_exec, stop_synopsis, stop_desc);
+	int res;
+
+	res = ast_register_application(start_app, while_start_exec, start_synopsis, start_desc);
+	res |= ast_register_application(exec_app, execif_exec, exec_synopsis, exec_desc);
+	res |= ast_register_application(stop_app, while_end_exec, stop_synopsis, stop_desc);
+
+	return res;
 }
 
 char *description(void)
diff --git a/apps/app_zapateller.c b/apps/app_zapateller.c
index 05062b62ac..a5b372446c 100755
--- a/apps/app_zapateller.c
+++ b/apps/app_zapateller.c
@@ -104,8 +104,13 @@ static int zapateller_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_zapbarge.c b/apps/app_zapbarge.c
index 23300e057d..148543381a 100755
--- a/apps/app_zapbarge.c
+++ b/apps/app_zapbarge.c
@@ -299,8 +299,13 @@ out:
 
 int unload_module(void)
 {
+	int res;
+	
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;	
 }
 
 int load_module(void)
diff --git a/apps/app_zapras.c b/apps/app_zapras.c
index 738d733e22..76a81bd707 100755
--- a/apps/app_zapras.c
+++ b/apps/app_zapras.c
@@ -235,8 +235,13 @@ static int zapras_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
diff --git a/apps/app_zapscan.c b/apps/app_zapscan.c
index afcf366f52..fc900b59e4 100755
--- a/apps/app_zapscan.c
+++ b/apps/app_zapscan.c
@@ -364,8 +364,13 @@ static int conf_exec(struct ast_channel *chan, void *data)
 
 int unload_module(void)
 {
+	int res;
+
+	res = ast_unregister_application(app);
+	
 	STANDARD_HANGUP_LOCALUSERS;
-	return ast_unregister_application(app);
+
+	return res;
 }
 
 int load_module(void)
-- 
GitLab