X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fserver_finder.cc;h=14cb3af5999ac5ff7ccb434d39371addcbb18a6d;hb=391d85619ac19a2a93696ddc35c222eb9bb5d9d6;hp=3d5825ad4d7f4a01aadbfd850a774bc2c7eb18fa;hpb=02c400669a490617969a8f3924dd0bce0840a7b8;p=dcpomatic.git diff --git a/src/lib/server_finder.cc b/src/lib/server_finder.cc index 3d5825ad4..14cb3af59 100644 --- a/src/lib/server_finder.cc +++ b/src/lib/server_finder.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2013 Carl Hetherington + Copyright (C) 2013-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ */ #include +#include #include "server_finder.h" #include "exceptions.h" #include "util.h" @@ -26,13 +27,12 @@ #include "ui_signaller.h" using std::string; -using std::stringstream; using std::list; using std::vector; using std::cout; using boost::shared_ptr; using boost::scoped_array; -using boost::lexical_cast; +using dcp::raw_convert; ServerFinder* ServerFinder::_instance = 0; @@ -62,7 +62,7 @@ try string const data = DCPOMATIC_HELLO; - while (1) { + while (true) { if (Config::instance()->use_any_servers ()) { /* Broadcast to look for servers */ try { @@ -82,7 +82,7 @@ try } try { boost::asio::ip::udp::resolver resolver (io_service); - boost::asio::ip::udp::resolver::query query (*i, lexical_cast (Config::instance()->server_port_base() + 1)); + boost::asio::ip::udp::resolver::query query (*i, raw_convert (Config::instance()->server_port_base() + 1)); 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 (...) { @@ -102,13 +102,12 @@ void ServerFinder::listen_thread () try { - while (1) { - shared_ptr sock (new Socket (10)); + while (true) { + shared_ptr sock (new Socket (60)); try { sock->accept (Config::instance()->server_port_base() + 1); } catch (std::exception& e) { - dcpomatic_sleep (60); continue; } @@ -116,9 +115,9 @@ try scoped_array buffer (new char[length]); sock->read (reinterpret_cast (buffer.get()), length); - stringstream s (buffer.get()); + string s (buffer.get()); shared_ptr xml (new cxml::Document ("ServerAvailable")); - xml->read_stream (s); + xml->read_string (s); string const ip = sock->socket().remote_endpoint().address().to_string (); if (!server_found (ip)) {