diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2020-11-06  Vladimir Shabanov  <dev@vshabanov.com>
+
+	* HsOpenSSL.cabal (Version): Bump version to 0.11.5.1
+
+	* Fix for older GHC versions.
+
 2020-11-02  Vladimir Shabanov  <dev@vshabanov.com>
 
 	* HsOpenSSL.cabal (Version): Bump version to 0.11.5
diff --git a/HsOpenSSL.cabal b/HsOpenSSL.cabal
--- a/HsOpenSSL.cabal
+++ b/HsOpenSSL.cabal
@@ -10,7 +10,7 @@
     systems and stable. You may also be interested in the @tls@ package,
     <http://hackage.haskell.org/package/tls>, which is a pure Haskell
     implementation of SSL.
-Version:       0.11.5
+Version:       0.11.5.1
 License:       PublicDomain
 License-File:  COPYING
 Author:        Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen
diff --git a/OpenSSL/Session.hsc b/OpenSSL/Session.hsc
--- a/OpenSSL/Session.hsc
+++ b/OpenSSL/Session.hsc
@@ -471,8 +471,8 @@
                      -- from the peer
                      throwIO ConnectionAbruptlyTerminated
                    else
-                     throwIO $ ProtocolError $ loc <> ": "
-                       <> sslErrorString sslErr
+                     throwIO $ ProtocolError $ loc ++ ": "
+                       ++ sslErrorString sslErr
                  else
                    throwErrno loc
            else
@@ -496,7 +496,7 @@
 #endif
   (#const SSL_ERROR_SYSCALL) -> "SSL_ERROR_SYSCALL"
   (#const SSL_ERROR_SSL) -> "SSL_ERROR_SSL"
-  _ -> "Unknown SSL error " <> show e
+  _ -> "Unknown SSL error: " ++ show e
 
 -- | This is the type of an SSL IO operation. Errors are handled by
 -- exceptions while everything else is one of these. Note that reading
