Skip to content

Commit 345e76c

Browse files
committed
Properly handle cached xNAME responses in LookupSession
Closes #316, #320
1 parent ba8a959 commit 345e76c

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

src/main/java/org/xbill/DNS/lookup/LookupSession.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
*/
5656
@Slf4j
5757
public class LookupSession {
58+
5859
public static final int DEFAULT_MAX_ITERATIONS = 16;
5960
public static final int DEFAULT_NDOTS = 1;
6061

@@ -100,6 +101,7 @@ private LookupSession(
100101
*/
101102
@ToString
102103
public static class LookupSessionBuilder {
104+
103105
private Resolver resolver;
104106
private int maxRedirects;
105107
private int ndots;
@@ -229,8 +231,8 @@ LookupSessionBuilder irrelevantRecordMode(IrrelevantRecordMode irrelevantRecordM
229231
/**
230232
* Enable querying the local hosts database using the system defaults.
231233
*
232-
* @see HostsFileParser
233234
* @return {@code this}.
235+
* @see HostsFileParser
234236
*/
235237
public LookupSessionBuilder defaultHostsFileParser() {
236238
hostsFileParser = new HostsFileParser();
@@ -241,8 +243,8 @@ public LookupSessionBuilder defaultHostsFileParser() {
241243
* Enable caching using the supplied cache. An existing {@link Cache} for the same class will be
242244
* replaced.
243245
*
244-
* @see Cache
245246
* @return {@code this}.
247+
* @see Cache
246248
*/
247249
public LookupSessionBuilder cache(@NonNull Cache cache) {
248250
if (caches == null) {
@@ -262,8 +264,8 @@ public LookupSessionBuilder cache(@NonNull Cache cache) {
262264
* Enable caching using the supplied caches. Existing {@link Cache}s for the same class will be
263265
* replaced.
264266
*
265-
* @see Cache
266267
* @return {@code this}.
268+
* @see Cache
267269
*/
268270
public LookupSessionBuilder caches(@NonNull Collection<Cache> caches) {
269271
caches.forEach(this::cache);
@@ -286,9 +288,9 @@ public LookupSessionBuilder clearCaches() {
286288
* Enable caching using the supplied cache for the given class.
287289
*
288290
* @param dclass unused
289-
* @deprecated use {@link #cache(Cache)}, the {@link Cache} already provides the class.
290-
* @see Cache
291291
* @return {@code this}.
292+
* @see Cache
293+
* @deprecated use {@link #cache(Cache)}, the {@link Cache} already provides the class.
292294
*/
293295
@Deprecated
294296
public LookupSessionBuilder cache(@NonNull Integer dclass, @NonNull Cache cache) {
@@ -300,10 +302,10 @@ public LookupSessionBuilder cache(@NonNull Integer dclass, @NonNull Cache cache)
300302
* Enable caching using the supplied caches.
301303
*
302304
* @param caches unused
305+
* @return {@code this}.
306+
* @see Cache
303307
* @deprecated use {@link #cache(Cache)} or {@link #caches(Collection)}, the {@link Cache}
304308
* already provides the class.
305-
* @see Cache
306-
* @return {@code this}.
307309
*/
308310
@Deprecated
309311
public LookupSessionBuilder caches(@NonNull Map<Integer, Cache> caches) {
@@ -581,7 +583,13 @@ private CompletionStage<LookupResult> setResponseToMessageFuture(
581583
new NoSuchRRSetException(queryRecord.getName(), queryRecord.getType()));
582584
}
583585

584-
if (setResponse.isSuccessful()) {
586+
if (setResponse.isCNAME()) {
587+
return CompletableFuture.completedFuture(
588+
new LookupResult(Collections.singletonList(setResponse.getCNAME()), aliases));
589+
} else if (setResponse.isDNAME()) {
590+
return CompletableFuture.completedFuture(
591+
new LookupResult(Collections.singletonList(setResponse.getDNAME()), aliases));
592+
} else if (setResponse.isSuccessful()) {
585593
List<Record> records =
586594
setResponse.answers().stream()
587595
.flatMap(rrset -> rrset.rrs(cycleResults).stream())

0 commit comments

Comments
 (0)