diff options
Diffstat (limited to 'dht/src')
-rw-r--r-- | dht/src/DebugTag.hs | 1 | ||||
-rw-r--r-- | dht/src/Network/Tox.hs | 14 |
2 files changed, 13 insertions, 2 deletions
diff --git a/dht/src/DebugTag.hs b/dht/src/DebugTag.hs index 93b5b74f..37593e63 100644 --- a/dht/src/DebugTag.hs +++ b/dht/src/DebugTag.hs | |||
@@ -7,6 +7,7 @@ data DebugTag | |||
7 | = XAnnounce | 7 | = XAnnounce |
8 | | XAnnounceResponse | 8 | | XAnnounceResponse |
9 | | XBitTorrent | 9 | | XBitTorrent |
10 | | XDBus | ||
10 | | XLan | 11 | | XLan |
11 | | XMan | 12 | | XMan |
12 | | XNetCrypto | 13 | | XNetCrypto |
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 | |||
88 | import Network.Kademlia.Search | 88 | import Network.Kademlia.Search |
89 | import HandshakeCache | 89 | import HandshakeCache |
90 | import Data.ByteString.Base16 as Base16 | 90 | import Data.ByteString.Base16 as Base16 |
91 | import qualified DBus.Client as DBus | ||
92 | import Control.Exception | ||
91 | 93 | ||
92 | updateIP :: TVar (R.BucketList NodeInfo) -> SockAddr -> STM () | 94 | updateIP :: TVar (R.BucketList NodeInfo) -> SockAddr -> STM () |
93 | updateIP tblvar a = do | 95 | updateIP 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 | ||
452 | putDBusError 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 |