Can't see people online if they are already online when I sign in

Description

See this thread:
http://kraken.blathersource.org/node/279

"I've started to experience some problems w/ gtalk protocol.

I don't know when it exactly started but when I log in, I cannot get the online presence of people unless they sign in again. In other words, I cannot see people online if they are already online when I sign in.

I checked the info log, did not see any interesting data."

Environment

Happens to me on an OS-X box running the following java runtime:
java version "1.6.0_03-p3"
Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00)
Java HotSpot(TM) Client VM (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00, mixed mode)

Activity

Show:
daniel vultur
September 21, 2010, 10:24 PM

This was resolved in a recent patch!

Lars Hoogweg
March 14, 2010, 10:45 AM

I've found a repeatable pattern to this problem:

1. Restart Openfire Server
2. Connect to Openfire (using Pidgin), no GTalk contacts appear.
3. Disconnect/reconnect, still no gtalk contacts appear.
4. Disconnect/reconnect a second time, and gtalk contacts appear!

I've also tailed the error.log whilst pidgin logs in to openfire. For Step 4, I get nothing output in error.log but for steps 2 and 3 I get multiple instances of the following error for different gtalk contacts:

Could not route packet
org.jivesoftware.openfire.PacketException: Cannot route packet of type IQ or Presence to bare JID:
<presence type="error" to="lars@myserver" from="my_gtalk_contact\40gmail.com@gtalk.myserver"/>
at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:217)
at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:189)
at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:70)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:57)
at org.jivesoftware.openfire.component.InternalComponentManager.sendPacket(InternalComponentManager.java:262)
at net.sf.kraken.BaseTransport.sendPacket(BaseTransport.java:1528)
at net.sf.kraken.protocols.xmpp.XMPPListener.presenceChanged(XMPPListener.java:204)
at org.jivesoftware.smack.Roster.fireRosterPresenceEvent(Roster.java:627)
at org.jivesoftware.smack.Roster.access$600(Roster.java:50)
at org.jivesoftware.smack.Roster$PresencePacketListener.processPacket(Roster.java:766)
at org.jivesoftware.smack.PacketReader$ListenerWrapper.notifyListener(PacketReader.java:819)
at org.jivesoftware.smack.PacketReader$ListenerNotification.run(PacketReader.java:799)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)

I also enabled debug logging in openfire and tailed the logs when pidgin logs in to openfire, and in the debug log, I get the following line output only for step 4 and not at steps 2 or 3:

2010.03.14 20:26:45 XMPP: Presence changed detected type available and mode away for my_gtalk_contact@gmail.com/Talk.v1059B697A7C
2010.03.14 20:26:45 Updating status [away,"This is my status message"] for {Buddy: my_gtalk_contact\40gmail.com@gtalk.myserver (Nickname: my_gtalk_contact@gmail.com) (Groups: [Google])}
2010.03.14 20:26:45 gtalk: Sending packet: <presence to="lars@myserver" from="my_gtalk_contact\40gmail.com@gtalk.myserver"><show>away</show><status>"This is my status message"</status><x xmlns="vcard-temp:x:update"><photo><

[CDATA[7c2ec717e07223c47d3aaad107da9feae8786084]]></hash></x></presence>

Fixed

Assignee

Daniel Henninger

Reporter

Lars Hoogweg