Skip to content

Commit f265fe8

Browse files
committed
Working DNS discovery (no longer 2nd class)
1 parent 95e809b commit f265fe8

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
</scm>
1212
<dependencies>
1313
<dependency>
14-
<groupId>dnsjava</groupId>
14+
<groupId>org.xbill</groupId>
1515
<artifactId>dnsjava</artifactId>
16-
<version>2.1.1</version>
16+
<version>2.1.6</version>
1717
</dependency>
1818
<dependency>
1919
<groupId>junit</groupId>
@@ -75,7 +75,7 @@
7575
<groupId>xmlunit</groupId>
7676
<artifactId>xmlunit</artifactId>
7777
<version>1.3</version>
78-
</dependency>
78+
</dependency>
7979
<dependency>
8080
<groupId>xpp3</groupId>
8181
<artifactId>xpp3</artifactId>
298 KB
Binary file not shown.

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/IQProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void process(IQ packet) throws Exception {
6060
try {
6161
processPacket(packet);
6262
} catch (Exception e) {
63-
if (true == packet.getType().toString().equals("result")) return;
63+
if (packet.getType().equals(IQ.Type.result) || packet.getType().equals(IQ.Type.error)) return;
6464
IQ reply = IQ.createResultIQ(packet);
6565
reply.setChildElement(packet.getChildElement().createCopy());
6666
reply.setType(Type.error);
@@ -101,7 +101,7 @@ private void processPacket(IQ packet) throws Exception,
101101
}
102102
logger.debug("Couldn't find processor for packet");
103103

104-
if (packet.getType() == IQ.Type.set || packet.getType() == IQ.Type.get) {
104+
if (packet.getType().equals(IQ.Type.set) || packet.getType().equals(IQ.Type.get)) {
105105

106106
IQ reply = IQ.createResultIQ(packet);
107107
reply.setChildElement(packet.getChildElement().createCopy());

src/main/java/org/buddycloud/channelserver/queue/FederatedQueueManager.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)