summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Erebos/Discovery.hs3
-rw-r--r--src/Erebos/Network.hs6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/Erebos/Discovery.hs b/src/Erebos/Discovery.hs
index b27c617..5788ab8 100644
--- a/src/Erebos/Discovery.hs
+++ b/src/Erebos/Discovery.hs
@@ -569,6 +569,9 @@ instance PeerAddressType TunnelAddress where
sendBytesToAddress TunnelAddress {..} bytes = do
writeStream tunnelWriter bytes
+ connectionToAddressClosed TunnelAddress {..} = do
+ closeStream tunnelWriter
+
relayStream :: StreamReader -> StreamWriter -> IO ()
relayStream r w = do
p <- readStreamPacket r
diff --git a/src/Erebos/Network.hs b/src/Erebos/Network.hs
index a90f5d8..6126e60 100644
--- a/src/Erebos/Network.hs
+++ b/src/Erebos/Network.hs
@@ -163,6 +163,8 @@ instance Eq Peer where
class (Eq addr, Ord addr, Show addr, Typeable addr) => PeerAddressType addr where
sendBytesToAddress :: addr -> ByteString -> IO ()
+ connectionToAddressClosed :: addr -> IO ()
+ connectionToAddressClosed _ = return ()
data PeerAddress
= forall addr. PeerAddressType addr => CustomPeerAddress addr
@@ -384,6 +386,10 @@ startServer serverOptions serverOrigHead logd' serverServices = do
handlePacket identity secure peer chanSvc svcs header prefs
peerLoop
Nothing -> do
+ case paddr of
+ DatagramAddress _ -> return ()
+ CustomPeerAddress caddr -> connectionToAddressClosed caddr
+
dropPeer peer
atomically $ writeTChan serverChanPeer peer
peerLoop