Apply the changeset from https://code.launchpad.net/~redtoad/pyopenssl/pyopenssl/+merge/178226 by Sebastian Rahlf
diff --git a/OpenSSL/test/test_tsafe.py b/OpenSSL/test/test_tsafe.py
new file mode 100644
index 0000000..425f4e6
--- /dev/null
+++ b/OpenSSL/test/test_tsafe.py
@@ -0,0 +1,35 @@
+
+"""
+Unit tests for :py:obj:`OpenSSL.tsafe`.
+"""
+
+from OpenSSL import tsafe
+from OpenSSL.SSL import SSLv2_METHOD, SSLv3_METHOD, SSLv23_METHOD, TLSv1_METHOD
+from OpenSSL.SSL import Context
+from OpenSSL.test.util import TestCase, bytes, b
+from OpenSSL.test.test_ssl import _create_certificate_chain
+
+
+class ConnectionTest(TestCase):
+    """
+    Unit tests for :py:obj:`OpenSSL.tsafe.Connection`.
+    """
+
+    def test_instantiating_works_under_all_supported_Python_versions(self):
+        """
+        At least one library (namely `Werkzeug`_) is instantiating
+        :py:obj:`Connection` directly which previously did not work under
+        Python 3 (Bug #1211834: Python 3 Code Uses "apply" function).
+
+        .. _Werkzeug: http://werkzeug.pocoo.org
+        """
+        chain = _create_certificate_chain()
+        [(_, _), (ikey, icert), (skey, scert)] = chain
+
+        # Create the server context
+        ctx = Context(TLSv1_METHOD)
+        ctx.use_privatekey(skey)
+        ctx.use_certificate(scert)
+
+        # The following line should not throw an error
+        socket = tsafe.Connection(ctx, None)
diff --git a/OpenSSL/tsafe.py b/OpenSSL/tsafe.py
index 9d7ad2f..3a9c710 100644
--- a/OpenSSL/tsafe.py
+++ b/OpenSSL/tsafe.py
@@ -8,7 +8,7 @@
 
 class Connection:
     def __init__(self, *args):
-        self._ssl_conn = apply(_ssl.Connection, args)
+        self._ssl_conn = _ssl.Connection(*args)
         self._lock = _RLock()
 
     for f in ('get_context', 'pending', 'send', 'write', 'recv', 'read',