summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/AppleTLSSession.cc13
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)