Fix retransmit

completely reworked the retransmission guard 
I've only briefly tested this and it seems to work, but more testing is needed