powered by Jive Software

Possible bug in routeToLocalDomain of RoutingTableImpl


                                List<JID> routes = getRoutes(jid.asBareJID(), null);
                                for (JID route : routes) {
                                    // The receiving server MUST NOT send a forwarded copy to the full JID the original <message/> stanza was addressed to, as that recipient receives the original <message/> stanza.
                                    if (!route.equals(jid)) {
                                        ClientSession clientSession = getClientRoute(route);
                                        if (clientSession.isMessageCarbonsEnabled()) {
                                            Message carbon = new Message();
                                            // The wrapping message SHOULD maintain the same 'type' attribute value;
                                            carbon.setType(message.getType());
                                            // the 'from' attribute MUST be the Carbons-enabled user's bare JID
                                            carbon.setFrom(route.asBareJID());
                                            // and the 'to' attribute MUST be the full JID of the resource receiving the copy
                                            carbon.setTo(route);
                                            // The content of the wrapping message MUST contain a <received/> element qualified by the namespace "urn:xmpp:carbons:2", which itself contains a <forwarded/> element qualified by the namespace "urn:xmpp:forward:0" that contains the original <message/>.
                                            carbon.addExtension(new Received(new Forwarded(message)));

                                            try {
                                                localRoutingTable.getRoute(route).process(carbon);
                                            } catch (UnauthorizedException e) {
                                                Log.error("Unable to route packet " + packet.toXML(), e);
                                            }
                                        }
                                    }
                                }
                            

List routes = getRoutes(jid.asBareJID(), null);
The resources of the same user maybe login different jvms of a cluster. So the sessions of other resouces cann’t get from ‘localRoutingTable.getRoute(route)’ . The return value of this method could be null.

possible fix allready here:

OF-1888: Fix NPE

OF-1888’s fix has been merged in master. Starting tomorrow, this fix will be available in our nightly builds. Would you mind testing that?