X-Git-Url: http://www.lcore.org/git/lcore.git/blobdiff_plain/0e83198df591c5ed5d31f53c9bcdcd16ab26d4a6..90c7057fc0ae5d85a6443e7633642ef43553ab28:/lcorewsaasyncselect.pas

diff --git a/lcorewsaasyncselect.pas b/lcorewsaasyncselect.pas
index 712bd7f..075d558 100755
--- a/lcorewsaasyncselect.pas
+++ b/lcorewsaasyncselect.pas
@@ -2,9 +2,14 @@ unit lcorewsaasyncselect;
 
 interface
 
+procedure lcoreinit;
 
 implementation
-uses wcore,lcore,bsearchtree,sysutils,windows,winsock,pgtypes,messages,classes,lsocket;
+
+uses
+  dnswin, //to call init
+  wcore,lcore,bsearchtree,sysutils,windows,winsock,pgtypes,messages,classes,lsocket;
+
 type
   twineventcore=class(teventcore)
   public
@@ -138,12 +143,12 @@ begin
       end else begin
         if (event and (FD_READ or FD_ACCEPT)) <> 0 then readtrigger := true;
         if (event and (FD_WRITE)) <> 0 then writetrigger := true;
-                      
+
         if readtrigger or writetrigger then lasio.handlefdtrigger(readtrigger,writetrigger);
       end;
       // don't reset the event manually for listen sockets to avoid unwanted
       // extra onsessionavailible events
-      if (taddrint(findtree(@fdwatches,inttostr(socket))) and FD_ACCEPT) = 0 then dowsaasyncselect(socket,0,0); // if not a listen socket reset watches
+      if (taddrint(findtree(@fdwatches,inttostr(socket))) and (FD_ACCEPT)) = 0 then dowsaasyncselect(socket,0,0); // if not a listen socket reset watches
     end;
   end else if (ahwnd=hwndlcore) and (aumsg=wm_dotasks) then begin
       //writeln('processing tasks');
@@ -197,7 +202,14 @@ var
                                  lpszClassName : 'lcoreClass');
   GInitData: TWSAData;
 
+var
+  inited:boolean;
+procedure lcoreinit;
 begin
+  if (inited) then exit;
+
+  dnswin.init;
+
   eventcore := twineventcore.create;
   if Windows.RegisterClass(MyWindowClass) = 0 then halt;
   //writeln('about to create lcore handle, hinstance=',hinstance);
@@ -216,6 +228,12 @@ begin
   onaddtask := winaddtask;
   timerwrapperinterface := twintimerwrapperinterface.create(nil);
 
-  WSAStartup($200, GInitData);
+  WSAStartup(2, GInitData);
   absoloutemaxs := maxlongint;
+
+  wcoreinit;
+
+  inited := true;
+end;
+
 end.