Index: trunk/src/org/openstreetmap/josm/command/SplitWayCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/SplitWayCommand.java	(revision 15361)
+++ trunk/src/org/openstreetmap/josm/command/SplitWayCommand.java	(revision 15362)
@@ -19,4 +19,5 @@
 import java.util.Set;
 import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
@@ -426,7 +427,6 @@
         String type = Optional.ofNullable(r.get("type")).orElse("");
         if ("from".equals(role) || "to".equals(role)) {
-            OsmPrimitive via = findVia(r, type);
             List<Node> nodes = new ArrayList<>();
-            if (via != null) {
+            for (OsmPrimitive via : findVias(r, type)) {
                 if (via instanceof Node) {
                     nodes.add((Node) via);
@@ -468,22 +468,24 @@
     }
 
-    static OsmPrimitive findVia(Relation r, String type) {
+    static List<OsmPrimitive> findVias(Relation r, String type) {
         if (type != null) {
             switch (type) {
+            case "connectivity":
             case "restriction":
-                return findRelationMember(r, "via").orElse(null);
+                return findRelationMembers(r, "via");
             case "destination_sign":
                 // Prefer intersection over sign, see #12347
-                return findRelationMember(r, "intersection").orElse(findRelationMember(r, "sign").orElse(null));
+                List<OsmPrimitive> intersections = findRelationMembers(r, "intersection");
+                return intersections.isEmpty() ? findRelationMembers(r, "sign") : intersections;
             default:
-                return null;
-            }
-        }
-        return null;
-    }
-
-    static Optional<OsmPrimitive> findRelationMember(Relation r, String role) {
+                break;
+            }
+        }
+        return Collections.emptyList();
+    }
+
+    static List<OsmPrimitive> findRelationMembers(Relation r, String role) {
         return r.getMembers().stream().filter(rmv -> role.equals(rmv.getRole()))
-                .map(RelationMember::getMember).findAny();
+                .map(RelationMember::getMember).collect(Collectors.toList());
     }
 
