[OpenSER-Users] PUA/PUA_MI: More than one Publish sent

Schumann Sebastian Sebastian.Schumann at t-com.sk
Tue Apr 1 10:31:37 CEST 2008


Dear Anca

Thank you for the response.

The publication of more than one message in your described scenario I
understand. In my case, immediately after the first PUBLISH is sent, a
second one is sent afterwards. OpenSER does not use the most recent etag
for an update, but creates a new one, that is never been removed
automatically. If I send an expires=0 message after the publication,
only the first published etag is removed.

Here my publication script:
   #!/bin/bash
   # FIFO command to PUBLISH hard-presence state of user via PUA
   #
  
   #config values
   OP_SYSUSER="alice at 10.96.115.129"
   OP_SIPURI="sip:$OP_SYSUSER"
   OP_STATE="open"
   OP_EXPIRES="-1"
 
  #build reply fifo file
  rm -f /tmp/openser_fifo_reply
  mkfifo /tmp/openser_fifo_reply
  cat /tmp/openser_fifo_reply&
 
  cat >/tmp/openser_fifo <<EOF
  :pua_publish:openser_fifo_reply
  $OP_SIPURI
  $OP_EXPIRES
  presence
  application/pidf+xml
  .
  <?xml version='1.0' encoding='UTF-8'?><presence
xmlns='urn:ietf:params:xml:ns:pidf'
xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model'
xmlns:rpid='urn:ietf:params:x    ml:ns:pidf:rpid'
xmlns:c='urn:ietf:params:xml:ns:pidf:cipid'  ntity='$OP_SIPURI'><tuple
id='gigpoej8'><status><basic>$OP_STATE</basic></status><rpid:user-input>
Har    d-State</rpid:user-input></tuple><dm:person
id='0jfqoiet'><rpid:activities><rpid:unknown/></rpid:activities><dm:note
>Hard-State</dm:note></dm:person></presence>
  EOF

And my expires script:
   #!/bin/bash
   # FIFO command to PUBLISH hard-presence state of user via PUA
   #
  
   #config values
   OP_SYSUSER="alice at 10.96.115.129"
   OP_SIPURI="sip:$OP_SYSUSER"
   OP_STATE="closed"
   OP_EXPIRES="0"
 
  #build reply fifo file
  rm -f /tmp/openser_fifo_reply
  mkfifo /tmp/openser_fifo_reply
  cat /tmp/openser_fifo_reply&
 
  cat >/tmp/openser_fifo <<EOF
  :pua_publish:openser_fifo_reply
  $OP_SIPURI
  $OP_EXPIRES
  presence
  application/pidf+xml
  .
  <?xml version='1.0' encoding='UTF-8'?><presence
xmlns='urn:ietf:params:xml:ns:pidf'
xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model'
xmlns:rpid='urn:ietf:params:x    ml:ns:pidf:rpid'
xmlns:c='urn:ietf:params:xml:ns:pidf:cipid'  ntity='$OP_SIPURI'><tuple
id='giqpoej8'><status><basic>$OP_STATE</basic></status><rpid:user-input>
Har    d-State</rpid:user-input></tuple><dm:person
id='0jfqoiet'><rpid:activities><rpid:unknown/></rpid:activities><dm:note
> ard-State</dm:note></dm:person></presence>
 
  EOF

I start first publish, then expire, then publish again and so on.

The following etags are created normally: 
e.g. a.1207041424.4027.1.0
a.1207041424.4027.3.0
a.1207041424.4027.5.0

At some point, another one is created together with the "normal" one,
e.g. a.1207041424.4027.7.0 and a.1207041424.4027.8.0

The expires only removed the a.1207041424.4027.7.0 (all odd numbers).
The published one with the even number stays forever.

I don't know what can be the reason. Here my OpenSER configuration file
extract from pua module:
 modparam("pua", "db_url",
"mysql://openser:openserrw@localhost/openser")
 modparam("pua", "db_table", "pua")
 modparam("pua", "update_period", 10)
 modparam("pua", "default_expires", 600)

Thanks for help.

Best regards
Sebastian

-----Original Message-----
From: Anca Vamanu [mailto:anca at voice-system.ro] 
Sent: Tuesday, 25. March 2008 3:05 PM
To: Schumann Sebastian
Cc: users at lists.openser.org
Subject: Re: [OpenSER-Users] PUA/PUA_MI: More than one Publish sent

Hello Sebastian,

Indeed sometimes more that one Publish messages are sent. I will explain

when and why.
It is possible for someone to request through the MI command to publish 
a state that should be active for 5000 seconds (you probably know that 
-1 in expires filed means infinite time). But the max expires in 
presence server is lets say 3600 sec. If no other publish request is 
received before the first one expires, the record is deleted. So, to 
respect the requested time, the pua module generates itself another 
publish when the first one is close to expire just to update the 
validity time.
Now, if for a subsequent mi command you do not sent the etag parameter (

set it to '.' value), the most recent etag will be found in pua module, 
and a correct Publish message will be sent.
I have just now tried the scenario you described and it works perfectly 
for me.
So, I want to ask you to say exactly what you are doing because there 
must be something you have missed out. Is the presentity uri exactly the

same for the first and the subsequent mi requests? After how much time 
have you sent the mi request that fails?

Regards,
Anca Vamanu

Schumann Sebastian wrote:
> Dear all
>  
> I am using OpenSER 1.3.1 branch release R3936. I face some bad 
> behaviour using pua and pua_mi modules.
>  
> I publish presence states via the management interface. Sometimes, it 
> happens that multiple PUBLISH message are sent by one request. 
> Unfortunately, there is no "system" or oder when this occurs. It just 
> happens after some publications.
>  
> In case of an expiration (Expires=0, E-Tag .) it is not that bad, I 
> receive the log message: ERROR:presence:update_presentity: No E_Tag
match.
>  
> In case of publication (Expires=-1, E-Tag .) it is very bad: After 
> publication, he receives also two similar messages, and threats both 
> PUBLISH messages as two different ones. Thus, creates two different 
> presentity entries with different E-Tags. If the state is expired now 
> via MI (Expires: -1, E-Tag .) only one of the E-Tags is removed. The 
> second stays in the presentity table and the user still appears
online.
>  
> Any ideas what can be the reason and how to solve it?
>  
> Best regards
> Sebastian
>
------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.openser.org
> http://lists.openser.org/cgi-bin/mailman/listinfo/users
>   





More information about the sr-users mailing list