1. joinGame() @ bzflag/guiplaying.cxx:485 * sets: joinRequested = true 2. handlePendingJoins() @ clientbase/playing.cxx:402 (from playingLoop()) - checks for (joinRequested == true) - sets: joinRequested = false * sets: waitingDNS = true 3. dnsDoneLookup() @ clientbase/playing.cxx:477 (from playingLoop()) - checks for (waitingDNS == true) - sets: waitingDNS = false * returns true if the lookup is successful, which causes joinInternetGame() to be called 4. joinInternetGame() @ clientbase/playing.cxx:269 - creates the serverLink - calls serverLink->sendVarRequest() - calls serverLink->sendUDPlinkRequest() * calls sendFlagNegotiation() - sets: joiningGame = true 5. handleFlagNegotiation() @ clientbase/playing.cxx:1223 * calls serverLink->send(MsgWantSettings, 0, NULL); 6. handleGameSettings() @ clientbase/playing.cxx:1244 * calls serverLink->send(MsgWantWHash, 0, NULL); 7. handleWantHash() @ clientbase/playing.cxx:1263 * calls WorldDownloader::start() 8. WorldDownLoader::loadCached() @ clientbase/WorldDownLoader.cxx:268 * calls Downloads::instance().startDownloads() 9. checkForCompleteDownloads() @ bzflag/guiplaying.cxx:5663 - checks Downloads::instance().requestFinalized() * return true if downloads are done, which causes joinInternetGame2() to be called 10. joinInternetGame2() @ bzflag/guiplaying.cxx:3909 (from playingLoop())