소스 검색

* handle EsockEINTR for fpaccept and fpconnect

git-svn-id: trunk@12939 -
Jonas Maebe 16 년 전
부모
커밋
b5494c534c
1개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  1. 9 2
      rtl/inc/sockets.inc

+ 9 - 2
rtl/inc/sockets.inc

@@ -169,13 +169,20 @@ Var AddrLen : Longint;
 
 begin
   AddrLEn:=SizeOf(Addr);
-  DoAccept:=fpaccept(Sock,@Addr,@AddrLen);
+  repeat
+    DoAccept:=fpaccept(Sock,@Addr,@AddrLen);
+  until (DoAccept<>-1) or (SocketError <> EsockEINTR);
 end;
 
 Function DoConnect(Sock:longint;const addr: TInetSockAddr): Boolean;
 
+var
+  res: longint;
 begin
-  DoConnect:=fpconnect(Sock,@Addr,SizeOF(TInetSockAddr)) = 0;
+  repeat
+    res:=fpconnect(Sock,@Addr,SizeOF(TInetSockAddr));
+  until (res<>-1) or (SocketError <> EsockEINTR);
+  DoConnect:= res = 0;
 end;
 
 {$warnings off}