From 51973e530b9acabe13c7c5ed1500919f0e5f37e1 Mon Sep 17 00:00:00 2001
From: Jeremy McNamara <jj@nufone.net>
Date: Mon, 9 Jun 2003 21:40:20 +0000
Subject: [PATCH] implement action: AbsoluteTimeout

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1080 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 manager.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/manager.c b/manager.c
index 15b51681df..11293df8d0 100755
--- a/manager.c
+++ b/manager.c
@@ -475,6 +475,35 @@ static int action_extensionstate(struct mansession *s, struct message *m)
 	return 0;
 }
 
+static int action_timeout(struct mansession *s, struct message *m)
+{
+	struct ast_channel *c = NULL;
+	char *name = astman_get_header(m, "Channel");
+	int timeout = atoi(astman_get_header(m, "Timeout"));
+	if (!strlen(name)) {
+		astman_send_error(s, "No channel specified");
+		return 0;
+	}
+	if (!timeout) {
+		astman_send_error(s, "No timeout specified");
+		return 0;
+	}
+	c = ast_channel_walk(NULL);
+	while(c) {
+		if (!strcasecmp(c->name, name)) {
+			break;
+		}
+		c = ast_channel_walk(c);
+	}
+	if (!c) {
+		astman_send_error(s, "No such channel");
+		return 0;
+	}
+	ast_channel_setwhentohangup(c, timeout);
+	astman_send_ack(s, "Timeout Set");
+	return 0;
+}
+
 static int process_message(struct mansession *s, struct message *m)
 {
 	char action[80];
@@ -764,6 +793,7 @@ int init_manager(void)
 		ast_manager_register( "MailboxStatus", EVENT_FLAG_CALL, action_mailboxstatus, "Check Mailbox" );
 		ast_manager_register( "Command", EVENT_FLAG_COMMAND, action_command, "Execute Command" );
 		ast_manager_register( "ExtensionState", EVENT_FLAG_CALL, action_extensionstate, "Check Extension Status" );
+		ast_manager_register( "AbsoluteTimeout", EVENT_FLAG_CALL, action_timeout, "Set Absolute Timeout" );
 
 		ast_cli_register(&show_mancmds_cli);
 		ast_cli_register(&show_manconn_cli);
-- 
GitLab