private VpnProfileDataSource mDataSource;
private Thread mConnectionHandler;
private VpnProfile mCurrentProfile;
+ private volatile String mCurrentCertificateAlias;
private VpnProfile mNextProfile;
private volatile boolean mProfileUpdated;
private volatile boolean mTerminate;
mCurrentProfile = mNextProfile;
mNextProfile = null;
+ /* store this in a separate (volatile) variable to avoid
+ * a possible deadlock during deinitialization */
+ mCurrentCertificateAlias = mCurrentProfile.getCertificateAlias();
+
setProfile(mCurrentProfile);
setError(ErrorState.NO_ERROR);
setState(State.CONNECTING);
* @param hash optional alias (only hash part), if given matching certificates are returned
* @return a list of DER encoded CA certificates
*/
- private synchronized byte[][] getTrustedCertificates(String hash)
+ private byte[][] getTrustedCertificates(String hash)
{
ArrayList<byte[]> certs = new ArrayList<byte[]>();
TrustedCertificateManager certman = TrustedCertificateManager.getInstance();
}
else
{
- String alias = this.mCurrentProfile.getCertificateAlias();
+ String alias = this.mCurrentCertificateAlias;
if (alias != null)
{
X509Certificate cert = certman.getCACertificateFromAlias(alias);