<html><body><div style="color:#000; background-color:#fff; font-family:tahoma, new york, times, serif;font-size:10pt"><div style="font-size: 10pt; "><span style="font-weight: bold;">Hi,</span></div><div style="font-size: 10pt; "><br></div><div style="font-size: 10pt; ">I have the below configuration file <span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">kamailio.cfg </span>but all the users are not being registered with authentication, so am I doing some mistake in it?</div><div style="font-size: 10pt; "><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></span></div><div style="font-size: 10pt; "><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></span></div><div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!KAMAILIO</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Kamailio (OpenSER) SIP Server v3.2 - default configuration script</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - web: http://www.kamailio.org</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - git: http://sip-router.org</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Direct your questions about this file to: &lt;sr-users@lists.sip-router.org&gt;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># for an explanation of possible statements, functions and parameters.</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Several features can be enabled using '#!define WITH_FEATURE' directives:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To run in debug mode:&nbsp;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_DEBUG</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable mysql:&nbsp;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_MYSQL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable authentication execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp;
 &nbsp; - define WITH_AUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - add users using 'kamctl'</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable IP authentication execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable authentication</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_IPAUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"># &nbsp; &nbsp; - add IP addresses with group id '1' to 'address' table</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable persistent user location execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_USRLOCDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable presence server execute:</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_PRESENCE</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable nat traversal execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_NAT</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - install RTPProxy: http://www.rtpproxy.org</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - start RTPProxy:</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; &nbsp; &nbsp;rtpproxy -l _your_public_ip_ -s udp:localhost:7722</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable PSTN gateway routing execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_PSTN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - set the value of pstn.gw_ip</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - check route[PSTN] for regexp routing condition</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable database aliases lookup execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_ALIASDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable speed dial lookup execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_SPEEDDIAL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable multi-domain support execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable TLS support execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"># &nbsp; &nbsp; - adjust CFGDIR/tls.cfg as needed</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_TLS</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable XMLRPC support execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_XMLRPC</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - adjust route[XMLRPC] for access policy</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;"># *** To enable anti-flood detection execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - adjust pike and htable=&gt;ipban settings as needed (default is</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; &nbsp; block if more than 16 requests in 2 seconds and ban for 300 seconds)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To block 3XX redirect replies execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"># &nbsp; &nbsp; - define WITH_BLOCK3XX</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** To enable VoiceMail routing execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - set the value of voicemail.srv_ip</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - adjust the value of voicemail.srv_port</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;"># *** To enhance accounting execute:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - enable mysql</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - define WITH_ACCDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; - add following columns to database</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef ACCDB_COMMENT</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE acc
 ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE acc ADD COLUMN src_ip varchar(64) NOT NULL default '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64)
 NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE missed_calls ADD COLUMN src_ip varchar(64) NOT NULL default '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; ALTER TABLE missed_calls ADD COLUMN dst_domain
 VARCHAR(128) NOT NULL DEFAULT '';</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">####### Defined Values #########</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># *** Value defines - IDs used later in config</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_MYSQL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - database URL - used to connect to database server by
 modules such</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; &nbsp; &nbsp; as: auth_db, acc, usrloc, a.s.o.</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define DBURL "mysql://faisal:faisal123@localhost/kamailio"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - the value for 'use_domain' parameters</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define MULTIDOMAIN 1</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;">#!else</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define MULTIDOMAIN 0</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - flags</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># &nbsp; FLT_ - per transaction (message) flags</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#<span class="Apple-tab-span" style="white-space:pre">        </span>FLB_ - per branch flags</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">#!define FLT_ACC 1</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define FLT_ACCMISSED 2</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define FLT_ACCFAILED 3</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define FLT_NATS 5</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define FLB_NATB 6</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!define FLB_NATSIPPING 7</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family:
 'Courier New', courier, monaco, monospace, sans-serif;">####### Global Parameters #########</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_DEBUG</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">debug=4</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">log_stderror=yes</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!else</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">debug=2</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">log_stderror=no</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">memdbg=5</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">memlog=5</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">log_facility=LOG_LOCAL0</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">fork=yes</font></div><div><font size="2" style="font-family: 'Courier
 New', courier, monaco, monospace, sans-serif;">children=4</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* uncomment the next line to disable TCP (default on) */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#disable_tcp=yes</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* uncomment the next line to disable the auto discovery of local aliases</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; &nbsp;based on reverse DNS on IPs (default on) */</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#auto_aliases=no</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* add local domain aliases */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* uncomment and configure the following line if you want Kamailio to&nbsp;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; &nbsp;bind on a specific interface/port/proto (default bind on all available) */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">listen=udp:192.162.15.23:5161</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">listen=tcp:129.162.15.23:5161</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">alias="xmpp.kamailio.org"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* port to listen to</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp;* - can be specified more than once if needed to listen on many ports */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">port=5161</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_TLS</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">enable_tls=yes</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># life time of TCP connection when there is no traffic</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - a bit higher than registration expires to cope with UA behind NAT</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">tcp_connection_lifetime=3605</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">####### Custom Parameters #########</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># These parameters can be modified runtime via RPC interface</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - see the documentation of 'cfg_rpc' module.</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Format:
 group.id = value 'desc' description</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Access: $sel(cfg_get.group.id) or @cfg_get.group.id</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_PSTN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># PSTN GW Routing</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - pstn.gw_ip: valid IP or hostname as string value,
 example:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># pstn.gw_ip = "10.0.0.101" desc "My PSTN GW Address"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - by default is empty to avoid misrouting</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">pstn.gw_ip = "" desc "PSTN GW Address"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_VOICEMAIL</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># VoiceMail Routing on offline, busy or no answer</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - by default Voicemail server IP is empty to avoid misrouting</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">voicemail.srv_ip = "" desc "VoiceMail IP Address"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">voicemail.srv_port = "5060" desc "VoiceMail Port"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">####### Modules Section ########</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># set paths to location of modules (to sources or installation folders)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_SRCPATH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">mpath="modules_k:modules"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!else</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_MYSQL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "db_mysql.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "mi_fifo.so"</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "kex.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "tm.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "tmx.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "sl.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "rr.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "pv.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "maxfwd.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">loadmodule "usrloc.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "registrar.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "textops.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "siputils.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "xlog.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "sanity.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "ctl.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule
 "cfg_rpc.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "mi_rpc.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "acc.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "xmpp.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_AUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "auth.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "auth_db.so"</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;">#!ifdef WITH_IPAUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "permissions.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_ALIASDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "alias_db.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_SPEEDDIAL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "speeddial.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "domain.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_PRESENCE</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "presence.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "presence_xml.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">loadmodule "nathelper.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "rtpproxy.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_TLS</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "tls.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier
 New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "htable.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "pike.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_XMLRPC</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "xmlrpc.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_DEBUG</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">loadmodule "debugger.so"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----------------- setting module-specific parameters ---------------</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- mi_fifo params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- tm params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># auto-discard branches from previous serial forking leg</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("tm",
 "failure_reply_mode", 3)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># default retransmission timeout: 30sec</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("tm", "fr_timer", 30000)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># default invite retransmission timeout after 1xx: 120sec</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("tm", "fr_inv_timer", 120000)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#--------XMPP Module Params---------------</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">modparam("xmpp", "domain_separator", "%")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmpp", "xmpp_domain", "192.168.15.23")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmpp", "xmpp_host", "192.168.15.23")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmpp", "gateway_domain", "192.168.15.23")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmpp", "backend", "server")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmpp", "xmpp_port", 5299)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmpp",
 "xmpp_password", "casilla233")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- rr params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># add value to ;lr param to cope with most of the UAs</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("rr", "enable_full_lr", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># do not append from tag to the RR (no need for this script)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("rr", "append_fromtag", 0)</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- registrar params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("registrar", "method_filtering", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* uncomment the next line to disable parallel forking via location */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># modparam("registrar", "append_branches", 0)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* uncomment the next line not to allow more than 10 contacts per AOR
 */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#modparam("registrar", "max_contacts", 10)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># max value for expires of registrations</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("registrar", "max_expires", 3600)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- acc params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* what special events should be accounted ?
 */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "early_media", 0)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "report_ack", 0)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "report_cancels", 0)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* by default ww do not adjust the direct of the sequential requests.</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; &nbsp;if you enable this parameter, be sure the enable "append_fromtag"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; &nbsp;in "rr" module */</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "detect_direction", 0)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* account triggers (flags) */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "log_flag", FLT_ACC)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "log_missed_flag", FLT_ACCMISSED)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "log_extra",&nbsp;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>"src_user=$fU;src_domain=$fd;src_ip=$si;"</font></div><div><font size="2" style="font-family:
 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* enhanced DB accounting */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_ACCDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "db_flag", FLT_ACC)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "db_missed_flag", FLT_ACCMISSED)</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;">modparam("acc", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("acc", "db_extra",</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>"src_user=$fU;src_domain=$fd;src_ip=$si;"</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- usrloc params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">/* enable DB persistency for location entries */</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_USRLOCDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("usrloc", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("usrloc", "db_mode", 2)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("usrloc", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- auth_db params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_AUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("auth_db", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("auth_db", "calculate_ha1", yes)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("auth_db", "password_column",
 "password")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("auth_db", "load_credentials", "")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("auth_db", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- permissions params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_IPAUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("permissions", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">modparam("permissions", "db_mode", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- alias_db params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_ALIASDB</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">modparam("alias_db", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("alias_db", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- speedial params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_SPEEDDIAL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("speeddial",
 "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("speeddial", "use_domain", MULTIDOMAIN)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- domain params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("domain", "db_url", DBURL)</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># use caching</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("domain", "db_mode", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># register callback to match myself condition with domains list</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("domain", "register_myself", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;">#!ifdef WITH_PRESENCE</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- presence params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("presence", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- presence_xml params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("presence_xml", "db_url", DBURL)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("presence_xml", "force_active", 1)</font></div><div><font size="2" style="font-family: 'Courier
 New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- rtpproxy params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- nathelper params
 -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("nathelper", "natping_interval", 30)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("nathelper", "ping_nated_only", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("nathelper", "sipping_from", "sip:pinger@kamailio.org")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># params needed for NAT traversal in other modules</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("usrloc", "nat_bflag", FLB_NATB)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_TLS</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- tls params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">modparam("tls", "config", "/usr/local/etc/kamailio/tls.cfg")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- pike params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("pike", "sampling_time_unit", 2)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("pike", "reqs_density_per_unit", 16)</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">modparam("pike", "remove_latency", 4)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- htable params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ip ban htable with autoexpire after 5 minutes</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("htable", "htable", "ipban=&gt;size=8;autoexpire=300;")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;">#!ifdef WITH_XMLRPC</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- xmlrpc params -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmlrpc", "route", "XMLRPC");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("xmlrpc", "url_match", "^/RPC")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_DEBUG</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># ----- debugger params
 -----</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">modparam("debugger", "cfgtrace", 1)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">####### Routing Logic ########</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Main SIP request routing logic</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;"># - processing of any incoming SIP request starts with this route</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># - note: this is the same as route { ... }</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">request_route {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># per request initial checks</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(REQINIT);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># NAT detection</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(NATDETECT);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># handle requests within SIP dialogs</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(WITHINDLG);</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>### only initial requests (no To tag)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># CANCEL processing</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("CANCEL"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (t_check_trans())</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>t_relay();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">
        </span>t_check_trans();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>#authentication</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(AUTH);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">###############-----------------------------------XMPP Server Configuration----------------------------------------#################</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">if (uri =~ "sip:.+@sip-xmpp\.kamailio\.org") {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; #absorb transmission</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!t_newtran()){</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>sl_reply_error();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#Handling Instant Messaging</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("MESSAGE")){</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>xlog("message to XMPP: from &lt;$fu&gt; ru&gt;\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (xmpp_send_message()){</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>sl_send_reply("202", "Accepted");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>} else
 {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>sl_send_reply("404", "Not found");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">&nbsp; &nbsp;}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#Un-supported Type of SIP Message</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">        </span>xlog("message to XMPP: method [$rm] not supported yet\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>sl_send_reply("503", "Service unavailable");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">##################--------------------------------XMPP Server Configuration-----------------------------------------------###############</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># record routing for dialog forming requests (in case they are routed)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># - remove preloaded route headers</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>remove_hf("Route");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE|SUBSCRIBE"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>record_route();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># account only INVITEs</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>setflag(FLT_ACC); # do
 accounting</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># dispatch requests to foreign domains</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(SIPOUT);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">
        </span>### requests for my local domains</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># handle presence related requests</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(PRESENCE);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># handle registrations</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">        </span>route(REGISTRAR);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if ($rU==$null)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># request with no Username in RURI</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply("484","Address
 Incomplete");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># dispatch destinations to PSTN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(PSTN);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># user location service</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(LOCATION);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(RELAY);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family:
 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[RELAY] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># enable additional event routes for forwarded requests</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># - serial forking, RTP relaying handling, a.s.o.</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE|SUBSCRIBE"))
 {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>t_on_branch("MANAGE_BRANCH");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>t_on_reply("MANAGE_REPLY");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        
        </span>t_on_failure("MANAGE_FAILURE");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!t_relay()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>sl_reply_error();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Per SIP request initial checks</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[REQINIT] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_ANTIFLOOD</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># flood dection from same IP and traffic ban for a while</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># be sure you exclude checking trusted peers, such as pstn gateways</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># - local host excluded (e.g., loop to self)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(src_ip!=myself)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        
        </span>if($sht(ipban=&gt;$si)!=$null)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span># ip is already blocked</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (!pike_check_req())</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>$sht(ipban=&gt;$si) = 1;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!mf_process_maxfwd_header("10")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply("483","Too Many Hops");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(!sanity_check("1511", "7"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>xlog("Malformed SIP message from $si:$sp\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Handle requests within SIP dialogs</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;">route[WITHINDLG] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (has_totag()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># sequential request withing a dialog should</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># take the path determined by record-routing</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (loose_route()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method("BYE")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>setflag(FLT_ACC); # do accounting ...</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>setflag(FLT_ACCFAILED); # ... even if the transaction fails</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if ( is_method("ACK") ) {</font></div><div><font size="2" style="font-family:
 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span># ACK is forwarded statelessy</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>route(RELAY);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>} else {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method("SUBSCRIBE") &amp;&amp; uri == myself) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span># in-dialog subscribe requests</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>route(PRESENCE);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if ( is_method("ACK") ) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>if ( t_check_trans() ) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span># no loose-route, but stateful ACK;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span># must be an ACK after a 487</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span># or e.g. 404 from upstream server</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>t_relay();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>} else {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span># ACK without matching transaction ... ignore and discard</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_send_reply("404","Not here");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Handle SIP registrations</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[REGISTRAR] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("REGISTER"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if(isflagset(FLT_NATS))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>setbflag(FLB_NATB);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span># uncomment next line to do SIP NAT pinging&nbsp;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>##
 setbflag(FLB_NATSIPPING);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (!save("location"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_reply_error();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># USER location service</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[LOCATION] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_SPEEDIAL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">
        </span># search for short dialing - 2-digit extension</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if($rU=~"^[0-9][0-9]$")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if(sd_lookup("speed_dial"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>route(SIPOUT);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">#!ifdef WITH_ALIASDB</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># search in DB-based aliases</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(alias_db_lookup("dbaliases"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>route(SIPOUT);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">        </span>$avp(oexten) = $rU;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!lookup("location")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>$var(rc) = $rc;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>route(TOVOICEMAIL);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>t_newtran();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">                </span>switch ($var(rc)) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>case -1:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>case -3:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>send_reply("404", "Not Found");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                
        </span>case -2:</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>send_reply("405", "Method Not Allowed");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># when routing via usrloc, log the missed calls also</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>setflag(FLT_ACCMISSED);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Presence server route</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[PRESENCE] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(!is_method("PUBLISH|SUBSCRIBE"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;">#!ifdef WITH_PRESENCE</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!t_newtran())</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>sl_reply_error();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>};</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(is_method("PUBLISH"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>handle_publish();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>t_release();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>else</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if( is_method("SUBSCRIBE"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>handle_subscribe();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        
        </span>t_release();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><span class="Apple-tab-span" style="white-space: pre; font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><font size="2">        </font></span></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># if presence enabled, this part will not be executed</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("PUBLISH") || $rU==$null)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply("404", "Not here");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">        </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Authentication route</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[AUTH] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_AUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("REGISTER"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># authenticate the REGISTER requests (uncomment to enable auth)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (!www_authorize("$td", "subscriber"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>www_challenge("$td", "0");</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if ($au!=$tU)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_send_reply("403","Forbidden auth
 ID");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>} else {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_IPAUTH</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        
        </span>if(allow_source_address())</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span># source IP allowed</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># authenticate if from local subscriber</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (from_uri==myself)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if (!proxy_authorize("$fd", "subscriber")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">                                </span>proxy_challenge("$fd", "0");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method("PUBLISH"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>if
 ($au!=$fU || $au!=$tU) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>sl_send_reply("403","Forbidden auth ID");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>if ($au!=$rU) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                
        </span>sl_send_reply("403","Forbidden R-URI");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_MULTIDOMAIN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>if ($fd!=$rd) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>sl_send_reply("403","Forbidden R-URI domain");</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>} else {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>if ($au!=$fU) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">                                        </span>sl_send_reply("403","Forbidden auth ID");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>consume_credentials();</font></div><div><font size="2" style="font-family:
 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span># caller authenticated</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>} else {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span># caller is not local subscriber, then check if it calls</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span># a local destination, otherwise deny, not an open relay here</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if
 (!uri==myself)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>sl_send_reply("403","Not relaying");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Caller NAT detection route</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[NATDETECT] {</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>force_rport();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (nat_uac_test("19")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (is_method("REGISTER")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_register();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>} else {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_contact();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>setflag(FLT_NATS);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># RTPProxy control</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[NATMANAGE] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_NAT</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_request()) {</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if(has_totag()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>if(check_route_param("nat=yes")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>setbflag(FLB_NATB);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>rtpproxy_manage();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_request()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if (!has_totag()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>add_rr_param(";nat=yes");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_reply()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if(isbflagset(FLB_NATB)) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_contact();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># Routing to foreign domains</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[SIPOUT] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (!uri==myself)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>{</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>append_hf("P-hint: outbound\r\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>route(RELAY);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"># PSTN GW routing</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[PSTN] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_PSTN</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># check if PSTN GW IP is defined</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (strempty($sel(cfg_get.pstn.gw_ip))) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n");</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># route to PSTN dialed numbers starting with '+' or '00'</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># &nbsp; &nbsp; (international format)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># - update the condition to match your dialing rules for PSTN routing</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># only local users allowed to call</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">        </span>if(from_uri!=myself) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply("403", "Not Allowed");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>$ru = "sip:" + $rU + "@" +
 $sel(cfg_get.pstn.gw_ip);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(RELAY);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>return;</font></div><div><font size="2" style="font-family: 'Courier
 New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># XMLRPC routing</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_XMLRPC</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[XMLRPC] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># allow XMLRPC from localhost</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if ((method=="POST" || method=="GET")</font></div><div><font
 size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>&amp;&amp; (src_ip==127.0.0.1)) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># close connection only for xmlrpclib user agents (there is a bug in</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span># xmlrpclib: it waits for EOF before interpreting the response).</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>if ($hdr(User-Agent) =~ "xmlrpclib")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace,
 sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                        </span>set_reply_close();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>set_reply_no_connect();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>dispatch_rpc();</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">        </span>send_reply("403", "Forbidden");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># route to voicemail server</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">route[TOVOICEMAIL] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef
 WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(!is_method("INVITE"))</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># check if VoiceMail server IP is defined</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (strempty($sel(cfg_get.voicemail.srv_ip))) {</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>xlog("SCRIPT: VoiceMail rotuing enabled but IP not defined\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if($avp(oexten)==$null)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>return;</font></div><div><font size="2"
 style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>$ru = "sip:" + $avp(oexten) + "@" + $sel(cfg_get.voicemail.srv_ip)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                                </span>+ $sel(cfg_get.voicemail.srv_port);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(RELAY);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco,
 monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>return;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># manage outgoing branches</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">branch_route[MANAGE_BRANCH] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">        </span>xdbg("new branch [$T_branch_idx] to $ru\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># manage incoming replies</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">onreply_route[MANAGE_REPLY] {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>xdbg("incoming
 reply\n");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if(status=~"[12][0-9][0-9]")</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"># manage failure routing cases</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">failure_route[MANAGE_FAILURE] {</font></div><div><font size="2" style="font-family: 'Courier New',
 courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>route(NATMANAGE);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (t_is_canceled()) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier,
 monaco, monospace, sans-serif;">#!ifdef WITH_BLOCK3XX</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># block call redirect based on 3xx replies.</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>if (t_check_status("3[0-9][0-9]")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>t_reply("404","Not found");</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span
 class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><br></font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!ifdef WITH_VOICEMAIL</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># serial forking</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span># - route to voicemail on busy or no answer (timeout)</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span"
 style="white-space:pre">        </span>if (t_check_status("486|408")) {</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>route(TOVOICEMAIL);</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">#!endif</font></div><div><font size="2" style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">}</font></div><div style="font-family: tahoma, 'new york', times, serif; font-size: 10pt; "><br></div><div style="font-family: tahoma, 'new
 york', times, serif; font-size: 10pt; "><br></div><div style="font-family: tahoma, 'new york', times, serif; font-size: 10pt; ">Regards,</div><div style="font-family: tahoma, 'new york', times, serif; font-size: 10pt; "><br></div><div style="font-family: tahoma, 'new york', times, serif; font-size: 10pt; ">Faisal</div></div></div></body></html>