Handle device state changes properly when formatting characters are present (bug #5450, new patch)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6806 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer
2005-10-17 15:41:55 +00:00
parent 7a59bc42c8
commit 7e890dd49c
3 changed files with 32 additions and 11 deletions

View File

@@ -193,22 +193,14 @@ static void do_state_change(const char *device)
ast_hint_state_changed(device);
}
/*--- ast_device_state_changed: Accept change notification, add it to change queue */
int ast_device_state_changed(const char *fmt, ...)
static int __ast_device_state_changed_literal(char *buf)
{
char buf[AST_MAX_EXTENSION];
char *device;
char *parse;
struct state_change *change = NULL;
va_list ap;
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
parse = buf;
device = strsep(&parse, "-");
if (change_thread != AST_PTHREADT_NULL)
change = calloc(1, sizeof(*change) + strlen(device));
@@ -230,6 +222,25 @@ int ast_device_state_changed(const char *fmt, ...)
return 1;
}
int ast_device_state_changed_literal(const char *dev)
{
char *buf;
buf = ast_strdupa(dev);
return __ast_device_state_changed_literal(buf);
}
/*--- ast_device_state_changed: Accept change notification, add it to change queue */
int ast_device_state_changed(const char *fmt, ...)
{
char buf[AST_MAX_EXTENSION];
va_list ap;
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
return __ast_device_state_changed_literal(buf);
}
/*--- do_devstate_changes: Go through the dev state change queue and update changes in the dev state thread */
static void *do_devstate_changes(void *data)
{