Author: Armin Rigo <[email protected]>
Branch: errno-again
Changeset: r75409:2c55fbd16f12
Date: 2015-01-17 10:53 +0100
http://bitbucket.org/pypy/pypy/changeset/2c55fbd16f12/

Log:    Add some 'save_err' to ropenssl, as seemingly needed by
        pypy/module/_ssl.

diff --git a/rpython/rlib/_rsocket_rffi.py b/rpython/rlib/_rsocket_rffi.py
--- a/rpython/rlib/_rsocket_rffi.py
+++ b/rpython/rlib/_rsocket_rffi.py
@@ -640,7 +640,7 @@
                          rffi.VOIDP, rwin32.DWORD,
                          rffi.VOIDP, rwin32.DWORD,
                          rwin32.LPDWORD, rffi.VOIDP, rffi.VOIDP],
-                        rffi.INT)
+                        rffi.INT, save_err=SAVE_ERR)
     tcp_keepalive = cConfig.tcp_keepalive
 
     WSAPROTOCOL_INFO = cConfig.WSAPROTOCOL_INFO
diff --git a/rpython/rlib/ropenssl.py b/rpython/rlib/ropenssl.py
--- a/rpython/rlib/ropenssl.py
+++ b/rpython/rlib/ropenssl.py
@@ -5,7 +5,7 @@
 from rpython.translator.platform import platform
 from rpython.translator.tool.cbuild import ExternalCompilationInfo
 from rpython.rlib.unroll import unrolling_iterable
-from rpython.rlib._rsocket_rffi import MAX_FD_SIZE
+from rpython.rlib._rsocket_rffi import MAX_FD_SIZE, SAVE_ERR
 
 
 if sys.platform == 'win32' and platform.name != 'mingw32':
@@ -211,7 +211,9 @@
 ssl_external('SSL_CTX_get_verify_mode', [SSL_CTX], rffi.INT)
 ssl_external('SSL_CTX_set_default_verify_paths', [SSL_CTX], rffi.INT)
 ssl_external('SSL_CTX_set_cipher_list', [SSL_CTX, rffi.CCHARP], rffi.INT)
-ssl_external('SSL_CTX_load_verify_locations', [SSL_CTX, rffi.CCHARP, 
rffi.CCHARP], rffi.INT)
+ssl_external('SSL_CTX_load_verify_locations',
+             [SSL_CTX, rffi.CCHARP, rffi.CCHARP], rffi.INT,
+             save_err=SAVE_ERR)
 ssl_external('SSL_CTX_check_private_key', [SSL_CTX], rffi.INT)
 ssl_external('SSL_CTX_set_session_id_context', [SSL_CTX, rffi.CCHARP, 
rffi.UINT], rffi.INT)
 SSL_CTX_STATS_NAMES = """
@@ -231,8 +233,8 @@
 ssl_external('SSL_set_connect_state', [SSL], lltype.Void)
 ssl_external('SSL_set_accept_state', [SSL], lltype.Void)
 ssl_external('SSL_connect', [SSL], rffi.INT)
-ssl_external('SSL_do_handshake', [SSL], rffi.INT)
-ssl_external('SSL_shutdown', [SSL], rffi.INT)
+ssl_external('SSL_do_handshake', [SSL], rffi.INT, save_err=SAVE_ERR)
+ssl_external('SSL_shutdown', [SSL], rffi.INT, save_err=SAVE_ERR)
 ssl_external('SSL_get_error', [SSL, rffi.INT], rffi.INT)
 ssl_external('SSL_get_shutdown', [SSL], rffi.INT)
 ssl_external('SSL_set_read_ahead', [SSL, rffi.INT], lltype.Void)
@@ -246,7 +248,7 @@
 ssl_external('X509_NAME_get_entry', [X509_NAME, rffi.INT], X509_NAME_ENTRY)
 ssl_external('X509_NAME_ENTRY_get_object', [X509_NAME_ENTRY], ASN1_OBJECT)
 ssl_external('X509_NAME_ENTRY_get_data', [X509_NAME_ENTRY], ASN1_STRING)
-ssl_external('i2d_X509', [X509, rffi.CCHARPP], rffi.INT)
+ssl_external('i2d_X509', [X509, rffi.CCHARPP], rffi.INT, save_err=SAVE_ERR)
 ssl_external('X509_free', [X509], lltype.Void, releasegil=False)
 ssl_external('X509_get_notBefore', [X509], ASN1_TIME, macro=True)
 ssl_external('X509_get_notAfter', [X509], ASN1_TIME, macro=True)
@@ -258,10 +260,12 @@
 
 
 ssl_external('OBJ_obj2txt',
-             [rffi.CCHARP, rffi.INT, ASN1_OBJECT, rffi.INT], rffi.INT)
+             [rffi.CCHARP, rffi.INT, ASN1_OBJECT, rffi.INT], rffi.INT,
+             save_err=SAVE_ERR)
 ssl_external('ASN1_STRING_data', [ASN1_STRING], rffi.CCHARP)
 ssl_external('ASN1_STRING_length', [ASN1_STRING], rffi.INT)
-ssl_external('ASN1_STRING_to_UTF8', [rffi.CCHARPP, ASN1_STRING], rffi.INT)
+ssl_external('ASN1_STRING_to_UTF8', [rffi.CCHARPP, ASN1_STRING], rffi.INT,
+             save_err=SAVE_ERR)
 ssl_external('ASN1_TIME_print', [BIO, ASN1_TIME], rffi.INT)
 ssl_external('i2a_ASN1_INTEGER', [BIO, ASN1_INTEGER], rffi.INT)
 ssl_external('ASN1_item_d2i',
@@ -293,9 +297,12 @@
 ssl_external('CRYPTO_free', [rffi.VOIDP], lltype.Void)
 libssl_OPENSSL_free = libssl_CRYPTO_free
 
-ssl_external('SSL_write', [SSL, rffi.CCHARP, rffi.INT], rffi.INT)
-ssl_external('SSL_pending', [SSL], rffi.INT)
-ssl_external('SSL_read', [SSL, rffi.CCHARP, rffi.INT], rffi.INT)
+ssl_external('SSL_write', [SSL, rffi.CCHARP, rffi.INT], rffi.INT,
+             save_err=SAVE_ERR)
+ssl_external('SSL_pending', [SSL], rffi.INT,
+             save_err=SAVE_ERR)
+ssl_external('SSL_read', [SSL, rffi.CCHARP, rffi.INT], rffi.INT,
+             save_err=SAVE_ERR)
 
 BIO_METHOD = rffi.COpaquePtr('BIO_METHOD')
 ssl_external('BIO_s_mem', [], BIO_METHOD)
@@ -305,7 +312,8 @@
 ssl_external('BIO_free', [BIO], rffi.INT)
 ssl_external('BIO_reset', [BIO], rffi.INT, macro=True)
 ssl_external('BIO_read_filename', [BIO, rffi.CCHARP], rffi.INT, macro=True)
-ssl_external('BIO_gets', [BIO, rffi.CCHARP, rffi.INT], rffi.INT)
+ssl_external('BIO_gets', [BIO, rffi.CCHARP, rffi.INT], rffi.INT,
+             save_err=SAVE_ERR)
 ssl_external('PEM_read_bio_X509_AUX',
              [BIO, rffi.VOIDP, rffi.VOIDP, rffi.VOIDP], X509)
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to