In TgBot library i use under MSVC++, in tgbot/net/BoostHttpOnlySslClient.cpp, a call to boost::asio::read() does not return when internet is disconnected for a few minutes. I would appreciate any help to get this resolved, i.e. for the read function to return if it fails after some timeout has passed the code block in the tgbot/net/BoostHttpOnlySslClient.cpp file: [code] string BoostHttpOnlySslClient::makeRequest(const Url& url, const vector<HttpReqArg>& args) const { tcp::resolver resolver(_ioService); tcp::resolver::query query(url.host, "443"); ssl::context context(ssl::context::tlsv12_client); context.set_default_verify_paths(); ssl::streamtcp::socket socket(_ioService, context); connect(socket.lowest_layer(), resolver.resolve(query)); #ifdef TGBOT_DISABLE_NAGLES_ALGORITHM socket.lowest_layer().set_option(tcp::no_delay(true)); #endif //TGBOT_DISABLE_NAGLES_ALGORITHM #ifdef TGBOT_CHANGE_SOCKET_BUFFER_SIZE #if _arm64 || _WIN64 || __amd64__ || __x86_64__ || __MINGW64__ || __aarch64__ || __powerpc64__ socket.lowest_layer().set_option(socket_base::send_buffer_size(65536)); socket.lowest_layer().set_option(socket_base::receive_buffer_size(65536)); #else //for 32-bit socket.lowest_layer().set_option(socket_base::send_buffer_size(32768)); socket.lowest_layer().set_option(socket_base::receive_buffer_size(32768)); #endif //Processor architecture #endif //TGBOT_CHANGE_SOCKET_BUFFER_SIZE socket.set_verify_mode(ssl::verify_none); socket.set_verify_callback(ssl::rfc2818_verification(url.host)); socket.handshake(ssl::streamtcp::socket::client); string requestText = _httpParser.generateRequest(url, args, false); write(socket, buffer(requestText.c_str(), requestText.length())); string response; #ifdef TGBOT_CHANGE_READ_BUFFER_SIZE #if _M_ARM64 || _WIN64 || __amd64__ || __x86_64__ || __MINGW64__ || __aarch64__ || __powerpc64__ char buff[65536]; #else //for 32-bit char buff[32768]; #endif //Processor architecture #else char buff[1024]; #endif //TGBOT_CHANGE_READ_BUFFER_SIZE boost::system::error_code error; while (!error) { std::size_t bytes = read(socket, buffer(buff), error); response += string(buff, bytes); } return _httpParser.extractBody(response); } [/code] Thankyou in advance😀🙏