
I am having a timeout example code problem, modified code is below: class connect_handler { public: connect_handler(io_service& ios) : io_service_(ios), timer_(ios), socket_(ios) { socket_.async_connect( tcp::endpoint(boost::asio::ip::address_v4::loopback(), 32123), boost::bind(&connect_handler::handle_connect, this, boost::asio::placeholders::error)); timer_.expires_from_now(boost::posix_time::seconds(5)); timer_.async_wait(boost::bind(&connect_handler::close, this)); } void handle_connect(const boost::system::error_code& err) { if (err) { std::cout << "Connect error: " << err.message() << "\n"; } e lse { // We need to cancel the timeout since we have connected. timer_.cancel(); // < Fires the timer regardless. Because we are calling cancel() from inside an io_service call??? std::cout << "Successful connection\n"; } } void close() { socket_.close(); } private: io_service& io_service_; deadline_timer timer_; tcp::socket socket_; };