public void handleQuery(DNSPacket aPacket, InetAddress aAddress, int aiPort) {
		resolveConflicts(aPacket);
		Responder responder = new Responder(_MahaloSocket, _HostInfo, _LocalServices, aPacket, aAddress, aiPort);
    	
    	// If I can answer every question in this query alone, respond immediately
    	boolean bonlyResponder = true;
    	for(DNSQuestion question : aPacket.getQuestions()) {
    		bonlyResponder &= (question.getType() == DNSEntry.EntryType.SRV
    				|| question.getType() == DNSEntry.EntryType.TXT
                    || question.getType() == DNSEntry.EntryType.A
                    || question.getType() == DNSEntry.EntryType.AAAA
                    || _HostInfo.getName().equalsIgnoreCase(question.getName())
                    || _LocalServices.containsKey(question.getName().toLowerCase()));
    		if(!bonlyResponder)
    			break;
    	}
    	int itimeElapsed = (int)(System.currentTimeMillis() - aPacket.getRecieved());
    	int idelay = Responder.GetDelay(bonlyResponder, itimeElapsed);
    	_log.trace("Scheduling responce in " + idelay + "ms");
    	_Timer.schedule(responder, idelay);
	}