after a fork, any existing connection objects can no longer be used,
but it's up to the user to destroy them. internally, this prevents
existing connections from ever being returned as valid connections
and creates new ones after a fork
also destroy fd handlers for connections to ensure that no data is
accidentally clobbered before the connections are cleaned up