@@ -14,7 +14,8 @@ public class Resolver {
1414
1515InetAddress addr ;
1616int port = PORT ;
17- boolean useTCP , useEDNS ;
17+ boolean useTCP , ignoreTruncation ;
18+ int EDNSlevel = -1 ;
1819TSIG tsig ;
1920int timeoutValue = 60 * 1000 ;
2021
@@ -48,8 +49,13 @@ public class Resolver {
4849}
4950
5051public void
51- setEDNS (boolean flag ) {
52- this .useEDNS = flag ;
52+ setIgnoreTruncation (boolean flag ) {
53+ this .ignoreTruncation = flag ;
54+ }
55+
56+ public void
57+ setEDNS (int level ) {
58+ this .EDNSlevel = level ;
5359}
5460
5561public void
@@ -121,6 +127,7 @@ public class Resolver {
121127 Message response ;
122128 DatagramSocket s ;
123129 DatagramPacket dp ;
130+ int udpLength = 512 ;
124131
125132 try {
126133 s = new DatagramSocket ();
@@ -130,11 +137,13 @@ public class Resolver {
130137 return null ;
131138 }
132139
133- if (useEDNS )
134- query .addRecord (Section .ADDITIONAL , EDNS .newOPT (1280 ));
140+ if (EDNSlevel >= 0 ) {
141+ udpLength = 1280 ;
142+ query .addRecord (Section .ADDITIONAL , EDNS .newOPT (udpLength ));
143+ }
135144
136145 if (tsig != null )
137- tsig .apply (query );
146+ tsig .apply (query , null );
138147
139148
140149 out = query .toWire ();
@@ -144,7 +153,7 @@ public class Resolver {
144153
145154 s .send (new DatagramPacket (out , out .length , addr , port ));
146155
147- dp = new DatagramPacket (new byte [512 ], 512 );
156+ dp = new DatagramPacket (new byte [udpLength ], udpLength );
148157 s .setSoTimeout (timeoutValue );
149158 try {
150159 s .receive (dp );
@@ -163,7 +172,7 @@ public class Resolver {
163172 }
164173
165174 s .close ();
166- if (response .getHeader ().getFlag (Flags .TC ))
175+ if (response .getHeader ().getFlag (Flags .TC ) && ! ignoreTruncation )
167176 return sendTCP (query , out );
168177 else
169178 return response ;
@@ -188,7 +197,7 @@ public class Resolver {
188197 }
189198
190199 if (tsig != null )
191- tsig .apply (query );
200+ tsig .apply (query , null );
192201
193202 out = query .toWire ();
194203 new DataOutputStream (s .getOutputStream ()).writeShort (out .length );
0 commit comments