make http upload read timeout depend on file size

This commit is contained in:
Daniel Gultsch 2017-06-14 16:27:38 +02:00
parent 00bb527333
commit a1fe8f1c87
1 changed files with 5 additions and 3 deletions

View File

@ -160,7 +160,9 @@ public class HttpUploadConnection implements Transferable {
PowerManager.WakeLock wakeLock = mHttpConnectionManager.createWakeLock("http_upload_"+message.getUuid()); PowerManager.WakeLock wakeLock = mHttpConnectionManager.createWakeLock("http_upload_"+message.getUuid());
try { try {
wakeLock.acquire(); wakeLock.acquire();
Log.d(Config.LOGTAG, "uploading to " + mPutUrl.toString()); final int expectedFileSize = (int) file.getExpectedSize();
final int readTimeout = Math.max(Config.SOCKET_TIMEOUT,expectedFileSize / 2048); //assuming a minimum transfer speed of 16kbit/s
Log.d(Config.LOGTAG, "uploading to " + mPutUrl.toString()+ " w/ read timeout of "+readTimeout+"s");
if (mUseTor) { if (mUseTor) {
connection = (HttpURLConnection) mPutUrl.openConnection(mHttpConnectionManager.getProxy()); connection = (HttpURLConnection) mPutUrl.openConnection(mHttpConnectionManager.getProxy());
} else { } else {
@ -170,12 +172,12 @@ public class HttpUploadConnection implements Transferable {
mHttpConnectionManager.setupTrustManager((HttpsURLConnection) connection, true); mHttpConnectionManager.setupTrustManager((HttpsURLConnection) connection, true);
} }
connection.setRequestMethod("PUT"); connection.setRequestMethod("PUT");
connection.setFixedLengthStreamingMode((int) file.getExpectedSize()); connection.setFixedLengthStreamingMode(expectedFileSize);
connection.setRequestProperty("Content-Type", mime == null ? "application/octet-stream" : mime); connection.setRequestProperty("Content-Type", mime == null ? "application/octet-stream" : mime);
connection.setRequestProperty("User-Agent",mXmppConnectionService.getIqGenerator().getIdentityName()); connection.setRequestProperty("User-Agent",mXmppConnectionService.getIqGenerator().getIdentityName());
connection.setDoOutput(true); connection.setDoOutput(true);
connection.setConnectTimeout(Config.SOCKET_TIMEOUT * 1000); connection.setConnectTimeout(Config.SOCKET_TIMEOUT * 1000);
connection.setReadTimeout(Config.SOCKET_TIMEOUT * 1000); connection.setReadTimeout(readTimeout * 1000);
connection.connect(); connection.connect();
os = connection.getOutputStream(); os = connection.getOutputStream();
transmitted = 0; transmitted = 0;