<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def propogate_candidates(self, node_ip):

 """
 Used to progate new candidates to passive simultaneous
 nodes.
 """


        if node_ip in self.factory.candidates:
            old_candidates = []
            for candidate in self.factory.candidates[node_ip]:
                # Not connected.
                if not candidate["con"].connected:
                    continue

                # Already sent -- updated when they accept this challenge.
                if candidate["propogated"]:
                    continue

                # Notify node of challege from client.
                msg = "CHALLENGE %s %s %s" % (
                    candidate["ip_addr"],
                    " ".join(map(str, candidate["predictions"])),
                    candidate["proto"])

                self.factory.nodes["simultaneous"][node_ip]["con"].\
                    send_line(msg)
                old_candidates.append(candidate)