[Serusers] ser presence question

Yufei Tao yufei.tao at redembedded.com
Wed Nov 28 14:27:53 CET 2007


Hi

I want to be able to use PUBLISH/SUBSCRIBE/NOTIFY for presence 
information of users. So users can update their presence information by 
PUBLISH  and watchers be informed by NOTIFY when there are changes in 
the presence status. I am using pa.so, mysql. Not using XCAP.

My problems are
1. The OK from SER to PUBLISH has no SIP_ETag. Also SER prints out debug 
messages saying:
publish_presentity: no tuple for 01 at sertest.com
I wonder if there's something wrong with my PUBLISH and PIDF so SER is 
not processing it?

2. The watcher subscribes to the presentity 01 at sertest.com. But the 
NOTIFY message the watcher gets always has basic status being closed, 
despite that the presentity has PUBLISHed its status as open. I guess 
this may be due to problem 1 - SER never understood the PUBLISH?


Currently my UA sends PUBLISH message:
PUBLISH sip:01 at sertest.com:5060 SIP/2.0
via: SIP/2.0/UDP 192.168.168.149:40070;branch=z9hG4bK314278337
max-forwards: 70
to: <sip:01 at sertest.com:5060>
from: <sip:01 at sertest.com:5060>;tag=314279337
call-id: cd674de3-0-1196253409
cseq: 46046 PUBLISH
contact: <sip:01 at 192.168.168.149:40070>
expires: 3600
user-agent: Red v1.00 0.6.3.42 - von
event: presence
content-type: application/pidf+xml
content-length: 274

<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:01 at sertest.com">
  <tuple id="status">
    <status>
      <basic>open</basic>
    </status>
    <contact priority="0.500000">sip:01 at sertest.com</contact>
  </tuple>
</presence>

and SER replies with the following msg where there is no SIP-ETag field:

SIP/2.0 200 OK
via: SIP/2.0/UDP 192.168.168.149:40070;branch=z9hG4bK314278338
to: <sip:01 at sertest.com:5060>;tag=482760500770a188d9ef565befb876b4-7979
from: <sip:01 at sertest.com:5060>;tag=314279338
call-id: cd674de3-0-1196253409
cseq: 46047 PUBLISH
Server: Sip EXpress router (0.9.6 (i386/linux))
Content-Length: 0
Warning: 392 192.168.168.241:5060 "Noisy feedback tells:  pid=14095 
req_src_ip=192.168.168.149 req_src_port=40070 
in_uri=sip:01 at sertest.com:5060 out_uri=sip:01 at sertest.com:5060 via_cnt==1"


The parts in my ser.cfg that are relevant to SUBSCRIBE and PUBLISH:

modparam("usrloc", "db_mode", 2)
modparam("usrloc", "timer_interval", 10)
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("rr", "enable_full_lr", 1)

#  for SUBSCRIBE/NOTIFY
modparam("pa", "default_expires", 3600)
modparam("pa", "use_db", 1)
modparam("pa", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("pa", "pa_domain", "sertest.com")# -- same as or different from 
registrar

...   ...
...   ...

    if (method=="SUBSCRIBE") {
            if (!t_newtran()) {
                sl_reply_error();
                break;
            };

            handle_subscription("registrar");
            break;
        }

        if (method=="PUBLISH") {
            if (!t_newtran()) {
               log(1, "newtran error\n");
               sl_reply_error();
            };
            handle_publish("registrar");
            break;
        };

        lookup("aliases");
        if (!uri==myself) {
            append_hf("P-hint: outbound alias\r\n");
            route(1);
            break;
        };





More information about the sr-users mailing list