mirror of
https://github.com/irssi/irssi.git
synced 2024-10-27 05:20:20 -04:00
Merge pull request #439 from horgh/ssl-errors
Clear error queue before SSL I/O operations
This commit is contained in:
parent
d20872ac27
commit
7d3fe66e50
@ -289,6 +289,7 @@ static GIOStatus irssi_ssl_read(GIOChannel *handle, gchar *buf, gsize len, gsize
|
|||||||
const char *errstr;
|
const char *errstr;
|
||||||
gchar *errmsg;
|
gchar *errmsg;
|
||||||
|
|
||||||
|
ERR_clear_error();
|
||||||
ret1 = SSL_read(chan->ssl, buf, len);
|
ret1 = SSL_read(chan->ssl, buf, len);
|
||||||
if(ret1 <= 0)
|
if(ret1 <= 0)
|
||||||
{
|
{
|
||||||
@ -334,6 +335,7 @@ static GIOStatus irssi_ssl_write(GIOChannel *handle, const gchar *buf, gsize len
|
|||||||
const char *errstr;
|
const char *errstr;
|
||||||
gchar *errmsg;
|
gchar *errmsg;
|
||||||
|
|
||||||
|
ERR_clear_error();
|
||||||
ret1 = SSL_write(chan->ssl, (const char *)buf, len);
|
ret1 = SSL_write(chan->ssl, (const char *)buf, len);
|
||||||
if(ret1 <= 0)
|
if(ret1 <= 0)
|
||||||
{
|
{
|
||||||
@ -471,6 +473,7 @@ static GIOChannel *irssi_ssl_get_iochannel(GIOChannel *handle, int port, SERVER_
|
|||||||
if(!(fd = g_io_channel_unix_get_fd(handle)))
|
if(!(fd = g_io_channel_unix_get_fd(handle)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
ERR_clear_error();
|
||||||
ctx = SSL_CTX_new(SSLv23_client_method());
|
ctx = SSL_CTX_new(SSLv23_client_method());
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
g_error("Could not allocate memory for SSL context");
|
g_error("Could not allocate memory for SSL context");
|
||||||
@ -489,6 +492,7 @@ static GIOChannel *irssi_ssl_get_iochannel(GIOChannel *handle, int port, SERVER_
|
|||||||
scert = convert_home(mycert);
|
scert = convert_home(mycert);
|
||||||
if (mypkey && *mypkey)
|
if (mypkey && *mypkey)
|
||||||
spkey = convert_home(mypkey);
|
spkey = convert_home(mypkey);
|
||||||
|
ERR_clear_error();
|
||||||
if (! SSL_CTX_use_certificate_file(ctx, scert, SSL_FILETYPE_PEM))
|
if (! SSL_CTX_use_certificate_file(ctx, scert, SSL_FILETYPE_PEM))
|
||||||
g_warning("Loading of client certificate '%s' failed: %s", mycert, ERR_reason_error_string(ERR_get_error()));
|
g_warning("Loading of client certificate '%s' failed: %s", mycert, ERR_reason_error_string(ERR_get_error()));
|
||||||
else if (! SSL_CTX_use_PrivateKey_file(ctx, spkey ? spkey : scert, SSL_FILETYPE_PEM))
|
else if (! SSL_CTX_use_PrivateKey_file(ctx, spkey ? spkey : scert, SSL_FILETYPE_PEM))
|
||||||
@ -581,6 +585,7 @@ int irssi_ssl_handshake(GIOChannel *handle)
|
|||||||
X509 *cert;
|
X509 *cert;
|
||||||
const char *errstr;
|
const char *errstr;
|
||||||
|
|
||||||
|
ERR_clear_error();
|
||||||
ret = SSL_connect(chan->ssl);
|
ret = SSL_connect(chan->ssl);
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
err = SSL_get_error(chan->ssl, ret);
|
err = SSL_get_error(chan->ssl, ret);
|
||||||
|
Loading…
Reference in New Issue
Block a user