Hi,
I have some questions about PUBLISH handling. SER sends a lot of NOTIFYS when status changes. Additionally, SER sends more than one tuples in one Response (open and closed in one Response).
The second question is about WATCHERINFO_NOTIFY. I have the line: modparam("pa", "watcherinfo_notify", 1) in my config file, but SER doesn't NOTIFY me, if someone SUBSCRIBEs to my Presence information.
Regards, Alois
10.40.1.42:5060 -> 10.15.200.57:5060 SUBSCRIBE sip:PDA_User@fh-joanneum.at SIP/2.0..Via: SIP/2.0/UDP 10.40.1.42:5060;rport;branch=z9hG4bK92504..Max-Forwards: 70..To: sip:PDA_User@fh-joan neum.at..From: sip:esca@fh-joanneum.at;tag=z9hG4bK19686534..Call-ID: 035185567140@10.40.1.42..CSeq: 1 SUBSCRIBE..Contact: sip:esca@10.40.1.42..Ex pires: 3600..User-Agent: mjsip stack 1.6..Event: presence..Accept: application/cpim-pidf+xml..Content-Length: 0.... #
10.15.200.57:5060 -> 10.40.1.42:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.40.1.42:5060;rport=5060;branch=z9hG4bK92504..To: sip:PDA_User@fhjoanneum. at;tag=589230a54cd08b3768529724501fae2 8-51f5..From: sip:esca@fh-joanneum.at;tag=z9hG4bK19686534..Call-ID: 035185567140@10.40.1.42..CSeq: 1 SUBSCRIBE..Expires: 3600..Contact: sip:10.15.2 00.57:5060..Server: Sip EXpress router (0.10.99-dev35-pa-4.1 (i386/linux))..Content-Length: 0..Warning: 392 10.15.200.57:5060 "Noisy feedback tells: pid=7288 req_src_ip=10.40.1.42 req_src_port=5060 in_uri=sip:PDA_User@fh-joanneum.at out_uri=sip:PDA_User@fh-joanneum.at via_cnt==1".... #
10.15.200.57:5060 -> 10.40.1.42:5060 NOTIFY sip:esca@10.40.1.42 SIP/2.0..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bKc1d8.7c27cd7.0..To: sip:esca@fhjoanneum. at;tag=z9hG4bK19686534..Fro m: sip:PDA_User@fh-joanneum.at;tag=589230a54cd08b3768529724501fae28-51f5..CSeq: 1 NOTIFY..Call-ID: 035185567140@10.40.1.42..Content-Length: 305..Use r-Agent: Sip EXpress router(0.10.99-dev35-pa-4.1 (i386/linux))..Event: presence..Content-Type: application/cpim-pidf+xml..Contact: sip:10.15.200.57:5 060..Subscription-State: active;expires=3600....<?xml version="1.0" encoding="UTF-8"?>..<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf" entity="pr es:PDA_User@fh-joanneum.at">...<tuple id="0x409c3328x557f3c98x44970bc3">....<status><basic>open</basic></status>....<contact priority="0.00">sip:pda_u ser@fh-joanneum.at</contact>...</tuple>..</presence>.. #
10.40.1.42:5060 -> 10.15.200.57:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bKc1d8.7c27cd7.0..To: sip:esca@fh-joanneum.at;tag=z9hG4bK19686534..From: sip:PDA_User@fhjoanneum. at;tag=589230a54cd08b3768529724501fae28-51f5..Call-ID: 035185567140@10.40.1.42..CSeq: 1 NOTIFY..Server: mjsip stack 1.6..Content-Length: 0.
10.0.0.3:5060 -> 10.0.0.11:5060 PUBLISH sip:pda_user@fh-joanneum.at SIP/2.0..Via: SIP/2.0/UDP 10.0.0.3:5060;branch=z9hG4bK1286239759..Max-Forwards: 70..From: sip:pda_user@fh-joanneu m.at;tag=264505054..To: sip:pda_user@fh-joanneum.at..Call-ID: 2090602137-1913544447-137194582..CSeq: 2 PUBLISH..Contact: sip:pda_user@fh-joanneum. at..Content-Type: application/cpim-pidf+xml..Content-Length: 219..Expires: 7200..Event: presence..User-Agent: SIP .NET 1.0 evaluation version, www.in dependentsoft.com....<?xml version="1.0" encoding="utf-8"?><presence xmlns="urn:ietf:params:xml:ns:pidf"entity="pres:pda_user@fhjoanneum. at"><tuple i d="0x409c3328x557f3c98x44970bc3"><status><basic>closed</basic></status></tuple></presence>.. #
10.0.0.11:5060 -> 10.0.0.3:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.0.0.3:5060;branch=z9hG4bK1286239759..From: sip:pda_user@fh-joanneum.at;tag=264505054..To: sip:pda_user@fh-joann eum.at;tag=589230a54cd08b3768529724501fae28-f3b7..Call-ID: 2090602137-1913544447-137194582..CSeq: 2 PUBLISH..Expires: 120..SIPETag: 0x409c2714x56983 668x449711ab..Contact: sip:10.0.0.11:5060..Server: Sip EXpress router (0.10.99-dev35-pa-4.1 (i386/linux))..Content-Length: 0..Warning: 392 10.0.0.11 :5060 "Noisy feedback tells: pid=7293 req_src_ip=10.0.0.3 req_src_port=5060 in_uri=sip:pda_user@fh-joanneum.at out_uri=sip:pda_user@fhjoanneum. at vi a_cnt==1"
10.15.200.57:5060 -> 10.40.1.42:5060 NOTIFY sip:esca@10.40.1.42 SIP/2.0..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bK91d8.2831e0b1.0..To: sip:esca@fhjoanneum. at;tag=z9hG4bK19686534..Fr om: sip:PDA_User@fh-joanneum.at;tag=589230a54cd08b3768529724501fae28-51f5..CSeq: 2 NOTIFY..Call-ID: 035185567140@10.40.1.42..Content-Length: 441..Us er-Agent: Sip EXpress router(0.10.99-dev35-pa-4.1 (i386/linux))..Event: presence..Content-Type: application/cpim-pidf+xml..Contact: sip:10.15.200.57: 5060..Subscription-State: active;expires=3545....<?xml version="1.0" encoding="UTF-8"?>..<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf" entity="p res:PDA_User@fh-joanneum.at">...<tuple id="0x409c45e0x5dd5903fx449711ab">....<status><basic>closed</basic></status>....<contact priority="0.00"></cont act>...</tuple>...<tuple id="0x409c3328x557f3c98x44970bc3">....<status><basic>open</basic></status>....<contact priority="0.00">sip:pda_user@fh-joanne um.at</contact>...</tuple>..</presence>.. #
10.15.200.57:5060 -> 10.40.1.42:5060 NOTIFY sip:esca@10.40.1.42 SIP/2.0..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bK23e1.c6b3a835.0..To: sip:esca@fhjoanneum. at;tag=z9hG4bK13311114..Fr om: sip:PDA_User@fh-joanneum.at;tag=589230a54cd08b3768529724501fae28-4a9d..CSeq: 6 NOTIFY..Call-ID: 480873203923@10.40.1.42..Content-Length: 441..Us er-Agent: Sip EXpress router(0.10.99-dev35-pa-4.1 (i386/linux))..Event: presence..Content-Type: application/cpim-pidf+xml..Contact: sip:10.15.200.57: 5060..Subscription-State: active;expires=2198....<?xml version="1.0" encoding="UTF-8"?>..<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf" entity="p res:PDA_User@fh-joanneum.at">...<tuple id="0x409c45e0x5dd5903fx449711ab">....<status><basic>closed</basic></status>....<contact priority="0.00"></cont act>...</tuple>...<tuple id="0x409c3328x557f3c98x44970bc3">....<status><basic>open</basic></status>....<contact priority="0.00">sip:pda_user@fh-joanne um.at</contact>...</tuple>..</presence>.. #
10.15.200.57:5060 -> 10.40.1.42:5060 NOTIFY sip:esca@10.40.1.42 SIP/2.0..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bKe636.2a57bde3.0..To: sip:esca@fhjoanneum. at;tag=z9hG4bK49649677..Fr om: sip:PDA_User@fh-joanneum.at;tag=589230a54cd08b3768529724501fae28-9d18..CSeq: 12 NOTIFY..Call-ID: 047322370278@10.40.1.42..Content-Length: 441..U ser-Agent: Sip EXpress router(0.10.99-dev35-pa-4.1 (i386/linux))..Event: presence..Content-Type: application/cpim-pidf+xml..Contact: sip:10.15.200.57 :5060..Subscription-State: active;expires=1614....<?xml version="1.0" encoding="UTF-8"?>..<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf" entity=" pres:PDA_User@fh-joanneum.at">...<tuple id="0x409c45e0x5dd5903fx449711ab">....<status><basic>closed</basic></status>....<contact priority="0.00"></con tact>...</tuple>...<tuple id="0x409c3328x557f3c98x44970bc3">....<status><basic>open</basic></status>....<contact priority="0.00">sip:pda_user@fh-joann eum.at</contact>...</tuple>..</presence>.. #
10.15.200.57:5060 -> 10.40.1.42:5060 NOTIFY sip:esca@10.40.1.42 SIP/2.0..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bKe7b3.ac386935.0..To: sip:esca@fhjoanneum. at;tag=z9hG4bK24602857..Fr om: sip:PDA_User@fh-joanneum.at;tag=589230a54cd08b3768529724501fae28-52ae..CSeq: 19 NOTIFY..Call-ID: 310599367527@10.40.1.42..Content-Length: 441..U ser-Agent: Sip EXpress router(0.10.99-dev35-pa-4.1 (i386/linux))..Event: presence..Content-Type: application/cpim-pidf+xml..Contact: sip:10.15.200.57 :5060..Subscription-State: active;expires=1236....<?xml version="1.0" encoding="UTF-8"?>..<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf" entity=" pres:PDA_User@fh-joanneum.at">...<tuple id="0x409c45e0x5dd5903fx449711ab">....<status><basic>closed</basic></status>....<contact priority="0.00"></con tact>...</tuple>...<tuple id="0x409c3328x557f3c98x44970bc3">....<status><basic>open</basic></status>....<contact priority="0.00">sip:pda_user@fh-joann eum.at</contact>...</tuple>..</presence>.. #
10.40.1.42:5060 -> 10.15.200.57:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bK91d8.2831e0b1.0..To: sip:esca@fh-joanneum.at;tag=z9hG4bK19686534..From: sip:PDA_User@fh -joanneum.at;tag=589230a54cd08b3768529724501fae28-51f5..Call-ID: 035185567140@10.40.1.42..CSeq: 2 NOTIFY..Server: mjsip stack 1.6..Content-Length: 0. ... # 10.40.1.42:5060 -> 10.15.200.57:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bK23e1.c6b3a835.0..To: sip:esca@fh-joanneum.at;tag=z9hG4bK13311114..From: sip:PDA_User@fh -joanneum.at;tag=589230a54cd08b3768529724501fae28-4a9d..Call-ID: 480873203923@10.40.1.42..CSeq: 6 NOTIFY..Server: mjsip stack 1.6..Content-Length: 0. ... # 10.40.1.42:5060 -> 10.15.200.57:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bKe636.2a57bde3.0..To: sip:esca@fh-joanneum.at;tag=z9hG4bK49649677..From: sip:PDA_User@fh -joanneum.at;tag=589230a54cd08b3768529724501fae28-9d18..Call-ID: 047322370278@10.40.1.42..CSeq: 12 NOTIFY..Server: mjsip stack 1.6..Content-Length: 0 .... # 10.40.1.42:5060 -> 10.15.200.57:5060 SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.15.200.57;branch=z9hG4bKe7b3.ac386935.0..To: sip:esca@fh-joanneum.at;tag=z9hG4bK24602857..From: sip:PDA_User@fh -joanneum.at;tag=589230a54cd08b3768529724501fae28-52ae..Call-ID: 310599367527@10.40.1.42..CSeq: 19 NOTIFY..Server: mjsip stack 1.6..Content-Length: 0
modparam("msilo","use_contact",0) modparam("msilo","expire_time",7200) # -- usrloc params -- # -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # modparam("auth_db", "password_column", "password") # -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1) modparam("rls", "min_expiration", 200) modparam("rls", "max_expiration", 300) modparam("rls", "default_expiration", 300) modparam("rls", "auth", "none") #"implicit" modparam("rls", "xcap_root", "http://localhost/xcap") modparam("rls", "reduce_xcap_needs", 1) modparam("rls", "db_mode", 1) modparam("rls", "db_url", "mysql://ser:heslo@localhost:3306/ser") modparam("pa", "default_expires", 3600) modparam("pa", "use_db", 1) #modparam("pa", "pa_domain", "fh-joanneum.at") modparam("pa", "use_offline_winfo", 1) # allow storing authorization requests for offline users into database modparam("pa", "offline_winfo_timer", 600) # how often try to remove old stored authorization requests modparam("pa", "offline_winfo_expiration", 600) # how long stored authorization requests live modparam("pa", "db_url", "mysql://ser:heslo@localhost:3306/ser") modparam("pa", "auth", "none") # mode of PA authorization: none, implicit or xcap #modparam("pa", "auth_xcap_root", "http://localhost/xcap") modparam("pa", "winfo_auth", "none") # do not authorize watcherinfo subscriptions modparam("pa", "use_callbacks", 1) # use only published information if set to 0 modparam("pa", "accept_internal_subscriptions", 1) # don't accept internal subscriptions from RLS, ... modparam("pa", "watcherinfo_notify", 1) modparam("pa", "max_subscription_expiration", 3600) # maximum value of Expires for subscriptions modparam("pa", "max_publish_expiration", 3600) # maximum value of Expires for publications modparam("pa", "timer_interval", 5) # how often test if something changes and send NOTIFY modparam("presence_b2b", "presence_route", "sip:127.0.0.1;transport=tcp;lr") # route for generated SUBSCRIBE requests for presence modparam("presence_b2b", "on_error_retry_time", 60) # waiting time from error to new attepmt about SUBSCRIBE modparam("presence_b2b", "wait_for_term_notify", 33) # how long wait for NOTIFY with Subscription-Status=terminated after unsubscribe modparam("presence_b2b", "resubscribe_delta", 30) # how long before expiration send renewal SUBSCRIBE request modparam("presence_b2b", "min_resubscribe_time", 60) # minimal time to send renewal SUBSCRIBE request from receiving previous response modparam("presence_b2b", "default_expiration", 3600) # default expiration timeout modparam("presence_b2b", "handle_presence_subscriptions", 1) # process internal subscriptions to presence events modparam("usrloc", "db_mode", 1) modparam("domain", "db_mode", 1) modparam("domain|uri_db|acc|auth_db|usrloc|msilo", "db_url", "mysql://ser:heslo@localhost:3306/ser") modparam("domain", "domain_table", "domain") #modparam("domain", "domain_column", "domain") modparam("fifo", "fifo_file", "/tmp/ser_fifo") if (uri==myself) { log(1, "URI == myself"); if (method=="SUBSCRIBE") { log(1, "SUBSCRIBE received"); if (!t_newtran()) { sl_reply_error(); break; }; # new subscription if (@to.tag=="") { log(1, "new SUBSCRIPTION"); if ((@msg.supported=~"eventlist")) { log(1, "msg.supported=eventlist"); # Supported header field # -> may be RLS subscription if (is_simple_rls_target("$uid-list")) { log(1, "it is simple subscription!\n"); # handle_rls_subscription("1"); # takes From UID and makes XCAP query # for user's list named "default" if (@to.tag=="") { # only for new subscriptions (with empty to tag if (!query_resource_list("default")) { t_reply("500", "XCAP query error"); break; } } } if (!have_flat_list()) { # query_resource_list failed or was not called # do standard RLS query acording to To/AOR query_rls_services(); } if (have_flat_list()) { handle_rls_subscription("1"); break; } } # SUBSCRIBE to existing user # xlog("L_ERR", "PA: handling subscription: %tu from: %fu\n"); log(1, "handle SUBSCRIBE request\n"); handle_subscription("registrar"); log(1, "handled subscription\n"); log(1, "break 1"); break; } else { # renewal subscription log(1, "else - renewal subscription"); if (!handle_rls_subscription("0")) { log(1, "!handle rls subscription"); handle_subscription("registrar"); log(1, "handled subscription 2"); } log(1, "break 2"); break; } } if (method=="REGISTER") { log(1, "REGISTER received"); # if (!www_authorize("fh-joanneum.at", "credentials")) { # www_challenge("fh-joanneum.at", "0"); # break; # }; save("location"); log(1, "saved location"); break; }; if (method=="PUBLISH") { log(1, "PUBLISH received"); if (!t_newtran()) { sl_reply_error(); break; }; log(1, "handle publish request\n"); handle_publish("registrar"); log(1, "handled publish\n"); break; }; if (method=="NOTIFY") { log(1, "NOTIFY received"); if (!t_newtran()) { log(1, "newtran error\n"); sl_reply_error(); break; }; if (!handle_notify()) { log(1, "unable to handle notification - lui"); t_reply("481", "Unable to handle notification"); } break; };