MT#55831 Rework config validation to be more slack (part 2)

Don't bail out on missing config options, rather than using some
invalid defaults.
Also only check for existence of sound files in the places where
they are needed for optimization purposes.
Use macros to clean up redundant code.
(real ticket number: MT#20649)

Change-Id: Ib1187f249ee589feab407dd99145fc1dea0db83a
mr11.2.1
Andreas Granig 4 years ago committed by Donat Zenichev
parent e66898f5f1
commit 220b46d865

@ -73,6 +73,38 @@ using namespace pcrecpp;
#define SW_VSC_DESTSET_CFT "cft_by_vsc"
#define SW_VSC_DESTSET_CFNA "cfna_by_vsc"
#define CHECK_ANNOUNCEMENT_CONFIG(member, config_var) \
m_patterns.member = cfg.getParameter(config_var, ""); \
if (m_patterns.member.empty()) \
{ \
ERROR(config_var " file not set\n"); \
}
#define COMPILE_MATCH_PATTERN(member, config_var) \
member = cfg.getParameter(config_var, ""); \
if (member.empty()) \
{ \
ERROR(config_var " is empty\n"); \
member = "invalid_default_value"; \
} \
if (regcomp(&m_patterns.member, member.c_str(), REG_EXTENDED | REG_NOSUB)) \
{ \
ERROR(config_var " failed to compile ('%s'): %s\n", \
member.c_str(), \
strerror(errno)); \
return -1; \
}
#define CHECK_ANNOUNCEMENT_PATH(member, config_var) \
member = m_patterns->audioPath + lang + m_patterns->member; \
if (m_patterns->member.empty() || !file_exists(member)) \
{ \
ERROR(config_var " file does not exist ('%s').\n", \
member.c_str()); \
filename = failAnnouncement; \
goto out; \
}
EXPORT_SESSION_FACTORY(SW_VscFactory, MOD_NAME);
SW_VscFactory::SW_VscFactory(const string &_app_name)
@ -154,82 +186,22 @@ int SW_VscFactory::onLoad()
if (m_patterns.audioPath[m_patterns.audioPath.length() - 1] != '/' )
m_patterns.audioPath += "/";
// MT#20649: don't fail if announcements are missing;
m_patterns.failAnnouncement = cfg.getParameter("error_announcement", "");
if (m_patterns.failAnnouncement.empty())
{
ERROR("error_announcement file not set\n");
}
m_patterns.unknownAnnouncement = cfg.getParameter("unknown_announcement", "");
if (m_patterns.unknownAnnouncement.empty())
{
ERROR("unknown_announcement file not set\n");
}
m_patterns.cfuOnAnnouncement = cfg.getParameter("cfu_on_announcement", "");
if (m_patterns.cfuOnAnnouncement.empty())
{
ERROR("cfu_on_announcement file not set\n");
}
m_patterns.cfuOffAnnouncement = cfg.getParameter("cfu_off_announcement", "");
if (m_patterns.cfuOffAnnouncement.empty())
{
ERROR("cfu_off_announcement file not set\n");
}
m_patterns.cfbOnAnnouncement = cfg.getParameter("cfb_on_announcement", "");
if (m_patterns.cfbOnAnnouncement.empty())
{
ERROR("cfb_on_announcement file not set\n");
}
m_patterns.cfbOffAnnouncement = cfg.getParameter("cfb_off_announcement", "");
if (m_patterns.cfbOffAnnouncement.empty())
{
ERROR("cfb_off_announcement file not set\n");
}
m_patterns.cftOnAnnouncement = cfg.getParameter("cft_on_announcement", "");
if (m_patterns.cftOnAnnouncement.empty())
{
ERROR("cft_on_announcement file not set\n");
}
m_patterns.cftOffAnnouncement = cfg.getParameter("cft_off_announcement", "");
if (m_patterns.cftOffAnnouncement.empty())
{
ERROR("cft_off_announcement file not set\n");
}
m_patterns.cfnaOnAnnouncement = cfg.getParameter("cfna_on_announcement", "");
if (m_patterns.cfnaOnAnnouncement.empty())
{
ERROR("cfna_on_announcement file not set\n");
}
m_patterns.cfnaOffAnnouncement = cfg.getParameter("cfna_off_announcement", "");
if (m_patterns.cfnaOffAnnouncement.empty())
{
ERROR("cfna_off_announcement file not set\n");
}
m_patterns.speedDialAnnouncement = cfg.getParameter("speed_dial_announcement", "");
if (m_patterns.speedDialAnnouncement.empty())
{
ERROR("speed_dial_announcement file not set\n");
}
m_patterns.reminderOnAnnouncement = cfg.getParameter("reminder_on_announcement", "");
if (m_patterns.reminderOnAnnouncement.empty())
{
ERROR("reminder_on_announcement file not set\n");
}
m_patterns.reminderOffAnnouncement = cfg.getParameter("reminder_off_announcement", "");
if (m_patterns.reminderOffAnnouncement.empty())
{
ERROR("reminder_off_announcement file not set\n");
}
m_patterns.blockinclirOnAnnouncement = cfg.getParameter("blockinclir_on_announcement", "");
if (m_patterns.blockinclirOnAnnouncement.empty())
{
ERROR("blockinclir_on_announcement file not set\n");
}
m_patterns.blockinclirOffAnnouncement = cfg.getParameter("blockinclir_off_announcement", "");
if (m_patterns.blockinclirOffAnnouncement.empty())
{
ERROR("blockinclir_off_announcement file not set\n");
}
CHECK_ANNOUNCEMENT_CONFIG(failAnnouncement, "error_announcement");
CHECK_ANNOUNCEMENT_CONFIG(unknownAnnouncement, "unknown_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cfuOnAnnouncement, "cfu_on_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cfuOffAnnouncement, "cfu_off_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cfbOnAnnouncement, "cfb_on_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cfbOffAnnouncement, "cfb_off_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cftOnAnnouncement, "cft_on_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cftOffAnnouncement, "cft_off_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cfnaOnAnnouncement, "cfna_on_announcement");
CHECK_ANNOUNCEMENT_CONFIG(cfnaOffAnnouncement, "cfna_off_announcement");
CHECK_ANNOUNCEMENT_CONFIG(speedDialAnnouncement, "speed_dial_announcement");
CHECK_ANNOUNCEMENT_CONFIG(reminderOnAnnouncement, "reminder_on_announcement");
CHECK_ANNOUNCEMENT_CONFIG(reminderOffAnnouncement, "reminder_off_announcement");
CHECK_ANNOUNCEMENT_CONFIG(blockinclirOnAnnouncement, "blockinclir_on_announcement");
CHECK_ANNOUNCEMENT_CONFIG(blockinclirOffAnnouncement, "blockinclir_off_announcement");
// We could set a default in cfg.getParameter, but we really want to log the error
// if the pattern in question is not set:
@ -241,189 +213,19 @@ int SW_VscFactory::onLoad()
m_patterns.voicemailNumber = "invalid_default_value";
}
cfuOnPattern = cfg.getParameter("cfu_on_pattern", "");
if (cfuOnPattern.empty())
{
ERROR("cfu_on_pattern is empty\n");
cfuOnPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cfuOnPattern, cfuOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cfu_on_pattern failed to compile ('%s'): %s\n",
cfuOnPattern.c_str(),
strerror(errno));
return -1;
}
cfuOffPattern = cfg.getParameter("cfu_off_pattern", "");
if (cfuOffPattern.empty())
{
ERROR("cfu_off_pattern is empty\n");
cfuOffPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cfuOffPattern, cfuOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cfu_off_pattern failed to compile ('%s'): %s\n",
cfuOffPattern.c_str(),
strerror(errno));
return -1;
}
cfbOnPattern = cfg.getParameter("cfb_on_pattern", "");
if (cfbOnPattern.empty())
{
ERROR("cfb_on_pattern is empty\n");
cfbOnPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cfbOnPattern, cfbOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cfb_on_pattern failed to compile ('%s'): %s\n",
cfbOnPattern.c_str(),
strerror(errno));
return -1;
}
cfbOffPattern = cfg.getParameter("cfb_off_pattern", "");
if (cfbOffPattern.empty())
{
ERROR("cfb_off_pattern is empty\n");
cfbOffPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cfbOffPattern, cfbOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cfb_off_pattern failed to compile ('%s'): %s\n",
cfbOffPattern.c_str(),
strerror(errno));
return -1;
}
cftOnPattern = cfg.getParameter("cft_on_pattern", "");
if (cftOnPattern.empty())
{
ERROR("cft_on_pattern is empty\n");
cftOnPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cftOnPattern, cftOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cft_on_pattern failed to compile ('%s'): %s\n",
cftOnPattern.c_str(),
strerror(errno));
return -1;
}
cftOffPattern = cfg.getParameter("cft_off_pattern", "");
if (cftOffPattern.empty())
{
ERROR("cft_off_pattern is empty\n");
cftOffPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cftOffPattern, cftOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cft_off_pattern failed to compile ('%s'): %s\n",
cftOffPattern.c_str(),
strerror(errno));
return -1;
}
cfnaOnPattern = cfg.getParameter("cfna_on_pattern", "");
if (cfnaOnPattern.empty())
{
ERROR("cfna_on_pattern is empty\n");
cfnaOnPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cfnaOnPattern, cfnaOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cfna_on_pattern failed to compile ('%s'): %s\n",
cfnaOnPattern.c_str(),
strerror(errno));
return -1;
}
cfnaOffPattern = cfg.getParameter("cfna_off_pattern", "");
if (cfnaOffPattern.empty())
{
ERROR("cfna_off_pattern is empty\n");
cfnaOffPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.cfnaOffPattern, cfnaOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("cfna_off_pattern failed to compile ('%s'): %s\n",
cfnaOffPattern.c_str(),
strerror(errno));
return -1;
}
speedDialPattern = cfg.getParameter("speed_dial_pattern", "");
if (speedDialPattern.empty())
{
ERROR("speed_dial_pattern is empty\n");
speedDialPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.speedDialPattern, speedDialPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("speed_dial_pattern failed to compile ('%s'): %s\n",
speedDialPattern.c_str(),
strerror(errno));
return -1;
}
reminderOnPattern = cfg.getParameter("reminder_on_pattern", "");
if (reminderOnPattern.empty())
{
ERROR("reminder_on_pattern is empty\n");
reminderOnPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.reminderOnPattern, reminderOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("reminder_on_pattern failed to compile ('%s'): %s\n",
reminderOnPattern.c_str(),
strerror(errno));
return -1;
}
reminderOffPattern = cfg.getParameter("reminder_off_pattern", "");
if (reminderOffPattern.empty())
{
ERROR("reminder_off_pattern is empty\n");
reminderOffPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.reminderOffPattern, reminderOffPattern.c_str(),
REG_EXTENDED | REG_NOSUB))
{
ERROR("reminder_off_pattern failed to compile ('%s'): %s\n",
reminderOffPattern.c_str(),
strerror(errno));
return -1;
}
blockinclirOnPattern = cfg.getParameter("blockinclir_on_pattern", "");
if (blockinclirOnPattern.empty())
{
ERROR("blockinclir_on_pattern is empty\n");
blockinclirOnPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.blockinclirOnPattern, blockinclirOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
{
ERROR("blockinclir_on_pattern failed to compile ('%s'): %s\n",
blockinclirOnPattern.c_str(),
strerror(errno));
return -1;
}
blockinclirOffPattern = cfg.getParameter("blockinclir_off_pattern", "");
if (blockinclirOffPattern.empty())
{
ERROR("blockinclir_off_pattern is empty\n");
blockinclirOffPattern = "invalid_default_value";
}
if (regcomp(&m_patterns.blockinclirOffPattern, blockinclirOffPattern.c_str(),
REG_EXTENDED | REG_NOSUB))
{
ERROR("blockinclir_off_pattern failed to compile ('%s'): %s\n",
blockinclirOffPattern.c_str(),
strerror(errno));
return -1;
}
COMPILE_MATCH_PATTERN(cfuOnPattern, "cfu_on_pattern");
COMPILE_MATCH_PATTERN(cfuOffPattern, "cfu_off_pattern");
COMPILE_MATCH_PATTERN(cfbOnPattern, "cfb_on_pattern");
COMPILE_MATCH_PATTERN(cfbOffPattern, "cfb_off_pattern");
COMPILE_MATCH_PATTERN(cftOnPattern, "cft_on_pattern");
COMPILE_MATCH_PATTERN(cftOffPattern, "cft_off_pattern");
COMPILE_MATCH_PATTERN(cfnaOnPattern, "cfna_on_pattern");
COMPILE_MATCH_PATTERN(cfnaOffPattern, "cfna_off_pattern");
COMPILE_MATCH_PATTERN(speedDialPattern, "speed_dial_pattern");
COMPILE_MATCH_PATTERN(reminderOnPattern, "reminder_on_pattern");
COMPILE_MATCH_PATTERN(reminderOffPattern, "reminder_off_pattern");
COMPILE_MATCH_PATTERN(blockinclirOnPattern, "blockinclir_on_pattern");
COMPILE_MATCH_PATTERN(blockinclirOffPattern, "blockinclir_off_pattern");
return 0;
}
@ -1159,14 +961,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cfuOnPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cfuOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOnAnnouncement;
if (m_patterns->cfuOnAnnouncement.empty() || !file_exists(cfuOnAnnouncement))
{
ERROR("CfuOnAnnouncement file does not exist ('%s').\n",
cfuOnAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cfuOnAnnouncement, "cfu_on_announcement");
u_int64_t attId = getAttributeId(my_handler, "cfu");
if (!attId)
@ -1239,14 +1034,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cfuOffPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cfuOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOffAnnouncement;
if (m_patterns->cfuOffAnnouncement.empty() || !file_exists(cfuOffAnnouncement))
{
ERROR("CfuOffAnnouncement file does not exist ('%s').\n",
cfuOffAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cfuOffAnnouncement, "cfu_off_announcement");
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFU, "cfu"))
{
@ -1294,14 +1082,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cfbOnPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cfbOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOnAnnouncement;
if (m_patterns->cfbOnAnnouncement.empty() || !file_exists(cfbOnAnnouncement))
{
ERROR("CfbOnAnnouncement file does not exist ('%s').\n",
cfbOnAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cfbOnAnnouncement, "cfb_on_announcement");
u_int64_t attId = getAttributeId(my_handler, "cfb");
if (!attId)
@ -1374,14 +1155,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cfbOffPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cfbOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOffAnnouncement;
if (m_patterns->cfbOffAnnouncement.empty() || !file_exists(cfbOffAnnouncement))
{
ERROR("CfbOffAnnouncement file does not exist ('%s').\n",
cfbOffAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cfbOffAnnouncement, "cfb_off_announcement");
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFB, "cfb"))
{
@ -1429,14 +1203,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cftOnPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cftOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOnAnnouncement;
if (m_patterns->cftOnAnnouncement.empty() || !file_exists(cftOnAnnouncement))
{
ERROR("CftOnAnnouncement file does not exist ('%s').\n",
cftOnAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cftOnAnnouncement, "cft_on_announcement");
u_int64_t attId = getAttributeId(my_handler, "cft");
if (!attId)
@ -1547,14 +1314,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cftOffPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cftOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOffAnnouncement;
if (m_patterns->cftOffAnnouncement.empty() || !file_exists(cftOffAnnouncement))
{
ERROR("CftOffAnnouncement file does not exist ('%s').\n",
cftOffAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cftOffAnnouncement, "cft_off_announcement");
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFT, "cft"))
{
@ -1627,14 +1387,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cfnaOnPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cfnaOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOnAnnouncement;
if (m_patterns->cfnaOnAnnouncement.empty() || !file_exists(cfnaOnAnnouncement))
{
ERROR("CfnaOnAnnouncement file does not exist ('%s').\n",
cfnaOnAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cfnaOnAnnouncement, "cfna_on_announcement");
u_int64_t attId = getAttributeId(my_handler, "cfna");
if (!attId)
@ -1707,14 +1460,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->cfnaOffPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
cfnaOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOffAnnouncement;
if (m_patterns->cfnaOffAnnouncement.empty() || !file_exists(cfnaOffAnnouncement))
{
ERROR("CfnaOffAnnouncement file does not exist ('%s').\n",
cfnaOffAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(cfnaOffAnnouncement, "cfna_off_announcement");
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFNA, "cfna"))
{
@ -1762,14 +1508,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->speedDialPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
speedDialAnnouncement = m_patterns->audioPath + lang + m_patterns->speedDialAnnouncement;
if (m_patterns->speedDialAnnouncement.empty() || !file_exists(speedDialAnnouncement))
{
ERROR("SpeedDialAnnouncement file does not exist ('%s').\n",
speedDialAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(speedDialAnnouncement, "speed_dial_announcement");
string slot = string("*") + req.user.substr(4, 1);
if (!number2uri(req, my_handler, uuid, subId, domain, domId, 5,
@ -1801,14 +1540,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->reminderOnPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
reminderOnAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOnAnnouncement;
if (m_patterns->reminderOnAnnouncement.empty() || !file_exists(reminderOnAnnouncement))
{
ERROR("ReminderOnAnnouncement file does not exist ('%s').\n",
reminderOnAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(reminderOnAnnouncement, "reminder_on_announcement");
int hour, min;
string tim; char c_tim[6] = "";
@ -1856,14 +1588,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->reminderOffPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
reminderOffAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOffAnnouncement;
if (m_patterns->reminderOffAnnouncement.empty() || !file_exists(reminderOffAnnouncement))
{
ERROR("ReminderOffAnnouncement file does not exist ('%s').\n",
reminderOffAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(reminderOffAnnouncement, "reminder_off_announcement");
if (!deleteReminder(my_handler, subId))
{
@ -1889,14 +1614,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->blockinclirOnPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
blockinclirOnAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOnAnnouncement;
if (m_patterns->blockinclirOnAnnouncement.empty() || !file_exists(blockinclirOnAnnouncement))
{
ERROR("BlockinclirOnAnnouncement file does not exist ('%s').\n",
blockinclirOnAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(blockinclirOnAnnouncement, "blockinclir_on_announcement");
std::string val = "1";
u_int64_t attId = getAttributeId(my_handler, "block_in_clir");
@ -1945,14 +1663,7 @@ void SW_VscDialog::onInvite(const AmSipRequest &req)
if ((ret = regexec(&m_patterns->blockinclirOffPattern,
req.user.c_str(), 0, 0, 0)) == 0)
{
blockinclirOffAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOffAnnouncement;
if (m_patterns->blockinclirOffAnnouncement.empty() || !file_exists(blockinclirOffAnnouncement))
{
ERROR("BlockinclirOffAnnouncement file does not exist ('%s').\n",
blockinclirOffAnnouncement.c_str());
filename = failAnnouncement;
goto out;
}
CHECK_ANNOUNCEMENT_PATH(blockinclirOffAnnouncement, "blockinclir_off_announcement");
u_int64_t attId = getAttributeId(my_handler, "block_in_clir");
if (!attId)

Loading…
Cancel
Save