Пишется MITM прокси сервер, c использованием NetworkStream и SslStream.
Проблема в том что NetworkStream не сигнализирует об закрытии соединения (callback или исключение).
К примеру поступил запрос "прокси сервер" обработал и ждет пока Web сервер ответит ( NetworkStream.Read ), или стоит Connection: keep-alive и надо держать соединение, или ситуация когда канал медленный и получение данных идет долго, в общем не важно идет длительная работа Web сервером через NetworkStream/SslStream. А клиентский NetworkStream закрылся (таймаут или вкладку браузера закрыли).
Вижу вариант, при обработке нового клиентского NetworkStream, запускать в отдельном потоке мониторинг за ним на предмет появления исключения при нулевой записи в поток (по рекомендации MSDN).
От сюда вопрос как из дочернего потока завершить родительский.