Improved log message
This commit is contained in:
parent
ef42d8aa6c
commit
196846e8e4
3 changed files with 22 additions and 19 deletions
|
|
@ -116,7 +116,7 @@ public class MulticastDnsServer extends ThreadedUDPNetwork implements ThreadedUD
|
|||
|
||||
// Just handle queries and no responses
|
||||
if ( ! dnsPacket.getHeader().flagQueryResponse) {
|
||||
DnsPacket response = handleReceivedPacket(dnsPacket);
|
||||
DnsPacket response = handleReceivedPacket(packet.getAddress(), dnsPacket);
|
||||
if (response != null){
|
||||
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
|
||||
BinaryStructOutputStream out = new BinaryStructOutputStream(outBuffer);
|
||||
|
|
@ -135,45 +135,48 @@ public class MulticastDnsServer extends ThreadedUDPNetwork implements ThreadedUD
|
|||
}
|
||||
}
|
||||
|
||||
protected DnsPacket handleReceivedPacket(DnsPacket request){
|
||||
protected DnsPacket handleReceivedPacket(InetAddress address, DnsPacket request){
|
||||
DnsPacket response = new DnsPacket();
|
||||
response.getHeader().setDefaultResponseData();
|
||||
for (DnsPacketQuestion question : request.getQuestions()){
|
||||
if (question.name == null) continue;
|
||||
|
||||
switch (question.type){
|
||||
// ------------------------------------------
|
||||
// Normal Domain Name Resolution
|
||||
// ------------------------------------------
|
||||
|
||||
case DnsConstants.TYPE.A:
|
||||
if (entries.containsKey(question.name)){
|
||||
logger.finer("Received request for domain: " + question.name);
|
||||
logger.finer("Received request for domain: '" + question.name + "' from source: " + address);
|
||||
response.addAnswerRecord(entries.get(question.name));
|
||||
} else {
|
||||
logger.finest("Received request for unknown domain: " + question.name);
|
||||
logger.finest("Received request for unknown domain: '" + question.name + "' from source: " + address);
|
||||
}
|
||||
break;
|
||||
|
||||
// Service Name Resolution
|
||||
// ------------------------------------------
|
||||
// Service Name Resolution (Reverse DNS)
|
||||
// ------------------------------------------
|
||||
|
||||
case DnsConstants.TYPE.PTR:
|
||||
if (question.name.startsWith("_service.")){
|
||||
String postFix = question.name.substring(9);
|
||||
for (String domain : entries.keySet()){
|
||||
if (domain.endsWith(postFix)) {
|
||||
logger.finer("Received request for service: " + question.name);
|
||||
logger.finer("Received request for service: '" + question.name + "' from source: " + address);
|
||||
response.addAnswerRecord(entries.get(domain));
|
||||
} else {
|
||||
logger.finest("Received request for unknown service: " + question.name);
|
||||
logger.finest("Received request for unknown service: '" + question.name + "' from source: " + address);
|
||||
}
|
||||
}
|
||||
} else if (entries.containsKey(question.name)){
|
||||
logger.finer("Received request for service: " + question.name);
|
||||
logger.finer("Received request for service: '" + question.name + "' from source: " + address);
|
||||
response.addAnswerRecord(entries.get(question.name));
|
||||
} else {
|
||||
logger.finer("Received request for unknown pointer: " + question.name);
|
||||
logger.finer("Received request for unknown pointer: '" + question.name + "' from source: " + address);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
logger.finest("Unknown request type: " + question.type);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public final class DnsConstants {
|
|||
public static final int NULL = 10;
|
||||
/** a well known service description */
|
||||
public static final int WKS = 11;
|
||||
/** a domain name pointer */
|
||||
/** a domain name pointer, generally used for reverse DNS */
|
||||
public static final int PTR = 12;
|
||||
/** host information */
|
||||
public static final int HINFO = 13;
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@ public class MulticastDnsServerTest {
|
|||
|
||||
|
||||
@Test
|
||||
public void domainLookupNoEntries(){
|
||||
public void domainLookupNoEntries() throws UnknownHostException {
|
||||
DnsPacket request = creatRequestDnsPacket(
|
||||
"example.com",
|
||||
DnsConstants.TYPE.A);
|
||||
|
||||
DnsPacket response = server.handleReceivedPacket(request);
|
||||
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
|
||||
assertNull(response);
|
||||
}
|
||||
|
||||
|
|
@ -38,19 +38,19 @@ public class MulticastDnsServerTest {
|
|||
DnsConstants.TYPE.A);
|
||||
|
||||
server.addEntry("example.com", InetAddress.getLocalHost());
|
||||
DnsPacket response = server.handleReceivedPacket(request);
|
||||
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
|
||||
assertNotNull(response);
|
||||
assertEquals("example.com", response.getAnswerRecords().get(0).name);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void serviceDiscoveryNoEntries(){
|
||||
public void serviceDiscoveryNoEntries() throws UnknownHostException {
|
||||
DnsPacket request = creatRequestDnsPacket(
|
||||
"_service._tcp.local",
|
||||
DnsConstants.TYPE.PTR);
|
||||
|
||||
DnsPacket response = server.handleReceivedPacket(request);
|
||||
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
|
||||
assertNull(response);
|
||||
}
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ public class MulticastDnsServerTest {
|
|||
DnsConstants.TYPE.PTR);
|
||||
|
||||
server.addEntry("_http._tcp.local", InetAddress.getLocalHost());
|
||||
DnsPacket response = server.handleReceivedPacket(request);
|
||||
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
|
||||
assertNotNull(response);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue