diff options
-rw-r--r-- | Modules/_ssl.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 4aa1e2d..e4b6fed 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -205,6 +205,7 @@ PySSL_SetError(PySSLSocket *obj, int ret, char *filename, int lineno) errstr = "EOF occurred in violation of protocol"; } else if (ret == -1) { /* underlying BIO reported an I/O error */ + ERR_clear_error(); return s->errorhandler(); } else { /* possible? */ p = PY_SSL_ERROR_SYSCALL; @@ -237,6 +238,7 @@ PySSL_SetError(PySSLSocket *obj, int ret, char *filename, int lineno) errstr = ERR_error_string(ERR_peek_last_error(), NULL); } PyOS_snprintf(buf, sizeof(buf), "_ssl.c:%d: %s", lineno, errstr); + ERR_clear_error(); v = Py_BuildValue("(is)", p, buf); if (v != NULL) { PyErr_SetObject(PySSLErrorObject, v); @@ -256,6 +258,7 @@ _setSSLError (char *errstr, int errcode, char *filename, int lineno) { errstr = ERR_error_string(errcode, NULL); } PyOS_snprintf(buf, sizeof(buf), "_ssl.c:%d: %s", lineno, errstr); + ERR_clear_error(); v = Py_BuildValue("(is)", errcode, buf); if (v != NULL) { PyErr_SetObject(PySSLErrorObject, v); |