Letha i-CONNECT buffer ye-Beast kwi-handshake ye-TLS
Dlulisa ama-byte asele ngemva kwempendulo ye-CONNECT ku-handshake ye-TLS ene-buffer ye-Asio, bese usebenzisa ngqo inani elilusebenzisile.
Ngemva kokuba i-Beast ifunde isihloko sempendulo ye-CONNECT yeproksi, hlola kokubili isimo sempendulo kanye ne-buffer esebenzayo. Umsebenzi wokufunda ungathatha ama-byte angaphezu kokuphela kwesihloko futhi uwagcine ku-buffer enikeziwe. Uma uqala i-TLS nge-overload efunda isokhethi kuphela, lawo ma-byte agciniwe ahlala ngaphandle komzila wokufaka we-TLS.
Kumfudlana we-WebSocket ocingo olulandelayo okuwumfudlana we-SSL, sebenzisa i-overload ye-handshake ene-buffer. Kusekhono yield_context esivele sikhona, ugcina buffer iphilile kuyo yonke imisebenzi:
http::response_parser<http::empty_body> response;
http::async_read_header(
beast::get_lowest_layer(ws), buffer, response, yield[ec]);
if (ec) return;
auto status = response.get().result_int();
if (status < 200 || status >= 300) return;
std::size_t used = ws.next_layer().async_handshake(
ssl::stream_base::client, buffer.data(), yield[ec]);
if (ec) return;
buffer.consume(used);
Ukubuya kokuqala kuyiziphumlisi zokwehluleka kwesekhono; hlanganisa lapho ukubikwa kwamaphutha okujwayelekile nokuhlanza. Ukuphendula kwe-CONNECT okuphumelelayo kuphela okusungula umhubhe. Ikhasi lokunqaba akumele libe ukufaka kwe-TLS.
I-overload ene-buffer iphetha ngekhodi yephutha nenani lama-byte. Lelo nani lichaza ukuthi isebenzise ama-byte angaki kuma-buffer anikeziwe. Ngemva kokuqedwa, susa ngqo leso siqalo nge-consume(used). Ungasuli i-buffer ngaphambi kokuba umsebenzi uqale, ungashintshi isitoreji sayo ngenkathi i-handshake ilindile, futhi ungacabangi ukuthi umsebenzi usebenzise wonke ama-byte anikeziwe.
Ku-TLS evamile eqalwa iklayenti ngokushesha ngemva kwe-CONNECT, i-buffer ingase ibe ngenalutho. I-overload iphatha naleso simo. Inhloso yayo ukugcina imingcele yomfudlana; ayenzi noma iyiphi idatha yeproksi eyengeziwe ibe yi-TLS evumelekile. Gcina ukuqinisekiswa kwegama lomsingathi wendawo ekuyiwa kuyo kanye nokulungiselelwa kwe-SNI kusendlalelo se-SSL ngaphambi kwe-handshake, futhi qala ukuthuthukiswa kwe-WebSocket kuphela ngemva kokuphumelela kwe-TLS.