Am 16.07.2009 um 12:04 schrieb Kevin Smith:
If it takes 5 minutes for you to get initial presence from someone, that means it's taking 5 minutes to establish s2s and do the presence round-trip. Now, even if the server remembered (and told you) that they're online, wouldn't that mean that the first message you sent would also take the same time for the servers to get it in gear together? In this case it might even be preferable see them as offline, if you wouldn't be effectively able to communicate yet.
No, the idea is to keep the s2s link open and the other server always sends presences, even if I'm not online. When I come online, my server could then send me the last presence.
The problem here is, as you already said, s2s. When I sign in, about 50 s2s links needs to be opened, which can take quite a while as my TLS key is 4096 bits.
If for example an s2s link would only be closed if it has been inactive for 48h, then you know it's really not going to be used anytime soon. I think keeping it for 48h and exchanging and caching presences would be ok and solve the issue. In fact, it would need less resources than the ultra-low timeout of 10 minutes that a lot of servers have.
As an aside: I have no idea what would cause a server to consistently take 5 minutes to get presence to you (apart from sever. overloading, or brokenness) - does anyone have any thoughts on this, because it seems to me that this is the underlying problem we're trying to solve here.
It's because all s2s links are opened at once, I guess.IMO, we need to specify a lot more for s2s - a lot there is unspecified. For example after how much time a connection should be considered idle. The problem is that even if I'm online, connections might be regarded as being idle and when I change my presence then, all those need to be reestablished. IMO we close way too fast. It might even happen in a conversation with someone that you already hit the idle time and the next message will take a long time to be transmitted. If I look at my server's logs, it's reconnecting to all different servers all the time because the connections were closed due to being idle. When I increase my idle timeout in the source, that doesn't help much because then the other end closes it. And if you got a server with only few users, this becomes a real issue. On a server with many users like jabber.org, it's unlikely a connection to another server with many users is closed due to being idle. But on a server with about 20 users, it basically happens all the time.
-- Jonathan
PGP.sig
Description: Signierter Teil der Nachricht
