[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jabber-jdev
Subject:    [JDEV] jabberd 1.4.2: problems with yahoo-t / msn-t
From:       Matthias Wimmer <jabber () matthias-wimmer ! de>
Date:       2002-02-26 11:13:26
[Download RAW message or body]

Hi Peter!

Peter Fales schrieb am 2002-02-25 17:06:44:
> MSN Transport has been broken for me since upgrading to jabberd-1.4.2.  I've
> tried switching back and forth a few times, and it consistently works under
> 1.4.1 and fails (Remote Server Error) under 1.4.2.  Is this related to 
> same problem?  What did you do to fix Yahoo?  Can the same fix be
> applied to MSN transport?

Maybe I should check my MSN transport too - I don't use it myself
because I don't have a passport account :)

When yahoo-transport is receiving a <presence> it checks if there is
already a connection for that user to the Yahoo! server. The sessions
are saved in a hash. If no session exists it starts a new one, this is
done in yahoo_session_create (sessions.c).
The problems is: yahoo-t checks for an existing session ... does some
other things ... connects to the yahoo server ... does some other things
... inserts the session to the hash.

With the new jabberd the transport often gets two presence tags from the
same user at nearly the same time. Because jabberd is (sort of)
multithreaded these two <presence> tags are handled "at the same time".
If the session for the first <presence> is not yet in the hash the
second <presence> is also handled and yahoo-transport starts a second
connect to the yahoo server. The yahoo server then disconnects the first
session and yahoo-transport responds by sending an unavailable back to
the user.

I "fixed" the problem by changing the execution chain for <presence>:
yahoo-t checks for an existing session ... does some other things
... (new:) checks again for an existing session ... connects to the
yahoo server ... (earlier:) inserts the session to the hash ... does
some other things. (See the changes in yahoo_session_create in sessions.c in
my version of yahoo-t)

Maybe I should note that this is only a "quick fix". Better would be to
introduce mutexes to secure data structures while they are not in a
consistent state.


Tot kijk
   Matthais
-- 
Fon: +49-(0)70 0770 07770               http://matthias-wimmer.de/
Fax: +49-(0)89 312 88 654               jabber:mawis@charente.de

[Attachment #3 (application/pgp-signature)]
_______________________________________________
jdev mailing list
jdev@jabber.org
http://mailman.jabber.org/listinfo/jdev

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic