async might work now reliably
This commit is contained in:
parent
6619381768
commit
d438ecc246
3 changed files with 32 additions and 27 deletions
|
|
@ -805,6 +805,7 @@ proc recv*(socket: PSocket, data: pointer, size: int): int {.tags: [FReadIO].} =
|
|||
|
||||
let chunk = min(socket.bufLen-socket.currPos, size-read)
|
||||
var d = cast[cstring](data)
|
||||
assert size-read >= chunk
|
||||
copyMem(addr(d[read]), addr(socket.buffer[socket.currPos]), chunk)
|
||||
read.inc(chunk)
|
||||
socket.currPos.inc(chunk)
|
||||
|
|
@ -871,6 +872,7 @@ proc recv*(socket: PSocket, data: pointer, size: int, timeout: int): int {.
|
|||
while read < size:
|
||||
let avail = waitFor(socket, waited, timeout, size-read, "recv")
|
||||
var d = cast[cstring](data)
|
||||
assert avail <= size-read
|
||||
result = recv(socket, addr(d[read]), avail)
|
||||
if result == 0: break
|
||||
if result < 0:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue