From 59c9ff7ef2c001e68d1a75af3e9f6b4c24a6196e Mon Sep 17 00:00:00 2001
From: Jason Parker <jparker@digium.com>
Date: Wed, 31 Oct 2007 19:24:29 +0000
Subject: [PATCH] More changes to change return values from load_module
 functions.

(issue #11096)
Patches:
      codec_adpcm.c.patch uploaded by moy (license 222)
      codec_alaw.c.patch uploaded by moy (license 222)
      codec_a_mu.c.patch uploaded by moy (license 222)
      codec_g722.c.patch uploaded by moy (license 222)
      codec_g726.c.diff uploaded by moy (license 222)
      codec_gsm.c.patch uploaded by moy (license 222)
      codec_ilbc.c.patch uploaded by moy (license 222)
      codec_lpc10.c.patch uploaded by moy (license 222)
      codec_speex.c.patch uploaded by moy (license 222)
      codec_ulaw.c.patch uploaded by moy (license 222)
      codec_zap.c.patch uploaded by moy (license 222)
      format_g723.c.patch uploaded by moy (license 222)
      format_g726.c.patch uploaded by moy (license 222)
      format_g729.c.patch uploaded by moy (license 222)
      format_gsm.c.patch uploaded by moy (license 222)
      format_h263.c.patch uploaded by moy (license 222)
      format_h264.c.patch uploaded by moy (license 222)
      format_ilbc.c.patch uploaded by moy (license 222)
      format_jpeg.c.patch uploaded by moy (license 222)
      format_ogg_vorbis.c.patch uploaded by moy (license 222)
      format_pcm.c.patch uploaded by moy (license 222)
      format_sln.c.patch uploaded by moy (license 222)
      format_vox.c.patch uploaded by moy (license 222)
      format_wav.c.patch uploaded by moy (license 222)
      format_wav_gsm.c.patch uploaded by moy (license 222)
      res_adsi.c.patch uploaded by eliel (license 64)
      res_ael_share.c.patch uploaded by eliel (license 64)
      res_clioriginate.c.patch uploaded by eliel (license 64)
      res_convert.c.patch uploaded by eliel (license 64)
      res_indications.c.patch uploaded by eliel (license 64)
      res_musiconhold.c.patch uploaded by eliel (license 64)
      res_smdi.c.patch uploaded by eliel (license 64)
      res_speech.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87889 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 codecs/codec_a_mu.c         |  5 +++--
 codecs/codec_adpcm.c        | 22 ++++++++++++++--------
 codecs/codec_alaw.c         | 22 ++++++++++++++--------
 codecs/codec_g722.c         | 24 +++++++++++++++---------
 codecs/codec_g726.c         | 24 +++++++++++++++---------
 codecs/codec_gsm.c          | 23 +++++++++++++++--------
 codecs/codec_ilbc.c         |  5 +++--
 codecs/codec_lpc10.c        | 23 ++++++++++++++---------
 codecs/codec_speex.c        | 21 +++++++++++++--------
 codecs/codec_ulaw.c         | 23 ++++++++++++++---------
 codecs/codec_zap.c          | 21 ++++++++++++---------
 formats/format_g723.c       |  4 +++-
 formats/format_g726.c       |  4 ++--
 formats/format_g729.c       |  4 +++-
 formats/format_gsm.c        |  4 +++-
 formats/format_h263.c       |  4 +++-
 formats/format_h264.c       |  4 +++-
 formats/format_ilbc.c       |  4 +++-
 formats/format_jpeg.c       |  4 +++-
 formats/format_ogg_vorbis.c |  4 +++-
 formats/format_pcm.c        |  6 ++++--
 formats/format_sln.c        |  4 +++-
 formats/format_vox.c        |  4 +++-
 formats/format_wav.c        |  4 +++-
 formats/format_wav_gsm.c    |  4 +++-
 res/res_adsi.c              |  2 +-
 res/res_ael_share.c         |  2 +-
 res/res_clioriginate.c      |  2 +-
 res/res_convert.c           |  2 +-
 res/res_indications.c       |  2 +-
 res/res_musiconhold.c       |  2 +-
 res/res_smdi.c              |  2 +-
 res/res_speech.c            |  2 +-
 33 files changed, 182 insertions(+), 105 deletions(-)

diff --git a/codecs/codec_a_mu.c b/codecs/codec_a_mu.c
index b9c1c4938f..40e14ca5e5 100644
--- a/codecs/codec_a_mu.c
+++ b/codecs/codec_a_mu.c
@@ -161,8 +161,9 @@ static int load_module(void)
 		res = ast_register_translator(&ulawtoalaw);
 	else
 		ast_unregister_translator(&alawtoulaw);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "A-law and Mulaw direct Coder/Decoder");
