From 76594d075eb3e26fd37dd137b15ef2e11559eaab Mon Sep 17 00:00:00 2001 From: paulc Date: Thu, 14 Feb 2008 09:41:10 +0000 Subject: [PATCH] Handle DTMF INFO that don't integer encode signals (reported by Dave Giffin). git-svn-id: http://voip.null.ro/svn/yate@1724 acf43c95-373e-0410-b603-e72c3f656dc1 --- modules/ysipchan.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/modules/ysipchan.cpp b/modules/ysipchan.cpp index 04cfac7b..2856b0d1 100644 --- a/modules/ysipchan.cpp +++ b/modules/ysipchan.cpp @@ -100,6 +100,16 @@ static TokenDict dict_errors[] = { static const char s_dtmfs[] = "0123456789*#ABCDF"; +static TokenDict info_signals[] = { + { "*", 10 }, + { "#", 11 }, + { "A", 12 }, + { "B", 13 }, + { "C", 14 }, + { "D", 15 }, + { 0, 0 }, +}; + // Network media description class NetMedia : public String { @@ -3063,15 +3073,15 @@ void YateSIPConnection::doInfo(SIPTransaction* t) const ObjList* l = lb->lines().skipNull(); for (; l; l = l->skipNext()) { String tmp = static_cast(l->get()); - tmp.toLower(); - if (tmp.startSkip("signal=",false)) { - sig = tmp.toInteger(-1); + tmp.toUpper(); + if (tmp.startSkip("SIGNAL=",false)) { + sig = tmp.toInteger(info_signals,-1); break; } } } else if (sb) - sig = sb->text().toInteger(-1); + sig = sb->text().toInteger(info_signals,-1); else { t->setResponse(415); return;