Summary: | Gets really confused if a nick conflict occurs when joining a GTalk MUC | ||
---|---|---|---|
Product: | Telepathy | Reporter: | Will Thompson <will> |
Component: | gabble | Assignee: | Telepathy bugs list <telepathy-bugs> |
Status: | RESOLVED FIXED | QA Contact: | Telepathy bugs list <telepathy-bugs> |
Severity: | normal | ||
Priority: | medium | Keywords: | patch |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
URL: | http://cgit.collabora.co.uk/git/user/wjt/telepathy-gabble-wjt.git/log/?h=fd.o-35619-gtalk-muc-conflicts | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | 35120 | ||
Bug Blocks: |
Description
Will Thompson
2011-03-24 03:50:31 UTC
(I'm working on this, so stealing the bug.) (Specifically, when it gets the first rejection for ‘wjt’, Gabble tries ‘wjt_’; when it gets the second rejection for ‘wjt’ it *also* tries ‘wjt__’ and then everyone dies.) Here's a fix. It's atop a different MUC fix for no good reason. assigning back to the list in the hope that someone sees and reviews it! + # As far as Gabble's concerned, the two other participants joined + # immediately after we did. + handle, handle_, handle__, foobar_handle = conn.RequestHandles( + cs.HT_CONTACT, jids + ['%s/foobar_gmail.com' % room_jid]) + q.expect('dbus-signal', signal='MembersChangedDetailed', + predicate=lambda e: e.args[0:4] == [[foobar_handle], [], [], []]) + q.expect('dbus-signal', signal='MembersChangedDetailed', + predicate=lambda e: e.args[0:4] == [[handle], [], [], []]) This looks as if it could be racy. What if the MCD signals apear before RequestHandles returns? Everything else looks good. (In reply to comment #5) > + # As far as Gabble's concerned, the two other participants joined > + # immediately after we did. > + handle, handle_, handle__, foobar_handle = conn.RequestHandles( > + cs.HT_CONTACT, jids + ['%s/foobar_gmail.com' % room_jid]) > + q.expect('dbus-signal', signal='MembersChangedDetailed', > + predicate=lambda e: e.args[0:4] == [[foobar_handle], [], [], []]) > + q.expect('dbus-signal', signal='MembersChangedDetailed', > + predicate=lambda e: e.args[0:4] == [[handle], [], [], []]) > > This looks as if it could be racy. What if the MCD signals apear before > RequestHandles returns? It does look suspicious. But libdbus/dbus-python (I forget which) reorders messages when making blocking calls, so it's actually safe. http://cgit.freedesktop.org/telepathy/telepathy-gabble/commit/?id=18fb2c20f26b9ee8d4fbb67f47cf374752b866bc Will be in 0.11.11 (or 0.12.0 if I decide to call it that). |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.