mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 06:48:25 +00:00
bring back compile-option checking when loading modules, only this time use a string-based storage and comparison mechanism because it is easier to support on other platforms
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89461 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -14,4 +14,16 @@ done
|
|||||||
if ${GREP} AST_DEVMODE makeopts | ${GREP} -q yes
|
if ${GREP} AST_DEVMODE makeopts | ${GREP} -q yes
|
||||||
then
|
then
|
||||||
echo "#define AST_DEVMODE 1"
|
echo "#define AST_DEVMODE 1"
|
||||||
|
TMP="${TMP} AST_DEVMODE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case ${OSARCH} in # actually we should check build_os
|
||||||
|
*BSD|mingw|darwin*)
|
||||||
|
BUILDSUM=`echo ${TMP} | md5 | cut -c1-32`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
BUILDSUM=`echo ${TMP} | md5sum | cut -c1-32`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "#define AST_BUILDOPT_SUM \"${BUILDSUM}\""
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ struct ast_module_info {
|
|||||||
|
|
||||||
const char *key;
|
const char *key;
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
const char buildopt_sum[33]; /* The value of AST_BUILDOPT_SUM when this module was compiled */
|
||||||
};
|
};
|
||||||
|
|
||||||
void ast_module_register(const struct ast_module_info *);
|
void ast_module_register(const struct ast_module_info *);
|
||||||
@@ -229,7 +230,8 @@ void ast_module_unref(struct ast_module *);
|
|||||||
AST_MODULE, \
|
AST_MODULE, \
|
||||||
desc, \
|
desc, \
|
||||||
keystr, \
|
keystr, \
|
||||||
flags_to_set \
|
flags_to_set, \
|
||||||
|
AST_BUILDOPT_SUM, \
|
||||||
}; \
|
}; \
|
||||||
static void __attribute__ ((constructor)) __reg_module(void) \
|
static void __attribute__ ((constructor)) __reg_module(void) \
|
||||||
{ \
|
{ \
|
||||||
@@ -259,6 +261,7 @@ const static __attribute__((unused)) struct ast_module_info *ast_module_info;
|
|||||||
.flags = flags_to_set, \
|
.flags = flags_to_set, \
|
||||||
.description = desc, \
|
.description = desc, \
|
||||||
.key = keystr, \
|
.key = keystr, \
|
||||||
|
.buildopt_sum = AST_BUILDOPT_SUM, \
|
||||||
fields \
|
fields \
|
||||||
}; \
|
}; \
|
||||||
static void __attribute__ ((constructor)) __reg_module(void) \
|
static void __attribute__ ((constructor)) __reg_module(void) \
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ static unsigned char expected_key[] =
|
|||||||
{ 0x87, 0x76, 0x79, 0x35, 0x23, 0xea, 0x3a, 0xd3,
|
{ 0x87, 0x76, 0x79, 0x35, 0x23, 0xea, 0x3a, 0xd3,
|
||||||
0x25, 0x2a, 0xbb, 0x35, 0x87, 0xe4, 0x22, 0x24 };
|
0x25, 0x2a, 0xbb, 0x35, 0x87, 0xe4, 0x22, 0x24 };
|
||||||
|
|
||||||
|
static char buildopt_sum[33] = AST_BUILDOPT_SUM;
|
||||||
|
|
||||||
static unsigned int embedding = 1; /* we always start out by registering embedded modules,
|
static unsigned int embedding = 1; /* we always start out by registering embedded modules,
|
||||||
since they are here before we dlopen() any
|
since they are here before we dlopen() any
|
||||||
*/
|
*/
|
||||||
@@ -613,6 +615,13 @@ static unsigned int inspect_module(const struct ast_module *mod)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(mod->info->buildopt_sum) &&
|
||||||
|
strcmp(buildopt_sum, mod->info->buildopt_sum)) {
|
||||||
|
ast_log(LOG_WARNING, "Module '%s' was not compiled with the same compile-time options as this version of Asterisk.\n", mod->resource);
|
||||||
|
ast_log(LOG_WARNING, "Module '%s' will not be initialized as it may cause instability.\n", mod->resource);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user