Hi,

I'm trying to set up OpenSER as a presence server without using force_active (ie to allow authorization). I have two x-lite clients which register with OpenSER and can subscribe to each other. I get a prompt on each client asking whether to authorize the other, but if I click yes no presence info is displayed. If I restart either of the x-lites the authorization message appears again. I know this is because the subs_status field of the watchers table is not being changed from "pending" to "active". If I run a packet capture when starting up x-lite, it sends the 200 OK to the notify provided by OpenSER, but when I click "allow" in the authorization box, nothing is sent to OpenSER.

Has anyone got presence working with x-lite without using force_active? If so, is there anything I'm missing? My config file is as follows:

debug=7            # debug level (cmd line: -dddddddddd)
fork=no
log_stderror=yes
check_via=no    # (cmd. line: -v)
dns=no          # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
listen=udp: 192.168.1.107:5060
children=4
 
mpath="/usr/local/lib/openser/modules/"
loadmodule "mysql.so"
loadmodule "sl.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "maxfwd.so "
loadmodule "textops.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "presence.so"
loadmodule "avpops.so"
loadmodule "mi_fifo.so"

modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
modparam("usrloc", "db_mode", 3)
modparam("rr", "enable_full_lr", 1)
modparam("presence|^usrloc$", "db_url"," mysql://user:pass@localhost/openser")
modparam("presence", "force_active", 0)
modparam("presence", "max_expires", 3600)
modparam("presence", "server_address", "sip: 192.168.1.107:5060")

route{
    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 (!is_method("REGISTER"))
        record_route();

    if (loose_route()) {
        route(1);
        exit;
    };

    if (!uri==myself) {
        route(1);
        exit;
    };

    if (uri==myself) {
          if (method=="REGISTER") {
            save("location");
            exit;
          };

          if (!lookup("location")) {
                  sl_send_reply("404", "Not Found");
                  exit;
          };
    };
    if( is_method("PUBLISH|SUBSCRIBE")) {
          route(2);
          exit;
        };

    route(1);
}
route[1] {
    if (!t_relay()) {
        sl_reply_error();
    };
    exit;
}
route[2]
{
    sl_send_reply("100","trying");
    if (!t_newtran())
    {
        sl_reply_error();
        exit;
    };

    if(is_method("PUBLISH"))
    {
        handle_publish();
        t_release();
    }
    else if( is_method("SUBSCRIBE"))
    {
        handle_subscribe();
        t_release();
    };
   
    exit;
}

Thanks in advance,

Sebastian

--
Sebastian Murray-Roberts (B.Sc Hons)
Server Developer
Yeigo Communications
http://www.yeigo.com
Tel: +27 21 409 7807
Fax: +27 21 409 7050
Mobile: +27 72 183 5998

CONFIDENTIALITY NOTICE: E-MAIL
This e-mail is confidential.  If you receive it by mistake, please delete it and notify the sender immediately.  If you are not the intended recipient, you may not use, disclose, distribute, copy or publish any information contained herein.