]> git.tdb.fi Git - xinema.git/blobdiff - source/networkinterface.cpp
Avoid crashing due to network exceptions
[xinema.git] / source / networkinterface.cpp
index 1bf7b4a8e159bfc004d951e48e8dd2a02f9fa7df..29947e84574701ea5e2c3c36e833636f5f8124ac 100644 (file)
@@ -1,3 +1,4 @@
+#include <msp/io/print.h>
 #include <msp/net/inet6.h>
 #include <msp/net/resolve.h>
 #include "client.h"
@@ -6,8 +7,6 @@
 using namespace std;
 using namespace Msp;
 
-#include <msp/io/print.h>
-
 NetworkInterface::NetworkInterface(Xinema &x):
        xinema(x)
 {
@@ -46,7 +45,6 @@ void NetworkInterface::discover_request()
        Net::SockAddr *peer_addr;
        char rbuf[1024];
        discover_sock->recvfrom(rbuf, sizeof(rbuf), peer_addr);
-       IO::print("Discovery beacon received from %s\n", peer_addr->str());
        discover_sock->sendto("xinema", 6, *peer_addr);
        delete peer_addr;
 }
@@ -71,7 +69,14 @@ void NetworkInterface::NetworkThread::main()
 {
        while(!done)
        {
-               network.event_disp.tick();
+               try
+               {
+                       network.event_disp.tick();
+               }
+               catch(const std::exception &e)
+               {
+                       IO::print(IO::cerr, "Unhandled exception in network thread: %s\n", e.what());
+               }
 
                for(list<Client *>::iterator i=network.clients.begin(); i!=network.clients.end(); )
                {