Сачувајте баферисане податке након одговора HTTP CONNECT
Избегните заглављено руковање HTTP CONNECT проналажењем границе заглавља одговора и чувањем бајтова који стижу после ње.
Мали прокси омотач може радити за HTTPS, а затим се заглавити када се поново употреби за протокол чији сервер говори први. Сумњива линија је обично она која чека да бафер за пријем заврши са \r\n\r\n.
TCP даје клијенту ток. Један позив за пријем може вратити половину HTTP линије стања, потпун CONNECT одговор или тај одговор одмах праћен тунелским подацима. Нема гаранције да се читање зауставља на крају заглавља.
Пронађите границу унутар бафера
За HTTP/1.1 CONNECT размену, сакупљајте бајтове док се завршетак заглавља не појави било где у баферу. Поделите на његовом првом појављивању. Рашчланите линију стања и заглавља из првог дела; све после границе сачувајте одвојено. Примените ограничење величине заглавља и временско ограничење током чекања, а празно читање сокета третирајте као затворену везу, а не као још један позив на петљу.
Коначни успешни 2xx одговор пребацује везу у тунелски режим одмах после тих заглавља. Бајтови који следе већ су тунелски бајтови. Немојте их одбацити, немојте чекати тело CONNECT одговора и немојте поље Content-Length тумачити као дозволу да се потроши део новог протокола. Информативни одговори, ако постоје, морају се обрадити пре тог коначног одговора.
Омотач мора да пренесе своје остатке
Враћање само основног сокета губи бајтове које је рашчлањивач руковања већ извукао из њега. Следећем читачу потребан је баферисан ток који прво даје сачувани реп, а затим наставља читања са сокета. За протокол у којем сервер говори први, губитак тог почетног поздрава може оставити обе стране да чекају бесконачно.
Обрнуто, бајтови из неуспелог CONNECT одговора нису тунелски поздрав. 407 и даље припада прокси размени и захтева обраду аутентикације; други неуспешан статус захтева одговарајућу путању грешке.
Ово је посебно важно при прилагођавању FTP или SSH клијента кроз HTTP прокси. Прокси такође мора дозволити тражени одредишни порт, а FTP може захтевати додатне податковне везе. Исправно рашчлањивање заглавља решава пренос тока; оно не може одобрити CONNECT нити обезбедити други канал FTP-а.