Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -231,9 +231,9 @@ CORE_LIBS+=libfreeswitch_libyuv.la
endif

lib_LTLIBRARIES = libfreeswitch.la
libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(SQLITE_CFLAGS) $(GUMBO_CFLAGS) $(FVAD_CFLAGS) $(FREETYPE_CFLAGS) $(CURL_CFLAGS) $(PCRE_CFLAGS) $(SPEEX_CFLAGS) $(LIBEDIT_CFLAGS) $(openssl_CFLAGS) $(SOFIA_SIP_CFLAGS) $(AM_CFLAGS) $(TPL_CFLAGS)
libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(SQLITE_CFLAGS) $(GUMBO_CFLAGS) $(FVAD_CFLAGS) $(FREETYPE_CFLAGS) $(CURL_CFLAGS) $(PCRE2_CFLAGS) $(SPEEX_CFLAGS) $(LIBEDIT_CFLAGS) $(openssl_CFLAGS) $(SOFIA_SIP_CFLAGS) $(AM_CFLAGS) $(TPL_CFLAGS)
libfreeswitch_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_LDFLAGS) -no-undefined
libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(GUMBO_LIBS) $(FVAD_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(SYSTEMD_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS) $(TPL_LIBS) $(SPANDSP_LIBS) $(SOFIA_SIP_LIBS)
libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(GUMBO_LIBS) $(FVAD_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE2_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(SYSTEMD_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS) $(TPL_LIBS) $(SPANDSP_LIBS) $(SOFIA_SIP_LIBS)
libfreeswitch_la_DEPENDENCIES = $(BUILT_SOURCES)

if HAVE_PNG
Expand Down
12 changes: 6 additions & 6 deletions build/Makefile.centos5
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ DOWNLOAD=http://files.freeswitch.org/downloads/libs
JPEG=v8d
OPENSSL=1.0.1l
SQLITE=autoconf-3080403
PCRE=8.35
PCRE2=10.42
CURL=7.40.0
SPEEX=1.2rc1
LIBEDIT=20140618-3.1
Expand Down Expand Up @@ -45,7 +45,7 @@ has-git:
@git --version || (echo "please install git by running 'make install-git'" && false)

clean:
@rm -rf openssl* ldns* jpeg* pcre* perl* pkg-config* speex* sqlite* libedit* curl* *~
@rm -rf openssl* ldns* jpeg* pcre2* perl* pkg-config* speex* sqlite* libedit* curl* *~
(cd freeswitch.git && git clean -fdx && git reset --hard HEAD && git pull)

libjpeg: jpeg-8d/.done
Expand All @@ -66,9 +66,9 @@ sqlite-$(SQLITE):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && ./configure --prefix=$(PREFIX) && make && sudo make install && touch .done_sqlite && touch .done)

pcre: pcre-$(PCRE)/.done
pcre-$(PCRE)/.done: pcre-$(PCRE)
pcre-$(PCRE):
pcre2: pcre2-$(PCRE2)/.done
pcre2-$(PCRE2)/.done: pcre2-$(PCRE2)
pcre2-$(PCRE2):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && ./configure --prefix=$(PREFIX) && make && sudo make install && touch .done)

Expand Down Expand Up @@ -96,4 +96,4 @@ ldns-$(LDNS):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && ./configure --with-ssl=$(PREFIX) --prefix=$(PREFIX) && make && sudo make install && touch .done)

deps: libjpeg openssl sqlite pcre curl speex libedit ldns
deps: libjpeg openssl sqlite pcre2 curl speex libedit ldns
6 changes: 3 additions & 3 deletions build/Makefile.centos6
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
# in that same directory.
#
#
RPMS=git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel
DEBS=git build-essential automake autoconf 'libtool-bin|libtool' wget python uuid-dev zlib1g-dev 'libjpeg8-dev|libjpeg62-turbo-dev' libncurses5-dev libssl-dev libpcre3-dev libcurl4-openssl-dev libldns-dev libedit-dev libspeexdsp-dev libspeexdsp-dev libsqlite3-dev perl libgdbm-dev libdb-dev bison libvlc-dev pkg-config
RPMS=git gcc-c++ autoconf automake libtool wget ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre2-devel speex-devel ldns-devel libedit-devel
DEBS=git build-essential automake autoconf 'libtool-bin|libtool' wget uuid-dev zlib1g-dev 'libjpeg8-dev|libjpeg62-turbo-dev' libncurses5-dev libssl-dev libpcre2-dev libcurl4-openssl-dev libldns-dev libedit-dev libspeexdsp-dev libspeexdsp-dev libsqlite3-dev perl libgdbm-dev libdb-dev bison libvlc-dev pkg-config

