Skip to content
Snippets Groups Projects
Commit e77c34e6 authored by cpilaszewicz's avatar cpilaszewicz
Browse files

Make readJson() method synchronous as the MCOMailProvidersManager is a shared...

Make readJson() method synchronous as the MCOMailProvidersManager is a shared object and has problem if called from multiple threads
parent 2b3fd50f
No related branches found
No related tags found
4 merge requests!58Onboarding screens swift ui merge dev,!55WIP: Resolve "UI for gamifcation & stats",!47Provisional fix for OpenSSL 1.1+, needs testing,!39Resolve "Restructure Authentication"
......@@ -67,7 +67,7 @@ class MailServer: Comparable {
var loggerCalled = false
var works = false
var sendCallback = false
var isTLS: Bool {
get{
return connectionType == MCOConnectionType.TLS
......@@ -502,6 +502,9 @@ class MailSession {
static let AUTHTYPE = [MCOAuthType.saslPlain, MCOAuthType.saslLogin, MCOAuthType.SASLNTLM, MCOAuthType.saslKerberosV4, MCOAuthType.SASLCRAMMD5, MCOAuthType.SASLDIGESTMD5, MCOAuthType.SASLGSSAPI, MCOAuthType.SASLSRP, MCOAuthType.init(rawValue: 0)]
static let CONNTECTIONTYPE = [MCOConnectionType.TLS, MCOConnectionType.startTLS] // We do not test for plain connections!
static let dispatchQueue: DispatchQueue = DispatchQueue(label: "MailSessionQueue")
var defaultIMAPSession: MCOIMAPSession? {
get {
if let server = try? MailServer(userValues: sessionType, callback: callback) {
......@@ -643,7 +646,7 @@ class MailSession {
let (_, server) = MailSession.splitAddr(userAddr: self.mailAddr)
if let domain = server {
if self.sessionType == SessionType.IMAP {
createServers(domain: domain, prefixes: MailSession.IMAPPREFIX, ports: [UInt32(111)])
createServers(domain: domain, prefixes: MailSession.IMAPPREFIX, ports: MailSession.IMAPPORT)
}
else {
createServers(domain: domain, prefixes: MailSession.SMTPPREFIX, ports: MailSession.SMTPPORT)
......@@ -722,20 +725,22 @@ class MailSession {
}
private func readJson() -> [MCONetService] {
var servers: [MCONetService] = []
let manager = MCOMailProvidersManager.shared()
if let path = Bundle.main.path(forResource: "providers", ofType: "json") {
manager.registerProviders(withFilename: path)
if let provider = manager.provider(forEmail: mailAddr){
if sessionType == SessionType.IMAP {
servers = provider.imapServices()
}
else {
servers = provider.smtpServices()
MailSession.dispatchQueue.sync {
var servers: [MCONetService] = []
let manager = MCOMailProvidersManager.shared()
if let path = Bundle.main.path(forResource: "providers", ofType: "json") {
manager.registerProviders(withFilename: path)
if let provider = manager.provider(forEmail: mailAddr){
if sessionType == SessionType.IMAP {
servers = provider.imapServices()
}
else {
servers = provider.smtpServices()
}
}
}
return servers
}
return servers
}
var hasJsonFile: Bool {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment