diff --git a/packages/binary/messagelayer/tangle/tangle.go b/packages/binary/messagelayer/tangle/tangle.go
index 240935094518e00300173b0535636634ecb3cb82..d6d844c03eb2432f3dcb2349c68e14e0ae62e478 100644
--- a/packages/binary/messagelayer/tangle/tangle.go
+++ b/packages/binary/messagelayer/tangle/tangle.go
@@ -218,7 +218,10 @@ func (tangle *Tangle) isMessageSolid(msg *message.Message, msgMetadata *MessageM
 		return true
 	}
 
-	return tangle.isMessageMarkedAsSolid(msg.TrunkId()) && tangle.isMessageMarkedAsSolid(msg.BranchId())
+	// as missing messages are requested in isMessageMarkedAsSolid, we want to prevent short-circuit evaluation
+	trunkSolid := tangle.isMessageMarkedAsSolid(msg.TrunkId())
+	branchSolid := tangle.isMessageMarkedAsSolid(msg.BranchId())
+	return trunkSolid && branchSolid
 }
 
 // builds up a stack from the given message and tries to solidify into the present.