socket cleanup on early disconnect is tricky