Hi, everyone.
I really need some help here. I tried looking at the Boost documentation as well, but I only saw that "http::write" from Boost.Beast throws a "system_error" exception on failure. I can't figure out why it's failing or what exactly is uninitialized. I did look in the debugger and I added the SSL stream object and the request object to the watch to check their respective values.
I have this source code file: https://github.com/DragonOsman/currency_converter/blob/master/currency_conve... and this is the root_certificate.hpp file: https://github.com/DragonOsman/currency_converter/blob/master/root_certifica... . Is there anything wrong in the root certificate verification code and such in the header file?
And I'm trying to make a HTTPS GET request in the functions "cache_storage::query_rate" and "cache_storage::query_list" using those certificates through SSL context but my try-catch block in that second-mentioned function is catching a "system_error" from "http::write()". The "what" string is "Uninitialized", and from looking at the HTTP request object's value member, I noticed that it's just an empty string. I also tried to print out the request body before but got nothing from the request object in my app's console window at all (by "console" I of course mean the kind opened for Windows Console Applications). So could it be that the request object is uninitialized? I have this for that:
"
std::string host{ "bankersalgo.com" }, api_endpoint{ "/currencies_list" }, key{ currencykey };
std::string target = api_endpoint + '/' + key;
std::string port{ "443" };
int version = 11;
"
and
"
// Set up an HTTP GET request message
http::requesthttp::string_body req{ http::verb::get, target, version };
req.set(http::field::host, host);
req.set(http::field::content_type, "application/json");
req.set(http::field::accept, "application/json");
req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
//req.set(http::field::content_encoding, "gzip");
// Send the HTTP request to the remote host
http::write(stream, req);
"
The line setting the content encoding is commented out because I wanted to see what happens if I don't set the encoding to "gzip" (on bankersalgo.com, it shows that the content encoding for the HTTP response for each request endpoint is "gzip"). Also it seems the call to "http::write()" isn't necessarily failing since I do get a "200 OK" response. There's just an empty string both for the request object value and request body, and for the response body. But is it really the request object that's uninitialized? If so, why? I did add the code to set and I also did it exactly as shown in the example. It's also possible that the stream is what's uninitialized since there's a pending read and a pending write on it and both of them have empty data objects. How do I fix this stuff? Someone please help.
Full app source code is here: https://github.com/DragonOsman/currency_converter .
My entire Watch in the debugger:
"
Name Value Type
◢ ctx {handle_=0x0000024ea54ca760 {method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ...} boost::asio::ssl::context
boost::asio::ssl::context_base {...} boost::asio::ssl::context_base
boost::asio::detail::noncopyable {...} boost::asio::detail::noncopyable
◢ handle_ 0x0000024ea54ca760 {method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ssl_ctx_st *
▶ method 0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {version=65536 flags=...} const ssl_method_st *
cipher_list 0x0000024ea54882d0 {...} stack_st_SSL_CIPHER *
cipher_list_by_id 0x0000024ea5488300 {...} stack_st_SSL_CIPHER *
tls13_ciphersuites 0x0000024ea5488270 {...} stack_st_SSL_CIPHER *
◢ cert_store 0x0000024ea5488bc0 {cache=1 objs=0x0000024ea5488120 {...} get_cert_methods=0x0000024ea5488180 {...} ...} x509_store_st *
cache 1 int
objs 0x0000024ea5488120 {...} stack_st_X509_OBJECT *
get_cert_methods 0x0000024ea5488180 {...} stack_st_X509_LOOKUP *
◢ param 0x0000024ea5472420 {name=0x0000000000000000 <NULL> check_time=0 inh_flags=0 ...} X509_VERIFY_PARAM_st *
▶ name 0x0000000000000000 <NULL> char *
check_time 0 __int64
inh_flags 0 unsigned int
flags 0 unsigned long
purpose 0 int
trust 0 int
depth -1 int
auth_level -1 int
policies 0x0000000000000000 <NULL> stack_st_ASN1_OBJECT *
hosts 0x0000000000000000 <NULL> stack_st_OPENSSL_STRING *
hostflags 0 unsigned int
▶ peername 0x0000000000000000 <NULL> char *
▶ email 0x0000000000000000 <NULL> char *
emaillen 0 unsigned __int64
▶ ip 0x0000000000000000 <NULL> unsigned char *
iplen 0 unsigned __int64
verify 0x0000000000000000 int(*)(x509_store_ctx_st *)
verify_cb 0x0000000000000000 int(*)(int, x509_store_ctx_st *)
get_issuer 0x0000000000000000 int(*)(x509_st * *, x509_store_ctx_st *, x509_st *)
check_issued 0x0000000000000000 int(*)(x509_store_ctx_st *, x509_st *, x509_st *)
check_revocation 0x0000000000000000 int(*)(x509_store_ctx_st *)
get_crl 0x0000000000000000 int(*)(x509_store_ctx_st *, X509_crl_st * *, x509_st *)
check_crl 0x0000000000000000 int(*)(x509_store_ctx_st *, X509_crl_st *)
cert_crl 0x0000000000000000 int(*)(x509_store_ctx_st *, X509_crl_st *, x509_st *)
check_policy 0x0000000000000000 int(*)(x509_store_ctx_st *)
lookup_certs 0x0000000000000000 stack_st_X509 *(*)(x509_store_ctx_st *, X509_name_st *)
lookup_crls 0x0000000000000000 stack_st_X509_CRL *(*)(x509_store_ctx_st *, X509_name_st *)
cleanup 0x0000000000000000 int(*)(x509_store_ctx_st *)
▶ ex_data {sk=0x0000000000000000 <NULL> } crypto_ex_data_st
references 1 volatile int
lock 0x0000024ea5488150 void *
▶ sessions 0x0000024ea542e350 {dummy={d1=0x0000024ea5484bf0 d2=2772978672 d3=-1521988624 } } lhash_st_SSL_SESSION *
session_cache_size 20480 unsigned __int64
▶ session_cache_head 0x0000000000000000 <NULL> ssl_session_st *
▶ session_cache_tail 0x0000000000000000 <NULL> ssl_session_st *
session_cache_mode 2 unsigned int
session_timeout 7200 long
new_session_cb 0x0000000000000000 int(*)(ssl_st *, ssl_session_st *)
remove_session_cb 0x0000000000000000 void(*)(ssl_ctx_st *, ssl_session_st *)
get_session_cb 0x0000000000000000 ssl_session_st *(*)(ssl_st *, const unsigned char *, int, int *)
▶ stats {sess_connect=0 sess_connect_renegotiate=0 sess_connect_good=0 ...} <anonymous-tag>
references 3 volatile int
app_verify_callback 0x0000000000000000 int(*)(x509_store_ctx_st *, void *)
app_verify_arg 0x0000000000000000 void *
default_passwd_callback 0x0000000000000000 int(*)(char *, int, int, void *)
default_passwd_callback_userdata 0x0000000000000000 void *
client_cert_cb 0x0000000000000000 int(*)(ssl_st *, x509_st * *, evp_pkey_st * *)
app_gen_cookie_cb 0x0000000000000000 int(*)(ssl_st *, unsigned char *, unsigned int *)
app_verify_cookie_cb 0x0000000000000000 int(*)(ssl_st *, const unsigned char *, unsigned int)
gen_stateless_cookie_cb 0x0000000000000000 int(*)(ssl_st *, unsigned char *, unsigned __int64 *)
verify_stateless_cookie_cb 0x0000000000000000 int(*)(ssl_st *, const unsigned char *, unsigned __int64)
▶ ex_data {sk=0x0000000000000000 <NULL> } crypto_ex_data_st
▶ md5 0x00007ff6a3e65f00 {currency_converter.exe!evp_md_st md5_md} {type=4 pkey_type=8 md_size=16 ...} const evp_md_st *
▶ sha1 0x00007ff6a3e65fa0 {currency_converter.exe!evp_md_st sha1_md} {type=64 pkey_type=65 md_size=20 ...} const evp_md_st *
extra_certs 0x0000000000000000 <NULL> stack_st_X509 *
comp_methods 0x0000024ea542bdd0 {...} stack_st_SSL_COMP *
info_callback 0x0000000000000000 void(*)(const ssl_st *, int, int)
ca_names 0x0000024ea5488330 {...} stack_st_X509_NAME *
client_ca_names 0x0000024ea5488360 {...} stack_st_X509_NAME *
options 1179652 unsigned int
mode 4 unsigned int
min_proto_version 771 int
max_proto_version 771 int
max_cert_list 102400 unsigned __int64
▶ cert 0x0000024ea54cab50 {key=0x0000024ea54cab70 {x509=0x0000000000000000 <NULL> privatekey=0x0000000000000000 <NULL> ...} ...} cert_st *
read_ahead 0 int
msg_callback 0x0000000000000000 void(*)(int, int, int, const void *, unsigned __int64, ssl_st *, void *)
msg_callback_arg 0x0000000000000000 void *
verify_mode 1 unsigned int
sid_ctx_length 0 unsigned __int64
▶ sid_ctx 0x0000024ea54ca8c8 "" unsigned char[32]
default_verify_callback 0x0000000000000000 int(*)(int, x509_store_ctx_st *)
generate_session_id 0x0000000000000000 int(*)(ssl_st *, unsigned char *, unsigned int *)
▶ param 0x0000024ea5472570 {name=0x0000000000000000 <NULL> check_time=0 inh_flags=0 ...} X509_VERIFY_PARAM_st *
quiet_shutdown 0 int
▶ ctlog_store 0x0000024ea5466400 {logs=0x0000024ea54881b0 {...} } ctlog_store_st *
ct_validation_callback 0x0000000000000000 int(*)(const ct_policy_eval_ctx_st *, const stack_st_SCT *, void *)
ct_validation_callback_arg 0x0000000000000000 void *
split_send_fragment 16384 unsigned __int64
max_send_fragment 16384 unsigned __int64
max_pipelines 0 unsigned __int64
default_read_buf_len 0 unsigned __int64
▶ client_cert_engine 0x0000000000000000 <NULL> engine_st *
client_hello_cb 0x0000000000000000 int(*)(ssl_st *, int *, void *)
client_hello_cb_arg 0x0000000000000000 void *
▶ ext {servername_cb=0x0000000000000000 servername_arg=0x0000000000000000 tick_key_name=0x0000024ea54ca968 ";þ†ßO^¿\x1f^\t³‹ÉÚü... ...} <anonymous-tag>
psk_client_callback 0x0000000000000000 unsigned int(*)(ssl_st *, const char *, char *, unsigned int, unsigned char *, unsigned int)
psk_server_callback 0x0000000000000000 unsigned int(*)(ssl_st *, const char *, unsigned char *, unsigned int)
psk_find_session_cb 0x0000000000000000 int(*)(ssl_st *, const unsigned char *, unsigned __int64, ssl_session_st * *)
psk_use_session_cb 0x0000000000000000 int(*)(ssl_st *, const evp_md_st *, const unsigned char * *, unsigned __int64 *, ssl_session_st * *)
▶ srp_ctx {SRP_cb_arg=0x0000000000000000 TLS_ext_srp_username_callback=0x0000000000000000 SRP_verify_param_callback=...} srp_ctx_st
▶ dane {mdevp=0x0000000000000000 {???} mdord=0x0000000000000000 <NULL> mdmax=0 '\0' ...} dane_ctx_st
srtp_profiles 0x0000000000000000 <NULL> stack_st_SRTP_PROTECTION_PROFILE *
not_resumable_session_cb 0x0000000000000000 int(*)(ssl_st *, int)
lock 0x0000024ea54881e0 void *
keylog_callback 0x0000000000000000 void(*)(const ssl_st *, const char *)
max_early_data 0 unsigned int
recv_max_early_data 16384 unsigned int
record_padding_cb 0x0000000000000000 unsigned __int64(*)(ssl_st *, int, unsigned __int64, void *)
record_padding_arg 0x0000000000000000 void *
block_padding 0 unsigned __int64
generate_ticket_cb 0x0000000000000000 int(*)(ssl_st *, void *)
decrypt_ticket_cb 0x0000000000000000 int(*)(ssl_st *, ssl_session_st *, const unsigned char *, unsigned __int64, int, void *)
ticket_cb_data 0x0000000000000000 void *
num_tickets 2 unsigned __int64
allow_early_data_cb 0x0000000000000000 int(*)(ssl_st *, void *)
allow_early_data_cb_data 0x0000000000000000 void *
pha_enabled 0 int
▶ init_ {ref_=shared_ptr {...} [4 strong refs] [default] } boost::asio::ssl::detail::openssl_init<1>
▶ ec {val_=0 failed_=false cat_=0x0000024ea6dfbc70 default } boost::system::error_code
▶ results {...} boost::asio::ip::basic_resolver_resultsboost::asio::ip::tcp
◢ req allocator boost::beast::http::message<1,boost::beast::http::basic_string_body,boost::beast::http::basic_fields >
◢ [Raw View] {...} boost::beast::http::message<1,boost::beast::http::basic_string_body,boost::beast::http::basic_fields >
◢ boost::beast::http::header<1,boost::beast::http::basic_fields > {version_=11 method_=get (2) } boost::beast::http::header<1,boost::beast::http::basic_fields >
◢ boost::beast::http::basic_fields {set_={...} list_={data_={root_plus_size_={m_header={...} } } } method_={ptr_=0x0000000000000000 <NULL> ...} ...} boost::beast::http::basic_fields
◢ boost::empty_::empty_value {...} boost::empty_::empty_value
std::allocator<char> {...} std::allocator<char>
◢ set_ {...} boost::intrusive::multiset_impl::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,unsigned __int64,1,void>
◢ boost::intrusive::bstree_impl::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,unsigned __int64,1,5,void> {...} boost::intrusive::bstree_impl::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,unsigned __int64,1,5,void>
◢ boost::intrusive::bstbase::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,1,unsigned __int64,5,void> {...} boost::intrusive::bstbase::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,1,unsigned __int64,5,void>
◢ boost::intrusive::bstbase_hack::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,1,unsigned __int64,5,void> {...} boost::intrusive::bstbase_hack::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,1,unsigned __int64,5,void>
◢ boost::intrusive::detail::size_holder<1,unsigned __int64,void> {size_=4 } boost::intrusive::detail::size_holder<1,unsigned __int64,void>
size_ 4 unsigned __int64
◢ boost::intrusive::bstbase2::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,5,void> {...} boost::intrusive::bstbase2::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,void,boost::beast::http::basic_fields::key_compare,5,void>
◢ boost::intrusive::detail::ebo_functor_holder::element *,boost::beast::http::basic_fields::key_compare,boost::move_detail::identity::element>,bool,1>,0> {...} boost::intrusive::detail::ebo_functor_holder::element *,boost::beast::http::basic_fields::key_compare,boost::move_detail::identity::element>,bool,1>,0>
◢ boost::intrusive::tree_value_compare::element *,boost::beast::http::basic_fields::key_compare,boost::move_detail::identity::element>,bool,1> {...} boost::intrusive::tree_value_compare::element *,boost::beast::http::basic_fields::key_compare,boost::move_detail::identity::element>,bool,1>
◢ boost::intrusive::detail::ebo_functor_holder::key_compare,0> {...} boost::intrusive::detail::ebo_functor_holder::key_compare,0>
◢ boost::beast::http::basic_fields::key_compare {...} boost::beast::http::basic_fields::key_compare
boost::beast::iless {...} boost::beast::iless
◢ boost::intrusive::bstbase3::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,5,void> {holder={root={...} } } boost::intrusive::bstbase3::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,5,void>
◢ holder {root={...} } boost::intrusive::bstbase3::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>,5,void>::holder_t
◢ boost::intrusive::bhtraits::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3> {...} boost::intrusive::bhtraits::element,boost::intrusive::rbtree_node_traits,0,boost::intrusive::dft_tag,3>
boost::intrusive::bhtraits_base::element,boost::intrusive::rbtree_node *,boost::intrusive::dft_tag,3> {...} boost::intrusive::bhtraits_base::element,boost::intrusive::rbtree_node *,boost::intrusive::dft_tag,3>
◢ root {...} boost::intrusive::detail::default_header_holder >
◢ boost::intrusive::rbtree_node {parent_=0x0000024ea6dd1d10 {parent_=0x0000005f727ff0f8 {parent_=0x0000024ea6dd1d10 {parent_=0x0000005f727ff0f8 {...} ...} ...} ...} ...} boost::intrusive::rbtree_node
▶ parent_ 0x0000024ea6dd1d10 {parent_=0x0000005f727ff0f8 {parent_=0x0000024ea6dd1d10 {parent_=0x0000005f727ff0f8 {...} ...} ...} ...} boost::intrusive::rbtree_node *
▶ left_ 0x0000024ea54f5140 {parent_=0x0000024ea6dd1d10 {parent_=0x0000005f727ff0f8 {parent_=0x0000024ea6dd1d10 {...} ...} ...} ...} boost::intrusive::rbtree_node *
▶ right_ 0x0000024ea6dd3300 {parent_=0x0000024ea6dd1d10 {parent_=0x0000005f727ff0f8 {parent_=0x0000024ea6dd1d10 {...} ...} ...} ...} boost::intrusive::rbtree_node *
color_ red_t (0) boost::intrusive::rbtree_node::color
◢ list_ {data_={root_plus_size_={m_header={...} } } } boost::intrusive::list_impl::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1>,unsigned __int64,0,void>
◢ data_ {root_plus_size_={m_header={...} } } boost::intrusive::list_impl::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1>,unsigned __int64,0,void>::data_t
◢ boost::intrusive::bhtraits::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1> {...} boost::intrusive::bhtraits::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1>
boost::intrusive::bhtraits_base::element,boost::intrusive::list_node *,boost::intrusive::dft_tag,1> {...} boost::intrusive::bhtraits_base::element,boost::intrusive::list_node *,boost::intrusive::dft_tag,1>
◢ root_plus_size_ {m_header={...} } boost::intrusive::list_impl::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1>,unsigned __int64,0,void>::root_plus_size
boost::intrusive::detail::size_holder<0,unsigned __int64,void> {...} boost::intrusive::detail::size_holder<0,unsigned __int64,void>
◢ m_header {...} boost::intrusive::detail::default_header_holder >
◢ boost::intrusive::list_node {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {...} ...} ...} ...} ...} boost::intrusive::list_node
◢ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ next_ 0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ prev_ 0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ next_ 0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=0x0000024ea6dd26c0 {next_=0x0000005f727ff118 {next_=...} ...} ...} ...} boost::intrusive::list_node *
▶ prev_ 0x0000005f727ff118 {next_=0x0000024ea54f5130 {next_=0x0000024ea6dd32f0 {next_=0x0000024ea6dd1d00 {next_=...} ...} ...} ...} boost::intrusive::list_node *
◢ method_ {ptr_=0x0000000000000000 <NULL> len_=0 } boost::basic_string_view
◢ ptr_ 0x0000000000000000 <NULL> const char *
<Unable to read memory> const char
len_ 0 unsigned __int64
◢ target_or_reason_ {ptr_=0x0000024ea6d99c50 " /currencies_list/5c8a4f26806e9/b764b53a14eff3867b09f39375f436b" len_=63 } boost::basic_string_view
◢ ptr_ 0x0000024ea6d99c50 " /currencies_list/5c8a4f26806e9/b764b53a14eff3867b09f39375f436b" const char *
32 ' ' const char
len_ 63 unsigned __int64
version_ 11 unsigned int
method_ get (2) boost::beast::http::verb
◢ boost::empty_::empty_value,0,0> {value_="" } boost::empty_::empty_value,0,0>
◢ value_ "" std::basic_string
[size] 0 unsigned __int64
[capacity] 15 unsigned __int64
◢ [allocator] allocator std::_Compressed_pair,1>
◢ [Raw View] {_Myval2={_Bx={_Buf=0x0000005f727ff150 "" _Ptr=0x0000000000000000 <NULL> _Alias=0x0000005f727ff150 "" } ...} } std::_Compressed_pair,1>
std::allocator<char> {...} std::allocator<char>
◢ _Myval2 {_Bx={_Buf=0x0000005f727ff150 "" _Ptr=0x0000000000000000 <NULL> _Alias=0x0000005f727ff150 "" } _Mysize=...} std::_String_val
std::_Container_base0 {...} std::_Container_base0
◢ _Bx {_Buf=0x0000005f727ff150 "" _Ptr=0x0000000000000000 <NULL> _Alias=0x0000005f727ff150 "" } std::_String_val::_Bxty
◢ _Buf 0x0000005f727ff150 "" char[16]
[0] 0 '\0' char
[1] 0 '\0' char
[2] 0 '\0' char
[3] 0 '\0' char
[4] 0 '\0' char
[5] 0 '\0' char
[6] 0 '\0' char
[7] 0 '\0' char
[8] -17 'ï' char
[9] 109 'm' char
[10] -59 'Å' char
[11] -93 '£' char
[12] -10 'ö' char
[13] 127 '' char
[14] 0 '\0' char
[15] 0 '\0' char
▶ _Ptr 0x0000000000000000 <NULL> char *
▶ _Alias 0x0000005f727ff150 "" char[16]
_Mysize 0 unsigned __int64
_Myres 15 unsigned __int64
◢ [Raw View] {...} std::basic_string
▶ std::_String_alloc > {_Mypair=allocator } std::_String_alloc >
◢ stream {next_layer_={...} core_={engine_={ssl_=0x0000024ea54cdbe0 {version=772 method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ...} ...} } boost::asio::ssl::streamboost::asio::ip::tcp >
boost::asio::ssl::stream_base {...} boost::asio::ssl::stream_base
boost::asio::detail::noncopyable {...} boost::asio::detail::noncopyable
◢ next_layer_ {...} boost::asio::basic_stream_socketboost::asio::ip::tcp
◢ boost::asio::basic_socketboost::asio::ip::tcp {...} boost::asio::basic_socketboost::asio::ip::tcp
◢ boost::asio::basic_io_objectboost::asio::ip::tcp,1> {service_=0x0000024ea6e05450 {...} implementation_={protocol_={family_=2 } } } boost::asio::basic_io_objectboost::asio::ip::tcp,1>
◢ service_ 0x0000024ea6e05450 {...} boost::asio::detail::reactive_socket_serviceboost::asio::ip::tcp *
◢ boost::asio::detail::service_baseboost::asio::ip::tcp > {...} boost::asio::detail::service_baseboost::asio::ip::tcp >
◢ boost::asio::io_context::service {...} boost::asio::io_context::service
◢ boost::asio::execution_context::service {key_={type_info_=0x00007ff6a3f237c0 {currency_converter.exe!class boost::asio::detail::typeid_wrapper `RTTI Type Descriptor'} {...} ...} ...} boost::asio::execution_context::service
boost::asio::detail::noncopyable {...} boost::asio::detail::noncopyable
◢ __vfptr 0x00007ff6a3eb77f0 {currency_converter.exe!void(* boost::asio::detail::reactive_socket_serviceboost::asio::ip::tcp::`vftable'[6])()} {...} void * *
[0] 0x00007ff6a3c5d0c0 {currency_converter.exe!boost::asio::detail::reactive_socket_serviceboost::asio::ip::tcp::`scalar deleting destructor'(unsigned int)} void *
[1] 0x00007ff6a3c21360 {currency_converter.exe!boost::intrusive::list_impl::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1>,unsigned __int64,0,void>::~list_impl::element,boost::intrusive::list_node_traits,0,boost::intrusive::dft_tag,1>,unsigned __int64,0,void>(void)} void *
[2] 0x00007ff6a3c259d0 {currency_converter.exe!boost::asio::io_context::service::notify_fork(boost::asio::execution_context::fork_event)} void *
◢ key_ {type_info_=0x00007ff6a3f237c0 {currency_converter.exe!class boost::asio::detail::typeid_wrapper `RTTI Type Descriptor'} {...} ...} boost::asio::execution_context::service::key
▶ type_info_ 0x00007ff6a3f237c0 {currency_converter.exe!class boost::asio::detail::typeid_wrapper `RTTI Type Descriptor'} {...} const type_info *
▶ id_ 0x0000000000000000 <NULL> const boost::asio::execution_context::id *
▶ owner_ {service_registry_=0x0000024ea5468420 {mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=??? ...} ...} } ...} } boost::asio::execution_context &
▶ next_ 0x0000024ea6ddbe20 {scheduler_={one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {...} ...} } ...} ...} ...} boost::asio::execution_context::service * {boost::asio::detail::select_reactor}
◢ boost::asio::detail::reactive_socket_service_base {io_context_={init_={...} impl_={one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {...} ...} } ...} ...} } ...} boost::asio::detail::reactive_socket_service_base
◢ io_context_ {init_={...} impl_={one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=...} ...} } ...} ...} } boost::asio::io_context &
▶ boost::asio::execution_context {service_registry_=0x0000024ea5468420 {mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=??? ...} ...} } ...} } boost::asio::execution_context
◢ init_ {...} boost::asio::detail::winsock_init<2,0>
boost::asio::detail::winsock_init_base {...} boost::asio::detail::winsock_init_base
◢ impl_ {one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=??? CreatorBackTraceIndex=...} ...} } ...} ...} boost::asio::detail::scheduler &
▶ boost::asio::detail::execution_context_service_baseboost::asio::detail::scheduler {...} boost::asio::detail::execution_context_service_baseboost::asio::detail::scheduler
boost::asio::detail::thread_context {...} boost::asio::detail::thread_context
one_thread_ false const bool
▶ mutex_ {mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=??? CreatorBackTraceIndex=??? CriticalSection=...} ...} } ...} boost::asio::detail::conditionally_enabled_mutex
▶ wakeup_event_ {event_={events_=0x0000024ea5499b10 {0x0000000000000110, 0x0000000000000114} state_=1 } } boost::asio::detail::conditionally_enabled_event
▶ task_ 0x0000024ea6ddbe20 {scheduler_={one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {...} ...} } ...} ...} ...} boost::asio::detail::select_reactor *
▶ task_operation_ {...} boost::asio::detail::scheduler::task_operation
task_interrupted_ true bool
▶ outstanding_work_ 0 std::atomic<long>
▶ op_queue_ {front_=0x0000024ea5499b30 {next_=0x0000000000000000 <NULL> func_=0x0000000000000000 task_result_=0 } ...} boost::asio::detail::op_queueboost::asio::detail::scheduler_operation
stopped_ false bool
shutdown_ false bool
concurrency_hint_ -1 const int
◢ reactor_ {scheduler_={one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=??? ...} ...} } ...} ...} ...} boost::asio::detail::select_reactor &
▶ boost::asio::detail::execution_context_service_baseboost::asio::detail::select_reactor {...} boost::asio::detail::execution_context_service_baseboost::asio::detail::select_reactor
▶ scheduler_ {one_thread_=false mutex_={mutex_={crit_section_={DebugInfo=0xffffffffffffffff {Type=??? CreatorBackTraceIndex=...} ...} } ...} ...} boost::asio::detail::scheduler &
▶ mutex_ {crit_section_={DebugInfo=0xffffffffffffffff {Type=??? CreatorBackTraceIndex=??? CriticalSection=??? ...} ...} } boost::asio::detail::win_mutex
▶ interrupter_ {read_descriptor_=364 write_descriptor_=356 } boost::asio::detail::socket_select_interrupter
▶ op_queue_ 0x0000024ea6ddbe88 {{operations_={size_=0 values_={ size=0 } spares_={ size=0 } ...} }, {operations_=...}, ...} boost::asio::detail::reactor_op_queue<unsigned __int64>[4]
▶ fd_sets_ 0x0000024ea6ddbf68 {{fd_set_=0x0000024ea6da77f0 {fd_count=0 fd_array=0x0000024ea6da77f8 {0} } capacity_=...}, ...} boost::asio::detail::win_fd_set_adapter[3]
▶ timer_queues_ {first_=0x0000024ea6d907f8 {impl_={timers_=0x0000000000000000 <NULL> heap_={ size=0 } } } } boost::asio::detail::timer_queue_set
shutdown_ false bool
◢ implementation_ {protocol_={family_=2 } } boost::asio::detail::reactive_socket_serviceboost::asio::ip::tcp::implementation_type
▶ boost::asio::detail::reactive_socket_service_base::base_implementation_type {socket_=432 state_=16 '\x10' reactor_data_={...} } boost::asio::detail::reactive_socket_service_base::base_implementation_type
▶ protocol_ {family_=2 } boost::asio::ip::tcp
boost::asio::socket_base {...} boost::asio::socket_base
◢ core_ {engine_={ssl_=0x0000024ea54cdbe0 {version=772 method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ...} ...} boost::asio::ssl::detail::stream_core
▶ engine_ {ssl_=0x0000024ea54cdbe0 {version=772 method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ...} boost::asio::ssl::detail::engine
▶ pending_read_ {...} boost::asio::basic_deadline_timerboost::posix_time::ptime >
▶ pending_write_ {...} boost::asio::basic_deadline_timerboost::posix_time::ptime >
▶ output_buffer_space_ { size=17408 } std::vector
▶ output_buffer_ {data_=0x0000024ea6e40000 size_=17408 } const boost::asio::mutable_buffer
▶ input_buffer_space_ { size=17408 } std::vector
▶ input_buffer_ {data_=0x0000024ea6e44440 size_=17408 } const boost::asio::mutable_buffer
▶ input_ {data_=0x0000000000000000 size_=0 } boost::asio::const_buffer
req.body() This expression has side effects and will not be evaluated.
stream.next_layer a pointer to a bound function may only be used to call the function
▶ stream.core_ {engine_={ssl_=0x0000024ea54cdbe0 {version=772 method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ...} ...} boost::asio::ssl::detail::stream_core
▶ stream.core_.engine_.ssl_ 0x0000024ea54cdbe0 {version=772 method=0x00007ff6a3e39640 {currency_converter.exe!ssl_method_st TLS_client_method_data} {...} ...} ssl_st *
"
Thanks in advance for any help (and I hope this time I won't be ignored like I've felt I've been lately).