]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
FTP gateway: fix upload freezing for large files.
authorDmitry Kurochkin <dmitry.kurochkin@measurement-factory.com>
Wed, 26 Jun 2013 00:35:39 +0000 (04:35 +0400)
committerDmitry Kurochkin <dmitry.kurochkin@measurement-factory.com>
Wed, 26 Jun 2013 00:35:39 +0000 (04:35 +0400)
src/client_side.cc

index e456c1e018fd09dc17ea87b046bc5039d2af9dba..2a52f1495d94582504e2087fc323fa78e32e7de6 100644 (file)
@@ -3176,13 +3176,11 @@ ConnStateData::clientReadFtpData(const CommIoCbParams &io)
         if (io.size > 0) {
             kb_incr(&(statCounter.client_http.kbytes_in), io.size);
 
-            const bool uploadBufWasEmpty = ftp.uploadAvailSize <= 0;
             char *const current_buf = ftp.uploadBuf + ftp.uploadAvailSize;
             if (io.buf != current_buf)
                 memmove(current_buf, io.buf, io.size);
             ftp.uploadAvailSize += io.size;
-            if (uploadBufWasEmpty)
-                handleFtpRequestData();
+            handleFtpRequestData();
         } else if (io.size == 0) {
             debugs(33, 5, HERE << io.conn << " closed");
             FtpCloseDataConnection(this);
@@ -3372,6 +3370,11 @@ ConnStateData::abortChunkedRequestBody(const err_type error)
 void
 ConnStateData::noteMoreBodySpaceAvailable(BodyPipe::Pointer )
 {
+    if (isFtp) {
+        handleFtpRequestData();
+        return;
+    }
+
     if (!handleRequestBodyData())
         return;