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(a)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(a)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@voice-system.ro]
Sent: Tuesday, 25. March 2008 3:05 PM
To: Schumann Sebastian
Cc: users(a)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(a)lists.openser.org
http://lists.openser.org/cgi-bin/mailman/listinfo/users