Issue #1349 - Stop 2xx FTP responses from causing browser to hang.

LIST and RETR still appear to work as intended on ftp:// URLs after my changes. I wasn't able to test STOR because the browser doesn't appear to support FTP uploads at this time (although our FTP implementation appears perfectly capable of doing an FTP upload.)

If I understood the issue correctly, though, what we're doing is ensuring that we receive a preliminary 100 response from the FTP server for a given action before jumping to the 200 code describing what we do if the action was completed. Even though it makes no logical sense for a server to say an action was completed before it was initiated, someone could write a really annoying FTP server that takes advantage of this fact to crash the browser if they wanted.
This commit is contained in:
athenian200 2020-01-26 01:40:55 -06:00 committed by Roy Tam
commit bd714bc690
2 changed files with 20 additions and 4 deletions

View file

@ -180,6 +180,12 @@ private:
bool mRetryPass; // retrying the password
bool mStorReplyReceived; // FALSE if waiting for STOR
// completion status from server
bool mRlist1xxReceived; // TRUE if the server has sent a
// LIST 1xx response.
bool mRstor1xxReceived; // TRUE if the server has sent a
// STOR 1xx response.
bool mRretr1xxReceived; // TRUE if the server has sent a
// RETR 1xx response.
nsresult mInternalError; // represents internal state errors
bool mReconnectAndLoginAgain;
bool mCacheConnection;