mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 03:50:31 +00:00
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:
@@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user