diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Erebos/Discovery.hs | 3 | ||||
-rw-r--r-- | src/Erebos/Network.hs | 6 |
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 |