From 999c548e6e29c9253403dbfc9f340c1c52c89871 Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Thu, 16 Aug 2012 10:25:54 -0400 Subject: [PATCH] Fix FileTransfer running out of memory over HTTPS (CB-312). Setting the Transfer-Encoding header fixes running out of memory when using HTTPS. This CL also adds a bit of logging so that upload progress is logged. --- framework/src/org/apache/cordova/FileTransfer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/framework/src/org/apache/cordova/FileTransfer.java b/framework/src/org/apache/cordova/FileTransfer.java index 61fa2843..b64bc501 100644 --- a/framework/src/org/apache/cordova/FileTransfer.java +++ b/framework/src/org/apache/cordova/FileTransfer.java @@ -251,6 +251,7 @@ public class FileTransfer extends Plugin { } else { conn.setFixedLengthStreamingMode(fixedLength); } + conn.setRequestProperty("Transfer-Encoding", "chunked"); dos = new DataOutputStream( conn.getOutputStream() ); //We don't want to change encoding, we just want this to write for all Unicode. @@ -267,10 +268,15 @@ public class FileTransfer extends Plugin { bytesRead = fileInputStream.read(buffer, 0, bufferSize); totalBytes = 0; + long prevBytesRead = 0; while (bytesRead > 0) { totalBytes += bytesRead; result.setBytesSent(totalBytes); dos.write(buffer, 0, bufferSize); + if (totalBytes > prevBytesRead + 102400) { + prevBytesRead = totalBytes; + Log.d(LOG_TAG, "Uploaded " + totalBytes + " of " + fixedLength + " bytes"); + } bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize);