diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c
index 08f7117eebfef94f811485f7453ec3ede697cf54..bf6260bde1c7443965305b48a13a83230bb42047 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 2b12fd4c2ed2349cdd9ced634c62481e0ec6c235..4513acf0f886e3bb45846a19f38033ed4a5fb31e 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 d7dcf08ffb604b86e4dad3ee55c703c5230643ca..d9e69fd4303e2631018e07fddccd1b4f247ac33e 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 49fa39961039947dbd52f1015f778c3fb8665d3e..e5d18faadcfa892ff75f12ac4f6afd82089fb93b 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 7dc2ba023ab5b3ebfbe680b16892f1fe763639ff..6f60fba155333c51e545cb5a191a97484cd640d4 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 6d6f38db17aad52a190e7257ef97839b8eca8d1c..defb190fee0589be494608ed3d51dacf8dc8dfa3 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 c0968695a97a138fd0c569ebff195d883f262286..8576cbb799aeea2307b4563e90c4cdd9acb464ea 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 d69d3626c274643594bebdd819c0e7b946ef1e7f..e146585bc6e39a4c362c5e82ba562cf0827240ce 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 9c0629adb4cef1fe02332aecd2c58e082a4cdd68..96f0f9c3f0cc5257ca612f7ef5ed537523365099 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 5a75910aa9ca83310535aec9989a40868349a039..345fc8a484ec87c88d464a23e199816e6a788c97 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 670d091a785cf09bd22ad8d2241da180a297375f..b0c3d1339f8f1f65c0d28b0c004dd174979a8175 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 5a14d5ba94816447f04fbad393b9cd437b87ebe5..7675a917c024dc226ce3f6d7e51b5315573e368f 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 9cadf85810ef86b08318830f084c69ffa71bcafd..d1b20153232e2a9fdd82b2e4fdb969941092f91e 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 df766366d52dc69862e9b3a279b8d222576717fe..66aab01fe44fc2b926165d4f209daa4468e7d784 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 c7d2a8bf02727a4d54475e9530ef05229114d43f..1ebd77b1d725af7cd7624700960805a4a4c57934 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 173441d46740903aa3aaa0b6352f06bed37af1ad..20e52283775417470460d9c27d7e50bba0f3e3cb 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 cfc297a7ecde110835ea52ce4ee38444fa1c997c..0a295e9ba001f2693a08401d30deed2536ae10ca 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 96e0f1c1bd03cef926e91bec3c9851ad3b847e64..6c4faaad9ec6bf217a57fc6677f449472656c75b 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 70a5130ab5b1de7eb406edbd28b7902c6ad1ce19..48e007977c1bf48069be2e74f15414779e497f97 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 6b0f612e73a4565d70bd5a461464058509693533..0b0f3b28ab7c59e9db772fb4e6cdadc5991193c7 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 a58baeaa13c8e76a70ead3757f6d78b15e8a0cc4..4b277cf3bb38ba1f2afd2620b2eca84a3b6178c8 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 c8ea555f0b324ef62ad92f34fa27017ec7e266f7..e5af548ff3b145357b7638e019d6fb8615efb1a8 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 d1f2571c8497a3ad9b9725f5862fbacadabf9dc8..59b0c5be538b637d6ee5891ec28851c8340e0989 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 64099791eee42a527f9d09b43862b598e8d07deb..2fd3870caa92e5eccf116f321f2f39f954b11b5d 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 d0a725d1fe419cd61bc25fd7281447a7807ed749..601e8ff579e3d5b138eb57110fdf4d1c900997a3 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 b5e55886abc79265cc5b15fb6a4928217c9a6878..45a2a4b96471111238ce523c2a46300968b06284 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 63702bbf40efb596e808466cba3013deaec06153..493070f42ae6cfc56a63da6e8b2109ee32e2d006 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 83f8349138075453a7586b8bcc7f762dfb82541e..5d681eb742194b5fdcb3e39c31d0b39492eaf0c1 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 776dfdaf50467003d1eee7cc86f1d60cd4d84303..1ce63ad9033ee3e4e02a9b5f8341785cc838b1a4 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 e0a48c1060d5b97658c08440ff7bc8252e202139..e54c90820a4159963d3dc756aef259082f4b546a 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 522be5b2a39c0bf451ad0db3e8b13646bbb14895..996576b88a2b2055581dec25e527d947434fdef2 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 be214c40c2e512c99ac0b67f32ee3b2b313fd7a8..fa28f51a6c7038eea684b91ba1530f4014592178 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 8916d7b16e29a527987ea065c4298a9d745951b0..98efa9f248f0f470762c8492d85a134ec6ab6fe8 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 cc9db230d809e1d95f8f78b2ff5774a867301983..a2ce8b4f84b357ab8fa0582baaec63b67eb98439 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 720e66cf91cd1250e7061b99a33ff73a303a16f7..c63886e9f963b08e19df677580a1092f9839739a 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 201882aad55043d0eb2e2d3a35885db6b3d4f6d1..225c929df046ab5e3e2121aac48ad26d6d361390 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 5f9c506ac22d1e4238392340dfacf99a6323f3e9..11f59a05f6caf6b2fd3214a7e0a9b981dbf69d25 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 dc4f8fb03d14d439d7ac27c417e4b8b33c7c834b..aa3e6153e3b23533b484b8cae4569e9daa37ff11 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 7c12bea372e7293e9f8a8224288142bcb90e23a3..587085dd165de90813be3edbc0a92782d706e720 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 73e5c5a500aba2d3689e1df5ffe121b5b685a8cc..c3893536230b470f4cd3ea32a8f594505c957ddf 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 95a2f194bc86ff8a07ef231dab3e31d1768265d6..63f6546b75bc9dceee149d3d2ad2670424b17615 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 73e5c5a500aba2d3689e1df5ffe121b5b685a8cc..c3893536230b470f4cd3ea32a8f594505c957ddf 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 7e59aa8dcd4eff9601159056725a1a015b1cf94e..515806941b558be806a48b56b34469f8aa02ec5d 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 dfd819d2bc88500cac051566a1ea013216dfef74..d141ae14e4e14e23414a231282e32a9096ed384b 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 aac200b79a5d6625b52590ab19c6481d422d644f..6f6463e201fd312dcea652cd0add348cd0df3c5d 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 59115aac37af2f66e2a74703089f78c901d1ce6e..ff49e80c6a42c667661d9185173d7ee402ab10ef 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 0d27160426237328460e96683be80443133078cd..66f4fd05f54f31c6040110036978b1f778296cfd 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 2404f0c7926f1b38ff683f1af3b523857eb5a423..90eb381e8ed1eec4013a3037bf864f10ea83a154 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 7a09914149d535f6c820bc13c2433000f696b1a2..27d73ca71c6642a357dc8369c7956e3857c55b01 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 7054057e26c26d1da57c74499ffa37f5b91964c0..bbd1e0c1193c1d223cb64aca3e60a54a4db55daf 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 c1e0aca42ff6b86a09836df8731079163df3c3d3..4fd6401124b5337efe211405495a13e6b9b40151 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 805760ce3d65c96670ba246c5bb0bc14228dfaab..537786f0416bce848c04e793b428818599e5f977 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 f1ed42fe34b9a7b42d4a4f140064cb4a263d9d2d..4e2883228d388360aa472b1797fbcaeb66d67610 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 bed5bd39879104df180ddd05bdb750e3b230c245..7b8e145128b6a584ab4629fe30d061ed2dcdded0 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 960d0b55f0540c2f9174dd3b475a196a7dc24ad3..0abce7b8b5648f8c9e65e7d87ccb6509fb9b746c 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 a4bdf5c0c2890ef53981cb196f0724e3ee28ef65..79001accaf6c9da8beb6f378309c3d9fbfc32581 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 36ab85c9a3c04d15195cb4abff40bb600a4e3bcc..c33561af2636ceb78951683b0bfaef40a6d94e02 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 a1b2c41dd0b1ea509d7550db76f99e49dd2570ba..4fd381fe56b1f7d0105d7acd02356986020b16d9 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 e204d5ae12a2f406894f2dd4ebe84f882d3bf2f6..143ca73e0b09eb14553bd49f65772159d079c032 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 053903912b921c7e439ac2c231553e33376eff95..019adeb8087cd425bd1adaa0a863a096c556556b 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 dbd78bdb894758d76051ea9c5131a9d3fde5e4b5..07a064bb4b6567f987621830cd9b5f5a8bfdc32f 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 e9fbc0fbc14064f316f6facd5c606174c2092843..c0f155f20ecc00d6e664336e948a8f13dd83e4a2 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 f9ea43c3965afef5b4b3050dc8b0ce8881a5b65c..1b055337719641cbd869ce885d0ddfdc60925f72 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 9f301249a03211c75d5b08e0c1c4613a8d00503b..15817444f21825f5e65b739813d15ea9e00328f5 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 d6ae221432c2346eee354ec7c12ff32a2a82e059..80ad3ddb09007bf7af4e83e40ddf7c94b0adf05d 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 94a3474349d4d1c7b8b732ff7b837353129a7d36..9c57465eb1edcb35f6f77deeecf8db2e75642de3 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 d9c85ff0ba1e7d221ae762926781278320a44700..94dc8ea04008acaf6ce6b76f9e7882bb752356f1 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 fcc4ca5449c91b562b5d849dadbb58f890d05c8a..8c1c97e8807f408a74606bdaf2c3eb138760c15c 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 63242900e7d90983632d81b3bcf56bcada287ddd..bb1b835775cb6b3f6f95f5378b9a865df0d7b2a2 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 1e332a0cf0337e5ffab20042e5d58477b40a5192..00fed1058acedb2df9543de39032b798501920b4 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 3d678b3af28aba560743fe6786160804b7c89b50..7729f616e99dcde50aaf194279976d0a99b3fbf6 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 e1ffdba8b0844c2fdb7c0aa2dcac73f12036bca2..4ded538d3f60e5fdc3a188797ea4c0982f137b0e 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 85d1e5ea9ac31a2028fbf63107a3626e3856999e..7a1d17b6ff38d8efeb0023d54a7669c1bcbc78c9 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 25547c20b63460d7f4fa08743fa398d44514d8ee..f1970adf62fc664763fe2e3bd33a709293eef971 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 86d2db3bc781ea1bc3e9a67641ab1fd54250f77d..512ea9d9ee3180277008b1187cc55a33d6a5daca 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 737949ccb7f47a1186b67c20bc2faca0724bd5ad..681231ab01bc1a03b5a64f5ef2ede6ec23adad13 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 434b822df594dde1656ca83e60c17a19dc3e4b98..e23bf1a06288c23b3da95f16d879fbbbf4c2c4de 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 8f19fbbaa08d113e0ebb0daed0cfe8f8a5b91e95..54351f9d6043d1beb13ec1d955f0b4d03b38013c 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 a6ed89d3e6b19d8e0271af0c5927e05133b9314b..30ba1d45d27581b6b53fa005c967e57c58abdee1 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 abe77870c80567bca7b0c49942608fea81086cd8..a5e7a7766e5a34db95f85f4990f192ba9b7119bc 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 5de2172d0f82514b08629dcf0d14335fa35761db..49c631221c69853b8de9dc5d1a252b35ae4df833 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 05062b62ac62013ad46201a5adf78fd6df27f26b..a5b372446cd26217cbb5d477b2286fcad28fdc27 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 23300e057d3c41c63d2917cf8b960d91979a8edf..148543381adb501f74216f5d276ad17ee23ed616 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 738d733e226d93cfa852059878e451ccd755418c..76a81bd707e1d327c95a12629ba17df75fa3ea25 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 afcf366f525605853edbc5994f21c5e5f5c4dc6d..fc900b59e41bb86e6fc78a1683dd020ed9def05c 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)