Vector additionals = null;
Vector additionals = new Vector(5);
   void handleQuery(DNSIncoming in, InetAddress addr, int port) throws IOException   {    DNSOutgoing out = null;    Vector additionals = null;    // for unicast responses the question must be included    if( port != DNSConstants.MDNS_PORT )     {      out = new DNSOutgoing( DNSConstants.FLAGS_QR_RESPONSE | DNSConstants.FLAGS_AA, false );      for ( Enumeration e = in.questions.elements(); e.hasMoreElements(); )       {        out.addQuestion( (DNSQuestion)e.nextElement() );      }    }    // answer relevant questions    for( Enumeration e = in.questions.elements(); e.hasMoreElements(); )    {      DNSQuestion q = (DNSQuestion)e.nextElement();      switch( q.type )       {      case DNSConstants.TYPE_A: // address request        out = typeA( q, in, addr, port, out );        break;      case DNSConstants.TYPE_PTR: // Domain Name request        out = typePTR( q, in, addr, port, out, additionals );        break;      default: // find service        out = findService( q, in, addr, port, out );      }     }    if( ( out != null ) && ( out.numAnswers > 0 ) )    {  // add additional answers if there is space      if (additionals != null)       {        for( Enumeration e = additionals.elements(); e.hasMoreElements(); )         {          out.addAdditionalAnswer( in, (DNSRecord)e.nextElement() );        }      }      out.id = in.id;      out.finish();      synchronized( this )       {  // is it really this we want to synchronize on, or the socket??        socket.send(new DatagramPacket( out.data, out.off, addr, port ) );      }    }  }