On 01/24/2016 11:37 AM, Kinkie wrote:
Please go ahead. If you have a feature-branch it'd be maybe useful to
give a build-test prior to merging via the anybranch-wholefarm
parametric job http://build.squid-cache.org/job/anybranch-wholefarm-matrix/

Applied to trunk as r14506.

Unfortunately I had only local branch for this.
I run the tests (make check/distcheck), I am waiting the build farm for more.





On Thu, Jan 21, 2016 at 6:39 PM, Christos Tsantilas
<[email protected]> wrote:
Hi all,
  this patch waits for long time in queue.
If no objection I will apply this patch to trunk.



On 12/29/2015 06:31 PM, Christos Tsantilas wrote:


Problem description
--------------------

FTP client gets stuck after the following chain of events:

   * Client requests a file that will be blocked by ICAP.

   * Squid starts downloading the file from the FTP server and sends "150
Opening..." to the FTP client.

   * Squid aborts the data connection with the FTP server as soon as the
ICAP service blocks it.

   * Squid sends "451 Forbidden" to the FTP client.

   * The FTP server sends "500 OOPS: setsockopt: linger" to Squid.

   * Squid terminates the control connection to the FTP server.

   * Squid establishes a new control connection to the FTP server but
does not authenticate itself.

   * Further commands from the FTP client do not work any more.

The above and many similar problems exist because Squid handles FTP
client-to-squid and squid-to-FTP server data connections independently
from each other. In many cases, one connection does not get notified
about the problems with the other connection.

Tech details
------------

This patch:
    - Add Ftp::MasterState::userDataDone to record received the FTP
client final response status code to sent (or to be send) to the client.

    - The Ftp::MasterState::waitForOriginData flag to hold status of the
squid-to-server side. If the squid-to-server side is not finishes yet
this is true.

    - Send a control reply to the FTP client only after the data
transferred on both server and client sides.

    - Split Client::abortTransaction to Client::abortOnData and to
Client::abortAll()

    - Implement the Ftp::Relay::abortOnData() and Ftp::Relay::Abort()
(i.e., StoreEntry abort handler) to avoid closing the control connection
when the data connection is closed unexpectedly.

This is a Measurement Factory project.



_______________________________________________
squid-dev mailing list
[email protected]
http://lists.squid-cache.org/listinfo/squid-dev


_______________________________________________
squid-dev mailing list
[email protected]
http://lists.squid-cache.org/listinfo/squid-dev

Reply via email to