Hello List,<br><br> I have a simple load balancer with dispatcher. I'm using the DIALOG module, it is supposed to store in db all info about ongoing dialogs. But my setup must be wrong, because a lot of dialogs are not removed when the call is hung up. <br>
<br>Here's my cfg:<br><br><br>#<br># $Id: openser.cfg 1827 2007-03-12 15:22:53Z bogdan_iancu $<br>#<br># simple quick-start config script<br># Please refer to the Core CookBook at <a href="http://www.openser.org/dokuwiki/doku.php">http://www.openser.org/dokuwiki/doku.php</a><br>
# for a explanation of possible statements, functions and parameters.<br>#<br><br># ----------- global configuration parameters ------------------------<br>debug=3 # debug level (cmd line: -dddddddddd)<br>fork=yes<br>log_stderror=no # (cmd line: -E)<br>
children=4<br>check_via=no<br>dns=no<br>rev_dns=no<br>listen=a.b.c.d<br>disable_dns_blacklist=true<br>port=5060<br><br>#set module path<br>mpath="/lib/openser/modules/"<br><br># ------------------ module loading ----------------------------------<br>
loadmodule "mysql.so"<br>loadmodule "maxfwd.so"<br>loadmodule "sl.so"<br>loadmodule "dispatcher.so"<br>loadmodule "tm.so"<br>loadmodule "mi_fifo.so"<br>loadmodule "textops.so"<br>
loadmodule "xlog.so"<br>loadmodule "rr.so"<br>loadmodule "dialog.so"<br>loadmodule "avpops.so"<br><br>modparam("mi_fifo","fifo_name", "/tmp/openser_fifo")<br>
modparam("tm", "fr_timer", 5)<br><br>modparam("dispatcher", "list_file", "/etc/openser/dispatcher.list")<br>modparam("dispatcher", "flags", 2)<br>modparam("dispatcher", "force_dst", 1)<br>
modparam("dispatcher", "dst_avp", "$avp(i:271)")<br>modparam("dispatcher", "grp_avp", "$avp(i:272)")<br>modparam("dispatcher", "cnt_avp", "$avp(i:273)")<br>
<br>modparam("dialog", "dlg_flag", 4)<br>modparam("dialog", "db_mode", 1)<br>modparam("dialog", "table_name", "dialog")<br>modparam("dialog", "db_url", "mysql://user:pass@localhost/openser")<br>
<br>modparam("avpops","avp_url","mysql://user:pass@localhost/openser")<br>modparam("avpops", "avp_table", "dialog")<br><br>route{<br> # initial sanity checks -- messages with<br>
# max_forwards==0, or excessively long requests<br> if (!mf_process_maxfwd_header("10")) {<br> sl_send_reply("483","Too Many Hops");<br> exit;<br> };<br><br> if (msg:len >= 2048 ) {<br>
sl_send_reply("513", "Message too big");<br> exit;<br> };<br><br> if (!method=="REGISTER")<br> record_route();<br><br> if (method=="INVITE") { setflag(4); }<br>
<br> if ( method=="INVITE" || method=="ACK" || method=="BYE" || method=="OPTIONS" || method=="CANCEL" ) {<br> ds_select_dst("1","2");<br> t_on_failure("1");<br>
t_relay();<br> exit;<br> };<br><br>}<br><br>failure_route[1] {<br><br> if (t_check_status("408")) {<br> xlog("L_INFO","Marking GW as failed...\n");<br>
ds_mark_dst("p");<br> ds_next_dst();<br> t_on_failure("1");<br> t_relay();<br> } else{<br> t_reply("501","Not Implemented");<br>
}<br>}<br><br><br>As far as I know, using the record_route assures that all messages are passed through the proxy so that dialogs must be removed... but they'r not<br><br><br><br>Any ideas?<br><br><br>Thanks a lot.<br>
<br><br><br>David Villasmil<br>