Փոքր proxy-փաթաթան կարող է աշխատել HTTPS-ի համար և հետո կախվել, երբ կրկին օգտագործվում է այնպիսի արձանագրության համար, որի սերվերը խոսում է առաջինը։ Կասկածելի տողը հաճախ այն է, որը սպասում է, որ ընդունման բուֆերը \r\n\r\n-ով ավարտվի։

TCP-ն հաճախորդին տալիս է հոսք։ Ընդունման մեկ կանչը կարող է վերադարձնել HTTP կարգավիճակի տողի կեսը, ամբողջական CONNECT պատասխան, կամ այդ պատասխանը՝ անմիջապես հետևող թունելի տվյալներով։ Երաշխիք չկա, որ ընթերցումը կանգ կառնի վերնագրերի վերջում։

Գտնել սահմանը բուֆերի ներսում

HTTP/1.1 CONNECT փոխանակման համար կուտակեք բայթերը, մինչև վերնագրերի ավարտիչը հայտնվի բուֆերի ցանկացած տեղում։ Բաժանեք նրա առաջին հանդիպման տեղում։ Վերլուծեք կարգավիճակի տողը և վերնագրերը առաջին մասից. սահմանից հետո ամեն ինչ պահեք առանձին։ Սպասելիս կիրառեք վերնագրերի չափի սահմանաչափ և ժամանակային սահման, իսկ դատարկ socket-ընթերցումը դիտեք որպես փակ միացում, ոչ թե հանգույցի նոր հրավեր։

Վերջնական հաջող 2xx պատասխանը միացումը թունելի ռեժիմի է տեղափոխում այդ վերնագրերից անմիջապես հետո։ Դրան հաջորդող բայթերն արդեն թունելի բայթեր են։ Մի՛ հրաժարվեք դրանք, մի՛ սպասեք CONNECT պատասխանի մարմնին, և Content-Length դաշտը մի՛ մեկնաբանեք որպես նոր արձանագրության մի մասը սպառելու թույլտվություն։ Տեղեկատվական պատասխանները, եթե կան, պետք է մշակվեն այդ վերջնական պատասխանից առաջ։

Փաթաթան պետք է փոխանցի իր մնացորդները

Միայն հիմնական socket-ը վերադարձնելը կորցնում է այն բայթերը, որոնք ձեռքսեղմման վերլուծիչն արդեն դուրս է քաշել դրանից։ Հաջորդ ընթերցողին անհրաժեշտ է բուֆերացված հոսք, որը սկզբում տալիս է պահված պոչը, ապա շարունակում socket-ընթերցումները։ Սերվեր-առաջին արձանագրության դեպքում այդ սկզբնական ողջույնը կորցնելը կարող է երկու կողմերին անվերջ սպասել թողնել։

Ընդհակառակը, ձախողված CONNECT պատասխանի բայթերը թունելի ողջույն չեն։ 407-ը դեռ պատկանում է proxy փոխանակմանը և պահանջում է նույնականացման մշակում. մեկ այլ անհաջող կարգավիճակ պահանջում է համապատասխան սխալի ուղի։

Սա հատկապես կարևոր է FTP կամ SSH հաճախորդը HTTP proxy-ի միջոցով հարմարեցնելիս։ Proxy-ն նաև պետք է թույլատրի պահանջված նպատակակետ նավահանգիստը, և FTP-ն կարող է լրացուցիչ տվյալների միացումներ պահանջել։ Վերնագրերի ճիշտ վերլուծությունը լուծում է հոսքի փոխանցումը. այն չի կարող տալ CONNECT թույլտվություն կամ ապահովել FTP-ի երկրորդ ալիքը։

Առնչվող հոդվածներ