diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-11-14 11:39:10 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-11-14 11:39:10 +0000 |
| commit | f60d6f84708e2ff568089732cb9fbdbdc8cef3db (patch) | |
| tree | 7cd71914258671bdd4ffedf974ad40faef15519c /src/lib/server_finder.cc | |
| parent | 0eed8c6c205fe85fb1094d7a9b0a2f3d7eeeb698 (diff) | |
Add server configuration back in.
Diffstat (limited to 'src/lib/server_finder.cc')
| -rw-r--r-- | src/lib/server_finder.cc | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/lib/server_finder.cc b/src/lib/server_finder.cc index 941caf4d9..a51aecd97 100644 --- a/src/lib/server_finder.cc +++ b/src/lib/server_finder.cc @@ -28,6 +28,7 @@ using std::string; using std::stringstream; using std::list; +using std::vector; using boost::shared_ptr; using boost::scoped_array; @@ -55,12 +56,29 @@ ServerFinder::broadcast_thread () socket.set_option (boost::asio::ip::udp::socket::reuse_address (true)); socket.set_option (boost::asio::socket_base::broadcast (true)); - - boost::asio::ip::udp::endpoint end_point (boost::asio::ip::address_v4::broadcast(), Config::instance()->server_port_base() + 1); + string const data = DCPOMATIC_HELLO; + while (1) { - string const data = DCPOMATIC_HELLO; - socket.send_to (boost::asio::buffer (data.c_str(), data.size() + 1), end_point); + if (Config::instance()->use_any_servers ()) { + /* Broadcast to look for servers */ + boost::asio::ip::udp::endpoint end_point (boost::asio::ip::address_v4::broadcast(), Config::instance()->server_port_base() + 1); + socket.send_to (boost::asio::buffer (data.c_str(), data.size() + 1), end_point); + } + + /* Query our `definite' servers (if there are any) */ + vector<string> servers = Config::instance()->servers (); + for (vector<string>::const_iterator i = servers.begin(); i != servers.end(); ++i) { + try { + boost::asio::ip::udp::resolver resolver (io_service); + boost::asio::ip::udp::resolver::query query (*i); + boost::asio::ip::udp::endpoint end_point (*resolver.resolve (query)); + socket.send_to (boost::asio::buffer (data.c_str(), data.size() + 1), end_point); + } catch (...) { + + } + } + dcpomatic_sleep (10); } } |
