[Serusers] Notify in the pa module
Klaus Darilion
klaus.mailinglists at pernau.at
Tue Jun 21 15:21:24 CEST 2005
Maybe a problem of incompatibel xml-tags?
The PUBLISH is of type application/pidf+xml (which client?).
The NOTIFY uses type application/xpidf+xml.
Maybe the pa module does not handle <im:im>busy</im:im> correct. I
suggest take a look at the code.
regards,
klaus
Jesús M. Movilla wrote:
> Hi to all,
>
> I finally got to make my pa module SER to work but I found a strange
> behaviour with METHOD Notify :(maybe this is just the way it works :-)).
>
> When I tried to change my presence state from connected to busy, SER
> notifies to which is suscribed but instead of sending a busy status, it send
> a OPEN status. In fact any change on status presence is notified as OPEN.
> Whe the user is disconnected then SER notifies with CLOSED. Does the pa
> module workds like this?, if not, how cani configure my SER to make it send
> the right state presence?.
>
> Publish:
>
> PUBLISH sip:jesus at guadalmar.hi.inet SIP/2.0
> Via: SIP/2.0/TCP
> 10.95.25.230:5060;branch=z9hG4bK-a372ca3c-b6bb-4933-9653-99c0a12cd4e9.1;rpor
> t
> To: <sip:jesus at guadalmar.hi.inet>
> From: "Jesus Movilla"
> <sip:jesus at guadalmar.hi.inet>;tag=1fa5881c-8205-46c9-886f-65c93269c876
> Call-ID: b5155dd8-6426-46a3-a1c8-c0d0402d53e8
> CSeq: 1 PUBLISH
> Max-Forwards: 70
> Expires: 3600
> Event: presence
> Content-Type: application/pidf+xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <presence xmlns="urn:ietf:params:xml:ns:pidf"
> xmlns:im="urn:ietf:params:xml:ns:pidf:im"
> xmlns:myex="http://id.example.com/presence/"
> entity="pres:jesus at guadalmar.hi.inet">
> <tuple id="bs35r9">
> <status>
> <basic>open</basic>
> <im:im>busy</im:im>
> <myex:location>home</myex:location>
> </status>
> <contact priority="0.8">im:someone at mobilecarrier.net</contact>
> <note xml:lang="en">Don't Disturb Please!</note>
> <note xml:lang="fr">Ne derangez pas, s'il vous plait</note>
> <timestamp>2001-10-27T16:49:29Z</timestamp>
> </tuple>
> </presence>
>
> This is the notification that I recieve (from myself ;-)).
>
>
> ---- Receiving -----
> NOTIFY sip:10.95.25.230:5060;transport=UDP SIP/2.0
> Via: SIP/2.0/UDP 10.95.9.205;branch=z9hG4bK5787.84649d21.0
> To: "Jesus Movilla"
> <sip:jesus at guadalmar.hi.inet>;tag=06d1960d-88fe-4030-a562-aff7b921a76c
> From:
> <sip:jesus at guadalmar.hi.inet>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-0b47
> CSeq: 3 NOTIFY
> Call-ID: 4ee63060-a7a6-41b9-9b8e-057bb318f00c
> Content-Length: 330
> User-Agent: Sip EXpress router(0.10.99+cvs20050519 (i386/linux))
> Event: presence
> Content-Type: application/xpidf+xml
> Subscription-State: active;expires=3468
>
> <?xml version="1.0"?>
> <!DOCTYPE presence PUBLIC "//IETF//DTD RFCxxxx XPIDF 1.0//EN" "xpidf.dtd">
> <presence>
> <presentity uri="sip:jesus at guadalmar.hi.inet;method=SUBSCRIBE"/>
> <atom id="9r28r49">
> <address uri="sip:jesus at guadalmar.hi.inet;user=ip" priority="0,800000">
> <status status="open"/>
> </address>
> </atom>
> </presence>
>
> Ths status would be CLOSED if the presentity is not connected.
>
>
>
> I also include the ser.cfg that I am using. The ser version is cvs
> "ser_0.10.99+cvs20050519"
>
> By the way, anyone who wants to implement pa module in SER could take this
> ser.cfg as example ;-))
>
> Thanks in advance.
>
> Jesús
>
>
> *****************************************************
>
> #
> # $Id: ser.cfg,v 1.27 2005/03/10 14:16:25 andrei Exp $
> #
> # simple quick-start config script
> #
>
> # ----------- global configuration parameters ------------------------
>
> debug=3 # debug level (cmd line: -dddddddddd)
> #fork=yes
> #log_stderror=no # (cmd line: -E)
> #memlog=5 # memory debug log level
> #log_facility=LOG_LOCAL0 # sets the facility used for logging (see
> syslog(3))
>
> /* Uncomment these lines to enter debugging mode */
> fork=yes
> log_stderror=yes
>
>
> check_via=no # (cmd. line: -v)
> dns=no # (cmd. line: -r)
> rev_dns=no # (cmd. line: -R)
> #port=5060
> #children=4
> fifo="/tmp/ser_fifo"
> #user=ser
> #group=ser
> #fifo_user=ser # owner of the ser fifo
> #fifo_group=ser
> #fifo_mode=0660 # fifo's permissions
> fifo_db_url="mysql://ser:heslo@localhost/ser"
> #disable_core=yes #disables core dumping
> #open_fd_limit=1024 # sets the open file descriptors limit
> #mhomed=yes # usefull for multihomed hosts, small performance penalty
> #disable_tcp=yes
> #tcp_accept_aliases=yes # accepts the tcp alias via option (see NEWS)
>
> #Connection 'mysql://ser:heslo@localhost/ser' not found in pool
> # ------------------ module loading ----------------------------------
>
> # Uncomment this if you want to use SQL database
> loadmodule "/usr/local/lib/ser/modules/mysql.so"
>
> loadmodule "/usr/local/lib/ser/modules/sl.so"
> loadmodule "/usr/local/lib/ser/modules/tm.so"
> loadmodule "/usr/local/lib/ser/modules/rr.so"
> loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> loadmodule "/usr/local/lib/ser/modules/registrar.so"
> loadmodule "/usr/local/lib/ser/modules/textops.so"
> loadmodule "/usr/local/lib/ser/modules/pa.so"
>
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> loadmodule "/usr/local/lib/ser/modules/auth.so"
> #loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> # -- usrloc params --
>
> #modparam("usrloc", "db_mode", 0)
>
> # Uncomment this if you want to use SQL database
> # for persistent storage and comment the previous line
> modparam("usrloc", "db_mode", 2)
> modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
>
> # -- 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")
> #aumodparam("auth_db", "db_url", "mysql://ser:heslo@localhost/ser")
>
> # -- rr params --
> # add value to ;lr param to make some broken UAs happy
> modparam("rr", "enable_full_lr", 1)
>
> # --pa -- params
> modparam("pa", "db_url", "mysql://ser:heslo@localhost/ser")
> # ------------------------- request routing logic -------------------
>
> # main routing logic
>
> 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");
> break;
> };
> if (msg:len >= max_len ) {
> sl_send_reply("513", "Message too big");
> break;
> };
>
> # we record-route all messages -- to make sure that
> # subsequent messages will go through our proxy; that's
> # particularly good if upstream and downstream entities
> # use different transport protocol
> if (!method=="REGISTER") record_route();
>
> # subsequent messages withing a dialog should take the
> # path determined by record-routing
> if (loose_route()) {
> # mark routing logic in request
> append_hf("P-hint: rr-enforced\r\n");
> route(1);
> break;
> };
>
> #if (!uri==myself) {
> if (!uri=~"hi.inet") {
> # mark routing logic in request
> append_hf("P-hint: outbound\r\n");
> route(1);
> break;
> };
>
> # if the request is for other domain use UsrLoc
> # (in case, it does not work, use the following command
> # with proper names and addresses in it)
> if (uri=~"hi.inet") {
>
> if (method=="REGISTER") {
>
> # Uncomment this if you want to use digest authentication
> #if (!www_authorize("hi.inet", "subscriber")) {
> # www_challenge("hi.inet", "0");
> # break;
> #};
>
> save("location");
> break;
> };
>
> if (method=="SUBSCRIBE") {
>
> log(1,"Subscribe\n");
> if (t_newtran()) {
> log(1,"Register\n");
> handle_subscription("registrar");
> };
> break;
> };
>
>
> if (method=="PUBLISH") {
>
> log(1,"Publish\n");
> if (!t_newtran()) {
> log(1,"newtran error\n");
> sl_reply_error();
> };
> handle_publish("registrar");
> log(1,"publish handled\n");
> break;
> };
>
> lookup("aliases");
> #if (!uri==myself) {
> if (!uri=~"hi.inet") {
> append_hf("P-hint: outbound alias\r\n");
> route(1);
> break;
> };
>
> # native SIP destinations are handled using our USRLOC DB
> if (!lookup("location")) {
> sl_send_reply("404", "Not Found");
> break;
> };
> };
> append_hf("P-hint: usrloc applied\r\n");
> route(1);
> }
>
> route[1]
> {
> # send it out now; use stateful forwarding as it works reliably
> # even for UDP2TCP
> if (!t_relay()) {
> sl_reply_error();
> };
> }
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
>
More information about the sr-users
mailing list