|
@@ -111,6 +111,7 @@ type
|
|
Procedure StopAccepting;
|
|
Procedure StopAccepting;
|
|
Procedure SetNonBlocking;
|
|
Procedure SetNonBlocking;
|
|
Property Bound : Boolean Read FBound;
|
|
Property Bound : Boolean Read FBound;
|
|
|
|
+ // Maximium number of connections in total. *Not* the simultaneous connection count. -1 keeps accepting.
|
|
Property MaxConnections : longint Read FMaxConnections Write FMaxConnections;
|
|
Property MaxConnections : longint Read FMaxConnections Write FMaxConnections;
|
|
Property QueueSize : Longint Read FQueueSize Write FQueueSize default 5;
|
|
Property QueueSize : Longint Read FQueueSize Write FQueueSize default 5;
|
|
Property OnConnect : TConnectEvent Read FOnConnect Write FOnConnect;
|
|
Property OnConnect : TConnectEvent Read FOnConnect Write FOnConnect;
|
|
@@ -273,11 +274,17 @@ Var
|
|
|
|
|
|
begin
|
|
begin
|
|
Flags:=FReadFlags;
|
|
Flags:=FReadFlags;
|
|
- Result:=fprecv(handle,@Buffer,count,flags);
|
|
|
|
- If Result<0 then
|
|
|
|
- FLastError:=SocketError
|
|
|
|
- else
|
|
|
|
- FLastError:=0;
|
|
|
|
|
|
+{$ifdef unix}
|
|
|
|
+ Repeat
|
|
|
|
+{$endif}
|
|
|
|
+ Result:=fprecv(handle,@Buffer,count,flags);
|
|
|
|
+ If Result<0 then
|
|
|
|
+ FLastError:=SocketError
|
|
|
|
+ else
|
|
|
|
+ FLastError:=0;
|
|
|
|
+{$ifdef unix}
|
|
|
|
+ Until (FlastError<>ESysEINTR);
|
|
|
|
+{$ENDIF}
|
|
end;
|
|
end;
|
|
|
|
|
|
Function TSocketStream.Write (Const Buffer; Count : Longint) :Longint;
|
|
Function TSocketStream.Write (Const Buffer; Count : Longint) :Longint;
|
|
@@ -287,11 +294,17 @@ Var
|
|
|
|
|
|
begin
|
|
begin
|
|
Flags:=FWriteFlags;
|
|
Flags:=FWriteFlags;
|
|
- Result:=fpsend(handle,@Buffer,count,flags);
|
|
|
|
- If Result<0 then
|
|
|
|
- FLastError:=SocketError
|
|
|
|
- else
|
|
|
|
- FlastError:=0;
|
|
|
|
|
|
+{$ifdef unix}
|
|
|
|
+ Repeat
|
|
|
|
+{$endif}
|
|
|
|
+ Result:=fpsend(handle,@Buffer,count,flags);
|
|
|
|
+ If Result<0 then
|
|
|
|
+ FLastError:=SocketError
|
|
|
|
+ else
|
|
|
|
+ FlastError:=0;
|
|
|
|
+{$ifdef unix}
|
|
|
|
+ Until (FlastError<>ESysEINTR);
|
|
|
|
+{$ENDIF}
|
|
end;
|
|
end;
|
|
|
|
|
|
function TSocketStream.GetLocalAddress: TSockAddr;
|
|
function TSocketStream.GetLocalAddress: TSockAddr;
|