Package se.unlogic.eagledns

Source Code of se.unlogic.eagledns.UDPConnection

package se.unlogic.eagledns;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

import org.apache.log4j.Logger;
import org.xbill.DNS.Message;


public class UDPConnection implements Runnable {

  private static final Logger log = Logger.getLogger(UDPConnection.class);

  private final EagleDNS eagleDNS;
  private final DatagramSocket socket;
  private final DatagramPacket inDataPacket;

  public UDPConnection(EagleDNS eagleDNS, DatagramSocket socket, DatagramPacket inDataPacket) {
    super();
    this.eagleDNS = eagleDNS;
    this.socket = socket;
    this.inDataPacket = inDataPacket;
  }

  public void run() {

    try{

      byte[] response = null;

      try {
        Message query = new Message(inDataPacket.getData());

        log.debug("UDP query " + EagleDNS.toString(query.getQuestion()) + " from " + inDataPacket.getSocketAddress());

        response = this.eagleDNS.generateReply(query, inDataPacket.getData(), inDataPacket.getLength(), null);

        if (response == null) {
          return;
        }
      } catch (IOException e) {
        response = this.eagleDNS.formerrMessage(inDataPacket.getData());
      }

      DatagramPacket outdp = new DatagramPacket(response, response.length, inDataPacket.getAddress(), inDataPacket.getPort());

      outdp.setData(response);
      outdp.setLength(response.length);
      outdp.setAddress(inDataPacket.getAddress());
      outdp.setPort(inDataPacket.getPort());

      try {
        socket.send(outdp);

      } catch (IOException e) {

        log.debug("Error sending UDP response to " + inDataPacket.getAddress() + ", " + e);
      }

    }catch(Throwable e){

      log.warn("Error processing UDP connection from " + inDataPacket.getSocketAddress() + ", " + e);
    }
  }
}
TOP

Related Classes of se.unlogic.eagledns.UDPConnection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.