author Ben Bucksch <>
Fri, 14 Dec 2018 12:05:14 +0100
changeset 33915 42dfab681c409905c0d84cd86d100452cd603e1a
parent 33901 195a2aef72e1ab507c07ca93e703600b4b09c3b3
permissions -rw-r--r--
Bug 1500105 - Support Exchange AutoDiscover and parallelize network calls. r=aceman,mkmelin,Neil a=jorgk Summary: * Parallelize network calls * Exchange AutoDiscover protocol implementation * Try to find IMAP servers in the server response * Offer to install an extension which supports the Exchange protocol to get mails Runs all the ISP config lookup network calls in parallel. Class PriorityOrderAbortable (subclass of ParallelAbortable) implements a policy that waits until one of the calls returns successfully, then takes that result and cancels all pending less desirable calls. Implements the Exchange AutoDiscover protocol to detect Exchange servers. If the server gives an IMAP configuration, we offer that to the user. Alternatively, we offer a compatible verified extension that implements the specific Exchange protocol that the Exchange server returned. Exchange has at least 7 protocols, and we show extensions that support the protocols that the server listed and that are known to work well and actively maintained. The setup process then continues without interruption. Test plan: Exchange autoconfig: 1. To test Exchange AutoDiscover with an hotmail/ account (which has an IMAP config in our ISPDB), set these prefs: mailnews.auto_config.guess.enabled = false mailnews.auto_config_url = "" mailnews.mx_service_url = "" 2. Enter and a valid password (it will not work without valid password, due to the Exchange AutoDiscover protocol design) 3. [Continue] 4. -> TB should find an Exchange server with hostname 5. -> TB will offer you to install an extension that supports this protocol type, with explanatory text and a link 6. Click [Install] 7. -> The password is checked, the dialog closes, and the account appears, and your emails are downloaded. Parallel network calls: 1. Open account creation dialog 2. Enter "", "", "", "", or any other domain 3. -> It works functionally as before, see 4. -> It's faster than before Differential Revision:

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at

# This file has the strings, mostly error strings, for the logic / JS backend / model
# files: fetchConfig.js, readFromXML.js, guessConfig.js, verifyConfig.js, createInBackend.js

# readFromXML.js
no_emailProvider.error=The config file XML does not contain an email account configuration.
outgoing_not_smtp.error=The outgoing server must be of type SMTP

# verifyConfig.js
cannot_login.error=Unable to log in at server. Probably wrong configuration, username or password.

# guessConfig.js
cannot_find_server.error=Can't find a server

# exchangeAutoDiscover.js
no_autodiscover.error=The Exchange AutoDiscover XML is invalid.