diff --git a/codecs/codec_adpcm.c b/codecs/codec_adpcm.c
index e76470b6c4..a40bbbc9f6 100644
--- a/codecs/codec_adpcm.c
+++ b/codecs/codec_adpcm.c
@@ -350,13 +350,15 @@ static struct ast_translator lintoadpcm = {
 	.buf_size = BUFFER_SAMPLES/ 2,	/* 2 samples per byte */
 };
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
 	struct ast_variable *var;
-	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (cfg == NULL)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var ; var = var->next) {
 		if (!strcasecmp(var->name, "genericplc")) {
 			adpcmtolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -364,13 +366,15 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 /*! \brief standard module glue */
 static int reload(void)
 {
-	parse_config(1);
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -387,14 +391,16 @@ static int load_module(void)
 {
 	int res;
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	res = ast_register_translator(&adpcmtolin);
 	if (!res)
 		res = ast_register_translator(&lintoadpcm);
 	else
 		ast_unregister_translator(&adpcmtolin);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Adaptive Differential PCM Coder/Decoder",
diff --git a/codecs/codec_alaw.c b/codecs/codec_alaw.c
index 1c28055354..f4436d1624 100644
--- a/codecs/codec_alaw.c
+++ b/codecs/codec_alaw.c
@@ -134,13 +134,15 @@ static struct ast_translator lintoalaw = {
 	.buf_size = BUFFER_SAMPLES,
 };
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
-	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (cfg == NULL)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 		if (!strcasecmp(var->name, "genericplc")) {
 			alawtolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -148,14 +150,16 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 /*! \brief standard module stuff */
 
 static int reload(void)
 {
-	parse_config(1);
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -172,14 +176,16 @@ static int load_module(void)
 {
 	int res;
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	res = ast_register_translator(&alawtolin);
 	if (!res)
 		res = ast_register_translator(&lintoalaw);
 	else
 		ast_unregister_translator(&alawtolin);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "A-law Coder/Decoder",
diff --git a/codecs/codec_g722.c b/codecs/codec_g722.c
index b2b7609123..00e36fb33c 100644
--- a/codecs/codec_g722.c
+++ b/codecs/codec_g722.c
@@ -164,14 +164,16 @@ static struct ast_translator lintog722 = {
 	.buf_size = BUFFER_SAMPLES,
 };
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
 
-	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (cfg == NULL)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 		if (!strcasecmp(var->name, "genericplc")) {
 			g722tolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -180,13 +182,14 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 static int reload(void)
 {
-	parse_config(1);
-
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -204,15 +207,18 @@ static int load_module(void)
 	int res = 0;
 
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 
 	res |= ast_register_translator(&g722tolin);
 	res |= ast_register_translator(&lintog722);
 
-	if (res)
+	if (res) {
 		unload_module();
+		return AST_MODULE_LOAD_FAILURE;
+	}	
 
-	return res;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ITU G.722-64kbps G722 Transcoder",
diff --git a/codecs/codec_g726.c b/codecs/codec_g726.c
index ba80588fa6..183c4a9e42 100644
--- a/codecs/codec_g726.c
+++ b/codecs/codec_g726.c
@@ -894,14 +894,16 @@ static struct ast_translator g726aal2tog726 = {
 	.buf_size = BUFFER_SAMPLES,
 };
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
 
-	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (cfg == NULL)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 		if (!strcasecmp(var->name, "genericplc")) {
 			g726tolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -910,13 +912,14 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 static int reload(void)
 {
-	parse_config(1);
-
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -940,7 +943,8 @@ static int load_module(void)
 	int res = 0;
 
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 
 	res |= ast_register_translator(&g726tolin);
 	res |= ast_register_translator(&lintog726);
@@ -951,10 +955,12 @@ static int load_module(void)
 	res |= ast_register_translator(&g726aal2tog726);
 	res |= ast_register_translator(&g726tog726aal2);
 
-	if (res)
+	if (res) {
 		unload_module();
+		return AST_MODULE_LOAD_FAILURE;
+	}	
 
-	return res;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ITU G.726-32kbps G726 Transcoder",
diff --git a/codecs/codec_gsm.c b/codecs/codec_gsm.c
index b19abfe88d..3fbcf9c8e2 100644
--- a/codecs/codec_gsm.c
+++ b/codecs/codec_gsm.c
@@ -235,13 +235,15 @@ static struct ast_translator lintogsm = {
 };
 
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
-	if (!cfg || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (!cfg)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED) 
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 	       if (!strcasecmp(var->name, "genericplc")) {
 		       gsmtolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -249,13 +251,16 @@ static void parse_config(int reload)
 	       }
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 /*! \brief standard module glue */
 static int reload(void)
 {
-	parse_config(1);
-	return 0;
+	if (parse_config(1)) {
+		return AST_MODULE_LOAD_DECLINE;
+	}
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -273,14 +278,16 @@ static int load_module(void)
 {
 	int res;
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	res = ast_register_translator(&gsmtolin);
 	if (!res) 
 		res=ast_register_translator(&lintogsm);
 	else
 		ast_unregister_translator(&gsmtolin);
-
-	return res;
+	if (res) 
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "GSM Coder/Decoder",
diff --git a/codecs/codec_ilbc.c b/codecs/codec_ilbc.c
index 637f22d122..ea84eded32 100644
--- a/codecs/codec_ilbc.c
+++ b/codecs/codec_ilbc.c
@@ -237,8 +237,9 @@ static int load_module(void)
 		res=ast_register_translator(&lintoilbc);
 	else
 		ast_unregister_translator(&ilbctolin);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "iLBC Coder/Decoder");
diff --git a/codecs/codec_lpc10.c b/codecs/codec_lpc10.c
index 3ed528bef9..ca49643362 100644
--- a/codecs/codec_lpc10.c
+++ b/codecs/codec_lpc10.c
@@ -261,13 +261,15 @@ static struct ast_translator lintolpc10 = {
 	.buf_size = LPC10_BYTES_IN_COMPRESSED_FRAME * (1 + BUFFER_SAMPLES / LPC10_SAMPLES_PER_FRAME),
 };
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
-	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (cfg == NULL)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 		if (!strcasecmp(var->name, "genericplc")) {
 			lpc10tolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -276,13 +278,14 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 static int reload(void)
 {
-	parse_config(1);
-
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 
@@ -300,14 +303,16 @@ static int load_module(void)
 {
 	int res;
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	res = ast_register_translator(&lpc10tolin);
 	if (!res) 
 		res = ast_register_translator(&lintolpc10);
 	else
 		ast_unregister_translator(&lpc10tolin);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "LPC10 2.4kbps Coder/Decoder",
diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c
index c4e24f915a..bbb6be2382 100644
--- a/codecs/codec_speex.c
+++ b/codecs/codec_speex.c
@@ -375,7 +375,7 @@ static struct ast_translator lintospeex = {
 	.buf_size = BUFFER_SAMPLES * 2, /* XXX maybe a lot less ? */
 };
 
-static void parse_config(int reload) 
+static int parse_config(int reload) 
 {
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
@@ -384,7 +384,9 @@ static void parse_config(int reload)
 	float res_f;
 
 	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 
 	for (var = ast_variable_browse(cfg, "speex"); var; var = var->next) {
 		if (!strcasecmp(var->name, "quality")) {
@@ -467,13 +469,14 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 static int reload(void) 
 {
-	parse_config(1);
-
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -490,14 +493,16 @@ static int load_module(void)
 {
 	int res;
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	res=ast_register_translator(&speextolin);
 	if (!res) 
 		res=ast_register_translator(&lintospeex);
 	else
 		ast_unregister_translator(&speextolin);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Speex Coder/Decoder",
diff --git a/codecs/codec_ulaw.c b/codecs/codec_ulaw.c
index 4ffbe835f9..b10054f3e8 100644
--- a/codecs/codec_ulaw.c
+++ b/codecs/codec_ulaw.c
@@ -147,13 +147,15 @@ static struct ast_translator lintoulaw = {
 	.buffer_samples = BUFFER_SAMPLES,
 };
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
-	if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (cfg == NULL)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 		if (!strcasecmp(var->name, "genericplc")) {
 			ulawtolin.useplc = ast_true(var->value) ? 1 : 0;
@@ -161,13 +163,14 @@ static void parse_config(int reload)
 		}
 	}
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 static int reload(void)
 {
-	parse_config(1);
-
-	return 0;
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -184,14 +187,16 @@ static int load_module(void)
 {
 	int res;
 
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	res = ast_register_translator(&ulawtolin);
 	if (!res)
 		res = ast_register_translator(&lintoulaw);
 	else
 		ast_unregister_translator(&ulawtolin);
-
-	return res;
+	if (res)
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "mu-Law Coder/Decoder",
diff --git a/codecs/codec_zap.c b/codecs/codec_zap.c
index df400a9f9a..5802ff2a15 100644
--- a/codecs/codec_zap.c
+++ b/codecs/codec_zap.c
@@ -380,14 +380,16 @@ static void unregister_translators(void)
 	AST_LIST_UNLOCK(&translators);
 }
 
-static void parse_config(int reload)
+static int parse_config(int reload)
 {
 	struct ast_variable *var;
 	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
 	struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
 
-	if (!cfg || cfg == CONFIG_STATUS_FILEUNCHANGED)
-		return;
+	if (!cfg)
+		return -1;
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED)
+		return 0;
 
 	for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
 	       if (!strcasecmp(var->name, "genericplc")) {
@@ -396,8 +398,8 @@ static void parse_config(int reload)
 					   global_useplc ? "" : "not ");
 	       }
 	}
-
 	ast_config_destroy(cfg);
+	return 0;
 }
 
 static void build_translators(struct format_map *map, unsigned int dstfmts, unsigned int srcfmts)
@@ -456,14 +458,15 @@ static int reload(void)
 {
 	struct translator *cur;
 
-	parse_config(1);
+	if (parse_config(1))
+		return AST_MODULE_LOAD_DECLINE;
 
 	AST_LIST_LOCK(&translators);
 	AST_LIST_TRAVERSE(&translators, cur, entry)
 		cur->t.useplc = global_useplc;
 	AST_LIST_UNLOCK(&translators);
 
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
@@ -476,11 +479,11 @@ static int unload_module(void)
 
 static int load_module(void)
 {
-	parse_config(0);
+	if (parse_config(0))
+		return AST_MODULE_LOAD_DECLINE;
 	find_transcoders();
 	ast_cli_register_multiple(cli, sizeof(cli) / sizeof(cli[0]));
-
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Generic Zaptel Transcoder Codec Translator",
diff --git a/formats/format_g723.c b/formats/format_g723.c
index dd5a1e6afa..64883fe88c 100644
--- a/formats/format_g723.c
+++ b/formats/format_g723.c
@@ -152,7 +152,9 @@ static const struct ast_format g723_1_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&g723_1_f);
+	if (ast_format_register(&g723_1_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_g726.c b/formats/format_g726.c
index 09504bf6c0..ffaaa367cb 100644
--- a/formats/format_g726.c
+++ b/formats/format_g726.c
@@ -255,10 +255,10 @@ static int load_module(void)
 	for (i = 0; f[i].format ; i++) {
 		if (ast_format_register(&f[i])) {	/* errors are fatal */
 			ast_log(LOG_WARNING, "Failed to register format %s.\n", f[i].name);
-			return -1;
+			return AST_MODULE_LOAD_FAILURE;
 		}
 	}
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_g729.c b/formats/format_g729.c
index 3f46bcbffa..5ad16d97e5 100644
--- a/formats/format_g729.c
+++ b/formats/format_g729.c
@@ -148,7 +148,9 @@ static const struct ast_format g729_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&g729_f);
+	if (ast_format_register(&g729_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_gsm.c b/formats/format_gsm.c
index f997af1190..4bb49eb453 100644
--- a/formats/format_gsm.c
+++ b/formats/format_gsm.c
@@ -170,7 +170,9 @@ static const struct ast_format gsm_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&gsm_f);
+	if (ast_format_register(&gsm_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_h263.c b/formats/format_h263.c
index a2537f0372..90fedfb556 100644
--- a/formats/format_h263.c
+++ b/formats/format_h263.c
@@ -186,7 +186,9 @@ static const struct ast_format h263_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&h263_f);
+	if (ast_format_register(&h263_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_h264.c b/formats/format_h264.c
index 4b471f84e5..e2bc36c2ed 100644
--- a/formats/format_h264.c
+++ b/formats/format_h264.c
@@ -175,7 +175,9 @@ static const struct ast_format h264_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&h264_f);
+	if (ast_format_register(&h264_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_ilbc.c b/formats/format_ilbc.c
index 78d1179109..f7d37d5578 100644
--- a/formats/format_ilbc.c
+++ b/formats/format_ilbc.c
@@ -146,7 +146,9 @@ static const struct ast_format ilbc_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&ilbc_f);
+	if (ast_format_register(&ilbc_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_jpeg.c b/formats/format_jpeg.c
index edef171d26..bb0661074e 100644
--- a/formats/format_jpeg.c
+++ b/formats/format_jpeg.c
@@ -114,7 +114,9 @@ static struct ast_imager jpeg_format = {
 
 static int load_module(void)
 {
-	return ast_image_register(&jpeg_format);
+	if (ast_image_register(&jpeg_format))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_ogg_vorbis.c b/formats/format_ogg_vorbis.c
index 3868c5a766..14127588bf 100644
--- a/formats/format_ogg_vorbis.c
+++ b/formats/format_ogg_vorbis.c
@@ -553,7 +553,9 @@ static const struct ast_format vorbis_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&vorbis_f);
+	if (ast_format_register(&vorbis_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_pcm.c b/formats/format_pcm.c
index 6736ea9969..5c31408e51 100644
--- a/formats/format_pcm.c
+++ b/formats/format_pcm.c
@@ -479,10 +479,12 @@ static int load_module(void)
 	for (index = 0; index < (sizeof(alaw_silence) / sizeof(alaw_silence[0])); index++)
 		alaw_silence[index] = AST_LIN2A(0);
 
-	return ast_format_register(&pcm_f)
+	if ( ast_format_register(&pcm_f)
 		|| ast_format_register(&alaw_f)
 		|| ast_format_register(&au_f)
-		|| ast_format_register(&g722_f);
+		|| ast_format_register(&g722_f) )
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_sln.c b/formats/format_sln.c
index c8c5cc04bd..8bb369c984 100644
--- a/formats/format_sln.c
+++ b/formats/format_sln.c
@@ -130,7 +130,9 @@ static const struct ast_format slin_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&slin_f);
+	if (ast_format_register(&slin_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_vox.c b/formats/format_vox.c
index c729f3b5cb..79cf093dc1 100644
--- a/formats/format_vox.c
+++ b/formats/format_vox.c
@@ -135,7 +135,9 @@ static const struct ast_format vox_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&vox_f);
+	if (ast_format_register(&vox_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_wav.c b/formats/format_wav.c
index d37b55cd4f..c09c7ed1f2 100644
--- a/formats/format_wav.c
+++ b/formats/format_wav.c
@@ -491,7 +491,9 @@ static const struct ast_format wav_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&wav_f);
+	if (ast_format_register(&wav_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/formats/format_wav_gsm.c b/formats/format_wav_gsm.c
index fea08952ed..6916ceaf4c 100644
--- a/formats/format_wav_gsm.c
+++ b/formats/format_wav_gsm.c
@@ -559,7 +559,9 @@ static const struct ast_format wav49_f = {
 
 static int load_module(void)
 {
-	return ast_format_register(&wav49_f);
+	if (ast_format_register(&wav49_f))
+		return AST_MODULE_LOAD_FAILURE;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/res/res_adsi.c b/res/res_adsi.c
index ee6966ca7b..08ae71f7c5 100644
--- a/res/res_adsi.c
+++ b/res/res_adsi.c
@@ -1106,7 +1106,7 @@ static int load_module(void)
 	ast_adsi_input_control = _ast_adsi_input_control;
 	ast_adsi_input_format = _ast_adsi_input_format;
 
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/res/res_ael_share.c b/res/res_ael_share.c
index 7c4dc70a8e..daa6a23604 100644
--- a/res/res_ael_share.c
+++ b/res/res_ael_share.c
@@ -52,7 +52,7 @@ static int unload_module(void)
 
 static int load_module(void)
 {
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "share-able code for AEL",
diff --git a/res/res_clioriginate.c b/res/res_clioriginate.c
index 3cc3f2db22..a0e598434e 100644
--- a/res/res_clioriginate.c
+++ b/res/res_clioriginate.c
@@ -190,7 +190,7 @@ static int unload_module(void)
 static int load_module(void)
 {
 	ast_cli_register_multiple(cli_cliorig, sizeof(cli_cliorig) / sizeof(struct ast_cli_entry));
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Call origination from the CLI");
diff --git a/res/res_convert.c b/res/res_convert.c
index 98f51774e0..974cf6ab7c 100644
--- a/res/res_convert.c
+++ b/res/res_convert.c
@@ -159,7 +159,7 @@ static int unload_module(void)
 static int load_module(void)
 {
 	ast_cli_register_multiple(cli_convert, sizeof(cli_convert) / sizeof(struct ast_cli_entry));
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "File format conversion CLI command");
diff --git a/res/res_indications.c b/res/res_indications.c
index 74d6288e1d..237424502d 100644
--- a/res/res_indications.c
+++ b/res/res_indications.c
@@ -410,7 +410,7 @@ static int load_module(void)
 	ast_register_application("PlayTones", handle_playtones, "Play a tone list", playtones_desc);
 	ast_register_application("StopPlayTones", handle_stopplaytones, "Stop playing a tone list","Stop playing a tone list");
 
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 /*! \brief Reload indications module */
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index b074394b3b..dd1304ee43 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -1322,7 +1322,7 @@ static int load_module(void)
 		ast_install_music_functions(local_ast_moh_start, local_ast_moh_stop, local_ast_moh_cleanup);
 	}
 
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int reload(void)
diff --git a/res/res_smdi.c b/res/res_smdi.c
index 91a6da4892..ee79189534 100644
--- a/res/res_smdi.c
+++ b/res/res_smdi.c
@@ -715,7 +715,7 @@ static int load_module(void)
 		ast_log(LOG_WARNING, "No SMDI interfaces are available to listen on, not starting SMDI listener.\n");
 		return AST_MODULE_LOAD_DECLINE;
 	} else
-		return 0;
+		return AST_MODULE_LOAD_SUCCESS;
 }
 
 static int unload_module(void)
diff --git a/res/res_speech.c b/res/res_speech.c
index b6e7437472..cb096d3d95 100644
--- a/res/res_speech.c
+++ b/res/res_speech.c
@@ -341,7 +341,7 @@ static int unload_module(void)
 
 static int load_module(void)
 {
-	return 0;
+	return AST_MODULE_LOAD_SUCCESS;
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Generic Speech Recognition API",
-- 
GitLab