Merge pull request #111 from WebFreak001/fix-110

Make waitForData not assert fail on close fix #110
This commit is contained in:
Sönke Ludwig 2018-12-20 10:14:08 +01:00 committed by GitHub
commit 0d3338a16b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 2 deletions

View file

@ -569,12 +569,18 @@ mixin(tracer);
alias waiter = Waitable!(IOCallback,
cb => eventDriver.sockets.read(m_socket, m_context.readBuffer.peekDst(), mode, cb),
(cb) { cancelled = true; eventDriver.sockets.cancelRead(m_socket); },
(sock, st, nb) { assert(sock == m_socket); status = st; nbytes = nb; }
(sock, st, nb) {
if (m_socket == StreamSocketFD.invalid) {
cancelled = true;
return;
}
assert(sock == m_socket); status = st; nbytes = nb;
}
);
asyncAwaitAny!(true, waiter)(timeout);
if (cancelled) return false;
if (cancelled || !m_context) return false;
logTrace("Socket %s, read %s bytes: %s", m_socket, nbytes, status);