Kichik proksi o'rami HTTPS uchun ishlashi, so'ng serveri birinchi bo'lib gapiradigan protokol uchun qayta ishlatilganda osilib qolishi mumkin. Shubhali satr ko'pincha qabul buferi \r\n\r\n bilan tugashini kutayotgan satrdir.

TCP mijozga oqim beradi. Bitta qabul chaqiruvi HTTP holat satrining yarmini, to'liq CONNECT javobini yoki shu javobdan keyin darhol tunnel ma'lumotlarini qaytarishi mumkin. O'qish sarlavhalar oxirida to'xtaydi degan kafolat yo'q.

Chegarani bufer ichidan toping

HTTP/1.1 CONNECT almashinuvi uchun sarlavha tugatgichi buferning istalgan joyida paydo bo'lguncha baytlarni to'plang. Uning birinchi paydo bo'lgan joyida ajrating. Holat satri va sarlavhalarni birinchi qismdan tahlil qiling; chegaradan keyingi hamma narsani alohida saqlang. Kutish paytida sarlavha hajmi chegarasi va vaqt chegarasini qo'llang, bo'sh socket o'qishini esa tsiklga yangi taklif emas, yopilgan ulanish deb hisoblang.

Yakuniy muvaffaqiyatli 2xx javobi ulanishni shu sarlavhalardan keyin darhol tunnel rejimiga o'tkazadi. Undan keyingi baytlar allaqachon tunnel baytlari. Ularni tashlamang, CONNECT javob tanasini kutmang va Content-Length maydonini yangi protokolning bir qismini iste'mol qilish ruxsati deb talqin qilmang. Axborot javoblari bo'lsa, ular shu yakuniy javobdan oldin ko'rib chiqilishi kerak.

O'ram o'z qoldiqlarini uzatishi kerak

Faqat asosiy socketni qaytarish qo'l berishish tahlilchisi undan allaqachon olib chiqqan baytlarni yo'qotadi. Keyingi o'quvchiga avval saqlangan dumini beradigan, so'ng socket o'qishni davom ettiradigan buferlangan oqim kerak. Server-birinchi protokolda o'sha boshlang'ich salomning yo'qolishi ikkala tomonni cheksiz kutishda qoldirishi mumkin.

Aksincha, muvaffaqiyatsiz CONNECT javobining baytlari tunnel salomi emas. 407 hali ham proksi almashinuviga tegishli va autentifikatsiyani ko'rib chiqishni talab qiladi; boshqa muvaffaqiyatsiz holat tegishli xato yo'lini talab qiladi.

Bu, ayniqsa, HTTP proksi orqali FTP yoki SSH mijozini moslashtirishda muhim. Proksi so'ralgan maqsad portiga ham ruxsat berishi kerak, FTP esa qo'shimcha ma'lumot ulanishlarini talab qilishi mumkin. Sarlavhalarni to'g'ri tahlil qilish oqimni uzatishni hal qiladi; u CONNECT ruxsatini bera olmaydi yoki FTPning ikkinchi kanalini ta'minlay olmaydi.

O'xshash maqolalar