freeswitch: deps has-git freeswitch.git/Makefile
cd freeswitch.git && make
Expand All @@ -31,4 +31,4 @@ has-git:
@git --version || (echo "please install git" && false)

deps: rpmforge
((which yum && yum -y install $(RPMS)) || (which apt-get && apt-get -y install $(DEBS))) || true
((which yum && yum -y install $\(RPMS\)) || (which apt-get && apt-get -y install $\(DEBS\))) || true
2 changes: 1 addition & 1 deletion build/Makefile.openbsd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#
#

PKG=rsync-3.1.0 git automake-1.14.1 autoconf-2.69p1 libtool gmake bzip2 jpeg wget pcre speex libldns
PKG=rsync-3.1.0 git automake-1.14.1 autoconf-2.69p1 libtool gmake bzip2 jpeg wget pcre2 speex libldns
PREFIX=/usr/local/freeswitch
DOWNLOAD=http://files.freeswitch.org/downloads/libs
OPENSSL=1.0.1j
Expand Down
12 changes: 6 additions & 6 deletions build/Makefile.solaris11
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ DOWNLOAD=http://files.freeswitch.org/downloads/libs
JP=v8d
SSL=1.0.1j
SQLITE=autoconf-3080403
PCRE=8.35
PCRE2=10.42
CURL=7.35.0
SPEEX=1.2rc1
LIBEDIT=20140618-3.1
Expand Down Expand Up @@ -43,7 +43,7 @@ has-git:
@git --version || (echo "please install git by running 'gmake install-git'" && false)

clean:
@rm -rf openssl* ldns* jpeg* pcre* perl* pkg-config* speex* sqlite* libedit* curl* *~
@rm -rf openssl* ldns* jpeg* pcre2* perl* pkg-config* speex* sqlite* libedit* curl* *~
(cd freeswitch.git && git clean -fdx && git reset --hard HEAD && git pull)

libjpeg: jpeg-8d/.done
Expand All @@ -64,9 +64,9 @@ sqlite-$(SQLITE):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && CFLAGS=-m64 LDFLAGS=-m64 ./configure --prefix=$(PREFIX) && gmake && sudo gmake install && touch .done)

pcre: pcre-$(PCRE)/.done
pcre-$(PCRE)/.done: pcre-$(PCRE)
pcre-$(PCRE):
pcre2: pcre2-$(PCRE2)/.done
pcre2-$(PCRE2)/.done: pcre2-$(PCRE2)
pcre2-$(PCRE2):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && CXXFLAGS=-m64 CFLAGS=-m64 LDFLAGS=-m64 ./configure --prefix=$(PREFIX) && gmake && sudo gmake install && touch .done)

Expand Down Expand Up @@ -107,4 +107,4 @@ perl-$(PERL):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && CFLAGS=-m64 LDFLAGS=-m64 ./configure.gnu -Dcc=gcc --prefix=$(PREFIX) && gmake && sudo gmake install && touch .done)

deps: has-git libjpeg openssl sqlite pcre curl speex libedit ldns pkg-config perl
deps: has-git libjpeg openssl sqlite pcre2 curl speex libedit ldns pkg-config perl
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1323,7 +1323,7 @@ PKG_CHECK_MODULES([TPL], [libtpl >= 1.5],[

PKG_CHECK_MODULES([SQLITE], [sqlite3 >= 3.6.20])
PKG_CHECK_MODULES([CURL], [libcurl >= 7.19])
PKG_CHECK_MODULES([PCRE], [libpcre >= 7.8])
PKG_CHECK_MODULES([PCRE2], [libpcre2-8 >= 10.00])
PKG_CHECK_MODULES([SPEEX], [speex >= 1.2rc1 speexdsp >= 1.2rc1])
PKG_CHECK_MODULES([YAML], [yaml-0.1 >= 0.1.4],[
AM_CONDITIONAL([HAVE_YAML],[true])],[
Expand Down
4 changes: 2 additions & 2 deletions debian/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ conf_dir="../conf"
lang_dir="../conf/vanilla/lang"
fs_description="FreeSWITCH is a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media."
mod_build_depends="." mod_depends="." mod_recommends="." mod_suggests="."
supported_debian_distros="wheezy jessie stretch buster bullseye bookworm sid"
supported_debian_distros="buster bullseye bookworm trixie sid"
supported_ubuntu_distros="trusty utopic xenial"
supported_distros="$supported_debian_distros $supported_ubuntu_distros"
avoid_mods=(
Expand Down Expand Up @@ -320,7 +320,7 @@ Build-Depends:
# core build
dpkg-dev (>= 1.15.8.12), gcc (>= 4:4.4.5), g++ (>= 4:4.4.5),
libc6-dev (>= 2.11.3), make (>= 3.81),
libpcre3-dev,
libpcre2-dev,
libedit-dev (>= 2.11),
libsqlite3-dev,
libtiff5-dev,
Expand Down
13 changes: 5 additions & 8 deletions debian/control-modules
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Description: mod_av
Adds mod_av.
Build-Depends: libavformat-dev, libswscale-dev, libavresample-dev
Build-Depends-Bookworm: libavformat-dev, libswscale-dev, libswresample-dev
Build-Depends-Trixie: libavformat-dev, libswscale-dev, libswresample-dev

Module: applications/mod_avmd
Description: Advanced voicemail detection
Expand Down Expand Up @@ -483,10 +484,7 @@ Description: mod_unicall
Module: endpoints/mod_verto
Description: Adds mod_verto.
Adds mod_verto.
Build-Depends: libperl-dev
Build-Depends-Buster: libperl-dev, libgdbm-compat-dev
Build-Depends-Bullseye: libperl-dev, libgdbm-compat-dev
Build-Depends-Bookworm: libperl-dev, libgdbm-compat-dev
Build-Depends: libperl-dev, libgdbm-compat-dev

## mod/event_handlers

Expand Down Expand Up @@ -644,6 +642,7 @@ Description: mod_lua
Adds mod_lua.
Build-Depends: liblua5.2-dev | liblua5.1-dev
Build-Depends-Bookworm: liblua5.3-dev | liblua5.2-dev | liblua5.1-dev
Build-Depends-Trixie: liblua5.3-dev | liblua5.2-dev | liblua5.1-0-dev

Module: languages/mod_managed
Description: mod_managed
Expand All @@ -653,10 +652,7 @@ Build-Depends: libmono-2.0-dev, mono-mcs
Module: languages/mod_perl
Description: mod_perl
Adds mod_perl.
Build-Depends: libperl-dev
Build-Depends-Buster: libperl-dev, libgdbm-compat-dev
Build-Depends-Bullseye: libperl-dev, libgdbm-compat-dev
Build-Depends-Bookworm: libperl-dev, libgdbm-compat-dev
Build-Depends: libperl-dev, libgdbm-compat-dev

Module: languages/mod_python
Description: mod_python
Expand All @@ -668,6 +664,7 @@ Description: mod_python3
Adds mod_python3.
Build-Depends: python3-dev
Build-Depends-Bookworm: python3-dev, python3-setuptools
Build-Depends-Trixie: python3-dev, python3-setuptools

Module: languages/mod_v8
Description: mod_v8
Expand Down
16 changes: 8 additions & 8 deletions debian/util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,21 +46,21 @@ find_distro () {
case "$1" in
experimental) echo "sid";;
unstable) echo "sid";;
experimental) echo "bookworm";;
testing) echo "bullseye";;
stable) echo "buster";;
oldstable) echo "stretch";;
testing) echo "trixie";;
stable) echo "bookworm";;
oldstable) echo "bullseye";;
oldoldstable) echo "buster";;
*) echo "$1";;
esac
}

find_suite () {
case "$1" in
sid) echo "unstable";;
bookworm) echo "experimental";;
bullseye) echo "testing";;
buster) echo "stable";;
stretch) echo "oldstable";;
trixie) echo "testing";;
bookworm) echo "stable";;
bullseye) echo "oldstable";;
buster) echo "oldoldstable";;
*) echo "$1";;
esac
}
Expand Down
2 changes: 1 addition & 1 deletion docker/examples/Debian11/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get -yq install \
# general
libssl-dev zlib1g-dev libdb-dev unixodbc-dev libncurses5-dev libexpat1-dev libgdbm-dev bison erlang-dev libtpl-dev libtiff5-dev uuid-dev \
# core
libpcre3-dev libedit-dev libsqlite3-dev libcurl4-openssl-dev nasm \
libpcre2-dev libedit-dev libsqlite3-dev libcurl4-openssl-dev nasm \
# core codecs
libogg-dev libspeex-dev libspeexdsp-dev \
# mod_enum
Expand Down
4 changes: 2 additions & 2 deletions freeswitch.spec
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ BuildRequires: libtool >= 1.5.17
BuildRequires: openssl-devel >= 1.0.1e
BuildRequires: sofia-sip-devel >= 1.13.17
BuildRequires: spandsp3-devel >= 3.0
BuildRequires: pcre-devel
BuildRequires: pcre2-devel
BuildRequires: speex-devel
BuildRequires: sqlite-devel >= 3.6.20
BuildRequires: libtiff-devel
Expand All @@ -156,7 +156,7 @@ BuildRequires: zlib-devel
BuildRequires: libxml2-devel
BuildRequires: libsndfile-devel
Requires: curl >= 7.19
Requires: pcre
Requires: pcre2
Requires: speex
Requires: sqlite >= 3.6.20
Requires: libtiff
Expand Down
2 changes: 0 additions & 2 deletions libs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,6 @@ opal
/win32/celt/*/*/libcelt.log
/win32/libg722_1/*/*/libg722_1.log
/win32/libshout/*/*/libshout.log
/win32/pcre/pcre_chartables.c
/win32/tmp*.bat
!/xmlrpc-c/include/xmlrpc-c/config.h.in
/xmlrpc-c/stamp-h2
Expand Down Expand Up @@ -610,7 +609,6 @@ opal
broadvoice/config/compile
ilbc/config/compile
libg722_1/config/compile
pcre/compile
srtp/build/compile
/pcre-*/
/speex-*/
Expand Down
2 changes: 1 addition & 1 deletion src/include/switch.h
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@
* - APR (http://apr.apache.org)
* - APR-Util (http://apr.apache.org)
* - SQLite (http://www.sqlite.org)
* - Pcre (http://www.pcre.org/)
* - Pcre2 (http://www.pcre.org/)
* - SRTP (http://srtp.sourceforge.net/srtp.html)
*
* Additionally, the various external modules make use of several external modules:
Expand Down
30 changes: 20 additions & 10 deletions src/include/switch_regex.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
*
* Michael Jerris <mike@jerris.com>
*
* switch_regex.h -- pcre wrapper and extensions Header
* switch_regex.h -- pcre2 wrapper and extensions Header
*
*/
/*! \file switch_regex.h
Expand All @@ -40,18 +40,23 @@ SWITCH_BEGIN_EXTERN_C
* @ingroup FREESWITCH
* @{
*/
typedef struct real_pcre switch_regex_t;
typedef struct pcre2_real_code switch_regex_t;
typedef struct pcre2_real_match_data_8 switch_regex_match_t;
typedef struct pcre2_real_compile_context_8 switch_regex_compile_context_t;

SWITCH_DECLARE(switch_regex_t *) switch_regex_compile(const char *pattern, int options, const char **errorptr, int *erroroffset,
const unsigned char *tables);
SWITCH_DECLARE(switch_regex_t *) switch_regex_compile(const char *pattern, int options, int *errorcode, unsigned int *erroroffset,
switch_regex_compile_context_t *ccontext);

SWITCH_DECLARE(int) switch_regex_copy_substring(const char *subject, int *ovector, int stringcount, int stringnumber, char *buffer, int size);
SWITCH_DECLARE(int) switch_regex_copy_substring(switch_regex_match_t *match_data, int stringnumber, char *buffer, size_t *size);

SWITCH_DECLARE(void) switch_regex_match_free(void *data);
SWITCH_DECLARE(void) switch_regex_free(void *data);

SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expression, switch_regex_t **new_re, int *ovector, uint32_t olen);
SWITCH_DECLARE(void) switch_perform_substitution(switch_regex_t *re, int match_count, const char *data, const char *field_data,
char *substituted, switch_size_t len, int *ovector);
SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expression, switch_regex_t **new_re, switch_regex_match_t **new_match_data);
#define switch_regex(field, expression) switch_regex_perform(field, expression, NULL, NULL)

SWITCH_DECLARE(void) switch_perform_substitution(switch_regex_match_t *match_data, const char *data,
char *substituted, switch_size_t len);

/*!
\brief Function to evaluate an expression against a string
Expand All @@ -70,12 +75,17 @@ SWITCH_DECLARE(switch_status_t) switch_regex_match(const char *target, const cha
*/
SWITCH_DECLARE(switch_status_t) switch_regex_match_partial(const char *target, const char *expression, int *partial_match);

SWITCH_DECLARE(void) switch_capture_regex(switch_regex_t *re, int match_count, const char *field_data,
int *ovector, const char *var, switch_cap_callback_t callback, void *user_data);
SWITCH_DECLARE(void) switch_capture_regex(switch_regex_match_t *match_data, int match_count,
const char *var, switch_cap_callback_t callback, void *user_data);

SWITCH_DECLARE_NONSTD(void) switch_regex_set_var_callback(const char *var, const char *val, void *user_data);
SWITCH_DECLARE_NONSTD(void) switch_regex_set_event_header_callback(const char *var, const char *val, void *user_data);

#define switch_regex_match_safe_free(match_data) if (match_data) {\
switch_regex_match_free(match_data);\
match_data = NULL;\
}

#define switch_regex_safe_free(re) if (re) {\
switch_regex_free(re);\
re = NULL;\
Expand Down
7 changes: 4 additions & 3 deletions src/mod/applications/mod_commands/mod_commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -2014,7 +2014,7 @@ SWITCH_STANDARD_API(replace_function)
SWITCH_STANDARD_API(regex_function)
{
switch_regex_t *re = NULL;
int ovector[30];
switch_regex_match_t *match_data = NULL;
int argc;
char *mydata = NULL, *argv[4];
size_t len = 0;
Expand Down Expand Up @@ -2054,7 +2054,7 @@ SWITCH_STANDARD_API(regex_function)
goto error;
}

proceed = switch_regex_perform(argv[0], argv[1], &re, ovector, sizeof(ovector) / sizeof(ovector[0]));
proceed = switch_regex_perform(argv[0], argv[1], &re, &match_data);

if (argc > 2) {
char *flags = "";
Expand All @@ -2069,7 +2069,7 @@ SWITCH_STANDARD_API(regex_function)
switch_assert(substituted);
memset(substituted, 0, len);
switch_replace_char(argv[2], '%', '$', SWITCH_FALSE);
switch_perform_substitution(re, proceed, argv[2], argv[0], substituted, len, ovector);
switch_perform_substitution(match_data, argv[2], substituted, len);

stream->write_function(stream, "%s", substituted);
free(substituted);
Expand All @@ -2091,6 +2091,7 @@ SWITCH_STANDARD_API(regex_function)
error:
stream->write_function(stream, "-ERR");
ok:
switch_regex_match_safe_free(match_data);
switch_regex_safe_free(re);
switch_safe_free(mydata);
return SWITCH_STATUS_SUCCESS;
Expand Down
8 changes: 5 additions & 3 deletions src/mod/applications/mod_dptools/mod_dptools.c
Original file line number Diff line number Diff line change
Expand Up @@ -3211,15 +3211,17 @@ SWITCH_STANDARD_APP(capture_function)
{
char *argv[3] = { 0 };
switch_regex_t *re = NULL;
int ovector[30] = {0};
switch_regex_match_t *match_data = NULL;
char *lbuf;
int proceed;

if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
&& switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0]))) == 3) {
if ((proceed = switch_regex_perform(argv[1], argv[2], &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) {
switch_capture_regex(re, proceed, argv[1], ovector, argv[0], switch_regex_set_var_callback, session);
if ((proceed = switch_regex_perform(argv[1], argv[2], &re, &match_data))) {
switch_capture_regex(match_data, proceed, argv[0], switch_regex_set_var_callback, session);
}

switch_regex_match_safe_free(match_data);
switch_regex_safe_free(re);
} else {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No data specified.\n");
Expand Down
Loading
Loading