క్లయింట్ స్ట్రీమ్ రిలే చేయడానికి ముందు CONNECT హెడర్లను పార్స్ చేయడం పూర్తి చేయండి
అభ్యర్థన పంక్తి తర్వాత మాత్రమే రిలే చేసే ప్రాక్సీ సర్వర్ తన Host హెడర్ను గమ్యస్థానం యొక్క TLS పోర్ట్కు పంపగలదు.
CONNECT అభ్యర్థన పంక్తి తర్వాత కూడా ఈ బైట్లు ప్రాక్సీవే:
CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\nHost లేదా User-Agent ను పోర్ట్ 443కి ఫార్వర్డ్ చేస్తే గమ్యం TLS ఆశించే చోట సాధారణ పాఠ్య హెడర్లను పొందుతుంది. ఏ సైఫర్ ఎంపిక ప్రాముఖ్యమయ్యే ముందే ఈ వైఫల్యం సంభవించవచ్చు.
- సెటప్ గడువు మరియు హెడర్-పరిమాణ పరిమితి లోపు ఖాళీ పంక్తి హెడర్ టర్మినేటర్ వరకు చదివి పార్స్ చేయండి.
- ప్రాక్సీ ప్రామాణీకరణ మరియు గమ్య విధానాన్ని వర్తించండి.
- ఆమోదించిన లక్ష్య కనెక్షన్ను ఏర్పాటు చేయండి.
- విజయవంతమైన CONNECT ప్రతిస్పందనను పంపి టన్నెల్ మోడ్లోకి ప్రవేశించండి.
సరిహద్దు తర్వాత బఫర్ చేసిన బైట్లను సరైన తదుపరి స్థితి కోసం భద్రపరచండి. వాటిని విసిరేయవద్దు లేదా ప్రాక్సీ అభ్యర్థన హెడర్లను వెబ్సైట్ తర్వాతి అభ్యర్థనగా పరిగణించవద్దు.
ప్రతిస్పందన వైపు క్లయింట్కు సమాన బాధ్యత ఉంది: టన్నెల్ చేసిన ప్రోటోకాల్ ప్రారంభించే ముందు విజయవంతమైన CONNECT ప్రతిస్పందనను చదవడం పూర్తి చేయండి. స్ట్రీమ్ పాత్రను మార్చే సరిహద్దుపై రెండు చివరలు అంగీకరించాలి.