More error logging for SSL connections.
This commit is contained in:
@ -1659,7 +1659,7 @@ dcb_write_SSL(DCB *dcb, GWBUF *queue)
|
|||||||
LOGIF(LE, (skygw_log_write_flush(
|
LOGIF(LE, (skygw_log_write_flush(
|
||||||
LOGFILE_ERROR,
|
LOGFILE_ERROR,
|
||||||
"Error : Write to dcb %p in "
|
"Error : Write to dcb %p in "
|
||||||
"state %s fd %d failed due "
|
"state %s fd %d failed due to "
|
||||||
"SSL error %d",
|
"SSL error %d",
|
||||||
dcb,
|
dcb,
|
||||||
STRDCBSTATE(dcb->state),
|
STRDCBSTATE(dcb->state),
|
||||||
@ -1881,28 +1881,47 @@ dcb_drain_writeq_SSL(DCB *dcb)
|
|||||||
while (dcb->writeq != NULL)
|
while (dcb->writeq != NULL)
|
||||||
{
|
{
|
||||||
len = GWBUF_LENGTH(dcb->writeq);
|
len = GWBUF_LENGTH(dcb->writeq);
|
||||||
w = gw_write_SSL(dcb->ssl, GWBUF_DATA(dcb->writeq), len);
|
w = gw_write_SSL(dcb->ssl, GWBUF_DATA(dcb->writeq), len);
|
||||||
|
|
||||||
if (w < 0)
|
if (w < 0)
|
||||||
{
|
{
|
||||||
int ssl_errno = ERR_get_error();
|
int ssl_errno = SSL_get_error(dcb->ssl,w);
|
||||||
|
|
||||||
if(ssl_errno == SSL_ERROR_WANT_WRITE ||
|
if(ssl_errno == SSL_ERROR_WANT_WRITE || ssl_errno == SSL_ERROR_WANT_READ)
|
||||||
ssl_errno == SSL_ERROR_WANT_ACCEPT ||
|
|
||||||
ssl_errno == SSL_ERROR_WANT_READ)
|
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
skygw_log_write_flush(LOGFILE_ERROR,
|
||||||
|
"Error : Write to dcb failed due to "
|
||||||
|
"SSL error %d:",
|
||||||
|
dcb,
|
||||||
|
STRDCBSTATE(dcb->state),
|
||||||
|
dcb->fd,
|
||||||
|
ssl_errno);
|
||||||
|
switch(ssl_errno)
|
||||||
|
{
|
||||||
|
case SSL_ERROR_SSL:
|
||||||
|
case SSL_ERROR_SYSCALL:
|
||||||
|
while((ssl_errno = ERR_get_error()) != 0)
|
||||||
|
{
|
||||||
|
char errbuf[140];
|
||||||
|
ERR_error_string(ssl_errno,errbuf);
|
||||||
|
skygw_log_write(LE,"%s",errbuf);
|
||||||
|
}
|
||||||
|
if(errno != 0)
|
||||||
|
skygw_log_write(LE,"%d:%s",errno,strerror(errno));
|
||||||
|
break;
|
||||||
|
case SSL_ERROR_ZERO_RETURN:
|
||||||
|
skygw_log_write(LE,"Socket is closed.");
|
||||||
|
break;
|
||||||
|
|
||||||
skygw_log_write_flush(
|
default:
|
||||||
LOGFILE_ERROR,
|
skygw_log_write(LE,"Unexpected error.");
|
||||||
"Error : Write to dcb %p "
|
break;
|
||||||
"in state %s fd %d failed: %s",
|
}
|
||||||
dcb,
|
|
||||||
STRDCBSTATE(dcb->state),
|
|
||||||
dcb->fd,
|
|
||||||
ERR_error_string(ssl_errno,NULL));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Pull the number of bytes we have written from
|
* Pull the number of bytes we have written from
|
||||||
|
|||||||
Reference in New Issue
Block a user