Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java	(revision 32021)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java	(revision 32022)
@@ -28,6 +28,6 @@
     protected String baseUrl;
     protected String id;
-    private final Map<String, String> noTileHeaders;
-    private final Map<String, String> noTileChecksums;
+    private final Map<String, List<String> > noTileHeaders;
+    private final Map<String, List<String> > noTileChecksums;
     private final Map<String, String> metadataHeaders;
     protected int tileSize;
@@ -212,10 +212,12 @@
     public boolean isNoTileAtZoom(Map<String, List<String>> headers, int statusCode, byte[] content) {
         if (noTileHeaders != null && headers != null) {
-            for (Entry<String, String> searchEntry: noTileHeaders.entrySet()) {
+            for (Entry<String, List<String>> searchEntry: noTileHeaders.entrySet()) {
                 List<String> headerVals = headers.get(searchEntry.getKey());
                 if (headerVals != null) {
                     for (String headerValue: headerVals) {
-                        if (headerValue.matches(searchEntry.getValue())) {
-                            return true;
+                        for (String val: searchEntry.getValue()) {
+                            if (headerValue.matches(val)) {
+                                return true;
+                            }
                         }
                     }
@@ -224,5 +226,5 @@
         }
         if (noTileChecksums != null) {
-            for (Entry<String, String> searchEntry: noTileChecksums.entrySet()) {
+            for (Entry<String, List<String>> searchEntry: noTileChecksums.entrySet()) {
                 MessageDigest md = null;
                 try {
@@ -242,6 +244,8 @@
                     hexChars[j++] = (char)(vn + (vn >= 10 ? 'a'-10 : '0'));
                 }
-                if (new String(hexChars).equalsIgnoreCase(searchEntry.getValue())) {
-                    return true;
+                for (String val: searchEntry.getValue()) {
+                    if (new String(hexChars).equalsIgnoreCase(val)) {
+                        return true;
+                    }
                 }
             }
Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/TileSourceInfo.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/TileSourceInfo.java	(revision 32021)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/TileSourceInfo.java	(revision 32022)
@@ -2,4 +2,5 @@
 package org.openstreetmap.gui.jmapviewer.tilesources;
 
+import java.util.List;
 import java.util.Map;
 
@@ -22,8 +23,8 @@
 
     /** headers meaning, that there is no tile at this zoom level */
-    protected Map<String, String> noTileHeaders;
+    protected Map<String, List<String>> noTileHeaders;
 
     /** checksum of empty tiles */
-    protected Map<String, String> noTileChecksums;
+    protected Map<String, List<String>> noTileChecksums;
 
     /** minimum zoom level supported by the tile source */
@@ -99,6 +100,7 @@
      * Request header information for empty tiles for servers delivering such tile types
      * @return map of headers, that when set, means that this is "no tile at this zoom level" situation
+     * @since 32022
      */
-    public Map<String, String> getNoTileHeaders() {
+    public Map<String, List<String>> getNoTileHeaders() {
         return noTileHeaders;
     }
@@ -107,7 +109,7 @@
      * Checkusm for empty tiles for servers delivering such tile types
      * @return map of checksums, that when detected, means that this is "no tile at this zoom level" situation
-     * @since 32021
+     * @since 32022
      */
-    public Map<String, String> getNoTileChecksums() {
+    public Map<String, List<String>> getNoTileChecksums() {
         return noTileChecksums;
     }
