X-Git-Url: http://www.lcore.org/git/lcore.git/blobdiff_plain/85ef2ce64f0cc31a063fccea69fdcc7281d51548..2579cad7a973072619a7fc17ff6af9cc75264972:/dnsasync.pas

diff --git a/dnsasync.pas b/dnsasync.pas
old mode 100755
new mode 100644
index 8c3ce3a..b6e8941
--- a/dnsasync.pas
+++ b/dnsasync.pas
@@ -60,18 +60,18 @@ type
     //for this dnsasync object. This is not a reccomended mode of operation
     //because it limits the app to one dns server but is kept for compatibility
     //and special uses.
-    addr,port:string;
+    addr,port:ansistring;
 
     overrideaf : integer;
 
     procedure cancel;//cancel an outstanding dns request
-    function dnsresult:string; //get result of dnslookup as a string
+    function dnsresult:ansistring; //get result of dnslookup as a string
     procedure dnsresultbin(var binip:tbinip); //get result of dnslookup as a tbinip
     property dnsresultlist : tbiniplist read fresultlist;
-    procedure forwardlookup(const name:string); //start forward lookup,
+    procedure forwardlookup(const name:ansistring); //start forward lookup,
                                                 //preffering ipv4
     procedure reverselookup(const binip:tbinip); //start reverse lookup
-    procedure customlookup(const name:string;querytype:integer); //start custom type lookup
+    procedure customlookup(const name:ansistring;querytype:integer); //start custom type lookup
 
     constructor create(aowner:tcomponent); override;
     destructor destroy; override;
@@ -100,12 +100,14 @@ var
   socketno : integer;
 begin
   for socketno := 0 to numsock -1 do begin
-    if dnsserverids[socketno] >= 0 then begin
-      reportlag(dnsserverids[socketno],-1);
-      dnsserverids[socketno] := -1;
+    if assigned(sockets[socketno]) then begin
+      if dnsserverids[socketno] >= 0 then begin
+        reportlag(dnsserverids[socketno],-1);
+        dnsserverids[socketno] := -1;
+      end;
+      sockets[socketno].release;
+      setstate_request_init('',states[socketno]);
     end;
-    sockets[socketno].release;
-    setstate_request_init('',states[socketno]);
   end;
   inherited destroy;
 end;
@@ -116,7 +118,7 @@ var
   Src    : TInetSockAddrV;
   SrcLen : Integer;
   fromip:tbinip;
-  fromport:string;
+  fromport:ansistring;
 begin
   socketno := tlsocket(sender).tag;
   //writeln('got a reply on socket number ',socketno);
@@ -151,7 +153,7 @@ end;
 
 function tdnsasync.sendquery(socketno:integer;const packet:tdnspacket;len:integer):boolean;
 var
-  destination : string;
+  destination : tbinip;
   inaddr : tinetsockaddrv;
   trytolisten:integer;
 begin
@@ -183,11 +185,11 @@ begin
   end;
   if addr <> '' then begin
     dnsserverids[socketno] := -1;
-    destination := addr
+    destination := ipstrtobinf(addr);
   end else begin
-    destination := getcurrentsystemnameserver(dnsserverids[socketno]);
+    destination := getcurrentsystemnameserverbin(dnsserverids[socketno]);
   end;
-  destinations[socketno] := ipstrtobinf(destination);
+  destinations[socketno] := destination;
 
   {$ifdef ipv6}{$ifdef win32}
   if destinations[socketno].family = AF_INET6 then if (requestaf = useaf_default) then requestaf := useaf_preferv6;
@@ -253,8 +255,6 @@ begin
     exit;
   end;
 
-  if (overridednsserver <> '') and (addr = '') then addr := overridednsserver;
-
   if overrideaf = useaf_default then begin
     {$ifdef ipv6}
       {$ifdef win32}if not (usewindns and (addr = '')) then{$endif}
@@ -289,15 +289,14 @@ begin
       inc(numsockused);
     end;
   {$endif}
+
   for i := 0 to numsockused-1 do begin
     asyncprocess(i);
   end;
-
 end;
 
 procedure tdnsasync.reverselookup;
 begin
-  if (overridednsserver <> '') and (addr = '') then addr := overridednsserver;
   {$ifdef win32}
     if usewindns and (addr = '') then begin
       dwas := tdnswinasync.create;
@@ -314,7 +313,6 @@ end;
 
 procedure tdnsasync.customlookup;
 begin
-  if (overridednsserver <> '') and (addr = '') then addr := overridednsserver;
   setstate_custom(name,querytype,states[0]);
   numsockused := 1;
   asyncprocess(0);