Hello all,

     Got a question for those well versed on the Dialog Module. I have it working great against a db,  but it seems to me that -although there's nothing on the module's documentations to indicate it- Dialogs are inserted on the table once the initial transaction is finished, i.e. 200 OK.

Here's my script...

#
# $Id: openser.cfg 1827 2007-03-12 15:22:53Z bogdan_iancu $
#
# simple quick-start config script
# Please refer to the Core CookBook at http://www.openser.org/dokuwiki/doku.php
# for a explanation of possible statements, functions and parameters.
#

# ----------- global configuration parameters ------------------------
debug=3             #   debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no   # (cmd line: -E)
children=4
check_via=no
dns=no
rev_dns=no
listen=A.B.C.D
disable_dns_blacklist=true
port=5060

#set module path
mpath="/lib/openser/modules/"

# ------------------ module loading ----------------------------------
loadmodule "mysql.so"
loadmodule "maxfwd.so"
loadmodule "sl.so"
loadmodule "dispatcher.so"
loadmodule "tm.so"
loadmodule "mi_fifo.so"
loadmodule "textops.so"
loadmodule "xlog.so"
loadmodule "rr.so"
loadmodule "avpops.so"
loadmodule "dialog.so"

modparam("mi_fifo","fifo_name", "/tmp/openser_fifo")
#Timer which hits if no final reply for a request
#or ACK for a negative INVITE reply arrives
modparam("tm", "fr_timer", 5)

modparam("dispatcher", "list_file", "/etc/openser/dispatcher.list")
modparam("dispatcher", "flags", 2)
modparam("dispatcher", "force_dst", 1)
modparam("dispatcher", "dst_avp", "$avp(i:271)")
modparam("dispatcher", "grp_avp", "$avp(i:272)")
modparam("dispatcher", "cnt_avp", "$avp(i:273)")

modparam("avpops","avp_url","mysql://user:pass@localhost/openser")
modparam("avpops", "avp_table", "dialog")

modparam("rr","enable_full_lr", 1)

modparam("dialog", "dlg_flag", 4)
modparam("dialog", "db_mode", 1)
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "db_url", "mysql://user:pass@localhost/openser")

route{
    # initial sanity checks -- messages with
    # max_forwards==0, or excessively long requests
    if (!mf_process_maxfwd_header("10")) {
        sl_send_reply("483","Too Many Hops");
        exit;
    };

    if (msg:len >=  2048 ) {
        sl_send_reply("513", "Message too big");
        exit;
    };

     if(loose_route()) {
          append_hf("P-hint: rr-enforced\r\n");
          route(1);
     };
    
     if (!method=="REGISTER")
          record_route();

     if (method=="INVITE") {
          setflag(4);
          xlog("L_ERR","OPENSER: NEW INVITE $ru -> $ci \n");
     };

     if (method=="BYE"||method=="CANCEL") {
          setflag(4);
          xlog("L_ERR","OPENSER: DISCONNECT $ru -> $ci \n");
     };

     if ( method=="INVITE" || method=="ACK" || method=="BYE" || method=="OPTIONS" || method=="CANCEL" ) {
          ds_select_dst("1","2");
          t_on_reply("1");
          t_on_failure("1");
          t_relay();
          exit;
     };
    
}

route[1] {

     #    Forward Statefully
     t_on_reply("1");
     t_on_failure("1");
     if(!t_relay()){
          sl_reply_error();
     };
     exit;
}

failure_route[1] {

         if (t_check_status("408")) {
                 xlog("L_INFO","Marking GW as failed...\n");
                 ds_mark_dst("p");
                 ds_next_dst();
                 t_on_failure("1");
                 t_relay();
         } else{
                 t_reply("501","Not Implemented");
                 xlog("L_ERR","OPENSER: FAILED $ru -> $ci \n");
         }
}




thanks to all


David