* @return the new state, or {@code null} if the state is unchanged
      */
     public State process(Forward msg) {
+        if(!getHost().equals(msg.getChannel())) {
+            logger.info("discard Forward message to {} from {} on topic {}", msg.getChannel(), msg.getSource(), getTopic());
+            return null;
+        }
+        
         logger.info("received Forward message from {} on topic {}", msg.getSource(), getTopic());
         mgr.handle(msg);
         return null;
 
     @Test
     public void testProcessForward() {
         Forward msg = new Forward();
+        msg.setChannel(MY_HOST);
         assertNull(state.process(msg));
 
         verify(mgr).handle(msg);
 
 
     @Test
     public void testProcessForward() {
-        assertNull(state.process(new Forward()));
+        Forward msg = new Forward();
+        msg.setChannel(MY_HOST);
+        assertNull(state.process(msg));
+
+        verify(mgr).handle(msg);
     }
 
     @Test
 
         Forward msg = new Forward();
         assertNull(state.process(msg));
 
+        verify(mgr, never()).handle(msg);
+
+        msg.setChannel(MY_HOST);
+        assertNull(state.process(msg));
+
         verify(mgr).handle(msg);
     }