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

 """
 Because adjacent mappings for certain NAT types can
 be stolen by other connections, the purpose of this
 function is to ensure the last connection by a passive
 simultaneous node is recent compared to the time for
 a candidate to increase the chance that the precited
 mappings remain active for the TCP hole punching
 attempt.
 """


        for candidate in self.factory.candidates[node_ip]:
            # Only if candidate is connected.
            if not candidate["con"].connected:
                continue

            # Synchronise simultaneous node.
            if candidate["time"] -\
                    self.factory.nodes["simultaneous"][node_ip]["time"] >\
                    self.challege_timeout:
                msg = "RECONNECT"
                self.factory.nodes["simultaneous"][node_ip]["con"].\
                    send_line(msg)
                return

        self.cleanup_candidates(node_ip)
        self.propogate_candidates(node_ip)