Blob Blame History Raw
diff -ur M2Crypto/SWIG/_dsa.i M2Crypto-0.20.2/SWIG/_dsa.i
--- M2Crypto/SWIG/_dsa.i	2009-10-07 06:25:44.000000000 +0200
+++ M2Crypto-0.20.2/SWIG/_dsa.i	2010-02-10 16:46:18.386538508 +0100
@@ -155,13 +155,14 @@
 }
 %}
 
-%threadallow dsa_read_params;
 %inline %{
 DSA *dsa_read_params(BIO *f, PyObject *pyfunc) {
     DSA *ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_read_bio_DSAparams(f, NULL, passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
@@ -174,27 +175,29 @@
 }
 %}
 
-%threadallow dsa_write_key_bio;
 %inline %{
 int dsa_write_key_bio(DSA* dsa, BIO* f, EVP_CIPHER *cipher, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_DSAPrivateKey(f, dsa, cipher, NULL, 0,
                                         passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow dsa_write_key_bio_no_cipher;
 %inline %{
 int dsa_write_key_bio_no_cipher(DSA* dsa, BIO* f, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_DSAPrivateKey(f, dsa, NULL, NULL, 0,
                                         passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
@@ -207,25 +210,27 @@
 }
 %}
 
-%threadallow dsa_read_key;
 %inline %{
 DSA *dsa_read_key(BIO *f, PyObject *pyfunc) {
     DSA *ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_read_bio_DSAPrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow dsa_read_pub_key;
 %inline %{
 DSA *dsa_read_pub_key(BIO *f, PyObject *pyfunc) {
     DSA *ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_read_bio_DSA_PUBKEY(f, NULL, passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
diff -ur M2Crypto/SWIG/_ec.i M2Crypto-0.20.2/SWIG/_ec.i
--- M2Crypto/SWIG/_ec.i	2010-02-09 17:21:02.434816299 +0100
+++ M2Crypto-0.20.2/SWIG/_ec.i	2010-02-10 16:47:59.284538639 +0100
@@ -205,39 +205,42 @@
 }
 %}
 
-%threadallow ec_key_read_bio;
 %inline %{
 EC_KEY *ec_key_read_bio(BIO *f, PyObject *pyfunc) {
     EC_KEY *ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_read_bio_ECPrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow ec_key_write_bio;
 %inline %{
 int ec_key_write_bio(EC_KEY *key, BIO *f, EVP_CIPHER *cipher, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_ECPrivateKey(f, key, cipher, NULL, 0,
         passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow ec_key_write_bio_no_cipher;
 %inline %{
 int ec_key_write_bio_no_cipher(EC_KEY *key, BIO *f, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_ECPrivateKey(f, key, NULL, NULL, 0, 
                       passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
diff -ur M2Crypto/SWIG/_evp.i M2Crypto-0.20.2/SWIG/_evp.i
--- M2Crypto/SWIG/_evp.i	2010-02-09 17:21:02.439565411 +0100
+++ M2Crypto-0.20.2/SWIG/_evp.i	2010-02-10 16:53:08.174537783 +0100
@@ -463,39 +463,42 @@
 }
 %}
 
-%threadallow pkey_write_pem_no_cipher;
 %inline %{
 int pkey_write_pem_no_cipher(EVP_PKEY *pkey, BIO *f, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_PKCS8PrivateKey(f, pkey, NULL, NULL, 0,
             passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow pkey_write_pem;
 %inline %{
 int pkey_write_pem(EVP_PKEY *pkey, BIO *f, EVP_CIPHER *cipher, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_PKCS8PrivateKey(f, pkey, cipher, NULL, 0,
             passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow pkey_read_pem;
 %inline %{
 EVP_PKEY *pkey_read_pem(BIO *f, PyObject *pyfunc) {
     EVP_PKEY *pk;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     pk = PEM_read_bio_PrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return pk;
 }
diff -ur M2Crypto/SWIG/_pkcs7.i M2Crypto-0.20.2/SWIG/_pkcs7.i
--- M2Crypto/SWIG/_pkcs7.i	2010-02-09 17:21:02.431815471 +0100
+++ M2Crypto-0.20.2/SWIG/_pkcs7.i	2010-02-10 16:55:43.516592774 +0100
@@ -101,10 +101,9 @@
 }
 %}
 
-%threadallow pkcs7_verify1;
 %inline %{
 PyObject *pkcs7_verify1(PKCS7 *pkcs7, STACK_OF(X509) *stack, X509_STORE *store, BIO *data, int flags) {
-    int outlen;
+    int res, outlen;
     char *outbuf;
     BIO *bio;
     PyObject *ret; 
@@ -113,7 +112,10 @@
         PyErr_SetString(PyExc_MemoryError, "pkcs7_verify1");
         return NULL;
     }
-    if (!PKCS7_verify(pkcs7, stack, store, data, bio, flags)) {
+    Py_BEGIN_ALLOW_THREADS
+    res = PKCS7_verify(pkcs7, stack, store, data, bio, flags);
+    Py_END_ALLOW_THREADS
+    if (!res) {
         PyErr_SetString(_pkcs7_err, ERR_reason_error_string(ERR_get_error()));
         BIO_free(bio);
         return NULL;
diff -ur M2Crypto/SWIG/_rsa.i M2Crypto-0.20.2/SWIG/_rsa.i
--- M2Crypto/SWIG/_rsa.i	2009-10-07 06:28:50.000000000 +0200
+++ M2Crypto-0.20.2/SWIG/_rsa.i	2010-02-10 16:50:40.029788004 +0100
@@ -48,39 +48,42 @@
 }
 %}
 
-%threadallow rsa_read_key;
 %inline %{
 RSA *rsa_read_key(BIO *f, PyObject *pyfunc) {
     RSA *rsa;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     rsa = PEM_read_bio_RSAPrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return rsa;
 }
 %}
 
-%threadallow rsa_write_key;
 %inline %{
 int rsa_write_key(RSA *rsa, BIO *f, EVP_CIPHER *cipher, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_RSAPrivateKey(f, rsa, cipher, NULL, 0,
         passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }
 %}
 
-%threadallow rsa_write_key_no_cipher;
 %inline %{
 int rsa_write_key_no_cipher(RSA *rsa, BIO *f, PyObject *pyfunc) {
     int ret;
 
     Py_INCREF(pyfunc);
+    Py_BEGIN_ALLOW_THREADS
     ret = PEM_write_bio_RSAPrivateKey(f, rsa, NULL, NULL, 0, 
                       passphrase_callback, (void *)pyfunc);
+    Py_END_ALLOW_THREADS
     Py_DECREF(pyfunc);
     return ret;
 }