diff --git a/webserver.cc b/webserver.cc index b17fa0f..a426feb 100644 --- a/webserver.cc +++ b/webserver.cc @@ -231,23 +231,21 @@ the_end: void Webserver::runner(Webserver *me) { -#ifdef WIN32 - typedef boost::asio::detail::socket_option::boolean< - BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_EXCLUSIVEADDRUSE)> - exclusive_addr_use_t; - exclusive_addr_use_t exclusive_addr_use(true); -#endif boost::asio::socket_base::keep_alive keep_alive(true); boost::asio::socket_base::reuse_address reuse_address(false); while (me->_running) { tcp::socket* socket = new tcp::socket{me->_ioc}; -#ifdef WIN32 - me->_acceptor.set_option(exclusive_addr_use); -#endif me->_acceptor.set_option(keep_alive); me->_acceptor.set_option(reuse_address); + +#ifdef WiN32 + int fd = me->_acceptor.native_handle(); + BOOL value = 1; + setsockopt(fd, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, &value, sizeof(BOOL)); +#endif + me->_acceptor.accept(*socket); std::function< void() > tf = [=]()