diff options
author | joe <joe@jerkface.net> | 2017-07-10 20:30:10 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2017-07-10 20:30:10 -0400 |
commit | 2fdb0342f8cfcaf4924a0ce43e7fccb236eb0d5e (patch) | |
tree | fe013b9d665d6a6c03f6a35af017851f105115c0 /src/Network/DatagramServer.hs | |
parent | c565ec07f37006a5abb7b3bc5a1b08013fbeb5d7 (diff) |
Fixed Tox decryption.
Diffstat (limited to 'src/Network/DatagramServer.hs')
-rw-r--r-- | src/Network/DatagramServer.hs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/Network/DatagramServer.hs b/src/Network/DatagramServer.hs index bcf8b9af..55a26e58 100644 --- a/src/Network/DatagramServer.hs +++ b/src/Network/DatagramServer.hs | |||
@@ -451,14 +451,15 @@ prettyQF e = T.encodeUtf8 $ "handler fail while performing query: " | |||
451 | -- corresponding 'QueryFailure's. | 451 | -- corresponding 'QueryFailure's. |
452 | -- | 452 | -- |
453 | handler :: forall h a b msg raw. (Applicative h, Functor msg, WireFormat raw msg, SerializableTo raw a, SerializableTo raw b) | 453 | handler :: forall h a b msg raw. (Applicative h, Functor msg, WireFormat raw msg, SerializableTo raw a, SerializableTo raw b) |
454 | => QueryMethod msg -> (SockAddr -> msg a -> h b) -> Handler h msg raw | 454 | => (SockAddr -> h (NodeId msg)) -> QueryMethod msg -> (SockAddr -> msg a -> h b) -> Handler h msg raw |
455 | handler name body = (name, wrapper) | 455 | handler whoami name body = (name, wrapper) |
456 | where | 456 | where |
457 | wrapper :: SockAddr -> msg raw -> h (Either String (msg raw)) | 457 | wrapper :: SockAddr -> msg raw -> h (Either String (msg raw)) |
458 | wrapper addr args = | 458 | wrapper addr args = |
459 | case decodePayload args of | 459 | case decodePayload args of |
460 | Left e -> pure $ Left e | 460 | Left e -> pure $ Left e |
461 | Right a -> Right . encodePayload . buildReply (error "self node-id") addr args <$> body addr a | 461 | Right a -> do |
462 | (\me bs -> Right $ encodePayload $ buildReply me addr args bs) <$> whoami addr <*> body addr a | ||
462 | 463 | ||
463 | runHandler :: ( Envelope msg | 464 | runHandler :: ( Envelope msg |
464 | , Show (QueryMethod msg) | 465 | , Show (QueryMethod msg) |
@@ -528,8 +529,8 @@ handleQuery :: ( WireFormat raw msg | |||
528 | handleQuery mgr@Manager{..} hs meth raw q addr = void $ fork $ do | 529 | handleQuery mgr@Manager{..} hs meth raw q addr = void $ fork $ do |
529 | myThreadId >>= liftIO . flip labelThread "KRPC.handleQuery" | 530 | myThreadId >>= liftIO . flip labelThread "KRPC.handleQuery" |
530 | res <- dispatchHandler mgr hs meth q addr | 531 | res <- dispatchHandler mgr hs meth q addr |
532 | (me,ctx) <- serverState (error "TODO TOX ToxCipherContext 2 or () for Mainline") | ||
531 | let res' = either buildError Just res | 533 | let res' = either buildError Just res |
532 | ctx = error "TODO TOX ToxCipherContext 2 or () for Mainline" | ||
533 | dest = makeAddress (Right q) addr | 534 | dest = makeAddress (Right q) addr |
534 | resbs = fmap (\raw -> encodeHeaders ctx raw dest) res' :: Maybe BS.ByteString | 535 | resbs = fmap (\raw -> encodeHeaders ctx raw dest) res' :: Maybe BS.ByteString |
535 | -- TODO: Generalize this debug print. | 536 | -- TODO: Generalize this debug print. |
@@ -565,7 +566,7 @@ listener :: forall raw msg. | |||
565 | ) => Manager raw msg -> [Handler IO msg raw] -> Protocol raw msg -> IO () | 566 | ) => Manager raw msg -> [Handler IO msg raw] -> Protocol raw msg -> IO () |
566 | listener mgr@Manager{..} hs p = do | 567 | listener mgr@Manager{..} hs p = do |
567 | fix $ \again -> do | 568 | fix $ \again -> do |
568 | let ctx = error "TODO TOX ToxCipherContext or () for Mainline" | 569 | (me, ctx) <- serverState (error "TODO TOX ToxCipherContext or () for Mainline") |
569 | (bs, addr) <- liftIO $ do | 570 | (bs, addr) <- liftIO $ do |
570 | handle exceptions $ BS.recvFrom sock (optMaxMsgSize options) | 571 | handle exceptions $ BS.recvFrom sock (optMaxMsgSize options) |
571 | case parsePacket (msgProxy p) bs >>= \r -> (,) r <$> decodeHeaders ctx r of | 572 | case parsePacket (msgProxy p) bs >>= \r -> (,) r <$> decodeHeaders ctx r of |