diff options
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 |