diff options
| -rw-r--r-- | src/AppleTLSSession.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/AppleTLSSession.cc b/src/AppleTLSSession.cc index 385c7df1..1e56cd30 100644 --- a/src/AppleTLSSession.cc +++ b/src/AppleTLSSession.cc @@ -422,17 +422,22 @@ int AppleTLSSession::closeConnection() } int AppleTLSSession::checkDirection() { - if (writeBuffered_) { - return TLS_WANT_WRITE; - } + // See: https://github.com/tatsuhiro-t/aria2/pull/61#issuecomment-16051793 if (state_ == st_connected) { + // Need to check read first, as SocketCore kinda expects this size_t buffered; lastError_ = SSLGetBufferedReadSize(sslCtx_, &buffered); if (lastError_ == noErr && buffered) { return TLS_WANT_READ; } } - return 0; + + if (writeBuffered_) { + return TLS_WANT_WRITE; + } + + // Default to WANT_READ, as SocketCore kinda expects this + return TLS_WANT_READ; } ssize_t AppleTLSSession::writeData(const void* data, size_t len) |
