session: improve disconnect handling