Connectivity Improvements in FeedDemon 2.0.0.22 (DRAFT)

Last updated May 5, 2006

Overview

Connection issues related to firewalls and proxies continue to be a burden both to customers and support. These issues - which plague every desktop application that connects to the Internet - are difficult to debug, and often can't be resolved by less experienced users. In addition, as we discovered when our site was down for several hours on April 18, 2006, synchronization features need to better deal with server outages.

Starting with build 2.0.0.22, FeedDemon will include additional features to help deal with these problems.

Connection Test

FeedDemon now includes a connection tester to help detect and correct connection problems. This tool uses the same three steps as NewsGator Inbox.

  1. HEAD request on a site external to www.newsgator.com
  2. HEAD request on www.newsgator.com
  3. Minimal NGAPI SOAP call ("TestSoapHeaders")

Each step displays a different error upon failure.

Note that if the SOAP request in step 3 returns with HTTP 500, FeedDemon will display a different error if the <faultstring> indicates that the problem is due to the SOAP action header being stripped (seen with some proxy servers).

Specific Areas of Connection Problems

Activation Wizard

The first step of the activation wizard is handled by an embedded browser which displays our site's ordering system. This step of the process may fail due to firewall or proxy configuration problems. To help with these problems, before displaying the embedded browser, FeedDemon first performs a HEAD request on www.newsgator.com. If that fails, it will ask the user to perform the connection test.

The second step of the wizard involves a SOAP request which activates the software. We've discovered that some poorly-designed proxy servers are stripping SOAP headers from the request, resulting in failing to activate - after the user has taken the time to fill out the wizard. Because of this, FeedDemon will also perform a quick SOAP request before displaying the embedded browser to make sure the activation call won't fail. If this request fails, FeedDemon will attempt to detect why it failed, and again ask the user to perform a connection test.

Startup

Shortly after startup, FeedDemon calls GetSubscriptionList to check for subscription changes and to find out which feeds need to be updated. This SOAP request is important, since synched feeds won't update if it fails. FeedDemon will now check whether the SOAP request failed due to HTTP 500 (server error) or HTTP 503 (service unavailable), and if so, it will provide the option to temporarily disable synchronization.

If the SOAP request returns a status code that suggests our site is unreachable, FeedDemon will now perform a quick HEAD request on a site external to newsgator.com. If the HEAD request is successful, then the problem is most likely with our server, and FeedDemon will display the same dialog that appears when the SOAP request returns 500/503. If the HEAD request fails, the problem is most likely not with our site but instead due to a misconfigured firewall or proxy server.

Disabling Synchronization

As stated above, when FeedDemon encounters a connection problem that appears to be due to our site rather than a firewall or proxy issue, it will now provide the option to temporarily disable synchronization so that feeds in synched folders are retrieved from their source rather than through NewsGator Online. If the user chooses to disable sync, an icon will appear at the bottom left of FeedDemon’s status bar.

The same red circle that appears on this icon will also appear at the top right of synched folders when sync is disabled.

Potential Problems when Synchronization is Disabled

Problem: Posts retrieved while sync was enabled will have ng:ids but won’t be marked read in NGO when sync is disabled.

Solution: Continue to cache these posts and synchronize their state once sync is restored.

Problem: Posts retrieved while sync is disabled won’t have ng:ids, and won’t be marked read in NGO when sync is re-enabled.

Solution: When new posts in synched feeds are retrieved, look for existing posts that don’t have ng:ids, and attempt to match them with the new posts that do have ng:ids. If a match is found and the existing post has been marked read, set the ng:id for the existing post then sync its read state with NGO.

Problem: User may attempt to re-enable sync when connection is still unavailable.

Solution: Before re-enabling sync, perform HEAD request on newsgator.com to make sure FeedDemon can reach our site. If this fails, let user know and ask whether to perform connectivity test.

Problem: Adding, deleting, moving or renaming synched feeds/folders will fail while sync is disabled.

Solution: If sync is disabled and the user performs an action that require sync, ask whether to re-enable sync and only perform action if sync could be re-enabled.

Problem: FeedDemon would treat a very brief outage exactly the same as one that lasted longer.

Solution: Don't treat a failed connection as a problem until the second time it happens.

Problem: User may leave sync disabled, even after the server is back online.

Solution: At every scheduled update after synchronization has been disabled, FeedDemon will check whether our server is available, and if so it will automatically re-enable synchronization.