More error logging for SSL connections.

This commit is contained in:
Markus Makela
2015-06-24 14:46:46 +03:00
parent 067a62b240
commit 484781a463

View File

@ -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