Delete SMS after two retries to fix out of memory issue

This commit is contained in:
herlesupreeth
2022-09-04 18:46:26 +02:00
parent 062e703e2d
commit a7546bcc20

View File

@@ -73,6 +73,7 @@ modparam("dialplan|pua", "db_url", DIALPLAN_PUA_DB_URL)
modparam("uac", "restore_mode", "none")
modparam("htable", "htable", "publish_sent=>size=8;autoexpire=SUBSCRIBE_EXPIRE")
modparam("htable", "htable", "sms_retries=>size=8;autoexpire=SUBSCRIBE_EXPIRE")
# time interval set to 3 seconds
modparam("rtimer", "timer", "name=sms;interval=3;mode=1;")
@@ -348,18 +349,31 @@ route[SMS_WORKER] {
if ($dbr(q=>rows) > 0) {
$var(i) = 0;
while ($var(i) < $dbr(q=>rows)) {
$avp(id) = $dbr(q=>[$var(i),0]);
$avp(from) = $dbr(q=>[$var(i),1]);
$avp(to) = $dbr(q=>[$var(i),2]);
$avp(text) = $dbr(q=>[$var(i),3]);
if ($sht(sms_retries=>$dbr(q=>[$var(i),0])) == $null) {
$sht(sms_retries=>$dbr(q=>[$var(i),0])) = 0;
} else {
$sht(sms_retries=>$dbr(q=>[$var(i),0])) = $sht(sms_retries=>$dbr(q=>[$var(i),0])) + 1;
}
route(SEND_SMS);
if ($sht(sms_retries=>$dbr(q=>[$var(i),0])) > 2) {
xlog("Dropping SMS [$dbr(q=>[$var(i),3])] TO $dbr(q=>[$var(i),2]) after 2 retries \n");
sql_query("sms", "delete from messages where id=$sht(sms_retries=>$dbr(q=>[$var(i),0]));");
$sht(sms_retries=>$dbr(q=>[$var(i),0])) = $null;
} else {
$avp(id) = $dbr(q=>[$var(i),0]);
$avp(from) = $dbr(q=>[$var(i),1]);
$avp(to) = $dbr(q=>[$var(i),2]);
$avp(text) = $dbr(q=>[$var(i),3]);
route(SEND_SMS);
#!ifdef WITH_DEBUG
xlog("ID $avp(id)\n");
xlog("FROM $avp(from)\n");
xlog("TO $avp(to)\n");
xlog("TEXT $avp(text)\n");
xlog("ID $avp(id)\n");
xlog("FROM $avp(from)\n");
xlog("TO $avp(to)\n");
xlog("TEXT $avp(text)\n");
#!endif
}
$var(i) = $var(i) + 1;
}
}