Zep, While I do understand the need for consistency, we have our both forever.log s which show the proxy creation side of FAF. Then we do have both our GW game logs and my custom game log (you can infer deering's custom game log from mine, seeing as the connection worked in the usual way). We do not need any more information.
For the following information 'Peer' is Deering and Host is 'Eximius' (c'est moi):
This is the series of events that leads to the failure of the proxy:
<events>
FA is started
1. The server tells the host to connect to the Peer after some Nat Packet ping pong between the peer and the host. The Host tries to, but cannot connect due to the udp packets not getting through the peer's router. //GPG ConnectToPeer
2. The server tells the peer to connect through proxy to host. As we can deduce from the logs, the connection is rejected, because the peer is already connected in a non-proxy mode (even though the connection is one-way as udp packets don't go through Peer's router.). // JoinGame
3. The server tells the host to drop the connection to peer's regular port. // DisconnectFromPeer
4. The server tells the host to connect to peer through proxy. //GPG ConnectToPeer
</events>
Now, it seems very likely that FA has added the address and port of peer to a blacklist when it rejected the faulty connect (127.0.0.1:12001). Which means that it cannot get any data from the Peer. No connection.
Why does this faulty series of events happen? Well, the sequence in which the server talks to the clients is (with relative time stamps):
00:00 | ConnectToPeer -> Host
00:01~ | JoinGame (proxy) -> Peer
00:02.5 | DisconnectFromPeer -> Host
00:02.5 | ConnectToPeer (proxy) -> Host
It is elementary my dear Watson.
Welcome to the wonderful world of race conditions. We hope you had enjoying << hello >> your stay.
This explains why Deering has this problem a lot and seemingly at random.
Why Deering? Because he is 'Stralian and there is a massive lag between FAF <-> Deering, Deering <-> Me
There is a useless(?) ConnectToPeer/DisconnectFromPeer trial, when the server should know that the packets do not ping pong between the game players. (Plus it seems to have a period of 2.5s? (2.0s maybe?))
Possible fixes:
Remove ConnectToPeer/DisconnectFromPeer trial before proxy.