check if socket was null before doing ssl connect
This commit is contained in:
parent
ea657ece0d
commit
047aaf5d4f
|
@ -7,7 +7,6 @@ import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Contact;
|
import eu.siacs.conversations.entities.Contact;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.entities.Message;
|
import eu.siacs.conversations.entities.Message;
|
||||||
import eu.siacs.conversations.services.NotificationService;
|
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
import eu.siacs.conversations.utils.CryptoHelper;
|
import eu.siacs.conversations.utils.CryptoHelper;
|
||||||
import eu.siacs.conversations.xml.Element;
|
import eu.siacs.conversations.xml.Element;
|
||||||
|
|
|
@ -65,44 +65,33 @@ import eu.siacs.conversations.xmpp.stanzas.streammgmt.ResumePacket;
|
||||||
|
|
||||||
public class XmppConnection implements Runnable {
|
public class XmppConnection implements Runnable {
|
||||||
|
|
||||||
|
private static final int PACKET_IQ = 0;
|
||||||
|
private static final int PACKET_MESSAGE = 1;
|
||||||
|
private static final int PACKET_PRESENCE = 2;
|
||||||
|
private final Context applicationContext;
|
||||||
protected Account account;
|
protected Account account;
|
||||||
|
|
||||||
private WakeLock wakeLock;
|
private WakeLock wakeLock;
|
||||||
|
|
||||||
private SecureRandom mRandom;
|
private SecureRandom mRandom;
|
||||||
|
|
||||||
private Socket socket;
|
private Socket socket;
|
||||||
private XmlReader tagReader;
|
private XmlReader tagReader;
|
||||||
private TagWriter tagWriter;
|
private TagWriter tagWriter;
|
||||||
|
|
||||||
private Features features = new Features(this);
|
private Features features = new Features(this);
|
||||||
|
|
||||||
private boolean shouldBind = true;
|
private boolean shouldBind = true;
|
||||||
private boolean shouldAuthenticate = true;
|
private boolean shouldAuthenticate = true;
|
||||||
private Element streamFeatures;
|
private Element streamFeatures;
|
||||||
private HashMap<String, List<String>> disco = new HashMap<String, List<String>>();
|
private HashMap<String, List<String>> disco = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
private String streamId = null;
|
private String streamId = null;
|
||||||
private int smVersion = 3;
|
private int smVersion = 3;
|
||||||
private SparseArray<String> messageReceipts = new SparseArray<String>();
|
private SparseArray<String> messageReceipts = new SparseArray<String>();
|
||||||
|
|
||||||
private boolean usingCompression = false;
|
private boolean usingCompression = false;
|
||||||
private boolean usingEncryption = false;
|
private boolean usingEncryption = false;
|
||||||
|
|
||||||
private int stanzasReceived = 0;
|
private int stanzasReceived = 0;
|
||||||
private int stanzasSent = 0;
|
private int stanzasSent = 0;
|
||||||
|
|
||||||
private long lastPaketReceived = 0;
|
private long lastPaketReceived = 0;
|
||||||
private long lastPingSent = 0;
|
private long lastPingSent = 0;
|
||||||
private long lastConnect = 0;
|
private long lastConnect = 0;
|
||||||
private long lastSessionStarted = 0;
|
private long lastSessionStarted = 0;
|
||||||
|
|
||||||
private int attempt = 0;
|
private int attempt = 0;
|
||||||
|
|
||||||
private static final int PACKET_IQ = 0;
|
|
||||||
private static final int PACKET_MESSAGE = 1;
|
|
||||||
private static final int PACKET_PRESENCE = 2;
|
|
||||||
|
|
||||||
private Hashtable<String, PacketReceived> packetCallbacks = new Hashtable<String, PacketReceived>();
|
private Hashtable<String, PacketReceived> packetCallbacks = new Hashtable<String, PacketReceived>();
|
||||||
private OnPresencePacketReceived presenceListener = null;
|
private OnPresencePacketReceived presenceListener = null;
|
||||||
private OnJinglePacketReceived jingleListener = null;
|
private OnJinglePacketReceived jingleListener = null;
|
||||||
|
@ -112,7 +101,6 @@ public class XmppConnection implements Runnable {
|
||||||
private OnBindListener bindListener = null;
|
private OnBindListener bindListener = null;
|
||||||
private OnMessageAcknowledged acknowledgedListener = null;
|
private OnMessageAcknowledged acknowledgedListener = null;
|
||||||
private MemorizingTrustManager mMemorizingTrustManager;
|
private MemorizingTrustManager mMemorizingTrustManager;
|
||||||
private final Context applicationContext;
|
|
||||||
|
|
||||||
public XmppConnection(Account account, XmppConnectionService service) {
|
public XmppConnection(Account account, XmppConnectionService service) {
|
||||||
this.mRandom = service.getRNG();
|
this.mRandom = service.getRNG();
|
||||||
|
@ -569,6 +557,10 @@ public class XmppConnection implements Runnable {
|
||||||
|
|
||||||
HostnameVerifier verifier = this.mMemorizingTrustManager
|
HostnameVerifier verifier = this.mMemorizingTrustManager
|
||||||
.wrapHostnameVerifier(new StrictHostnameVerifier());
|
.wrapHostnameVerifier(new StrictHostnameVerifier());
|
||||||
|
|
||||||
|
if (socket == null) {
|
||||||
|
throw new IOException("socket was null");
|
||||||
|
}
|
||||||
SSLSocket sslSocket = (SSLSocket) factory.createSocket(socket,
|
SSLSocket sslSocket = (SSLSocket) factory.createSocket(socket,
|
||||||
socket.getInetAddress().getHostAddress(), socket.getPort(),
|
socket.getInetAddress().getHostAddress(), socket.getPort(),
|
||||||
true);
|
true);
|
||||||
|
@ -1055,6 +1047,36 @@ public class XmppConnection implements Runnable {
|
||||||
return this.features;
|
return this.features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getLastSessionEstablished() {
|
||||||
|
long diff;
|
||||||
|
if (this.lastSessionStarted == 0) {
|
||||||
|
diff = SystemClock.elapsedRealtime() - this.lastConnect;
|
||||||
|
} else {
|
||||||
|
diff = SystemClock.elapsedRealtime() - this.lastSessionStarted;
|
||||||
|
}
|
||||||
|
return System.currentTimeMillis() - diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLastConnect() {
|
||||||
|
return this.lastConnect;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLastPingSent() {
|
||||||
|
return this.lastPingSent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLastPacketReceived() {
|
||||||
|
return this.lastPaketReceived;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendActive() {
|
||||||
|
this.sendPacket(new ActivePacket(), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendInactive() {
|
||||||
|
this.sendPacket(new InactivePacket(), null);
|
||||||
|
}
|
||||||
|
|
||||||
public class Features {
|
public class Features {
|
||||||
XmppConnection connection;
|
XmppConnection connection;
|
||||||
|
|
||||||
|
@ -1091,6 +1113,10 @@ public class XmppConnection implements Runnable {
|
||||||
"http://jabber.org/protocol/pubsub#publish");
|
"http://jabber.org/protocol/pubsub#publish");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean mam() {
|
||||||
|
return hasDiscoFeature(account.getServer(), "urn:xmpp:mam:0");
|
||||||
|
}
|
||||||
|
|
||||||
public boolean rosterVersioning() {
|
public boolean rosterVersioning() {
|
||||||
if (connection.streamFeatures == null) {
|
if (connection.streamFeatures == null) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1108,34 +1134,4 @@ public class XmppConnection implements Runnable {
|
||||||
return connection.usingCompression;
|
return connection.usingCompression;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getLastSessionEstablished() {
|
|
||||||
long diff;
|
|
||||||
if (this.lastSessionStarted == 0) {
|
|
||||||
diff = SystemClock.elapsedRealtime() - this.lastConnect;
|
|
||||||
} else {
|
|
||||||
diff = SystemClock.elapsedRealtime() - this.lastSessionStarted;
|
|
||||||
}
|
|
||||||
return System.currentTimeMillis() - diff;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getLastConnect() {
|
|
||||||
return this.lastConnect;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getLastPingSent() {
|
|
||||||
return this.lastPingSent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getLastPacketReceived() {
|
|
||||||
return this.lastPaketReceived;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendActive() {
|
|
||||||
this.sendPacket(new ActivePacket(), null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendInactive() {
|
|
||||||
this.sendPacket(new InactivePacket(), null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue