diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.2.1.1
+
+* Fix a connection-bug with http-proxy(Previous version closes a connection before reading all respose-data.)
+
 ## 0.2.1.0
 
 * Add support for http-proxy
diff --git a/Network/HTTP/Client/OpenSSL.hs b/Network/HTTP/Client/OpenSSL.hs
--- a/Network/HTTP/Client/OpenSSL.hs
+++ b/Network/HTTP/Client/OpenSSL.hs
@@ -11,6 +11,7 @@
 import Network.HTTP.Client.Internal
 import Control.Exception
 import Network.Socket (HostAddress)
+import Network.Socket.ByteString (sendAll, recv)
 import OpenSSL
 import qualified Network.Socket as N
 import qualified OpenSSL.Session       as SSL
@@ -68,7 +69,10 @@
             bracketOnError (N.socket family socketType protocol) (N.close)
                 $ \sock -> do
                     N.connect sock address
-                    conn <- socketConnection sock 32752
+                    conn <- makeConnection
+                            (recv sock 32752)
+                            (sendAll sock)
+                            (return ())
                     connectionWrite conn connstr
                     checkConn conn
                     ssl <- SSL.connection ctx sock
diff --git a/http-client-openssl.cabal b/http-client-openssl.cabal
--- a/http-client-openssl.cabal
+++ b/http-client-openssl.cabal
@@ -1,5 +1,5 @@
 name:                http-client-openssl
-version:             0.2.1.0
+version:             0.2.1.1
 synopsis:            http-client backend using the OpenSSL library.
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/http-client>.
 homepage:            https://github.com/snoyberg/http-client
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -22,4 +22,12 @@
         withResponse req manager $ \res -> do
             responseStatus res `shouldBe` status200
             lookup "content-type" (responseHeaders res) `shouldBe` Just "application/x-gzip"
+    it "compare responses without and with proxy" $ do
+        manager <- newManager $ opensslManagerSettings SSL.context
+        let req = parseRequest_ "GET https://raw.githubusercontent.com/snoyberg/http-client/master/README.md"
+        v_org <- withResponse req manager $ \res -> do
+          lbsResponse res
+        v <- withResponse (addProxy "localhost" 8080 req) manager $ \res -> do
+          lbsResponse res
+        (responseBody v) `shouldBe` (responseBody v_org)
 #endif
