summaryrefslogtreecommitdiff
path: root/src/lib/server_finder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-11-14 11:39:10 +0000
committerCarl Hetherington <cth@carlh.net>2013-11-14 11:39:10 +0000
commitf60d6f84708e2ff568089732cb9fbdbdc8cef3db (patch)
tree7cd71914258671bdd4ffedf974ad40faef15519c /src/lib/server_finder.cc
parent0eed8c6c205fe85fb1094d7a9b0a2f3d7eeeb698 (diff)
Add server configuration back in.
Diffstat (limited to 'src/lib/server_finder.cc')
-rw-r--r--src/lib/server_finder.cc26
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);
}
}