From a37c31d8e7823a062b25e16075f3d98f289245e1 Mon Sep 17 00:00:00 2001 From: Steffen Date: Fri, 20 Jan 2017 00:30:11 +0100 Subject: [PATCH] [wip] make write_overlap return the amount of written bytes --- src/net.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/net.rs b/src/net.rs index ce5d9b1..f24d7e9 100644 --- a/src/net.rs +++ b/src/net.rs @@ -118,7 +118,7 @@ pub trait TcpStreamExt { /// the port. unsafe fn write_overlapped(&self, buf: &[u8], - overlapped: &mut Overlapped) -> io::Result; + overlapped: &mut Overlapped) -> io::Result<(bool, usize)>; /// Execute a connection operation for this socket. /// @@ -475,11 +475,12 @@ impl TcpStreamExt for TcpStream { } unsafe fn write_overlapped(&self, buf: &[u8], - overlapped: &mut Overlapped) -> io::Result { + overlapped: &mut Overlapped) -> io::Result<(bool, usize)> { let mut buf = slice2buf(buf); + let mut size: DWORD = 0; let r = WSASend(self.as_raw_socket(), &mut buf, 1, - 0 as *mut _, 0, overlapped.raw(), None); - cvt(r) + &mut size, 0, overlapped.raw(), None); + cvt(r).map(|state| (state, size as usize)) } unsafe fn connect_overlapped(&self, addr: &SocketAddr,