提交 6ee2a61a 编写于 作者: E eidheim

Added fallback to ipv4 if ipv6 is not supported

上级 28dd5553
......@@ -363,7 +363,7 @@ namespace SimpleWeb {
std::unique_lock<std::mutex> lock(start_stop_mutex);
asio::ip::tcp::endpoint endpoint;
if(config.address.size() > 0)
if(!config.address.empty())
endpoint = asio::ip::tcp::endpoint(make_address(config.address), config.port);
else
endpoint = asio::ip::tcp::endpoint(asio::ip::tcp::v6(), config.port);
......@@ -375,7 +375,17 @@ namespace SimpleWeb {
if(!acceptor)
acceptor = std::unique_ptr<asio::ip::tcp::acceptor>(new asio::ip::tcp::acceptor(*io_service));
acceptor->open(endpoint.protocol());
try {
acceptor->open(endpoint.protocol());
}
catch(const system_error &error) {
if(error.code() == asio::error::address_family_not_supported && config.address.empty()) {
endpoint = asio::ip::tcp::endpoint(asio::ip::tcp::v4(), config.port);
acceptor->open(endpoint.protocol());
}
else
throw;
}
acceptor->set_option(asio::socket_base::reuse_address(config.reuse_address));
if(config.fast_open) {
#if defined(__linux__) && defined(TCP_FASTOPEN)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册