diff options
author | David Vossel <dvossel@digium.com> | 2011-06-23 18:26:09 +0000 |
---|---|---|
committer | David Vossel <dvossel@digium.com> | 2011-06-23 18:26:09 +0000 |
commit | d5ea9e5ae2156717076fc6d53b572a4844819624 (patch) | |
tree | 915035c5ccad04222b4618fc9ac9c7a920c840ee /main/features.c | |
parent | d7e2d2248c664fc476539bfd9925da38424fae71 (diff) |
Merged revisions 324652 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
................
r324652 | dvossel | 2011-06-23 13:23:21 -0500 (Thu, 23 Jun 2011) | 20 lines
Merged revisions 324634 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r324634 | dvossel | 2011-06-23 13:18:46 -0500 (Thu, 23 Jun 2011) | 13 lines
Merged revisions 324627 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r324627 | dvossel | 2011-06-23 13:16:52 -0500 (Thu, 23 Jun 2011) | 7 lines
Addresses AST-2011-010, remote crash in IAX2 driver
Thanks to twilson for identifying the issue and providing the patches.
AST-2011-010
........
................
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@324664 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/features.c')
-rw-r--r-- | main/features.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/main/features.c b/main/features.c index 728118188..06ec1b698 100644 --- a/main/features.c +++ b/main/features.c @@ -3740,10 +3740,21 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast break; case AST_CONTROL_OPTION: aoh = f->data.ptr; - /* Forward option Requests */ + /* Forward option Requests, but only ones we know are safe + * These are ONLY sent by chan_iax2 and I'm not convinced that + * they are useful. I haven't deleted them entirely because I + * just am not sure of the ramifications of removing them. */ if (aoh && aoh->flag == AST_OPTION_FLAG_REQUEST) { - ast_channel_setoption(other, ntohs(aoh->option), aoh->data, - f->datalen - sizeof(struct ast_option_header), 0); + switch (ntohs(aoh->option)) { + case AST_OPTION_TONE_VERIFY: + case AST_OPTION_TDD: + case AST_OPTION_RELAXDTMF: + case AST_OPTION_AUDIO_MODE: + case AST_OPTION_DIGIT_DETECT: + case AST_OPTION_FAX_DETECT: + ast_channel_setoption(other, ntohs(aoh->option), aoh->data, + f->datalen - sizeof(struct ast_option_header), 0); + } } break; } |