@@ -108,6 +108,7 @@ public void process(Packet packet) throws ComponentException {
108108 waitingStanzas .get (to ).add (packet );
109109 logger .debug ("Adding packet to waiting stanza list for " + to
110110 + " (size " + waitingStanzas .get (to ).size () + ")" );
111+ attemptDnsDiscovery (to );
111112 } catch (Exception e ) {
112113 logger .error (e );
113114 }
@@ -209,12 +210,11 @@ public void processDiscoInfoResponse(JID from, String id,
209210
210211 if (remoteServerItemsToProcess .get (originatingServer ) < 1 ) {
211212 if (!discoveredServers .containsKey (originatingServer )) {
212- if (false == attemptDnsDiscovery (originatingServer )) {
213- sendRemoteChannelServerNotFoundErrorResponses (originatingServer );
214- remoteChannelDiscoveryStatus .put (originatingServer ,
215- NO_CHANNEL_SERVER );
216- waitingStanzas .remove (originatingServer );
217- }
213+
214+ sendRemoteChannelServerNotFoundErrorResponses (originatingServer );
215+ remoteChannelDiscoveryStatus .put (originatingServer ,
216+ NO_CHANNEL_SERVER );
217+ waitingStanzas .remove (originatingServer );
218218 } else {
219219 remoteChannelDiscoveryStatus .put (originatingServer , DISCOVERED );
220220 }
@@ -226,14 +226,16 @@ private boolean attemptDnsDiscovery(String originatingServer) throws ComponentEx
226226 String query = SRV_PREFIX + originatingServer ;
227227 Record [] records = new Lookup (query , Type .SRV ).run ();
228228 if ((null == records ) || (0 == records .length )) {
229+ logger .debug ("No appropriate DNS entry found for " + originatingServer );
229230 return false ;
230231 }
231232 SRVRecord record = (SRVRecord ) records [0 ];
232- setDiscoveredServer ( originatingServer , record .getTarget ().toString () );
233- sendFederatedRequests (originatingServer );
234- logger .info ("Used DNS fallback to discover buddycloud server for "
235- + originatingServer + " (" + record . getTarget (). toString () + ")" );
233+ String targetServer = record .getTarget ().toString (true );
234+ setDiscoveredServer (originatingServer , targetServer );
235+ logger .info ("DNS discovery complete for buddycloud server @ "
236+ + originatingServer + " (" + targetServer + ")" );
236237 remoteChannelDiscoveryStatus .put (originatingServer , DISCOVERED );
238+ sendFederatedRequests (originatingServer );
237239 return true ;
238240 } catch (TextParseException e ) {
239241 logger .error (e );
@@ -246,10 +248,13 @@ private void sendFederatedRequests(String originatingServer)
246248 String remoteServer = discoveredServers .get (originatingServer );
247249 List <Packet > packetsToSend = waitingStanzas .get (originatingServer );
248250 if (packetsToSend == null ) {
251+ logger .trace ("No queued federated packets to send" );
249252 return ;
250253 }
254+ logger .debug ("Catching up on federated packet sending" );
251255 for (Packet packet : packetsToSend ) {
252256 packet .setTo (remoteServer );
257+ logger .trace (packet .toString ());
253258 sendPacket (packet .createCopy ());
254259 }
255260 waitingStanzas .remove (originatingServer );
@@ -290,6 +295,10 @@ public void passResponseToRequester(IQ packet) throws Exception {
290295 + packet .getID () + ")" );
291296 }
292297
298+ if (packet .getType ().equals (IQ .Type .error ) && !remoteChannelDiscoveryStatus .get (packet .getFrom ()).equals (DISCOVERED )) {
299+ return ;
300+ }
301+
293302 String uniqueId = packet .getID ();
294303 packet .setID (idMap .get (uniqueId ));
295304 packet .setTo ((JID ) sentRemotePackets .get (uniqueId ));
0 commit comments