16 Replies Last post: May 9, 2008 8:22 AM by akrherz  
Click to view akrherz's profile Gold 288 posts since
Mar 12, 2005

Apr 10, 2007 6:41 PM

Zombie remote users in MUC

Greetings,

I''ve run into an issue with OpenFire 3.2.2 installed on 2 servers. User A on server A connect to MUC server B. Works great. Then for whatever reason (local network errors perhaps), user A is booted from server A and server A logs:

2007.04.10 16:51:47 EXCEPTION
java.net.SocketTimeoutException: Read timed out

this stops the client connection on server A for user A, but the user A is still shown in the MUC room on server B. The only thing we can do is give the user A a swift kick on the MUC server B :)

Looking at the changelog, this perhaps is a new issue? If not, we will be happy to see it fixed when we upgrade to 3.3.0

Thanks!
daryl
Click to view dombiak_gaston's profile Jiver 3,730 posts since
Sep 26, 2001
Apr 10, 2007 8:16 PM in response to: akrherz
Re: Zombie remote users in MUC
Hey daryl,

Presence management when doing server-2-server is tricky. The main reason is that losing the s2s connection between 2 servers does not mean that the user is offline. You can send a mesage to the remote user and the servers will recreate the s2s connection. In the XMPP list it has recently been discussed this problem and will eventually come up with some recommendations. Once they reach that point we can improve presence management with remote users.

Having said that, in MUC you can specify the idle timeout before kicking users. In the admin console look into Group Chat --> Other Settings. This is not a perfect solution but at least it will kick users that are dandling around.

Regards,

-- Gato
Click to view dombiak_gaston's profile Jiver 3,730 posts since
Sep 26, 2001
Apr 11, 2007 2:20 PM in response to: akrherz
Re: Zombie remote users in MUC
Hey Daryl,

I think we are talking about the same issue. Lets say that userA that is connected to serverA joined a room in serverB. If connection of userA to serverA is lost then serverA should tell serverB that userA is offline. However, if serverA fails to detect that userA is disconnected then serverA will fail to tell serverB that userA is offline. Wildfire 3.2.2 uses a default idle timeout of 30 minutes. So after 30 minutes the server should realize that userA is offline and tell serverB that userA is offline now. Is this not working for you? Do you see any error in the log files?

Regarding the kicking of idle room occupants, are you using the default 30 minutes? Were the kicked occupants idle when they were kicked out?

Regards,

-- Gato
Click to view dombiak_gaston's profile Jiver 3,730 posts since
Sep 26, 2001
May 16, 2007 2:17 PM in response to: akrherz
Re: Zombie remote users in MUC
Hey daryl,

Are you using Openfire 3.3.1? Since we are using that version we are no longer seeing the phantom users problem. Let me know if that is not your case.

-- Gato
Click to view dombiak_gaston's profile Jiver 3,730 posts since
Sep 26, 2001
Jun 15, 2007 11:26 AM in response to: akrherz
Re: Zombie remote users in MUC
What do you see in the room occupants page in the admin console? I''m interested in JIDs, roles and affiliations.

Thanks,

-- Gato
Click to view joey_mw's profile   9 posts since
Jun 15, 2007
Jun 19, 2007 4:25 PM in response to: akrherz
Re: Zombie remote users in MUC
My problem solved as:

Code:
sendAuthentication_result()
{

if (authenticated)
{
loggedIn = true;

// you have to do this here, after each login success, explicitly!!!
send( new Presence( null, null, Presence.AVAILABLE_TYPE ) );

}
}

Without sending out the extra presence, some version of the server doesn''t think you are online in all modules.

*good luck