fcl-net: clean up and keep stacktrace

This commit is contained in:
mattias 2023-07-07 11:16:50 +02:00
parent 486f3a0c7f
commit 8f4b56d10e

View File

@ -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 Stream:=GetConnection;
else
Stream:=Nil;
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; ok:=H.Accept;
except finally
ShutDownH; if not ok then
raise; ShutDownH;
end; end;
if Not A then
ShutDownH;
end; end;
function TInetServer.Accept: Longint; function TInetServer.Accept: Longint;