From 1af96a0b218522d92ed470ee9645210000ee551d Mon Sep 17 00:00:00 2001 From: Paul Cadach Date: Sun, 24 Sep 2006 18:59:38 +0000 Subject: Specify RFC2833 payload on dtmfmode option rather than dtmfcodec option (deprecated) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43575 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_h323.c | 18 +++++++++++++++++- configs/h323.conf.sample | 6 +++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/channels/chan_h323.c b/channels/chan_h323.c index d358be017..ee2ded742 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -1247,21 +1247,37 @@ static struct oh323_alias *realtime_alias(const char *alias) static int update_common_options(struct ast_variable *v, struct call_options *options) { int tmp; + char *val, *opt; if (!strcasecmp(v->name, "allow")) { ast_parse_allow_disallow(&options->prefs, &options->capability, v->value, 1); } else if (!strcasecmp(v->name, "disallow")) { ast_parse_allow_disallow(&options->prefs, &options->capability, v->value, 0); } else if (!strcasecmp(v->name, "dtmfmode")) { + val = strdupa(v->value); + if ((opt = strchr(val, ':')) != (char *)NULL) { + *opt++ = '\0'; + tmp = atoi(opt); + } if (!strcasecmp(v->value, "inband")) { options->dtmfmode |= H323_DTMF_INBAND; - } else if (!strcasecmp(v->value, "rfc2833")) { + } else if (!strcasecmp(val, "rfc2833")) { options->dtmfmode |= H323_DTMF_RFC2833; + if (!opt) + options->dtmfcodec = H323_DTMF_RFC2833_PT; + else if ((tmp >= 96) && (tmp < 128)) + options->dtmfcodec = tmp; + else { + options->dtmfcodec = H323_DTMF_RFC2833_PT; + ast_log(LOG_WARNING, "Unknown rfc2833 payload %s specified at line %d, using default %d\n", opt, v->lineno, options->dtmfcodec); + } } else { ast_log(LOG_WARNING, "Unknown dtmf mode '%s', using rfc2833\n", v->value); options->dtmfmode |= H323_DTMF_RFC2833; + options->dtmfcodec = H323_DTMF_RFC2833_PT; } } else if (!strcasecmp(v->name, "dtmfcodec")) { + ast_log(LOG_NOTICE, "Option %s at line %d is deprecated. Use dtmfmode=rfc2833[:] instead.\n", v->name, v->lineno); tmp = atoi(v->value); if (tmp < 96) ast_log(LOG_WARNING, "Invalid %s value %s at line %d\n", v->name, v->value, v->lineno); diff --git a/configs/h323.conf.sample b/configs/h323.conf.sample index 4b558ec0b..4fe37d843 100644 --- a/configs/h323.conf.sample +++ b/configs/h323.conf.sample @@ -35,9 +35,9 @@ port = 1720 ; Default RTP Payload to send RFC2833 DTMF on. This is used to ; interoperate with broken gateways which cannot successfully ; negotiate a RFC2833 payload type in the TerminalCapabilitySet. -; -; You may also specify on either a per-peer or per-user basis below. -;dtmfcodec=101 +; To specify required payload type, put it after colon in dtmfmode +; option like +;dtmfmode=rfc2833:101 ; ; Set the gatekeeper ; DISCOVER - Find the Gk address using multicast -- cgit v1.2.3