2222import java .io .IOException ;
2323import java .net .InetAddress ;
2424import java .util .ArrayList ;
25- import java .util .Arrays ;
2625import java .util .Random ;
2726
2827/**
@@ -110,16 +109,29 @@ public void run() {
110109 testDomain = Daedalus .DEFAULT_TEST_DOMAINS [0 ];
111110 }
112111 StringBuilder testText = new StringBuilder ();
113- ArrayList <String > dnsServers = new ArrayList <String >() {{
114- add (((AbstractDNSServer ) spinnerServerChoice .getSelectedItem ()). getAddress () );
112+ ArrayList <AbstractDNSServer > dnsServers = new ArrayList <AbstractDNSServer >() {{
113+ add (((AbstractDNSServer ) spinnerServerChoice .getSelectedItem ()));
115114 String servers = Daedalus .getPrefs ().getString ("dns_test_servers" , "" );
116115 if (!servers .equals ("" )) {
117- addAll (Arrays .asList (servers .split ("," )));
116+ for (String server : servers .split ("," )) {
117+ if (server .contains (":" )) {
118+ String [] pieces = servers .split (":" );
119+ int port = AbstractDNSServer .DNS_SERVER_DEFAULT_PORT ;
120+ try {
121+ port = Integer .parseInt (pieces [1 ]);
122+ } catch (Exception e ) {
123+ Logger .logException (e );
124+ }
125+ add (new AbstractDNSServer (pieces [0 ], port ));
126+ } else {
127+ add (new AbstractDNSServer (server , AbstractDNSServer .DNS_SERVER_DEFAULT_PORT ));
128+ }
129+ }
118130 }
119131 }};
120132 DNSQuery dnsQuery = new DNSQuery ();
121133 Record .TYPE type = ((Type ) spinnerType .getSelectedItem ()).getType ();
122- for (String dnsServer : dnsServers ) {
134+ for (AbstractDNSServer dnsServer : dnsServers ) {
123135 testText = testServer (dnsQuery , type , dnsServer , testDomain , testText );
124136 }
125137 mHandler .obtainMessage (DnsTestHandler .MSG_TEST_DONE ).sendToTarget ();
@@ -129,9 +141,9 @@ public void run() {
129141 }
130142
131143
132- private StringBuilder testServer (DNSQuery dnsQuery , Record .TYPE type , String server , String domain , StringBuilder testText ) {
144+ private StringBuilder testServer (DNSQuery dnsQuery , Record .TYPE type , AbstractDNSServer server , String domain , StringBuilder testText ) {
133145 Logger .debug ("Testing DNS server " + server );
134- testText .append (getString (R .string .test_domain )).append (" " ).append (domain ).append ("\n " ).append (getString (R .string .test_dns_server )).append (" " ).append (server );
146+ testText .append (getString (R .string .test_domain )).append (" " ).append (domain ).append ("\n " ).append (getString (R .string .test_dns_server )).append (" " ).append (server . getAddress ()). append ( ":" ). append ( server . getPort () );
135147
136148 mHandler .obtainMessage (DnsTestHandler .MSG_DISPLAY_STATUS , testText .toString ()).sendToTarget ();
137149
@@ -143,7 +155,7 @@ private StringBuilder testServer(DNSQuery dnsQuery, Record.TYPE type, String ser
143155 message .getEdnsBuilder ().setUdpPayloadSize (1024 ).setDnssecOk (false );
144156
145157 long startTime = System .currentTimeMillis ();
146- DNSMessage response = dnsQuery .query (message .build (), InetAddress .getByName (server ), 53 );
158+ DNSMessage response = dnsQuery .query (message .build (), InetAddress .getByName (server . getAddress ()), server . getPort () );
147159 long endTime = System .currentTimeMillis ();
148160
149161 if (response .answerSection .size () > 0 ) {
0 commit comments