diff options
author | joe <joe@jerkface.net> | 2017-10-14 16:34:24 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2017-10-14 16:34:24 -0400 |
commit | 4b7f8e625d6cab8ae25074fc3339a5403ec5fb36 (patch) | |
tree | 9da87ee15ce14f6347e40b8a9491547edc281c9f /src/Network/Tox/NodeId.hs | |
parent | f1a79aef9799176b52efb6197aaf7c2b5a8f14ad (diff) |
Partitioned friend-request transport from the onion transport.
Diffstat (limited to 'src/Network/Tox/NodeId.hs')
-rw-r--r-- | src/Network/Tox/NodeId.hs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/Network/Tox/NodeId.hs b/src/Network/Tox/NodeId.hs index bba56e27..20dc1854 100644 --- a/src/Network/Tox/NodeId.hs +++ b/src/Network/Tox/NodeId.hs | |||
@@ -213,8 +213,10 @@ instance FromJSON NodeInfo where | |||
213 | ip <- maybe empty (return . IPv6) (ip6str >>= readMaybe) | 213 | ip <- maybe empty (return . IPv6) (ip6str >>= readMaybe) |
214 | <|> maybe empty (return . IPv4) (ip4str >>= readMaybe) | 214 | <|> maybe empty (return . IPv4) (ip4str >>= readMaybe) |
215 | let (bs,_) = Base16.decode (C8.pack nidstr) | 215 | let (bs,_) = Base16.decode (C8.pack nidstr) |
216 | guard (B.length bs == 32) | 216 | enid = Base64.decode (C8.pack $ 'A' : map (nmtoken64 False) nidstr) |
217 | return $ NodeInfo (bs2id bs) ip (fromIntegral (portnum :: Word16)) | 217 | idbs <- (guard (B.length bs == 32) >> return bs) |
218 | <|> either fail (return . B.drop 1) enid | ||
219 | return $ NodeInfo (bs2id idbs) ip (fromIntegral (portnum :: Word16)) | ||
218 | 220 | ||
219 | getIP :: Word8 -> S.Get IP | 221 | getIP :: Word8 -> S.Get IP |
220 | getIP 0x02 = IPv4 <$> S.get | 222 | getIP 0x02 = IPv4 <$> S.get |