Browse Source

fcl-net: clean up and keep stacktrace

mattias 2 years ago
parent
commit
8f4b56d10e
1 changed files with 11 additions and 13 deletions
  1. 11 13
      packages/fcl-net/src/ssockets.pp

+ 11 - 13
packages/fcl-net/src/ssockets.pp

@@ -161,7 +161,6 @@ type
     FOnIdle : TNotifyEvent;
     FOnIdle : TNotifyEvent;
     FNonBlocking : Boolean;
     FNonBlocking : Boolean;
     FSocket : longint;
     FSocket : longint;
-    FListened : Boolean;
     FAccepting : Boolean;
     FAccepting : Boolean;
     FMaxConnections : Longint;
     FMaxConnections : Longint;
     FQueueSize : Longint;
     FQueueSize : Longint;
@@ -341,7 +340,6 @@ uses
   resolve;
   resolve;
 
 
 Const
 Const
-  SocketWouldBlock = -2;
   SocketBlockingMode = 0;
   SocketBlockingMode = 0;
   SocketNonBlockingMode = 1;
   SocketNonBlockingMode = 1;
 
 
@@ -868,8 +866,11 @@ begin
 end;
 end;
 
 
 procedure TSocketServer.Abort;
 procedure TSocketServer.Abort;
+{$if defined(unix) or defined(mswindows) or defined(hasamiga)}
+{$else}
 var
 var
   ASocket: longint;
   ASocket: longint;
+{$endif}
 begin
 begin
 {$if defined(unix)}
 {$if defined(unix)}
   fpShutdown(FSocket,SHUT_RDWR);
   fpShutdown(FSocket,SHUT_RDWR);
@@ -1003,11 +1004,10 @@ begin
   Listen;
   Listen;
   Repeat
   Repeat
     Repeat
     Repeat
+      Stream:=Nil;
       Try
       Try
         If (AcceptIdleTimeOut=0) or RunIdleLoop then
         If (AcceptIdleTimeOut=0) or RunIdleLoop then
-          Stream:=GetConnection
-        else
-          Stream:=Nil;
+          Stream:=GetConnection;
         if Assigned(Stream) then
         if Assigned(Stream) then
           if (MaxSimultaneousConnections>0) and (ConnectionCount>=MaxSimultaneousConnections) then
           if (MaxSimultaneousConnections>0) and (ConnectionCount>=MaxSimultaneousConnections) then
             begin
             begin
@@ -1257,7 +1257,7 @@ end;
 function TInetServer.SockToStream(ASocket: Longint): TSocketStream;
 function TInetServer.SockToStream(ASocket: Longint): TSocketStream;
 Var
 Var
   H : TSocketHandler;
   H : TSocketHandler;
-  A : Boolean;
+  ok : Boolean;
   aClass : TInetSocketClass;
   aClass : TInetSocketClass;
 
 
   procedure ShutDownH;
   procedure ShutDownH;
@@ -1266,7 +1266,6 @@ Var
     FreeAndNil(Result);
     FreeAndNil(Result);
   end;
   end;
 
 
-
 begin
 begin
   H:=GetClientSocketHandler(aSocket);
   H:=GetClientSocketHandler(aSocket);
   aClass:=DefaultInetSocketClass;
   aClass:=DefaultInetSocketClass;
@@ -1276,14 +1275,13 @@ begin
   (Result as TInetSocket).FHost:='';
   (Result as TInetSocket).FHost:='';
   (Result as TInetSocket).FPort:=FPort;
   (Result as TInetSocket).FPort:=FPort;
 
 
+  ok:=false;
   try
   try
-    A:=H.Accept;
-  except
-    ShutDownH;
-    raise;
+    ok:=H.Accept;
+  finally
+    if not ok then
+      ShutDownH;
   end;
   end;
-  if Not A then
-    ShutDownH;
 end;
 end;
 
 
 function TInetServer.Accept: Longint;
 function TInetServer.Accept: Longint;