summaryrefslogtreecommitdiff
path: root/src/SocketCore.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/SocketCore.cc')
-rw-r--r--src/SocketCore.cc55
1 files changed, 28 insertions, 27 deletions
diff --git a/src/SocketCore.cc b/src/SocketCore.cc
index e235f512..4e7421bc 100644
--- a/src/SocketCore.cc
+++ b/src/SocketCore.cc
@@ -863,38 +863,39 @@ void SocketCore::readData(void* data, size_t& len)
}
else
#endif // HAVE_LIBSSH2
- if (!secure_) {
- // Cast for Windows recv()
- while ((ret = recv(sockfd_, reinterpret_cast<char*>(data), len, 0)) == -1 &&
- SOCKET_ERRNO == A2_EINTR)
- ;
- int errNum = SOCKET_ERRNO;
- if (ret == -1) {
- if (!A2_WOULDBLOCK(errNum)) {
- throw DL_RETRY_EX(fmt(EX_SOCKET_RECV, errorMsg(errNum).c_str()));
+ if (!secure_) {
+ // Cast for Windows recv()
+ while ((ret = recv(sockfd_, reinterpret_cast<char*>(data), len, 0)) ==
+ -1 &&
+ SOCKET_ERRNO == A2_EINTR)
+ ;
+ int errNum = SOCKET_ERRNO;
+ if (ret == -1) {
+ if (!A2_WOULDBLOCK(errNum)) {
+ throw DL_RETRY_EX(fmt(EX_SOCKET_RECV, errorMsg(errNum).c_str()));
+ }
+ wantRead_ = true;
+ ret = 0;
}
- wantRead_ = true;
- ret = 0;
}
- }
- else {
+ else {
#ifdef ENABLE_SSL
- ret = tlsSession_->readData(data, len);
- if (ret < 0) {
- if (ret != TLS_ERR_WOULDBLOCK) {
- throw DL_RETRY_EX(
- fmt(EX_SOCKET_RECV, tlsSession_->getLastErrorString().c_str()));
- }
- if (tlsSession_->checkDirection() == TLS_WANT_READ) {
- wantRead_ = true;
- }
- else {
- wantWrite_ = true;
+ ret = tlsSession_->readData(data, len);
+ if (ret < 0) {
+ if (ret != TLS_ERR_WOULDBLOCK) {
+ throw DL_RETRY_EX(
+ fmt(EX_SOCKET_RECV, tlsSession_->getLastErrorString().c_str()));
+ }
+ if (tlsSession_->checkDirection() == TLS_WANT_READ) {
+ wantRead_ = true;
+ }
+ else {
+ wantWrite_ = true;
+ }
+ ret = 0;
}
- ret = 0;
- }
#endif // ENABLE_SSL
- }
+ }
len = ret;
}