Index: trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java	(revision 9413)
+++ trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java	(revision 9414)
@@ -63,5 +63,9 @@
     }
 
-    public void load() {
+    /**
+     * Loads the custom as well as default imagery entries.
+     * @param fastFail whether opening HTTP connections should fail fast, see {@link ImageryReader#setFastFail(boolean)}
+     */
+     public void load(boolean fastFail) {
         clear();
         List<ImageryPreferenceEntry> entries = Main.pref.getListOfStructs("imagery.entries", null, ImageryPreferenceEntry.class);
@@ -77,5 +81,5 @@
             Collections.sort(layers);
         }
-        loadDefaults(false, true);
+        loadDefaults(false, true, fastFail);
     }
 
@@ -89,12 +93,13 @@
      * @param clearCache if true, clear the cache and start a fresh download.
      * @param quiet whether not the loading should be performed using a {@link PleaseWaitRunnable} in the background
-     */
-    public void loadDefaults(boolean clearCache, boolean quiet) {
-        final DefaultEntryLoader loader = new DefaultEntryLoader(clearCache);
+     * @param fastFail whether opening HTTP connections should fail fast, see {@link ImageryReader#setFastFail(boolean)}
+     */
+    public void loadDefaults(boolean clearCache, boolean quiet, boolean fastFail) {
+        final DefaultEntryLoader loader = new DefaultEntryLoader(clearCache, fastFail);
         if (quiet) {
             loader.realRun();
             loader.finish();
         } else {
-            Main.worker.execute(new DefaultEntryLoader(clearCache));
+            Main.worker.execute(new DefaultEntryLoader(clearCache, fastFail));
         }
     }
@@ -106,11 +111,13 @@
 
         private final boolean clearCache;
+        private final boolean fastFail;
         private final List<ImageryInfo> newLayers = new ArrayList<>();
         private transient ImageryReader reader;
         private transient boolean canceled;
 
-        DefaultEntryLoader(boolean clearCache) {
+        DefaultEntryLoader(boolean clearCache, boolean fastFail) {
             super(tr("Update default entries"));
             this.clearCache = clearCache;
+            this.fastFail = fastFail;
         }
 
@@ -144,4 +151,5 @@
             try {
                 reader = new ImageryReader(source);
+                reader.setFastFail(fastFail);
                 Collection<ImageryInfo> result = reader.parse();
                 newLayers.addAll(result);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 9413)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 9414)
@@ -156,5 +156,5 @@
         layerInfo.save();
         ImageryLayerInfo.instance.clear();
-        ImageryLayerInfo.instance.load();
+        ImageryLayerInfo.instance.load(false);
         Main.main.menu.imageryMenu.refreshOffsetMenu();
         OffsetBookmark.saveBookmarks();
@@ -642,5 +642,5 @@
             @Override
             public void actionPerformed(ActionEvent evt) {
-                layerInfo.loadDefaults(true, false);
+                layerInfo.loadDefaults(true, false, false);
                 defaultModel.fireTableDataChanged();
                 defaultTable.getSelectionModel().clearSelection();
@@ -946,5 +946,5 @@
      */
     public static void initialize() {
-        ImageryLayerInfo.instance.load();
+        ImageryLayerInfo.instance.load(true);
         OffsetBookmark.loadBookmarks();
         Main.main.menu.imageryMenu.refreshImageryMenu();
Index: trunk/src/org/openstreetmap/josm/io/CachedFile.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/CachedFile.java	(revision 9413)
+++ trunk/src/org/openstreetmap/josm/io/CachedFile.java	(revision 9414)
@@ -69,4 +69,5 @@
     protected CachingStrategy cachingStrategy;
 
+    private transient boolean fastFail;
     private transient HttpClient activeConnection;
     protected File cacheFile;
@@ -159,4 +160,13 @@
         this.httpHeaders.putAll(headers);
         return this;
+    }
+
+    /**
+     * Sets whether opening HTTP connections should fail fast, i.e., whether a
+     * {@link HttpClient#setConnectTimeout(int) low connect timeout} should be used.
+     * @param fastFail whether opening HTTP connections should fail fast
+     */
+    public void setFastFail(boolean fastFail) {
+        this.fastFail = fastFail;
     }
 
@@ -433,4 +443,7 @@
                     .setIfModifiedSince(ifModifiedSince == null ? 0L : ifModifiedSince)
                     .setHeaders(httpHeaders);
+            if (fastFail) {
+                activeConnection.setReadTimeout(1000);
+            }
             final HttpClient.Response con = activeConnection.connect();
             if (ifModifiedSince != null && con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
Index: trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 9413)
+++ trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 9414)
@@ -21,5 +21,5 @@
 import org.openstreetmap.josm.data.imagery.Shape;
 import org.openstreetmap.josm.io.CachedFile;
-import org.openstreetmap.josm.io.UTFInputStreamReader;
+import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.Utils;
@@ -33,4 +33,5 @@
     private final String source;
     private transient CachedFile cachedFile;
+    private transient boolean fastFail;
 
     private enum State {
@@ -56,4 +57,5 @@
         try {
             cachedFile = new CachedFile(source);
+            cachedFile.setFastFail(fastFail);
             try (BufferedReader in = cachedFile
                     .setMaxAge(CachedFile.DAYS)
@@ -359,4 +361,14 @@
     }
 
+    /**
+     * Sets whether opening HTTP connections should fail fast, i.e., whether a
+     * {@link HttpClient#setConnectTimeout(int) low connect timeout} should be used.
+     * @param fastFail whether opening HTTP connections should fail fast
+     * @see CachedFile#setFastFail(boolean)
+     */
+    public void setFastFail(boolean fastFail) {
+        this.fastFail = fastFail;
+    }
+
     @Override
     public void close() throws IOException {
