Browse Source

* Applied patch by Markus Kaemmerer: Fixes fdRead and fdWrite

sg 25 years ago
parent
commit
9c88b8f0cb
1 changed files with 20 additions and 17 deletions
  1. 20 17
      rtl/win32/sockets.pp

+ 20 - 17
rtl/win32/sockets.pp

@@ -172,25 +172,23 @@ end;
 
 
 { mimic the linux fdWrite/fdRead calls for the file/text socket wrapper }
 { mimic the linux fdWrite/fdRead calls for the file/text socket wrapper }
 function fdWrite(handle : longint;var bufptr;size : dword) : dword;
 function fdWrite(handle : longint;var bufptr;size : dword) : dword;
-
-  var
-     d : dword;
-
+begin
+  fdWrite := WinSock.send(handle, bufptr, size, 0);
+  if fdWrite = SOCKET_ERROR then
   begin
   begin
-     if not(Windows.WriteFile(handle,bufptr,size,d,nil)) then
-       SocketError:=Windows.GetLastError
-     else
-       SocketError:=0;
-     fdWrite:=d;
-  end;
+    SocketError := WSAGetLastError;
+    fdWrite := 0;
+  end
+  else
+    SocketError := 0;
+end;
 
 
 function fdRead(handle : longint;var bufptr;size : dword) : dword;
 function fdRead(handle : longint;var bufptr;size : dword) : dword;
-
   var
   var
      d : dword;
      d : dword;
 
 
   begin
   begin
-     if ioctlsocket(handle,FIONREAD,@d)<>0 then
+     if ioctlsocket(handle,FIONREAD,@d) = SOCKET_ERROR then
        begin
        begin
          SocketError:=WSAGetLastError;
          SocketError:=WSAGetLastError;
          fdRead:=0;
          fdRead:=0;
@@ -200,14 +198,16 @@ function fdRead(handle : longint;var bufptr;size : dword) : dword;
        begin
        begin
          if size>d then
          if size>d then
            size:=d;
            size:=d;
-         if not(Windows.ReadFile(handle,bufptr,size,d,nil)) then
-           SocketError:=Windows.GetLastError
-         else
+         fdRead := WinSock.recv(handle, bufptr, size, 0);
+         if fdRead = SOCKET_ERROR then
+         begin
+           SocketError:= WSAGetLastError;
+           fdRead := 0;
+         end else
            SocketError:=0;
            SocketError:=0;
        end
        end
      else
      else
        SocketError:=0;
        SocketError:=0;
-     fdRead:=d;
   end;
   end;
 
 
 
 
@@ -224,7 +224,10 @@ finalization
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.3  2000-07-28 06:34:53  sg
+  Revision 1.4  2000-07-28 08:43:46  sg
+  * Applied patch by Markus Kaemmerer: Fixes fdRead and fdWrite
+
+  Revision 1.3  2000/07/28 06:34:53  sg
   * Applied patch to "Connect" by Markus Kaemmerer: WinSock.Connect returns
   * Applied patch to "Connect" by Markus Kaemmerer: WinSock.Connect returns
     zero when it succeeded, and not vice versa.
     zero when it succeeded, and not vice versa.