[Kamailio-Users] pua_bla and presence

Gustavo Mistrinelli gmistrinelli at gmail.com
Wed Jul 30 22:53:05 CEST 2008


Hey,
I have the same problem , using the same openser configuration file, only
adding  pua_bla "server_address" parameter on  1.3.2 bla stop working.

I installed 2 openser once with 1.3.0 and the other with openser 1.3.2, then
start openser using full debug log level to see what happens with each one.

I'm using Polycom 650 hardphones

Basic console error log
-------------------------------------
 ERROR:pua_bla:bla_handle_notify: content length= 0
 WARNING:tm:t_unref: script writer didn't release transaction
http://pastebin.com/m4a1b7969 (OpenSER 1.3.2 debug logs)

Full debug log
-----------------------
http://pastebin.com/m177c219a  (OpenSER 1.3.0 full log)
http://pastebin.com/m36f3ffca   (OpenSER 1.3.2 full log)

The main difference that I saw comparing both logs are remarked in pastbin,
and refer to: "DBG:pua:print_subs: pres_uri"

Please see below both configuration parameters

Openser Parameters
----------------------------------
# Presence server module - common API
loadmodule "presence.so"
modparam("presence", "server_address", "sip:192.168.4.10")
modparam("presence", "max_expires", 3600)

# Presence server module - presence & watcher info and XCAP
loadmodule "presence_xml.so"
modparam("presence_xml", "force_active", 1)

# Common API for presence user agent client
loadmodule "pua.so"

# BLA extension for PUA
loadmodule "pua_bla.so"
modparam("pua_bla", "default_domain",  "192.168.4.10")
modparam("pua_bla", "header_name",  "Sender")
modparam("pua_bla", "server_address",  "sip:192.168.4.10") (Only for OpenSER
1.3.2


I'm sending configuration of affected routes  (Main, Register, Presence) so
you can see if there is an error.

route {

   # Sanity Check Section
   #.....

  # Loose Route Section
  if (loose_route()) {
    xlog("L_INFO", "$mi Loose Routing");
    if(!has_totag()) {
      xlog("L_INFO", "OPENSER_NAME: $mi Initial loose-routing rejected - \
      M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
      sl_send_reply("403", "Initial Loose-Routing Rejected");
      route(ACC_FORBIDDEN_ROUTE);
      return;
    }
    if (is_method("CANCEL") || is_method("ACK")) {
      xlog("L_INFO", "$mi CANCEL/ACK");
      route(BASE_LOCAL_ROUTE);
      return;
    }
    if (is_method("SUBSCRIBE") && $rd == "OPENSER_IP") {
        # in-dialog subscribe requests
        route(PRESENCE_ROUTE);
        return;
    }

    if(is_method("BYE")) {
      route(ACC_BYE_ROUTE);
      xlog("L_INFO", "(ACC) $mi Setting account_flag");
      setflag(ACC_FLAG);
      route(BASE_LOCAL_ROUTE);
      return;
    }
  };

  # Call Type Processing Section

  if (method=="INVITE") {
    route(INVITE_ROUTE);
    return;
  };
  if (method=="REGISTER") {
    route(REGISTER_ROUTE);
    return;
  }

  if(is_method("PUBLISH|SUBSCRIBE")) {
    route(PRESENCE_ROUTE);
    return;
  }
  if(is_method("NOTIFY")) {
    if($hdr(event)=="dialog;sla") {
      route(PRESENCE_ROUTE);
      return;
    }
  }
}

route[REGISTER_ROUTE] {
  # -----------------------------------------------------------------
  # REGISTER Message Handler
  # -----------------------------------------------------------------
  # This cool register script came from
http://openser.org/docs/scripting.html

  xlog("L_NOTICE", "OPENSER_NAME: $mi Register Route - \
     M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");

  if ((!www_authorize("OPENSER_DOMAIN", "device")))) {
    xlog("L_INFO", "OPENSER_NAME: $mi Register Authentication Failed - \
    M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
    www_challenge("OPENSER_DOMAIN", "0");
    sl_send_reply("401", "Unauthorized");
    exit;
  }
  else
    xlog("L_INFO", "OPENSER_NAME: $mi Register Authentication OK -\
    M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");

  if ( !(src_ip=="LOCAL_PAIR_IP" && src_port==LOCAL_PAIR_PORT) ) {
    if($hdr(User-Agent) =~ "PolycomSoundPointIP-SPIP_650-UA") {
      xlog("L_NOTICE", "$mi Polycom BLA set FLAG \
      M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
      bla_set_flag();
    }

    if (!save("location")) {
      xlog("L_NOTICE", "$mi $fu save(location) Failed\n");
      sl_reply_error();
      return(0);
    };
  }
  consume_credentials();
  return;
}

route[PRESENCE_ROUTE] {
  # -------------------------------------------------------------------
  # Presence Route
  # -------------------------------------------------------------------
  xlog("L_INFO","$mi: Presence Route");
  if (!t_newtran()){
    sl_reply_error();
    exit;
  };

  if(is_method("PUBLISH")){
    if($hdr(Sender)!= NULL) {
      handle_publish("$hdr(Sender)");
    }
    else {
      handle_publish("");
    }
    t_release();
  }
  else
   if( is_method("SUBSCRIBE")) {
     handle_subscribe();
     t_release();
   } else

   if(is_method("NOTIFY")) {
     if(bla_handle_notify()) {
       t_reply("200", "OK");
     t_release();
   }
   exit;
}


Ok, I hope that provided information help to see if there is a problem on my
configuration or a is a bug on OpenSER 1.3.2

Thanks in advance,

Cheers,

Gustavo  Mistrinelli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20080730/ef59fefa/attachment.htm>


More information about the sr-users mailing list