From 09384634ccce20673419d3927e23fdaa8164464c Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Tue, 9 Jan 2007 00:39:11 +0000
Subject: [PATCH] add getvar

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3931 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 .../mod_event_socket/mod_event_socket.c        | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
index 4eebbf76cf..df0885cd8c 100644
--- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
+++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
@@ -613,6 +613,9 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t *event
 
 
     if (listener->session) {
+        switch_channel_t *channel = switch_core_session_get_channel(listener->session);
+        assert(channel != NULL);
+
         if (!strncasecmp(cmd, "connect", 7)) {
             snprintf(reply, reply_len, "+OK");
             goto done;
@@ -628,6 +631,21 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t *event
                 snprintf(reply, reply_len, "+OK");
             }
             goto done;
+        } else if (!strncasecmp(cmd, "getvar", 6)) {
+            char *arg;
+            char *val = "";
+            
+            strip_cr(cmd);
+
+            if ((arg = strchr(cmd, ' '))) {
+                *arg++ = '\0';
+                if (!(val = switch_channel_get_variable(channel, arg))) {
+                    val = "";
+                }
+
+            }
+            snprintf(reply, reply_len, val);
+            goto done;
         } else if (!strncasecmp(cmd, "myevents", 8)) {
             listener->event_list[SWITCH_EVENT_CHANNEL_CREATE] = 1;
             listener->event_list[SWITCH_EVENT_CHANNEL_DESTROY] = 1;