For some reason UT 402 started locking up on both our Win98 systems randomly during server refresh. Usually it requires a hard boot. It started just a couple weeks ago without ever occuring during over a month of online play. I have gone over my network (Server ran NT4, now 98, with WinGate 3.02) with the proverbial fine tooth comb and even replaced the network switch, to no avail. I wrote a dummy server pinger in VC++ 6 that downloads the list from the master server and gets the \info\ and \status\ packets from each server and logs everything, hoping to find bad/damaged packets or perhaps a malicious server, but everything checked out okay. I also dug deep into the UBrowser classes and tweaked and fiddled with packet processing routines and UDP pinger port binding scheme and had no luck. I am still open to the possibility that there is something funny with our network but I think the ideal solution would be to adapt UT around it to make it more robust in varying networking environments. I suspect it is probably some kind of blocking call, rather than a loop, because the music plays normally and since the game runs perfectly if you skip the Server Browser and use Open Location. I have tried 400, 402, and 405B all without CD-check patches and they all do it, even with a fresh install.
I have talked to one other user who has a similar problem running 402 on non-networked system (dialup) but apparently this problem is rare. I already sent a nice long email to GM, so if anyone else has any advice please send it!
I have discovered that the problem is most definately blocking of some kind. If I terminate the WinGate session of the UT execution after UT freezes (closing the sockets) then UT resumes right where it left off as if nothing happened. I am currently trying to determine exactly what it is that is blocking...