When a Gabble send a disco request to a contact, who goes offline meanwhile, the request is not invalidated.
Worse, if another contact has the same capability hash, he will not be sent a disco request: Gabble will wait the timeout before. And the timeout is incredibly long (20000 seconds).
- invalidate the request when the contact goes offline. smcv said the invalidation needs to be per-resource.
- reduce the timeout to a good value (20 seconds)
- add a unit test for the case contact goes offline and another contact has the same caps
Fixed the 20,000 seconds to 20s here:
Taking a look at the rest of the bug now, to see if there's anything useful to contribute to fixing it (may not be, since I'm completely new to gabble codebase).
(In reply to comment #1)
> Fixed the 20,000 seconds to 20s here:
Merged to telepathy-gabble-0.8 and master.
I don't think I'm going to find any time to do any more on this bug in the near future, so if anyone else is thinking of fixing it, don't wait on me :)
(In reply to comment #0)
> We should invalidate the request when the contact goes offline. smcv said the
> invalidation needs to be per-resource.
We shouldn't invalidate it: the contact may have just become invisible.
We should probably send a request to another contact if possible, though.