diff --git a/src/FtpConnection.cc b/src/FtpConnection.cc index debde951..220bccf1 100644 --- a/src/FtpConnection.cc +++ b/src/FtpConnection.cc @@ -363,14 +363,15 @@ bool FtpConnection::bulkReceiveResponse (std::pair& response) { char buf[1024]; - while(socket_->isReadable(0)) { + while(1) { size_t size = sizeof(buf); socket_->readData(buf, size); if(size == 0) { if(socket_->wantRead() || socket_->wantWrite()) { - return false; + break; + } else { + throw DL_RETRY_EX(EX_GOT_EOF); } - throw DL_RETRY_EX(EX_GOT_EOF); } if(strbuf_.size()+size > MAX_RECV_BUFFER) { throw DL_RETRY_EX diff --git a/test/FtpConnectionTest.cc b/test/FtpConnectionTest.cc index 3c555ab4..7675ac30 100644 --- a/test/FtpConnectionTest.cc +++ b/test/FtpConnectionTest.cc @@ -63,7 +63,6 @@ public: clientSocket_->establishConnection("localhost", listenPort_); while(!clientSocket_->isWritable(0)); - clientSocket_->setBlockingMode(); serverSocket_.reset(listenSocket->acceptConnection()); ftp_.reset(new FtpConnection(1, clientSocket_, req_,