From 25324026a1033c43652a058f966dfb3d255102ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Roman=20Smr=C5=BE?= <roman.smrz@seznam.cz>
Date: Sat, 18 Jan 2020 21:58:18 +0100
Subject: Use encrypted channel as soon as accept is received

---
 src/Network.hs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/Network.hs b/src/Network.hs
index eceeaff..339be7a 100644
--- a/src/Network.hs
+++ b/src/Network.hs
@@ -189,7 +189,10 @@ startServer origHead logd bhost services = do
                 mbpeer <- M.lookup paddr <$> readMVar peers
                 (peer, content, secure) <- if
                     | Just peer <- mbpeer
-                    , ChannelEstablished ch <- peerChannel peer
+                    , Just ch <- case peerChannel peer of
+                                      ChannelEstablished ch  -> Just ch
+                                      ChannelOurAccept _ sch -> Just $ fromStored sch
+                                      _                      -> Nothing
                     , Right plain <- runExcept $ channelDecrypt ch msg
                     -> return (peer, plain, True)
 
@@ -399,7 +402,7 @@ handlePacket logd identity secure opeer chanSvc (TransportHeader headers) = do
                         [ serializeObject $ transportToObject $ TransportHeader $ reverse $ phHead ph
                         , BL.concat $ map lazyLoadBytes $ phBody ph
                         ]
-                case peerChannel opeer of
+                case peerChannel $ phPeer ph of
                      ChannelEstablished ch -> do
                         x <- runExceptT (channelEncrypt ch plain)
                         case x of Right ctext -> void $ sendTo (peerSocket $ phPeer ph) ctext paddr
-- 
cgit v1.2.3