try harder to do the thing on pypy, also start fixing more refcounts
diff --git a/OpenSSL/crypto/x509.c b/OpenSSL/crypto/x509.c
index c8ce90b..937d159 100644
--- a/OpenSSL/crypto/x509.c
+++ b/OpenSSL/crypto/x509.c
@@ -842,6 +842,7 @@
         return 0;
     }
 
+    Py_INCREF((PyObject *)&crypto_X509_Type);
     if (PyModule_AddObject(module, "X509Type", (PyObject *)&crypto_X509_Type) != 0) {
         return 0;
     }
diff --git a/OpenSSL/crypto/x509name.c b/OpenSSL/crypto/x509name.c
index 799240f..ed3302d 100644
--- a/OpenSSL/crypto/x509name.c
+++ b/OpenSSL/crypto/x509name.c
@@ -527,6 +527,7 @@
         return 0;
     }
 
+    Py_INCREF((PyObject *)&crypto_X509Name_Type);
     if (PyModule_AddObject(module, "X509NameType", (PyObject *)&crypto_X509Name_Type) != 0) {
         return 0;
     }
diff --git a/OpenSSL/ssl/connection.c b/OpenSSL/ssl/connection.c
index e4ba719..9c67660 100755
--- a/OpenSSL/ssl/connection.c
+++ b/OpenSSL/ssl/connection.c
@@ -335,7 +335,7 @@
     int len, ret, err, flags;
     char *buf;
 
-#if 0 && PY_VERSION_HEX >= 0x02060000
+#if !defined(PYPY_VERSION) || PY_VERSION_HEX >= 0x02060000
     Py_buffer pbuf;
 
     if (!PyArg_ParseTuple(args, "s*|i:send", &pbuf, &flags))
@@ -353,7 +353,7 @@
     ret = SSL_write(self->ssl, buf, len);
     MY_END_ALLOW_THREADS(self->tstate)
 
-#if 0 && PY_VERSION_HEX >= 0x02060000
+#if !defined(PYPY_VERSION) || PY_VERSION_HEX >= 0x02060000
     PyBuffer_Release(&pbuf);
 #endif
 
@@ -392,7 +392,7 @@
     int len, ret, err, flags;
     PyObject *pyret = Py_None;
 
-#if 0 && PY_VERSION_HEX >= 0x02060000
+#if !defined(PYPY_VERSION) || PY_VERSION_HEX >= 0x02060000
     Py_buffer pbuf;
 
     if (!PyArg_ParseTuple(args, "s*|i:sendall", &pbuf, &flags))
@@ -430,7 +430,7 @@
         }
     } while (len > 0);
 
-#if 0 && PY_VERSION_HEX >= 0x02060000
+#if !defined(PYPY_VERSION) || PY_VERSION_HEX >= 0x02060000
     PyBuffer_Release(&pbuf);
 #endif