add timeouts to HTTPUrlConnections and allow cancelation of all sending files

This commit is contained in:
Daniel Gultsch 2016-09-20 20:02:25 +02:00
parent de7c0c5121
commit 61f58b3dbd
3 changed files with 11 additions and 4 deletions

View File

@ -212,6 +212,8 @@ public class HttpDownloadConnection implements Transferable {
if (connection instanceof HttpsURLConnection) { if (connection instanceof HttpsURLConnection) {
mHttpConnectionManager.setupTrustManager((HttpsURLConnection) connection, interactive); mHttpConnectionManager.setupTrustManager((HttpsURLConnection) connection, interactive);
} }
connection.setConnectTimeout(Config.SOCKET_TIMEOUT * 1000);
connection.setReadTimeout(Config.SOCKET_TIMEOUT * 1000);
connection.connect(); connection.connect();
String contentLength = connection.getHeaderField("Content-Length"); String contentLength = connection.getHeaderField("Content-Length");
connection.disconnect(); connection.disconnect();
@ -279,6 +281,8 @@ public class HttpDownloadConnection implements Transferable {
long size = file.getSize(); long size = file.getSize();
connection.setRequestProperty("Range", "bytes="+size+"-"); connection.setRequestProperty("Range", "bytes="+size+"-");
} }
connection.setConnectTimeout(Config.SOCKET_TIMEOUT * 1000);
connection.setReadTimeout(Config.SOCKET_TIMEOUT * 1000);
connection.connect(); connection.connect();
is = new BufferedInputStream(connection.getInputStream()); is = new BufferedInputStream(connection.getInputStream());
boolean serverResumed = "bytes".equals(connection.getHeaderField("Accept-Ranges")); boolean serverResumed = "bytes".equals(connection.getHeaderField("Accept-Ranges"));

View File

@ -171,10 +171,12 @@ public class HttpUploadConnection implements Transferable {
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.setReadTimeout(Config.SOCKET_TIMEOUT * 1000);
connection.connect(); connection.connect();
os = connection.getOutputStream(); os = connection.getOutputStream();
transmitted = 0; transmitted = 0;
int count = -1; int count;
byte[] buffer = new byte[4096]; byte[] buffer = new byte[4096];
while (((count = mFileInputStream.read(buffer)) != -1) && !canceled) { while (((count = mFileInputStream.read(buffer)) != -1) && !canceled) {
transmitted += count; transmitted += count;

View File

@ -573,9 +573,10 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
downloadFile.setVisible(true); downloadFile.setVisible(true);
downloadFile.setTitle(activity.getString(R.string.download_x_file,UIHelper.getFileDescriptionString(activity, m))); downloadFile.setTitle(activity.getString(R.string.download_x_file,UIHelper.getFileDescriptionString(activity, m)));
} }
if ((t != null && !(t instanceof TransferablePlaceholder)) boolean waitingOfferedSending = m.getStatus() == Message.STATUS_WAITING
|| (m.isFileOrImage() && (m.getStatus() == Message.STATUS_WAITING || m.getStatus() == Message.STATUS_UNSEND
|| m.getStatus() == Message.STATUS_OFFERED))) { || m.getStatus() == Message.STATUS_OFFERED;
if ((t != null && !(t instanceof TransferablePlaceholder)) || waitingOfferedSending && m.needsUploading()) {
cancelTransmission.setVisible(true); cancelTransmission.setVisible(true);
} }
if (treatAsFile) { if (treatAsFile) {