fixed http resume
This commit is contained in:
parent
b879fb3753
commit
1739af2a41
|
@ -273,16 +273,18 @@ public class HttpDownloadConnection implements Transferable {
|
||||||
}
|
}
|
||||||
connection.setRequestProperty("User-Agent",mXmppConnectionService.getIqGenerator().getIdentityName());
|
connection.setRequestProperty("User-Agent",mXmppConnectionService.getIqGenerator().getIdentityName());
|
||||||
final boolean tryResume = file.exists() && file.getKey() == null;
|
final boolean tryResume = file.exists() && file.getKey() == null;
|
||||||
|
long resumeSize = 0;
|
||||||
if (tryResume) {
|
if (tryResume) {
|
||||||
Log.d(Config.LOGTAG,"http download trying resume");
|
Log.d(Config.LOGTAG,"http download trying resume");
|
||||||
long size = file.getSize();
|
resumeSize = file.getSize();
|
||||||
connection.setRequestProperty("Range", "bytes="+size+"-");
|
connection.setRequestProperty("Range", "bytes="+resumeSize+"-");
|
||||||
}
|
}
|
||||||
connection.setConnectTimeout(Config.SOCKET_TIMEOUT * 1000);
|
connection.setConnectTimeout(Config.SOCKET_TIMEOUT * 1000);
|
||||||
connection.setReadTimeout(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"));
|
final String contentRange = connection.getHeaderField("Content-Range");
|
||||||
|
boolean serverResumed = tryResume && contentRange != null && contentRange.startsWith("bytes "+resumeSize+"-");
|
||||||
long transmitted = 0;
|
long transmitted = 0;
|
||||||
long expected = file.getExpectedSize();
|
long expected = file.getExpectedSize();
|
||||||
if (tryResume && serverResumed) {
|
if (tryResume && serverResumed) {
|
||||||
|
@ -290,9 +292,14 @@ public class HttpDownloadConnection implements Transferable {
|
||||||
transmitted = file.getSize();
|
transmitted = file.getSize();
|
||||||
updateProgress((int) ((((double) transmitted) / expected) * 100));
|
updateProgress((int) ((((double) transmitted) / expected) * 100));
|
||||||
os = AbstractConnectionManager.createAppendedOutputStream(file);
|
os = AbstractConnectionManager.createAppendedOutputStream(file);
|
||||||
|
if (os == null) {
|
||||||
|
throw new FileWriterException();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
file.getParentFile().mkdirs();
|
file.getParentFile().mkdirs();
|
||||||
file.createNewFile();
|
if (!file.exists() && !file.createNewFile()) {
|
||||||
|
throw new FileWriterException();
|
||||||
|
}
|
||||||
os = AbstractConnectionManager.createOutputStream(file, true);
|
os = AbstractConnectionManager.createOutputStream(file, true);
|
||||||
}
|
}
|
||||||
int count;
|
int count;
|
||||||
|
|
Loading…
Reference in a new issue