Index: src/org/openstreetmap/josm/data/validation/tests/Highways.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/Highways.java	(revision 16386)
+++ src/org/openstreetmap/josm/data/validation/tests/Highways.java	(working copy)
@@ -160,8 +160,7 @@
      */
     public static boolean isHighwayLinkOkay(final Way way) {
         final String highway = way.get(HIGHWAY);
-        if (highway == null || !highway.endsWith("_link")
-                || !IN_DOWNLOADED_AREA.test(way.getNode(0)) || !IN_DOWNLOADED_AREA.test(way.getNode(way.getNodesCount()-1))) {
+        if (highway == null || !highway.endsWith("_link")) {
             return true;
         }
 
@@ -192,7 +191,7 @@
             }
         }
         // Link roads should always at least one adjacent segment of same class
-        return !sameClass.isEmpty();
+        return !sameClass.isEmpty() || !IN_DOWNLOADED_AREA_STRICT.test(way.getNode(0)) || !IN_DOWNLOADED_AREA_STRICT.test(way.lastNode());
     }
 
     private void testHighwayLink(final Way way) {
Index: test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.java	(revision 16386)
+++ test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.java	(working copy)
@@ -13,6 +13,8 @@
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -33,7 +35,7 @@
         JOSMFixture.createUnitTestFixture().init();
     }
 
-    private static Way createTestSetting(String highway, String highwayLink) {
+    private static Way createTestSetting(String highway, String highwayLink, boolean withArea) {
         DataSet ds = new DataSet();
 
         Node n00 = new Node(LatLon.ZERO);
@@ -68,7 +70,9 @@
         ds.addPrimitive(major);
         ds.addPrimitive(link);
         ds.addPrimitive(unclassified);
-
+        if (withArea) {
+            ds.addDataSource(new DataSource(new Bounds(-90, -180, 90, 180), "Everywhere"));
+        }
         return link;
     }
 
@@ -77,12 +81,14 @@
      */
     @Test
     public void testCombinations() {
-        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary_link")));
-        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary")));
-        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("primary", "secondary_link")));
-        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link")));
-        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "tertiary_link")));
-        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("residential", "residential")));
+        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary_link", true)));
+        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary", true)));
+        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("primary", "secondary_link", true)));
+        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link", true)));
+        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "tertiary_link", true)));
+        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("residential", "residential", true)));
+        // link to high: don't warn when no download area
+        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link", false)));
     }
 
     /**
@@ -90,7 +96,7 @@
      */
     @Test
     public void testSourceMaxSpeedUnitedKingdom() {
-        Way link = createTestSetting("primary", "primary");
+        Way link = createTestSetting("primary", "primary", false);
         link.put("maxspeed", "60 mph");
         link.put("source:maxspeed", "UK:nsl_single");
         Highways test = new Highways();
