mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 23:59:10 +02:00
fcl-net: stop if no longer accepting
This commit is contained in:
parent
4670466754
commit
10f13a36ce
@ -959,7 +959,7 @@ procedure TSocketServer.Listen;
|
|||||||
begin
|
begin
|
||||||
If Not FBound then
|
If Not FBound then
|
||||||
Bind;
|
Bind;
|
||||||
If {$IFDEF FPC_DOTTEDUNITS}System.Net.{$ENDIF}Sockets.FpListen(FSocket,FQueueSize)<>0 then
|
If {$IFDEF FPC_DOTTEDUNITS}System.Net.{$ENDIF}Sockets.FpListen(FSocket,FQueueSize)<>0 then
|
||||||
Raise ESocketError.Create(seListenFailed,[FSocket,SocketError]);
|
Raise ESocketError.Create(seListenFailed,[FSocket,SocketError]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1059,8 +1059,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Until (Stream<>Nil) or (Not NonBlocking);
|
Until (Stream<>Nil) or (Not NonBlocking) or (Not FAccepting);
|
||||||
Until Not (FAccepting) or ((FMaxConnections<>-1) and (NoConnections>=FMaxConnections));
|
Until (Not FAccepting) or ((FMaxConnections>=0) and (NoConnections>=FMaxConnections));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSocketServer.StopAccepting(DoAbort: Boolean = False);
|
procedure TSocketServer.StopAccepting(DoAbort: Boolean = False);
|
||||||
@ -1271,7 +1271,7 @@ begin
|
|||||||
Faddr.sin_port := ShortHostToNet(FPort);
|
Faddr.sin_port := ShortHostToNet(FPort);
|
||||||
Faddr.sin_addr.s_addr := LongWord(StrToNetAddr(FHost));
|
Faddr.sin_addr.s_addr := LongWord(StrToNetAddr(FHost));
|
||||||
if {$IFDEF FPC_DOTTEDUNITS}System.Net.{$ENDIF}Sockets.fpBind(FSocket, @FAddr, Sizeof(FAddr))<>0 then
|
if {$IFDEF FPC_DOTTEDUNITS}System.Net.{$ENDIF}Sockets.fpBind(FSocket, @FAddr, Sizeof(FAddr))<>0 then
|
||||||
raise ESocketError.Create(seBindFailed, [IntToStr(FPort)]);
|
raise ESocketError.Create(seBindFailed, ['port '+IntToStr(FPort)]);
|
||||||
FBound:=True;
|
FBound:=True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1290,14 +1290,15 @@ Var
|
|||||||
begin
|
begin
|
||||||
H:=GetClientSocketHandler(aSocket);
|
H:=GetClientSocketHandler(aSocket);
|
||||||
aClass:=DefaultInetSocketClass;
|
aClass:=DefaultInetSocketClass;
|
||||||
|
|
||||||
// Should be: Result:=TServerSocketStream.Create(ASocket,H);
|
|
||||||
|
|
||||||
if aClass=Nil then
|
if aClass=Nil then
|
||||||
aClass:=TInetSocket;
|
aClass:=TInetSocket;
|
||||||
|
{$IFDEF UseServerSocketStreamForInetServer}
|
||||||
|
Result:=TServerSocketStream.Create(ASocket,H);
|
||||||
|
{$ELSE}
|
||||||
Result:=aClass.Create(ASocket,H);
|
Result:=aClass.Create(ASocket,H);
|
||||||
(Result as TInetSocket).FHost:='';
|
(Result as TInetSocket).FHost:='';
|
||||||
(Result as TInetSocket).FPort:=FPort;
|
(Result as TInetSocket).FPort:=FPort;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
ok:=false;
|
ok:=false;
|
||||||
try
|
try
|
||||||
@ -1368,7 +1369,7 @@ var
|
|||||||
AddrLen : longint;
|
AddrLen : longint;
|
||||||
begin
|
begin
|
||||||
Str2UnixSockAddr(FFilename,FUnixAddr,AddrLen);
|
Str2UnixSockAddr(FFilename,FUnixAddr,AddrLen);
|
||||||
If {$IFDEF FPC_DOTTEDUNITS}System.Net.{$ENDIF}Sockets.FpBind(Socket,@FUnixAddr,AddrLen)<>0 then
|
If {$IFDEF FPC_DOTTEDUNITS}System.Net.{$ENDIF}Sockets.FpBind(Socket,@FUnixAddr,AddrLen)<>0 then
|
||||||
Raise ESocketError.Create(seBindFailed,[FFileName]);
|
Raise ESocketError.Create(seBindFailed,[FFileName]);
|
||||||
FBound:=True;
|
FBound:=True;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user