"Parse" "arguments" to get_servername
diff --git a/OpenSSL/ssl/connection.c b/OpenSSL/ssl/connection.c
index 68dbe7e..9e9794b 100755
--- a/OpenSSL/ssl/connection.c
+++ b/OpenSSL/ssl/connection.c
@@ -313,7 +313,9 @@
     int type = TLSEXT_NAMETYPE_host_name;
     const char *name;
 
-    /* XXX Argument parsing */
+    if (!PyArg_ParseTuple(args, ":get_servername")) {
+        return NULL;
+    }
 
     name = SSL_get_servername(self->ssl, type);
 
diff --git a/OpenSSL/test/test_ssl.py b/OpenSSL/test/test_ssl.py
index 52ff818..2ab67fd 100644
--- a/OpenSSL/test/test_ssl.py
+++ b/OpenSSL/test/test_ssl.py
@@ -1080,6 +1080,17 @@
                 conn.set_tlsext_host_name, b("example.com").decode("ascii"))
 
 
+    def test_get_servername_wrong_args(self):
+        """
+        L{Connection.get_servername} raises L{TypeError} if called with any
+        arguments.
+        """
+        connection = Connection(Context(TLSv1_METHOD), None)
+        self.assertRaises(TypeError, connection.get_servername, object())
+        self.assertRaises(TypeError, connection.get_servername, 1)
+        self.assertRaises(TypeError, connection.get_servername, "hello")
+
+
     def test_pending(self):
         """
         L{Connection.pending} returns the number of bytes available for