mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-19 02:31:53 +00:00
Merge branch 'master' into v1.4.beta
This commit is contained in:
+12
-3
@@ -275,7 +275,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session,
|
||||
switch_event_t *event = NULL;
|
||||
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
if (ostatus != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
}
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
}
|
||||
@@ -1092,7 +1095,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_park(switch_core_session_t *session,
|
||||
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
if (args && args->input_callback) {
|
||||
if ((status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen)) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_status_t ostatus;
|
||||
|
||||
if ((ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen)) != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -1210,7 +1216,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_callback(switch_core_s
|
||||
}
|
||||
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
if (ostatus != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
}
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
|
||||
|
||||
@@ -687,9 +687,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
|
||||
|
||||
if (args->input_callback) {
|
||||
switch_event_t *event = NULL;
|
||||
switch_status_t ostatus;
|
||||
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
if ((ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen)) != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
}
|
||||
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
}
|
||||
@@ -941,7 +945,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_gentones(switch_core_session_t *sessi
|
||||
switch_event_t *event;
|
||||
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
if (ostatus != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
}
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
}
|
||||
@@ -1433,7 +1440,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
|
||||
switch_event_t *event;
|
||||
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
if (ostatus != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
}
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
}
|
||||
@@ -2278,7 +2288,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session
|
||||
|
||||
if (args->input_callback) {
|
||||
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
|
||||
status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
|
||||
if (ostatus != SWITCH_STATUS_SUCCESS) {
|
||||
status = ostatus;
|
||||
}
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
}
|
||||
|
||||
+20
-3
@@ -132,20 +132,37 @@ SWITCH_DECLARE(void) switch_perform_substitution(switch_regex_t *re, int match_c
|
||||
const char *replace = NULL;
|
||||
switch_size_t x, y = 0, z = 0;
|
||||
int num = 0;
|
||||
int brace;
|
||||
|
||||
for (x = 0; x < (len - 1) && x < strlen(data);) {
|
||||
for (x = 0; y < (len - 1) && x < strlen(data);) {
|
||||
if (data[x] == '$') {
|
||||
x++;
|
||||
|
||||
brace = data[x] == '{';
|
||||
if (brace) {
|
||||
x++;
|
||||
}
|
||||
|
||||
if (!(data[x] > 47 && data[x] < 58)) {
|
||||
x -= brace;
|
||||
substituted[y++] = data[x - 1];
|
||||
continue;
|
||||
}
|
||||
|
||||
while (data[x] > 47 && data[x] < 58) {
|
||||
while (data[x] > 47 && data[x] < 58 && z < sizeof(index) - 1) {
|
||||
index[z++] = data[x];
|
||||
x++;
|
||||
}
|
||||
if (brace) {
|
||||
if (data[x] != '}') {
|
||||
x -= z - 1;
|
||||
substituted[y++] = data[x - 1];
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
x++;
|
||||
}
|
||||
}
|
||||
index[z++] = '\0';
|
||||
z = 0;
|
||||
num = atoi(index);
|
||||
@@ -156,7 +173,7 @@ SWITCH_DECLARE(void) switch_perform_substitution(switch_regex_t *re, int match_c
|
||||
|
||||
if (pcre_get_substring(field_data, ovector, match_count, num, &replace) > 0) {
|
||||
switch_size_t r;
|
||||
for (r = 0; r < strlen(replace); r++) {
|
||||
for (r = 0; r < strlen(replace) && y < (len - 1); r++) {
|
||||
substituted[y++] = replace[r];
|
||||
}
|
||||
pcre_free_substring(replace);
|
||||
|
||||
+5
-1
@@ -681,10 +681,14 @@ static switch_status_t ice_out(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice)
|
||||
|
||||
ice->next_run = now + RTP_STUN_FREQ;
|
||||
|
||||
if (ice == &rtp_session->rtcp_ice) {
|
||||
if (ice == &rtp_session->rtcp_ice && rtp_session->rtcp_sock_output) {
|
||||
sock_output = rtp_session->rtcp_sock_output;
|
||||
}
|
||||
|
||||
if (!sock_output) {
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
|
||||
switch_assert(rtp_session != NULL);
|
||||
switch_assert(ice->ice_user != NULL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user