Успешный ответ CONNECT не имеет тела HTTP
Завершите успешный ответ HTTP/1.1 CONNECT на границе заголовков, затем передавайте байты туннеля без chunk-разметки и без перезапуска соединения.
Успешный ответ HTTP/1.1 CONNECT завершается после своего раздела заголовков:
HTTP/1.1 200 Connection Established
После этой границы туннель несёт то же соединение. Для HTTPS-назначения следующие байты клиента обычно начинают обмен TLS с назначением.
Прокси не должен добавлять Transfer-Encoding или Content-Length к успешному ответу CONNECT. Тела ответа HTTP, которое надо было бы делить на chunk, нет. Добавление пустого завершающего chunk, наоборот, внедрило бы байты в новый туннель.
У клиента тоже есть требование: он должен игнорировать эти поля разметки, если они появятся в ответе CONNECT класса 2xx. Поэтому некорректный отправитель — не повод описывать каждого соответствующего требованиям клиента как ожидающего разделённое тело.
Держите установленное соединение открытым для передачи. Закрытие после 200 разрушает туннель; открытие другого соединения не является продолжением принятого запроса CONNECT.
Неуспешный ответ CONNECT обрабатывается иначе и может нести обычное тело ошибки HTTP. Отделяйте этот ответ от успешной передачи, когда реализуете или читаете трассировку прокси.