more error handling for http connection

This commit is contained in:
iNPUTmice 2014-11-03 19:59:11 +01:00
parent 21069003b0
commit ec9c264cf7

View File

@ -1,5 +1,11 @@
package eu.siacs.conversations.http; package eu.siacs.conversations.http;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.net.Uri;
import org.apache.http.conn.ssl.StrictHostnameVerifier;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@ -15,12 +21,6 @@ import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLHandshakeException;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
import org.apache.http.conn.ssl.StrictHostnameVerifier;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.net.Uri;
import eu.siacs.conversations.entities.Downloadable; import eu.siacs.conversations.entities.Downloadable;
import eu.siacs.conversations.entities.DownloadableFile; import eu.siacs.conversations.entities.DownloadableFile;
import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.entities.Message;
@ -74,7 +74,7 @@ public class HttpConnection implements Downloadable {
if (reference != null && reference.length() == 96) { if (reference != null && reference.length() == 96) {
this.file.setKey(CryptoHelper.hexToBytes(reference)); this.file.setKey(CryptoHelper.hexToBytes(reference));
} }
if (this.message.getEncryption() == Message.ENCRYPTION_OTR if (this.message.getEncryption() == Message.ENCRYPTION_OTR
&& this.file.getKey() == null) { && this.file.getKey() == null) {
this.message.setEncryption(Message.ENCRYPTION_NONE); this.message.setEncryption(Message.ENCRYPTION_NONE);
@ -113,7 +113,7 @@ public class HttpConnection implements Downloadable {
} }
private void setupTrustManager(HttpsURLConnection connection, private void setupTrustManager(HttpsURLConnection connection,
boolean interactive) { boolean interactive) {
X509TrustManager trustManager; X509TrustManager trustManager;
HostnameVerifier hostnameVerifier; HostnameVerifier hostnameVerifier;
if (interactive) { if (interactive) {
@ -131,7 +131,7 @@ public class HttpConnection implements Downloadable {
} }
try { try {
SSLContext sc = SSLContext.getInstance("TLS"); SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new X509TrustManager[] { trustManager }, sc.init(null, new X509TrustManager[]{trustManager},
mXmppConnectionService.getRNG()); mXmppConnectionService.getRNG());
connection.setSSLSocketFactory(sc.getSocketFactory()); connection.setSSLSocketFactory(sc.getSocketFactory());
connection.setHostnameVerifier(hostnameVerifier); connection.setHostnameVerifier(hostnameVerifier);
@ -230,6 +230,9 @@ public class HttpConnection implements Downloadable {
BufferedInputStream is = new BufferedInputStream( BufferedInputStream is = new BufferedInputStream(
connection.getInputStream()); connection.getInputStream());
OutputStream os = file.createOutputStream(); OutputStream os = file.createOutputStream();
if (os == null) {
throw new IOException();
}
int count = -1; int count = -1;
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
while ((count = is.read(buffer)) != -1) { while ((count = is.read(buffer)) != -1) {