diff --git a/devicestate.c b/devicestate.c
index fabed739d5711665c5f32087315e73f8eb866f5d..086cadbf429e78a713dec9695944e6894cf13f26 100755
--- a/devicestate.c
+++ b/devicestate.c
@@ -195,12 +195,13 @@ static void do_state_change(const char *device)
 
 static int __ast_device_state_changed_literal(char *buf)
 {
-	char *device;
-	char *parse;
+	char *device, *tmp;
 	struct state_change *change = NULL;
 
-	parse = buf;
-	device = strsep(&parse, "-");
+	device = buf;
+	tmp = strrchr(device, '-');
+	if (tmp)
+		*tmp = '\0';
 	if (change_thread != AST_PTHREADT_NULL)
 		change = calloc(1, sizeof(*change) + strlen(device));