return SWITCH_STATUS_FALSE;
}
+ if (strlen(dtmf_string) > 99) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Attempt to send very large dtmf string ignored!\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
string = switch_core_session_strdup(session, dtmf_string);
argc = switch_separate_string(string, '+', argv, (sizeof(argv) / sizeof(argv[0])));
if ((rdigit = malloc(sizeof(*rdigit))) != 0) {
*rdigit = *dtmf;
- switch_queue_push(rtp_session->dtmf_data.dtmf_queue, rdigit);
+ if ((switch_queue_trypush(rtp_session->dtmf_data.dtmf_queue, rdigit)) != SWITCH_STATUS_SUCCESS) {
+ free(rdigit);
+ return SWITCH_STATUS_FALSE;
+ }
} else {
abort();
}
if ((rdigit = malloc(sizeof(*rdigit))) != 0) {
*rdigit = *dtmf;
- switch_queue_push(rtp_session->dtmf_data.dtmf_inqueue, rdigit);
+ if ((switch_queue_trypush(rtp_session->dtmf_data.dtmf_inqueue, rdigit)) != SWITCH_STATUS_SUCCESS) {
+ free(rdigit);
+ return SWITCH_STATUS_FALSE;
+ }
} else {
abort();
}