Hi,
I have a candidate code fix that I have been testing today. It
looks good so far.
If the things continue to go well I will check it into a branch
before the end of the day. I'd appreciate it if some others could
look over it before I put it back into master.
Thanks,
Peter
On Thu, 2011-08-11 at 15:20 +0200, Daniel-Constantin Mierla wrote:
Hello,
... just few more thoughts since I was offline -- I kind of
understood that the issue was over UDP, with TCP the UA should
re-use the connection (kamailio does it if it is not configured
to close the connection immediately), so the order should be
ensured.
Meanwhile, the other soulution would have been to use the new
async module, like:
- if the subscribe dialog does not exist, call async_route()
with some sleep interval (1 sec) which should allow the 200ok to
come and be processed
That as a workaround, nicer should be fixed in the code, if
Peter did it, that is great, otherwise I will look over it in
the next days -- either with creation of 'early' dialog on
SUBSCRIBE, accept NOTIFY and confirmation on 200ok or a queue to
keep a list of pending NOTIFYs for processing.
Cheers,
Daniel
On Thu, Aug 11, 2011 at 9:51 AM, Andrew Miller
<andrew.miller(a)crocodile-rcs.com> wrote:
FYI, Just seen an internal e-mail from Peter saying he
thinks he has fixed it. I will test this as soon as I
get into the office this morning and we will report back
Didn't want anyone putting more time into this if Peter
has fixed it.
Andy
On 11/08/2011 08:42, Andrew Miller wrote:
Klaus,
Sorry we should have mentioned that we did
investigate this option, however we do not think
it will work.
I may have got the details below wrong, as Peter
has been looking at this, however the reason is
something like the following:
The main job of the 200 handler is to write a
database entry that binds the incoming RLS
subscription to the back-end presence
subscription. A pointer to the RLS subscription
is bound to the INVITE transaction, and is
therefore available to the 200 call back
function. The same information is not available
to the NOTIFY handler - it expects to get this
information FROM the database. Therefore, we
cannot (unfortunately) handle the NOTIFY in
exactly the same way as the 200.
Is that right Peter?
Andy
On 11/08/2011 08:30, Klaus Darilion wrote:
Am 10.08.2011 18:54, schrieb
Daniel-Constantin Mierla:
Hello,
I would like to look closer at
the issue and figure out
possible
solution, but I am traveling for
time being, so just quick
thoughts.
One approach would the similar
solution as for the fast CANCEL
(which
gets to the server before the
INVITE). What we do (in config),
we check
if there is an INVITE
transaction for the CANCEL and
if not we just drop
the CANCEL (no reply). That will
force the UA to do
retransmissions,
which eventually will come after
the INVITE is
received/processed.
Does not work with TCP requests.
The second idea would be to have
a pending queue, keep the NOTIFY
for a
while there and when 200ok is
coming, look in the queue if it
is
something for respective dialog.
If no dialog is created after a
while,
request that are older in the
queue will be just discarded.
The NOTIFY is in an implicit 200 OK. So
if there is an ongoing SUBSCRIBE
transaction which matches the NOTIFY,
the NOTIFY should trigger the same
actions as the 200 OK. The later
arriving 200 OK can then be ignored.
regards
klaus
Cheers,
Daniel
On 8/10/11 6:19 PM, Andrew
Miller wrote:
Sorry Pete,
That seems to make
things better, but does
not solve the issue for
me.
Most times this now
clean when a client logs
in, but about 1 in 10 I
am still getting an
error message. In one
case I had 9 error
messages
on one log-in.
Andy.
On 10/08/2011 15:58,
Peter Dunkley wrote:
I've been
playing around
with this here
and making
presence and rls
use TCP instead
of UDP seems to
help with this
problem.
Presumably
this is because
using TCP
enforces
in-order
delivery of
messages.
To make presence
and rls use TCP
I:
* Added
a ;transport=tcp
parameter to the
SIP URI I had
set for
presence
server_address
* Added
a ;transport=tcp
parameter to the
SIP URI I had
set for rls
server_address
* Set the rls
outbound_proxy
parameter to
"sip:127.0.0.1;transport=tcp"
It's not a
proper fix, but
I think it works
around the
issue.
Regards,
Peter
On Mon,
2011-08-01 at
13:40 +0200,
Klaus Darilion
wrote:
Am
01.08.2011 12:28, schrieb Andrew
Miller:
I attempted to insert a
dialog entry in the hash table on sending the
SUBSCRIBE, unfortunately
this did not cure the problem
Has anyone any
suggestions for the cleanest and easiest method to ensure
that the 200 is handled
before the NOTIFY?
The
cleanest
solution
would be
to
establish the dialog when the
NOTIFY
is
received
although
the 200
OK is
missing.
The
NOTIFY
can be
seen as
an
implicit
200 OK.
regards
Klaus
--
Daniel-Constantin Mierla --
http://www.asipto.com
Kamailio Advanced Training, Oct 10-13, Berlin:
http://asipto.com/u/kat
http://linkedin.com/in/miconda --
http://twitter.com/miconda
_______________________________________________
sr-dev mailing list
sr-dev(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
_______________________________________________
sr-dev mailing list
sr-dev(a)lists.sip-router.org