make dnswin use makeaddrinfov
[lcore.git] / lcoreselect.pas
index bae8fe4699bc849dc175ec91e720ab3cd9a4e278..77da21f33a8e2fdae3c0f4498041d67113686d9d 100755 (executable)
@@ -6,11 +6,11 @@
   For conditions of distribution and use, see copyright notice in zlib_license.txt\r
   which is included in the package\r
   ----------------------------------------------------------------------------- }\r
   For conditions of distribution and use, see copyright notice in zlib_license.txt\r
   which is included in the package\r
   ----------------------------------------------------------------------------- }\r
-
-{$ifdef fpc}
-  {$ifndef ver1_0}
-    {$define useinline}
-  {$endif}
+\r
+{$ifdef fpc}\r
+  {$ifndef ver1_0}\r
+    {$define useinline}\r
+  {$endif}\r
 {$endif}\r
 \r
 unit lcoreselect;\r
 {$endif}\r
 \r
 unit lcoreselect;\r
@@ -31,6 +31,8 @@ var
 function getfdsrmaster : fdset; {$ifdef useinline}inline;{$endif}\r
 function getfdswmaster : fdset; {$ifdef useinline}inline;{$endif}\r
 \r
 function getfdsrmaster : fdset; {$ifdef useinline}inline;{$endif}\r
 function getfdswmaster : fdset; {$ifdef useinline}inline;{$endif}\r
 \r
+procedure lcoreinit;\r
+\r
 implementation\r
 uses\r
   lcore,sysutils,\r
 implementation\r
 uses\r
   lcore,sysutils,\r
@@ -82,7 +84,6 @@ begin
     end;\r
     temptimer := currenttimer;\r
     currenttimer := currenttimer.nexttimer;\r
     end;\r
     temptimer := currenttimer;\r
     currenttimer := currenttimer.nexttimer;\r
-    if temptimer.released then temptimer.free;\r
   end;\r
 end;\r
 \r
   end;\r
 end;\r
 \r
@@ -133,17 +134,6 @@ begin
     end;\r
   end;\r
 \r
     end;\r
   end;\r
 \r
-  if asinreleaseflag then begin\r
-    asinreleaseflag := false;\r
-    currentsocket := firstasin;\r
-    while assigned(currentsocket) do begin\r
-      tempsocket := currentsocket;\r
-      currentsocket := currentsocket.nextasin;\r
-      if tempsocket.released then begin\r
-        tempsocket.free;\r
-      end;\r
-    end;\r
-  end;\r
   {\r
   !!! issues:\r
   - sockets which are released may not be freed because theyre never processed by the loop\r
   {\r
   !!! issues:\r
   - sockets which are released may not be freed because theyre never processed by the loop\r
@@ -213,7 +203,7 @@ var
 \r
 var\r
   fdsrmaster , fdswmaster               : fdset      ;\r
 \r
 var\r
   fdsrmaster , fdswmaster               : fdset      ;\r
-
+\r
 function getfdsrmaster : fdset; {$ifdef fpc}inline;{$endif}\r
 begin\r
   result := fdsrmaster;\r
 function getfdsrmaster : fdset; {$ifdef fpc}inline;{$endif}\r
 begin\r
   result := fdsrmaster;\r
@@ -222,8 +212,8 @@ function getfdswmaster : fdset; {$ifdef fpc}inline;{$endif}
 begin\r
   result := fdswmaster;\r
 end;\r
 begin\r
   result := fdswmaster;\r
 end;\r
-
-
+\r
+\r
 Function  doSelect(timeOut:PTimeVal):longint;//inline;\r
 var\r
   localtimeval : ttimeval;\r
 Function  doSelect(timeOut:PTimeVal):longint;//inline;\r
 var\r
   localtimeval : ttimeval;\r
@@ -293,25 +283,6 @@ begin
   repeat\r
 \r
     //the message loop will exit if all lasio's and ltimer's and lsignal's are destroyed\r
   repeat\r
 \r
     //the message loop will exit if all lasio's and ltimer's and lsignal's are destroyed\r
-    if (not assigned(firstasin)) and (not assigned(firsttimer)) {$ifndef nosignal} and (not assigned(firstsignal)){$endif} then exit;\r
-    {fd_zero(FDSR);\r
-    fd_zero(FDSW);\r
-    currentsocket := firstasin;\r
-    if not assigned(currentsocket) then exit; //the message loop will exit if all lsockets are destroyed\r
-\r
-    repeat\r
-      if (not currentsocket.released) and (currentsocket.state<>wsclosed) then fd_set(currentsocket.fdhandlein,fdsr);\r
-      if (not currentsocket.released) and (currentsocket.state=wsconnecting) then fd_set(currentsocket.fdhandleout,fdsw);\r
-      if currentsocket is tlsocket then begin\r
-         if (not currentsocket.released) and (currentsocket.state=wsconnected) and(tlsocket(currentsocket).sendq <> '') then fd_set(currentsocket.fdhandleout,fdsw);\r
-      end;\r
-      tempsocket := currentsocket;\r
-      currentsocket := currentsocket.nextasin;\r
-      if tempsocket.released then begin\r
-        tempsocket.free;\r
-      end;\r
-    until not assigned(currentsocket);\r
-    }\r
     processtasks;\r
     //currenttask := nil;\r
     {beware}\r
     processtasks;\r
     //currenttask := nil;\r
     {beware}\r
@@ -392,9 +363,13 @@ begin
   fdreverse[fd] := reverseto;\r
 end;\r
 \r
   fdreverse[fd] := reverseto;\r
 end;\r
 \r
+var\r
+  inited:boolean;\r
 \r
 \r
-\r
+procedure lcoreinit;\r
 begin\r
 begin\r
+  if inited then exit;\r
+  inited := true;\r
   eventcore := tselecteventcore.create;\r
 \r
   absoloutemaxs := absoloutemaxs_select;\r
   eventcore := tselecteventcore.create;\r
 \r
   absoloutemaxs := absoloutemaxs_select;\r
@@ -402,4 +377,6 @@ begin
   maxs := 0;\r
   fd_zero(fdsrmaster);\r
   fd_zero(fdswmaster);\r
   maxs := 0;\r
   fd_zero(fdsrmaster);\r
   fd_zero(fdswmaster);\r
+end;\r
+\r
 end.\r
 end.\r