While the server is trying to register, it should be queueing up the heartbeat packet until it gets a token message
21:07
When it gets the token message, it should go through the queue, find the packets that have their destination set to the addr that sent it, and send the packets
21:09
Where i'd add my dbg_msgs would be after network_token.cpp:L264 see if there is anything in the queue, if there isn't anything, then I'd start looking at CNetTokenCache::SendPacketConnless see whether it's even queueing these up properly
21:15
If it's getting queued up properly but it's gone by the time we get the token message, a watchpoint would be useful