Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/JabberHTTPBind/JHBServlet.java =================================================================== diff -u -rc33a1a83a96cfffc0ca3952681985a62ffbdbe02 -r3e7d4111fc9ce02635ec85069b1b9df580fd04cf --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/JabberHTTPBind/JHBServlet.java (.../JHBServlet.java) (revision c33a1a83a96cfffc0ca3952681985a62ffbdbe02) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/JabberHTTPBind/JHBServlet.java (.../JHBServlet.java) (revision 3e7d4111fc9ce02635ec85069b1b9df580fd04cf) @@ -297,7 +297,22 @@ if (rootNode.hasChildNodes()) { sess.sendNodes(rootNode.getChildNodes()); chatService.processIncomingMessages(doc.getElementsByTagName("message")); - chatService.processIncomingPresence(doc.getElementsByTagName("presence")); + + // previous message are return to a client when + // a presence packet is received. + NodeList presenceList = doc + .getElementsByTagName("presence"); + for (int i = 0; i < presenceList.getLength(); i++) { + Node presence = presenceList.item(i); + List messages = chatService + .processIncomingPresence(presence); + if (messages != null) { + for (Iterator iter = messages + .iterator(); iter.hasNext();) { + Node message = (Node) iter.next(); + jresp.addNode(message); + } + } } else { /* * check if polling too frequently only empty polls