git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1333 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2006-05-03 23:45:07 +00:00
parent c7e5e47ab6
commit 590cf84be1
3 changed files with 24 additions and 11 deletions

View File

@ -141,6 +141,7 @@ struct private_object {
switch_time_t next_desc;
switch_time_t next_cand;
char *stun_ip;
char *recip;
uint16_t stun_port;
};
@ -709,11 +710,15 @@ static switch_status_t channel_waitfor_write(switch_core_session_t *session, int
static switch_status_t channel_send_dtmf(switch_core_session_t *session, char *dtmf)
{
struct private_object *tech_pvt = NULL;
//char *digit;
char digits[80] = "";
tech_pvt = switch_core_session_get_private(session);
assert(tech_pvt != NULL);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "DTMF [%s]\n", dtmf);
snprintf(digits, sizeof(digits), "+%s\n", dtmf);
ldl_handle_send_msg(tech_pvt->profile->handle, tech_pvt->recip, NULL, digits);
return SWITCH_STATUS_SUCCESS;
}
@ -757,6 +762,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
}
payload = tech_pvt->read_frame.payload;
/* RFC2833 ... TBD try harder to honor the duration etc.*/
if (payload == 101) {
unsigned char *packet = tech_pvt->read_frame.data;
@ -778,9 +784,12 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
if (++tech_pvt->dc >= 3) {
tech_pvt->last_digit = 0;
tech_pvt->dc = 0;
} else {
tech_pvt->last_digit = key;
}
tech_pvt->last_digit = key;
} else {
tech_pvt->last_digit = 0;
tech_pvt->dc = 0;
}
}
@ -1082,6 +1091,7 @@ static switch_status_t channel_outgoing_channel(switch_core_session_t *session,
return SWITCH_STATUS_GENERR;
}
switch_core_session_add_stream(*new_session, NULL);
if ((tech_pvt = (struct private_object *) switch_core_session_alloc(*new_session, sizeof(struct private_object))) != 0) {
memset(tech_pvt, 0, sizeof(*tech_pvt));
@ -1092,6 +1102,7 @@ static switch_status_t channel_outgoing_channel(switch_core_session_t *session,
tech_pvt->session = *new_session;
tech_pvt->codec_index = -1;
tech_pvt->local_port = switch_rtp_request_port();
tech_pvt->recip = switch_core_session_strdup(*new_session, full_id);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Hey where is my memory pool?\n");
switch_core_session_destroy(new_session);
@ -1511,7 +1522,7 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi
tech_pvt->profile = profile;
tech_pvt->local_port = switch_rtp_request_port();
switch_set_flag(tech_pvt, TFLAG_ANSWER);
tech_pvt->recip = switch_core_session_strdup(session, from);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hey where is my memory pool?\n");
switch_core_session_destroy(&session);

View File

@ -663,9 +663,12 @@ static switch_status_t exosip_read_frame(switch_core_session_t *session, switch_
if (++tech_pvt->dc >= 3) {
tech_pvt->last_digit = 0;
tech_pvt->dc = 0;
} else {
tech_pvt->last_digit = key;
}
tech_pvt->last_digit = key;
} else {
tech_pvt->last_digit = 0;
tech_pvt->dc = 0;
}
}

View File

@ -121,7 +121,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_sess
if (switch_channel_has_dtmf(channel)) {
char dtmf[128];
switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
for(i =0 ; i < (unsigned int) strlen(dtmf); i++) {
if (strchr(terminators, dtmf[i])) {