diff --git a/lib/master.pike.in b/lib/master.pike.in
index a2bf00fa2256a284de9415c5c9df802fadb38cea..f05c9cc7e0d3c2cdf40bab222ee4ea8eda49b630 100644
--- a/lib/master.pike.in
+++ b/lib/master.pike.in
@@ -5236,7 +5236,13 @@ class Encoder
 	  break compare;
 	}
 
-	if (resolved->is_resolv_dirnode)
+	if ((resolved->is_resolv_joinnode) &&
+	    (sizeof(resolved->joined_modules) == 1)) {
+	  ENC_MSG("  compare_resolved: %O is a single element joinnode.\n",
+		  resolved);
+	  resolved = resolved->joined_modules[0];
+	}
+	if (resolved->is_resolv_dirnode) {
 	  if (resolved->module == what) {
 	    ENC_MSG ("  compare_resolved: %O is dirnode module of %O\n", what, resolved);
 	    append = ({'m'});
@@ -5252,7 +5258,7 @@ class Encoder
 	  else
 	    ENC_MSG ("  compare_resolved: %O is different from dirnode module %O\n",
 		     what, resolved->module);
-
+	}
 #if 0
 	// This is only safe if the joinnode modules don't conflict,
 	// and we don't know that.
@@ -5267,6 +5273,8 @@ class Encoder
 	    }
 	}
 #endif
+      } else {
+	ENC_MSG("  compare_resolved: %O is not an object.\n", resolved);
       }
 
       ENC_MSG ("  compare_resolved: %O is different from %O\n", what, resolved);