diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,32 @@
 
 
 
+irc-fun-messages 0.2.0.1 -- 2015-12-17
+======================================
+
+General, build and documentation changes:
+
+* (None)
+
+New APIs, features and enhancements:
+
+* (None)
+
+Bug fixes:
+
+* Fix bug in IPv6 parsing. It caused IPv6 users to be ignored by IRC clients
+  using this library, since their messages failed to parse. In fact the parser
+  *was* written according to the RFC, but now it really accepts the actually
+  used IPv6 text forms.
+
+Dependency changes:
+
+* (None)
+
+
+
+
+
 irc-fun-messages 0.2.0.0 -- 2015-10-17
 ======================================
 
diff --git a/irc-fun-messages.cabal b/irc-fun-messages.cabal
--- a/irc-fun-messages.cabal
+++ b/irc-fun-messages.cabal
@@ -1,5 +1,5 @@
 name:                irc-fun-messages
-version:             0.2.0.0
+version:             0.2.0.1
 synopsis:            Types and functions for working with the IRC protocol.
 description:
   Another IRC library. It doesn't provide a client API though. It just provides
@@ -11,8 +11,8 @@
   .
   NOTE: The handling of IRC protocol messages is incomplete, but there
   is enough to e.g. create an IRC bot. Missing features are being added as
-  needed while working on <http://rel4tion.org/projects/funbot FunBot>, and of
-  course patches are welcome.
+  needed while working on <https://notabug.org/fr33domlover/funbot FunBot>, and
+  of course patches are welcome.
 homepage:            http://rel4tion.org/projects/irc-fun-messages/
 bug-reports:         http://rel4tion.org/projects/irc-fun-messages/tickets/
 license:             PublicDomain
@@ -27,7 +27,7 @@
 
 source-repository head
   type:                darcs
-  location:            http://dev.rel4tion.org/fr33domlover/irc-fun-messages
+  location:            http://hub.darcs.net/fr33domlover/irc-fun-messages
 
 library
   exposed-modules:     Network.IRC.Fun.Messages
diff --git a/src/Network/IRC/Fun/Messages/Internal/Parse.hs b/src/Network/IRC/Fun/Messages/Internal/Parse.hs
--- a/src/Network/IRC/Fun/Messages/Internal/Parse.hs
+++ b/src/Network/IRC/Fun/Messages/Internal/Parse.hs
@@ -333,7 +333,7 @@
 -- | Read a generic reply structure into specific message or reply details.
 -- Return 'Left' an error description if analysis fails.
 --
--- This is essentially a combination or 'analyzeMessage' and 'analyzeReply.
+-- This is essentially a combination or 'analyzeMessage' and 'analyzeReply'.
 analyze :: GenericMessage
         -> Either String (Either SpecificReply SpecificMessage)
 analyze gm =
diff --git a/src/Network/IRC/Fun/Messages/Internal/Tokens/Message.hs b/src/Network/IRC/Fun/Messages/Internal/Tokens/Message.hs
--- a/src/Network/IRC/Fun/Messages/Internal/Tokens/Message.hs
+++ b/src/Network/IRC/Fun/Messages/Internal/Tokens/Message.hs
@@ -21,9 +21,7 @@
 import Data.Maybe (fromMaybe)
 import Network.IRC.Fun.Messages.Internal.Tokens.Other
 import Network.IRC.Fun.Messages.Internal.Tokens.Target
-import Network.IRC.Fun.Messages.Internal.Types hiding ( prefix
-                                                      , command
-                                                      , params )
+import Network.IRC.Fun.Messages.Internal.Types
 import Text.Regex.Applicative
 
 ----------TOTO
diff --git a/src/Network/IRC/Fun/Messages/Internal/Tokens/Other.hs b/src/Network/IRC/Fun/Messages/Internal/Tokens/Other.hs
--- a/src/Network/IRC/Fun/Messages/Internal/Tokens/Other.hs
+++ b/src/Network/IRC/Fun/Messages/Internal/Tokens/Other.hs
@@ -19,6 +19,7 @@
     , letter
     , digit
     , hexdigit
+    , hexdigit'
     , special
     )
 where
@@ -43,6 +44,15 @@
 hexdigit = digit <|> upperhex
     where
     upperhex = psym $ \ c -> 'A' <= c && c <= 'F'
+
+-- RFC 2812 assumes IPv6 addresses with uppercase hex digits. In practice, the
+-- recommendation it to use lowercase, and that's what really happens. So this
+-- regex accepts both lowercase and uppercase.
+hexdigit' :: Regex Char
+hexdigit' = digit <|> upperhex <|> lowerhex
+    where
+    upperhex = psym $ \ c -> 'A' <= c && c <= 'F'
+    lowerhex = psym $ \ c -> 'a' <= c && c <= 'f'
 
 special :: Regex Char
 special = psym (`elem` "[]\\`_^{|}")
diff --git a/src/Network/IRC/Fun/Messages/Internal/Tokens/Target.hs b/src/Network/IRC/Fun/Messages/Internal/Tokens/Target.hs
--- a/src/Network/IRC/Fun/Messages/Internal/Tokens/Target.hs
+++ b/src/Network/IRC/Fun/Messages/Internal/Tokens/Target.hs
@@ -25,7 +25,7 @@
 where
 
 import Data.Char (isAsciiUpper)
-import Network.IRC.Fun.Messages.Internal.Types hiding (target)
+import Network.IRC.Fun.Messages.Internal.Types
 import Network.IRC.Fun.Messages.Internal.Tokens.Other
 import Network.IRC.Fun.Messages.Internal.Tokens.Wildcards
 import Text.Regex.Applicative
@@ -64,8 +64,8 @@
 servername = hostname
 
 host :: Regex Host
-host = HostName  <$> hostname
-   <|> HostAddr  <$> hostaddr
+host = HostAddr  <$> hostaddr
+   <|> HostName  <$> hostname
    <|> HostCloak <$> hostcloak
 
 hostname :: Regex String
@@ -89,18 +89,20 @@
     p = sym '.'
 
 ip6addr :: Regex String
-ip6addr = snd <$> withMatched (a <|> b)
+ip6addr = snd <$> withMatched (full <|> short <|> v4)
     where
-    h = some hexdigit
+    h = some hexdigit'
     c = sym ':'
-    a = h <* c <* h <* c <*
-        h <* c <* h <* c <*
-        h <* c <* h <* c <*
-        h <* c <* h <* c
-    b = string "0:0:0:0:0:" <*
-        (string "0" <|> string "FFFF") <*
-        sym ':' <*
-        ip4addr
+    s = h <* many (c <* h)
+    full = h <* c <* h <* c <*
+           h <* c <* h <* c <*
+           h <* c <* h <* c <*
+           h <* c <* h
+    short = optional s *> string "::" <* optional s
+    v4 = string "0:0:0:0:0:" <*
+         (string "0" <|> string "FFFF") <*
+         sym ':' <*
+         ip4addr
 
 hostcloak :: Regex String
 hostcloak = some $ letter <|> digit <|> special <|> psym (`elem` ".-/")
