diff options
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; } |