[asterisk-commits] rmudgett: branch group/media_formats-reviewed-trunk r418610 - /team/group/med...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Jul 14 10:50:42 CDT 2014
Author: rmudgett
Date: Mon Jul 14 10:50:36 2014
New Revision: 418610
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=418610
Log:
chan_dahdi.c: Restore some sanity checks on frames that dahdi_write() cannot handle.
* Restored some sanity checks in dahdi_write() that were removed earlier
in the formats work. I know I've seen the incompatible format message in
v12.
* Use ao2_cleanup() on a global pointer in the __unload_module() routine
for safety.
Review: https://reviewboard.asterisk.org/r/3749/
Modified:
team/group/media_formats-reviewed-trunk/channels/chan_dahdi.c
Modified: team/group/media_formats-reviewed-trunk/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_dahdi.c?view=diff&rev=418610&r1=418609&r2=418610
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_dahdi.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_dahdi.c Mon Jul 14 10:50:36 2014
@@ -8781,6 +8781,12 @@
return -1;
}
+ /* Write a frame of (presumably voice) data */
+ if (frame->frametype != AST_FRAME_VOICE) {
+ if (frame->frametype != AST_FRAME_IMAGE)
+ ast_log(LOG_WARNING, "Don't know what to do with frame type '%u'\n", frame->frametype);
+ return 0;
+ }
if (p->dialing) {
ast_debug(5, "Dropping frame since I'm still dialing on %s...\n",ast_channel_name(ast));
return 0;
@@ -8806,7 +8812,8 @@
ast_log(LOG_WARNING, "Unable to set linear mode on channel %d\n", p->channel);
}
res = my_dahdi_write(p, (unsigned char *)frame->data.ptr, frame->datalen, idx, 1);
- } else {
+ } else if (ast_format_cmp(frame->subclass.format, ast_format_ulaw) == AST_FORMAT_CMP_EQUAL
+ || ast_format_cmp(frame->subclass.format, ast_format_alaw) == AST_FORMAT_CMP_EQUAL) {
/* x-law already */
if (p->subs[idx].linear) {
p->subs[idx].linear = 0;
@@ -8815,6 +8822,10 @@
ast_log(LOG_WARNING, "Unable to set companded mode on channel %d\n", p->channel);
}
res = my_dahdi_write(p, (unsigned char *)frame->data.ptr, frame->datalen, idx, 0);
+ } else {
+ ast_log(LOG_WARNING, "Cannot handle frames in %s format\n",
+ ast_format_get_name(frame->subclass.format));
+ return -1;
}
if (res < 0) {
ast_log(LOG_WARNING, "write failed: %s\n", strerror(errno));
@@ -10772,8 +10783,8 @@
#ifdef HAVE_DAHDI_LINEREVERSE_VMWI
if (pvt->mwisend_fsk) {
#endif
- pvt->cidlen = ast_callerid_vmwi_generate(pvt->cidspill, has_voicemail(pvt), CID_MWI_TYPE_MDMF_FULL,
- AST_LAW(pvt), pvt->cid_name, pvt->cid_num, 0);
+ pvt->cidlen = ast_callerid_vmwi_generate(pvt->cidspill, has_voicemail(pvt),
+ CID_MWI_TYPE_MDMF_FULL, AST_LAW(pvt), pvt->cid_name, pvt->cid_num, 0);
pvt->cidpos = 0;
#ifdef HAVE_DAHDI_LINEREVERSE_VMWI
}
@@ -17300,7 +17311,7 @@
dahdi_native_unload();
- ao2_ref(dahdi_tech.capabilities, -1);
+ ao2_cleanup(dahdi_tech.capabilities);
dahdi_tech.capabilities = NULL;
STASIS_MESSAGE_TYPE_CLEANUP(dahdichannel_type);
return 0;
More information about the asterisk-commits
mailing list