diff --git a/pontarius-xmpp.cabal b/pontarius-xmpp.cabal
--- a/pontarius-xmpp.cabal
+++ b/pontarius-xmpp.cabal
@@ -1,6 +1,6 @@
 Cabal-Version: 2.2
 Name:          pontarius-xmpp
-Version:       0.5.6.4
+Version:       0.5.6.5
 Build-Type:    Simple
 License:       BSD-3-Clause
 License-File:  LICENSE.md
@@ -216,4 +216,4 @@
 Source-Repository this
   Type: git
   Location: https://github.com/l29ah/pontarius-xmpp.git
-  Tag: 0.5.6.4
+  Tag: 0.5.6.5
diff --git a/source/Network/Xmpp/Stream.hs b/source/Network/Xmpp/Stream.hs
--- a/source/Network/Xmpp/Stream.hs
+++ b/source/Network/Xmpp/Stream.hs
@@ -37,7 +37,7 @@
 import           Data.XML.Pickle
 import           Data.XML.Types
 import qualified GHC.IO.Exception as GIE
-import           Network.Socket hiding (Stream,connect)
+import           Network.Socket hiding (Closed, Stream, connect)
 import           Network.DNS hiding (encode, lookup)
 import qualified Network.Socket as S
 import           Network.Socket (AddrInfo)
diff --git a/source/Network/Xmpp/Types.hs b/source/Network/Xmpp/Types.hs
--- a/source/Network/Xmpp/Types.hs
+++ b/source/Network/Xmpp/Types.hs
@@ -1088,7 +1088,8 @@
             guard $ Text.all (`Set.notMember` prohibMap) l''
             l''' <- nonEmpty l''
             return $ Just l'''
-    domainPart' <- forbidSeparators =<< SP.runStringPrep (SP.namePrepProfile False) (stripSuffix d)
+    -- strip dots again to handle stuff like "⒐" until we are rfc7622
+    domainPart' <- forbidSeparators . stripSuffix =<< SP.runStringPrep (SP.namePrepProfile False) (stripSuffix d)
     guard $ validDomainPart domainPart'
     guard $ validPartLength domainPart'
     domainPart <- nonEmpty domainPart'
@@ -1108,8 +1109,8 @@
     validPartLength :: Text -> Bool
     validPartLength p = Text.length p > 0
                         && BS.length (Text.encodeUtf8 p) < 1024
-    -- RFC6122 §2.2
-    stripSuffix t = if Text.last t == '.' then Text.init t else t
+    -- RFC6122 §2.2; we strip ALL the dots to avoid looking for a fixed point and bailing out early
+    stripSuffix = Text.dropWhileEnd (== '.')
     -- "／" might be a valid JID, but stringprep messes it up, so we use
     forbidSeparators t = if Nothing == Text.find (flip elem ['/', '@']) t then Just t else Nothing
 
