aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigs/rtp.conf.sample5
-rwxr-xr-xrtp.c13
2 files changed, 17 insertions, 1 deletions
diff --git a/configs/rtp.conf.sample b/configs/rtp.conf.sample
index a9a455c92..fa16f0d93 100755
--- a/configs/rtp.conf.sample
+++ b/configs/rtp.conf.sample
@@ -13,3 +13,8 @@ rtpend=20000
; Whether to enable or disable UDP checksums on RTP traffic
;
;rtpchecksums=no
+;
+; The amount of time a DTMF digit with no 'end' marker should be
+; allowed to continue (in 'samples', 1/8000 of a second)
+;
+;dtmftimeout=3000
diff --git a/rtp.c b/rtp.c
index 39b3745a3..2893ceff3 100755
--- a/rtp.c
+++ b/rtp.c
@@ -58,7 +58,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define RTP_MTU 1200
-static int dtmftimeout = 3000; /* 3000 samples */
+#define DEFAULT_DTMF_TIMEOUT 3000 /* samples */
+
+static int dtmftimeout = DEFAULT_DTMF_TIMEOUT;
static int rtpstart = 0;
static int rtpend = 0;
@@ -1813,6 +1815,7 @@ void ast_rtp_reload(void)
rtpstart = 5000;
rtpend = 31000;
+ dtmftimeout = DEFAULT_DTMF_TIMEOUT;
cfg = ast_config_load("rtp.conf");
if (cfg) {
if ((s = ast_variable_retrieve(cfg, "general", "rtpstart"))) {
@@ -1840,6 +1843,14 @@ void ast_rtp_reload(void)
ast_log(LOG_WARNING, "Disabling RTP checksums is not supported on this operating system!\n");
#endif
}
+ if ((s = ast_variable_retrieve(cfg, "general", "dtmftimeout"))) {
+ dtmftimeout = atoi(s);
+ if ((dtmftimeout < 0) || (dtmftimeout > 20000)) {
+ ast_log(LOG_WARNING, "DTMF timeout of '%d' outside range, using default of '%d' instead\n",
+ dtmftimeout, DEFAULT_DTMF_TIMEOUT);
+ dtmftimeout = DEFAULT_DTMF_TIMEOUT;
+ };
+ }
ast_config_destroy(cfg);
}
if (rtpstart >= rtpend) {