summaryrefslogtreecommitdiff
path: root/dht/src/Network/Tox.hs
diff options
context:
space:
mode:
Diffstat (limited to 'dht/src/Network/Tox.hs')
-rw-r--r--dht/src/Network/Tox.hs14
1 files changed, 12 insertions, 2 deletions
diff --git a/dht/src/Network/Tox.hs b/dht/src/Network/Tox.hs
index 1628b435..e0704f6f 100644
--- a/dht/src/Network/Tox.hs
+++ b/dht/src/Network/Tox.hs
@@ -88,6 +88,8 @@ import Network.SessionTransports
88import Network.Kademlia.Search 88import Network.Kademlia.Search
89import HandshakeCache 89import HandshakeCache
90import Data.ByteString.Base16 as Base16 90import Data.ByteString.Base16 as Base16
91import qualified DBus.Client as DBus
92import Control.Exception
91 93
92updateIP :: TVar (R.BucketList NodeInfo) -> SockAddr -> STM () 94updateIP :: TVar (R.BucketList NodeInfo) -> SockAddr -> STM ()
93updateIP tblvar a = do 95updateIP tblvar a = do
@@ -446,6 +448,12 @@ dnssdDiscover tox ni toxid = do
446 448
447 void $ DHT.pingUDP (toxDHT tox) ni 449 void $ DHT.pingUDP (toxDHT tox) ni
448 450
451-- | Log a dbus error
452putDBusError bFatal msg = do
453 let fatality = if bFatal then "Fatal" else "Non-Fatal"
454 prefix = fatality <> " DBus Exception: "
455 dput XDBus (prefix <> msg)
456
449-- | Returns: 457-- | Returns:
450-- 458--
451-- * action to shutdown this node, terminating all threads. 459-- * action to shutdown this node, terminating all threads.
@@ -469,8 +477,10 @@ forkTox tox with_avahi with_tcp = do
469 refresher4 <- forkPollForRefresh (DHT.refresher4 $ toxRouting tox) 477 refresher4 <- forkPollForRefresh (DHT.refresher4 $ toxRouting tox)
470 refresher6 <- forkPollForRefresh (DHT.refresher6 $ toxRouting tox) 478 refresher6 <- forkPollForRefresh (DHT.refresher6 $ toxRouting tox)
471 quitAvahi <- if with_avahi then do 479 quitAvahi <- if with_avahi then do
472 dnssdIn <- forkIO $ queryToxService (dnssdDiscover tox) 480 dnssdIn <- forkIO (queryToxService (dnssdDiscover tox)
473 dnssdOut <- forkIO $ dnssdAnnounce tox 481 `catch` \(e::DBus.ClientError) -> putDBusError (DBus.clientErrorFatal e) (DBus.clientErrorMessage e))
482 dnssdOut <- forkIO ( dnssdAnnounce tox
483 `catch` \(e::DBus.ClientError) -> putDBusError (DBus.clientErrorFatal e) (DBus.clientErrorMessage e))
474 labelThread dnssdIn "tox-avahi-monitor" 484 labelThread dnssdIn "tox-avahi-monitor"
475 labelThread dnssdOut "tox-avahi-publish" 485 labelThread dnssdOut "tox-avahi-publish"
476 return $ forM_ [dnssdIn,dnssdOut] killThread 486 return $ forM_ [dnssdIn,dnssdOut] killThread