More debug output.

This commit is contained in:
Markus Makela
2015-06-09 20:02:45 +03:00
parent 1ad1a31ed7
commit 196d41cb88
2 changed files with 34 additions and 22 deletions

View File

@ -1005,9 +1005,18 @@ int dcb_read_SSL(
char errbuf[200]; char errbuf[200];
ssl_errno = SSL_get_error(dcb->ssl,n); ssl_errno = SSL_get_error(dcb->ssl,n);
#ifdef SS_DEBUG #ifdef SS_DEBUG
ERR_error_string(ssl_errno,errbuf); if(ssl_errno == SSL_ERROR_SSL ||
skygw_log_write_flush(LD,"[%lu]SSL error %d: %s", ssl_errno == SSL_ERROR_SYSCALL)
pthread_self(),ssl_errno,errbuf); {
int eno;
while((eno = ERR_get_error()) != 0)
{
ERR_error_string(eno,errbuf);
skygw_log_write(LE,
"%s",
errbuf);
}
}
#endif #endif
if(ssl_errno == SSL_ERROR_WANT_READ || if(ssl_errno == SSL_ERROR_WANT_READ ||
ssl_errno == SSL_ERROR_WANT_WRITE || ssl_errno == SSL_ERROR_WANT_WRITE ||
@ -1017,7 +1026,6 @@ int dcb_read_SSL(
} }
else else
{ {
ERR_error_string(ssl_errno,errbuf);
LOGIF(LE, (skygw_log_write_flush( LOGIF(LE, (skygw_log_write_flush(
LOGFILE_ERROR, LOGFILE_ERROR,
"Error : Read failed, dcb %p in state " "Error : Read failed, dcb %p in state "
@ -1052,7 +1060,7 @@ int dcb_read_SSL(
gwbuf_rtrim(buffer,bufsize - n); gwbuf_rtrim(buffer,bufsize - n);
#ifdef SS_DEBUG #ifdef SS_DEBUG
skygw_log_write(LD,"[%lu] SSL: Truncated buffer from %d to %d bytes. " skygw_log_write(LD,"%lu SSL: Truncated buffer from %d to %d bytes. "
"Read %d bytes, %d bytes waiting.\n",pthread_self(), "Read %d bytes, %d bytes waiting.\n",pthread_self(),
bufsize,GWBUF_LENGTH(buffer),n,b); bufsize,GWBUF_LENGTH(buffer),n,b);
@ -1080,13 +1088,6 @@ int dcb_read_SSL(
rc = ioctl(dcb->fd, FIONREAD, &b); rc = ioctl(dcb->fd, FIONREAD, &b);
pending = SSL_pending(dcb->ssl); pending = SSL_pending(dcb->ssl);
if(ssl_errno == SSL_ERROR_WANT_READ ||
ssl_errno == SSL_ERROR_WANT_WRITE ||
(b == 0 && pending == 0))
{
break;
}
} /*< while (true) */ } /*< while (true) */
return_n: return_n:
return n; return n;
@ -2837,22 +2838,34 @@ int dcb_create_SSL(DCB* dcb)
*/ */
int dcb_accept_SSL(DCB* dcb) int dcb_accept_SSL(DCB* dcb)
{ {
int rval = 0,ssl_rval,errnum = 0,fd,b = 0; int rval = 0,ssl_rval,errnum = 0,fd,b = 0,pending;
char errbuf[140]; char errbuf[140];
fd = dcb->fd; fd = dcb->fd;
do do
{ {
ssl_rval = SSL_accept(dcb->ssl); ssl_rval = SSL_accept(dcb->ssl);
errnum = SSL_get_error(dcb->ssl,ssl_rval);
LOGIF(LD,(skygw_log_write_flush(LD,"[dcb_accept_SSL] SSL_accept %d, error %d",
ssl_rval,errnum)));
switch(ssl_rval) switch(ssl_rval)
{ {
case 0: case 0:
errnum = SSL_get_error(dcb->ssl,ssl_rval); errnum = SSL_get_error(dcb->ssl,ssl_rval);
ERR_error_string(errnum,errbuf); skygw_log_write(LE,"Error: SSL authentication failed (SSL error %d):",
LOGIF(LD,(skygw_log_write_flush(LD,"[%p] SSL_accept shutdown for %s:%s",
dcb, dcb,
dcb->remote, dcb->remote,
errbuf))); errnum);
if(errnum == SSL_ERROR_SSL ||
errnum == SSL_ERROR_SYSCALL)
{
while((errnum = ERR_get_error()) != 0)
{
ERR_error_string(errnum,errbuf);
skygw_log_write(LE,"%s",errbuf);
}
}
rval = -1; rval = -1;
break; break;
case 1: case 1:
@ -2871,7 +2884,7 @@ int dcb_accept_SSL(DCB* dcb)
queue and wait for more.*/ queue and wait for more.*/
rval = 0; rval = 0;
LOGIF(LD,(skygw_log_write_flush(LD,"[dcb_accept_SSL] SSL_accept ongoing for %s", LOGIF(LD,(skygw_log_write_flush(LD,"[dcb_accept_SSL] SSL_accept ongoing for %s",
dcb->remote))); dcb->remote)));
return rval; return rval;
} }
else else
@ -2904,11 +2917,11 @@ int dcb_accept_SSL(DCB* dcb)
break; break;
} }
ioctl(fd,FIONREAD,&b); ioctl(fd,FIONREAD,&b);
pending = SSL_pending(dcb->ssl);
#ifdef SS_DEBUG #ifdef SS_DEBUG
skygw_log_write_flush(LD,"[dcb_accept_SSL] fd %d: %d bytes",fd,b); skygw_log_write_flush(LD,"[dcb_accept_SSL] fd %d: %d bytes, %d pending",fd,b,pending);
skygw_log_write(LD,"[dcb_accept_SSL] SSL_accept returned %d, SSL error: %d",ssl_rval,errnum);
#endif #endif
}while(b > 0 && rval != -1); }while((b > 0 || pending > 0) && rval != -1);
return rval; return rval;
} }

View File

@ -1952,8 +1952,7 @@ int do_ssl_accept(MySQLProtocol* protocol)
spinlock_release(&protocol->protocol_lock); spinlock_release(&protocol->protocol_lock);
rval = -1; rval = -1;
skygw_log_write_flush(LE, skygw_log_write_flush(LE,
"Error: Fatal error in SSL_accept for %s@%s: %s", "Error: Fatal error in SSL_accept for %s",
protocol->owner_dcb->user,
protocol->owner_dcb->remote); protocol->owner_dcb->remote);
break; break;