From 8bb5db350d302f12aff7688a850ee51885e0e803 Mon Sep 17 00:00:00 2001 From: athenian200 Date: Sun, 26 Jan 2020 01:40:55 -0600 Subject: 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. --- netwerk/protocol/ftp/nsFtpConnectionThread.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'netwerk/protocol/ftp/nsFtpConnectionThread.h') diff --git a/netwerk/protocol/ftp/nsFtpConnectionThread.h b/netwerk/protocol/ftp/nsFtpConnectionThread.h index b4e71bd10..cc8f0df95 100644 --- a/netwerk/protocol/ftp/nsFtpConnectionThread.h +++ b/netwerk/protocol/ftp/nsFtpConnectionThread.h @@ -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; -- cgit v1.2.3