diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-10-18 14:44:04 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-10-18 14:44:04 +0200 |
commit | 9da9b2e11855c66a19ff6a5e1ef5c7d249646759 (patch) | |
tree | 5423fcc3ae6af81470c20028dc86c99b671b8d54 | |
parent | 1456fc7c9a42992c2a601dffd26e251ebab99c3f (diff) |
Tls Client works again
-rw-r--r-- | modules/io-tls/examples/tls_client.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/modules/io-tls/examples/tls_client.cpp b/modules/io-tls/examples/tls_client.cpp index d01e2bf..c75317b 100644 --- a/modules/io-tls/examples/tls_client.cpp +++ b/modules/io-tls/examples/tls_client.cpp @@ -33,7 +33,7 @@ saw::error_or<void> real_main(){ tls_net->connect(*tls_addr).then([&](auto tls_io_str){ tls_io = std::move(tls_io_str); std::cout<<"Connected"<<std::endl; - std::string_view get_req{"GET / HTTP/1.1"}; + std::string_view get_req{"GET / HTTP/1.1\r\nHost: keldu.de\r\nConnection: close\r\n\r\n"}; auto write_res = tls_io->write(&get_req[0], get_req.size()); std::cout<<"Sending: "<<get_req<<std::endl; @@ -44,15 +44,24 @@ saw::error_or<void> real_main(){ wait.wait_for(1000u*1000u); wait.wait_for(1000u*1000u); if(!tls_io){ - return make_error<invalid_state>("Never managed to connect"); + return make_error<err::invalid_state>("Never managed to connect"); } - { - auto read_res = tls_io->read(&buff.write(), buff.write_segment_length()); - if(read_res.is_error()){ - std::cerr<<":("<<std::endl; - return; + bool running = true; + + tls_io->on_read_disconnected().then([&running](){ + running = false; + }).detach(); + while(running){ + auto eo_read_res = tls_io->read(&buff.write(), buff.write_segment_length()); + if(eo_read_res.is_error()){ + auto& err = eo_read_res.get_error(); + if(err.is_critical()){ + std::cerr<<":("<<std::endl; + return std::move(err); + } + continue; } - auto& read_res_val = read_res.get_value(); + auto& read_res_val = eo_read_res.get_value(); buff.write_advance(read_res_val); for(uint64_t i = 0u; i < buff.read_segment_length(); ++i){ @@ -60,10 +69,8 @@ saw::error_or<void> real_main(){ } std::cout<<std::endl; + wait.wait(); } - wait.wait_for(1000u*1000u); - wait.wait_for(1000u*1000u); - wait.wait_for(1000u*1000u); return make_void(); } |