aboutsummaryrefslogtreecommitdiffstats
path: root/devicestate.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-10-17 15:41:55 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-10-17 15:41:55 +0000
commit76bd457fcd1744499e2185919ac9dc915e131e2f (patch)
treef9fd3105f5cc9a16da23695ab3828ff1527d95fb /devicestate.c
parentc28828ebddf2d472ed379a164fd9e244fcb97e69 (diff)
Handle device state changes properly when formatting characters are present (bug #5450, new patch)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6806 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'devicestate.c')
-rwxr-xr-xdevicestate.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/devicestate.c b/devicestate.c
index 3b5c581f4..c85f9a8fe 100755
--- a/devicestate.c
+++ b/devicestate.c
@@ -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)
{