Call ERR_clear_error() before SSL I/O functions.
This commit is contained in:
parent
7972bd79b9
commit
c009b1e65c
|
@ -243,6 +243,7 @@ bool SpdyEventHandler::finish()
|
|||
ssize_t SpdyEventHandler::send_data(const uint8_t *data, size_t len, int flags)
|
||||
{
|
||||
ssize_t r;
|
||||
ERR_clear_error();
|
||||
r = SSL_write(ssl_, data, len);
|
||||
return r;
|
||||
}
|
||||
|
@ -251,6 +252,7 @@ ssize_t SpdyEventHandler::recv_data(uint8_t *data, size_t len, int flags)
|
|||
{
|
||||
ssize_t r;
|
||||
want_write_ = false;
|
||||
ERR_clear_error();
|
||||
r = SSL_read(ssl_, data, len);
|
||||
if(r < 0) {
|
||||
if(SSL_get_error(ssl_, r) == SSL_ERROR_WANT_WRITE) {
|
||||
|
@ -663,6 +665,7 @@ public:
|
|||
virtual int execute(Sessions *sessions)
|
||||
{
|
||||
want_read_ = want_write_ = false;
|
||||
ERR_clear_error();
|
||||
int r = SSL_accept(ssl_);
|
||||
if(r == 1) {
|
||||
finish_ = true;
|
||||
|
|
|
@ -170,6 +170,7 @@ static ssize_t send_callback(spdylay_session *session,
|
|||
ssize_t rv;
|
||||
connection = (struct Connection*)user_data;
|
||||
connection->want_io = IO_NONE;
|
||||
ERR_clear_error();
|
||||
rv = SSL_write(connection->ssl, data, length);
|
||||
if(rv < 0) {
|
||||
int err = SSL_get_error(connection->ssl, rv);
|
||||
|
@ -198,6 +199,7 @@ static ssize_t recv_callback(spdylay_session *session,
|
|||
ssize_t rv;
|
||||
connection = (struct Connection*)user_data;
|
||||
connection->want_io = IO_NONE;
|
||||
ERR_clear_error();
|
||||
rv = SSL_read(connection->ssl, buf, length);
|
||||
if(rv < 0) {
|
||||
int err = SSL_get_error(connection->ssl, rv);
|
||||
|
@ -418,6 +420,7 @@ static void ssl_handshake(SSL *ssl, int fd)
|
|||
if(SSL_set_fd(ssl, fd) == 0) {
|
||||
dief("SSL_set_fd", ERR_error_string(ERR_get_error(), NULL));
|
||||
}
|
||||
ERR_clear_error();
|
||||
rv = SSL_connect(ssl);
|
||||
if(rv <= 0) {
|
||||
dief("SSL_connect", ERR_error_string(ERR_get_error(), NULL));
|
||||
|
|
|
@ -74,6 +74,7 @@ int Spdylay::send()
|
|||
ssize_t Spdylay::send_data(const uint8_t *data, size_t len, int flags)
|
||||
{
|
||||
ssize_t r;
|
||||
ERR_clear_error();
|
||||
r = SSL_write(ssl_, data, len);
|
||||
return r;
|
||||
}
|
||||
|
@ -82,6 +83,7 @@ ssize_t Spdylay::recv_data(uint8_t *data, size_t len, int flags)
|
|||
{
|
||||
ssize_t r;
|
||||
want_write_ = false;
|
||||
ERR_clear_error();
|
||||
r = SSL_read(ssl_, data, len);
|
||||
if(r < 0) {
|
||||
if(SSL_get_error(ssl_, r) == SSL_ERROR_WANT_WRITE) {
|
||||
|
@ -502,6 +504,7 @@ int ssl_handshake(SSL *ssl, int fd)
|
|||
std::cerr << ERR_error_string(ERR_get_error(), 0) << std::endl;
|
||||
return -1;
|
||||
}
|
||||
ERR_clear_error();
|
||||
int r = SSL_connect(ssl);
|
||||
if(r <= 0) {
|
||||
std::cerr << ERR_error_string(ERR_get_error(), 0) << std::endl;
|
||||
|
|
Loading…
Reference in New Issue