How we used OpenSIPS to stop fraudulent and hung calls

“According to the Communications Fraud Control Association (CFCA) 2011 Global Fraud Loss Survey, the CFCA estimates that Telecom Fraud costs the industry over$40 Billion(USD) annually. This equates to almost 2% of telecom revenues that cannot be reported on a companies income statement.”
— https://www.neustar.biz/resources/whitepapers/telecom-fraud-impacts-whitepaper

We had a problem with certain FireRTC users staying on calls for over 10 hours at a time. Whether these calls were fraud, hung-calls due to a missed BYE message, or something else is irrelevant. What we needed to do was to cut these calls off after a fixed period of time.

First we loaded dialog module at the top of our openSIPS v2.2 conifg file.

loadmodule "dialog.so"

Next we set the default_timeout parameter to 7200 seconds just below the loadmodule.

modparam("dialog", "default_timeout", 7200)

Finally we created a dialog within our outbound route block with create_dialog. We made sure to pass in the "B" parameter which activates a BYE upon our 7200s timeout.

route[OUTBOUND] {
  create_dialog("B");
  ...
  ...
}

Long duration and hung calls are a common problem that if not addressed, can generate huge losses for service providers.  Luckily openSIPS provides an easy solution for this problem.