mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
Merged revisions 81242 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r81242 | antoine.pitrou | 2010-05-17 01:14:22 +0200 (lun., 17 mai 2010) | 10 lines
Merged revisions 81241 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r81241 | antoine.pitrou | 2010-05-17 01:11:46 +0200 (lun., 17 mai 2010) | 4 lines
Clear the OpenSSL error queue each time an error is signalled.
When the error queue is not emptied, strange things can happen on the next SSL call, depending on the OpenSSL version.
........
................
This commit is contained in:
parent
49c78a6b32
commit
321257da1a
1 changed files with 3 additions and 0 deletions
|
|
@ -199,6 +199,7 @@ PySSL_SetError(PySSLObject *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;
|
||||
|
|
@ -231,6 +232,7 @@ PySSL_SetError(PySSLObject *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);
|
||||
|
|
@ -250,6 +252,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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue