diff --git a/build/modules.conf.in b/build/modules.conf.in
index 71ece983ef..66b649f6f3 100644
--- a/build/modules.conf.in
+++ b/build/modules.conf.in
@@ -4,7 +4,7 @@
#applications/mod_blacklist
#applications/mod_callcenter
#applications/mod_cidlookup
-applications/mod_cluechoo
+#applications/mod_cluechoo
applications/mod_commands
applications/mod_conference
#applications/mod_curl
diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml
index d8a0b5cc68..e5a297e8af 100644
--- a/conf/vanilla/autoload_configs/modules.conf.xml
+++ b/conf/vanilla/autoload_configs/modules.conf.xml
@@ -60,7 +60,7 @@
-
+
diff --git a/configure.ac b/configure.ac
index dbb5a925f2..857a59e7a5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -342,7 +342,7 @@ if test "$ax_cv_c_compiler_vendor" = "gnu"; then
saved_CFLAGS="$CFLAGS"
AC_CACHE_CHECK([whether compiler supports -Wno-unused-result],
[ac_cv_gcc_supports_w_no_unused_result], [
- CFLAGS="$CFLAGS -Wno-unused-result"
+ CFLAGS="$CFLAGS -Wno-unused-result -Wno-error=unused-result"
AC_TRY_COMPILE([],[return 0;],
[ac_cv_gcc_supports_w_no_unused_result=yes],
[ac_cv_gcc_supports_w_no_unused_result=no])])
diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh
index e9b77825a0..bc7da61c3f 100755
--- a/debian/bootstrap.sh
+++ b/debian/bootstrap.sh
@@ -15,6 +15,7 @@ avoid_mods=(
applications/mod_osp
applications/mod_rad_auth
applications/mod_skel
+ applications/mod_cluechoo
asr_tts/mod_cepstral
codecs/mod_com_g729
codecs/mod_ilbc
@@ -433,7 +434,6 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
freeswitch-mod-voicemail (= \${binary:Version}),
freeswitch-mod-esf (= \${binary:Version}),
freeswitch-mod-fsv (= \${binary:Version}),
- freeswitch-mod-cluechoo (= \${binary:Version}),
freeswitch-mod-valet-parking (= \${binary:Version}),
freeswitch-mod-httapi (= \${binary:Version}),
freeswitch-mod-dialplan-xml (= \${binary:Version}),
@@ -564,7 +564,6 @@ Recommends:
freeswitch-mod-blacklist (= \${binary:Version}),
freeswitch-mod-callcenter (= \${binary:Version}),
freeswitch-mod-cidlookup (= \${binary:Version}),
- freeswitch-mod-cluechoo (= \${binary:Version}),
freeswitch-mod-commands (= \${binary:Version}),
freeswitch-mod-conference (= \${binary:Version}),
freeswitch-mod-curl (= \${binary:Version}),
diff --git a/docs/Doxygen.conf b/docs/Doxygen.conf
index c087478179..41920106dc 100644
--- a/docs/Doxygen.conf
+++ b/docs/Doxygen.conf
@@ -31,7 +31,7 @@ PROJECT_NAME = "FreeSWITCH API Documentation"
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 1.0.6
+PROJECT_NUMBER = 1.5.14b
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c
index 43c186b728..3610ae5219 100644
--- a/libs/esl/fs_cli.c
+++ b/libs/esl/fs_cli.c
@@ -61,6 +61,7 @@ typedef struct {
int log_uuid;
int log_uuid_length;
int quiet;
+ int use_history_file;
int batch_mode;
char prompt_color[12];
char input_text_color[12];
@@ -1222,6 +1223,7 @@ static void read_config(const char *dft_cfile, const char *cfile) {
esl_set_string(profiles[pcount].prompt_color, prompt_color);
esl_set_string(profiles[pcount].input_text_color, input_text_color);
esl_set_string(profiles[pcount].output_text_color, output_text_color);
+ profiles[pcount].use_history_file = 1;
esl_log(ESL_LOG_DEBUG, "Found Profile [%s]\n", profiles[pcount].name);
pcount++;
}
@@ -1257,6 +1259,8 @@ static void read_config(const char *dft_cfile, const char *cfile) {
}
} else if(!strcasecmp(var, "quiet")) {
profiles[pcount-1].quiet = esl_true(val);
+ } else if(!strcasecmp(var, "no-history-file")) {
+ profiles[pcount-1].use_history_file = !esl_true(val);
} else if(!strcasecmp(var, "prompt-color")) {
esl_set_string(profiles[pcount-1].prompt_color, match_color(val));
} else if(!strcasecmp(var, "input-text-color")) {
@@ -1298,6 +1302,8 @@ int main(int argc, char *argv[])
const char *line = NULL;
char cmd_str[1024] = "";
cli_profile_t *profile = NULL;
+ int argv_use_history_file = 1;
+ int use_history_file = 0;
#ifndef WIN32
char hfile[512] = "/tmp/fs_cli_history";
char cfile[512] = "/etc/fs_cli.conf";
@@ -1324,6 +1330,7 @@ int main(int argc, char *argv[])
{"log-uuid-short", 0, 0, 'S'},
{"quiet", 0, 0, 'q'},
{"batchmode", 0, 0, 'b'},
+ {"no-history-file", 0, 0, 'Q'},
{"retry", 0, 0, 'r'},
{"interrupt", 0, 0, 'i'},
{"reconnect", 0, 0, 'R'},
@@ -1381,6 +1388,7 @@ int main(int argc, char *argv[])
esl_set_string(internal_profile.prompt_color, prompt_color);
esl_set_string(internal_profile.input_text_color, input_text_color);
esl_set_string(internal_profile.output_text_color, output_text_color);
+ internal_profile.use_history_file = 1;
if (home) {
snprintf(hfile, sizeof(hfile), "%s/.fs_cli_history", home);
snprintf(cfile, sizeof(cfile), "%s/.fs_cli_conf", home);
@@ -1395,7 +1403,7 @@ int main(int argc, char *argv[])
esl_global_set_default_logger(6); /* default debug level to 6 (info) */
for(;;) {
int option_index = 0;
- opt = getopt_long(argc, argv, "H:P:u:p:d:x:l:USt:T:qrRhib?n", options, &option_index);
+ opt = getopt_long(argc, argv, "H:P:u:p:d:x:l:USt:T:qQrRhib?n", options, &option_index);
if (opt == -1) break;
switch (opt) {
case 'H':
@@ -1450,6 +1458,9 @@ int main(int argc, char *argv[])
case 'b':
argv_batch = 1;
break;
+ case 'Q':
+ argv_use_history_file = 0;
+ break;
case 'i':
allow_ctl_c = 1;
break;
@@ -1505,6 +1516,9 @@ int main(int argc, char *argv[])
profile->batch_mode = 1;
feature_level=0;
}
+ if (argv_use_history_file && profile->use_history_file) {
+ use_history_file = 1;
+ }
if (*argv_loglevel) {
esl_set_string(profile->loglevel, argv_loglevel);
profile->quiet = 0;
@@ -1658,7 +1672,7 @@ int main(int argc, char *argv[])
}
history(myhistory, &ev, H_SETSIZE, 800);
el_set(el, EL_HIST, history, myhistory);
- history(myhistory, &ev, H_LOAD, hfile);
+ if (use_history_file) history(myhistory, &ev, H_LOAD, hfile);
el_source(el, NULL);
#endif
#ifdef WIN32
@@ -1712,7 +1726,7 @@ int main(int argc, char *argv[])
}
#ifdef HAVE_LIBEDIT
done:
- history(myhistory, &ev, H_SAVE, hfile);
+ if (use_history_file) history(myhistory, &ev, H_SAVE, hfile);
history_end(myhistory);
el_end(el);
#endif
diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update
index cb2691c2a1..63605e55a1 100644
--- a/libs/sofia-sip/.update
+++ b/libs/sofia-sip/.update
@@ -1 +1 @@
-Wed Sep 24 01:09:42 CDT 2014
+Thu Sep 25 21:43:53 CDT 2014
diff --git a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c
index 2fcd7021c0..7f4318e543 100644
--- a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c
+++ b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c
@@ -332,19 +332,22 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
ssize_t r;
int err = 0;
+ wsh->x++;
+ if (wsh->x > 250) ms_sleep(1);
+
if (wsh->ssl) {
do {
r = SSL_read(wsh->ssl, data, bytes);
- ms_sleep(10);
-
if (r == -1) {
err = SSL_get_error(wsh->ssl, r);
-
+
if (!block && err == SSL_ERROR_WANT_READ) {
r = -2;
goto end;
}
+
+ if (block) ms_sleep(10);
}
} while (r == -1 && err == SSL_ERROR_WANT_READ && wsh->x < 100);
@@ -354,10 +357,17 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
do {
r = recv(wsh->sock, data, bytes, 0);
- ms_sleep(10);
+ if (r == -1) {
+ if (!block && xp_is_blocking(xp_errno())) {
+ r = -2;
+ goto end;
+ }
+
+ if (block) ms_sleep(10);
+ }
} while (r == -1 && xp_is_blocking(xp_errno()) && wsh->x < 100);
- if (wsh->x >= 100) {
+ if (wsh->x >= 1000 || (block && wsh->x >= 100)) {
r = -1;
}
diff --git a/src/mod/endpoints/mod_verto/ws.c b/src/mod/endpoints/mod_verto/ws.c
index 2fcd7021c0..7f4318e543 100644
--- a/src/mod/endpoints/mod_verto/ws.c
+++ b/src/mod/endpoints/mod_verto/ws.c
@@ -332,19 +332,22 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
ssize_t r;
int err = 0;
+ wsh->x++;
+ if (wsh->x > 250) ms_sleep(1);
+
if (wsh->ssl) {
do {
r = SSL_read(wsh->ssl, data, bytes);
- ms_sleep(10);
-
if (r == -1) {
err = SSL_get_error(wsh->ssl, r);
-
+
if (!block && err == SSL_ERROR_WANT_READ) {
r = -2;
goto end;
}
+
+ if (block) ms_sleep(10);
}
} while (r == -1 && err == SSL_ERROR_WANT_READ && wsh->x < 100);
@@ -354,10 +357,17 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
do {
r = recv(wsh->sock, data, bytes, 0);
- ms_sleep(10);
+ if (r == -1) {
+ if (!block && xp_is_blocking(xp_errno())) {
+ r = -2;
+ goto end;
+ }
+
+ if (block) ms_sleep(10);
+ }
} while (r == -1 && xp_is_blocking(xp_errno()) && wsh->x < 100);
- if (wsh->x >= 100) {
+ if (wsh->x >= 1000 || (block && wsh->x >= 100)) {
r = -1;
}
diff --git a/src/switch_channel.c b/src/switch_channel.c
index d983110791..bfd20abc91 100644
--- a/src/switch_channel.c
+++ b/src/switch_channel.c
@@ -4203,7 +4203,11 @@ SWITCH_DECLARE(switch_status_t) switch_channel_get_variables(switch_channel_t *c
{
switch_status_t status;
switch_mutex_lock(channel->profile_mutex);
- status = switch_event_dup(event, channel->variables);
+ if (channel->variables) {
+ status = switch_event_dup(event, channel->variables);
+ } else {
+ status = switch_event_create(event, SWITCH_EVENT_CHANNEL_DATA);
+ }
switch_mutex_unlock(channel->profile_mutex);
return status;
}