diff --git a/src/include/switch_utils.h b/src/include/switch_utils.h
index 1d090b2941..5025ce2114 100644
--- a/src/include/switch_utils.h
+++ b/src/include/switch_utils.h
@@ -341,6 +341,7 @@ SWITCH_DECLARE(switch_status_t) switch_string_match(const char *string, size_t s
 SWITCH_DECLARE(size_t) switch_url_encode(const char *url, char *buf, size_t len);
 SWITCH_DECLARE(char *) switch_url_decode(char *s);
 SWITCH_DECLARE(switch_bool_t) switch_simple_email(const char *to, const char *from, const char *headers, const char *body, const char *file);
+SWITCH_DECLARE(char *) switch_find_end_paren(const char *s, char open, char close);
 
 /* malloc or DIE macros */
 #ifdef NDEBUG
diff --git a/src/switch_utils.c b/src/switch_utils.c
index b8d7e7a9e2..47549a68d2 100644
--- a/src/switch_utils.c
+++ b/src/switch_utils.c
@@ -36,6 +36,33 @@
 #include "private/switch_core_pvt.h"
 
 
+SWITCH_DECLARE(char *) switch_find_end_paren(const char *s, char open, char close)
+{
+	const char *e = NULL;
+	int depth = 0;
+	
+	while (s && *s && *s == ' ') {
+		s++;
+	}
+
+	if (*s == open) {
+		depth++;
+		for (e = s + 1; e && *e; e++) {
+			if (*e == open) {
+				depth++;
+			} else if (*e == close) {
+				depth--;
+				if (!depth) {
+					break;
+				}
+			}
+		}
+	}
+
+	return (char *)e;
+}
+
+
 SWITCH_DECLARE(switch_size_t) switch_fd_read_line(int fd, char *buf, switch_size_t len)
 {
 	char c, *p;