Jelajahi Sumber

2008-08-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Fixed infinite loop bug in FTP when SIZE command failed.
	* src/FtpNegotiationCommand.cc
Tatsuhiro Tsujikawa 17 tahun lalu
induk
melakukan
01ae2bc912
2 mengubah file dengan 11 tambahan dan 1 penghapusan
  1. 5 0
      ChangeLog
  2. 6 1
      src/FtpNegotiationCommand.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2008-08-27  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Fixed infinite loop bug in FTP when SIZE command failed.
+	* src/FtpNegotiationCommand.cc
+
 2008-08-26  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Removed DirectDiskAdaptorTest.h

+ 6 - 1
src/FtpNegotiationCommand.cc

@@ -230,6 +230,7 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
     _requestGroup->shouldCancelDownloadForSafety();
     _requestGroup->getPieceStorage()->getDiskAdaptor()->initAndOpenFile();
 
+    return true;
   } else {
     _requestGroup->initPieceStorage();
 
@@ -286,7 +287,11 @@ bool FtpNegotiationCommand::recvSize() {
     // contacted FTP server doesn't support it.
     if(_requestGroup->getPieceStorage().isNull()) {
 
-      sequence = SEQ_FILE_PREPARATION;
+      if(e->option->getAsBool(PREF_FTP_PASV)) {
+	sequence = SEQ_SEND_PASV;
+      } else {
+	sequence = SEQ_SEND_PORT;
+      }
       return onFileSizeDetermined(0);
 
     }