The server seems to have a main component plus a separate component that talks to each client. (I'm not sure what to call these components -- they're almost like separate threads, except they all run in a single thread.) If one of these components crashes, it doesn't bring down the rest of them. When it's one client's component, this usually isn't a problem (though it might leave something in an inconsistent state...) because all the other clients can just keep on going as if nothing went wrong. But if the crash happens in the main component, then none of the clients get disconnected until they actually try to talk to the server and their components realize that there's nothing left of the main server to talk to. This makes it a little hard to that the server has actually crashed.
I propose that all server crashes should bring the whole thing down, to help motivate us to actually fix them :)
The server seems to have a main component plus a separate component that talks to each client. (I'm not sure what to call these components -- they're almost like separate threads, except they all run in a single thread.) If one of these components crashes, it doesn't bring down the rest of them. When it's one client's component, this usually isn't a problem (though it might leave something in an inconsistent state...) because all the other clients can just keep on going as if nothing went wrong. But if the crash happens in the main component, then none of the clients get disconnected until they actually try to talk to the server and their components realize that there's nothing left of the main server to talk to. This makes it a little hard to that the server has actually crashed.
I propose that all server crashes should bring the whole thing down, to help motivate us to actually fix them :)