When we implement pro-active route maintenance in DSR, every  node maintains a table containing its active source node, previous hop node and the packet reception time, so it will not repeat sending Route Error message. When a node receives a unicast packet from its neighbor, it will check if the prediction time is less than critical time. If it is, it will send a Route Error message and put the node address and reception time in the table. Because the salvage mechanism in DSR, a node is allowed to send 3 error messages for the same bad link (and the same source) so the source node can be informed.

When the source receive the error message and can not find an alternative route in its route cache, it will initiate a Route Request. When the node receives a Route Request from a bad link, it just ignore it and does not reply. Otherwise the bad link may be on the new route route again.

Finally, because the two nodes over the bad link may move closer some time later, a timout is used to remove the entry in the table. So they may become neighbor in a new route again.