summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-10-18 14:44:04 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-10-18 14:44:04 +0200
commit9da9b2e11855c66a19ff6a5e1ef5c7d249646759 (patch)
tree5423fcc3ae6af81470c20028dc86c99b671b8d54
parent1456fc7c9a42992c2a601dffd26e251ebab99c3f (diff)
Tls Client works again
-rw-r--r--modules/io-tls/examples/tls_client.cpp29
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();
}