mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge pilot.mysql.com:/data/msvensson/mysql/bug25988/my50-bug25988
into pilot.mysql.com:/data/msvensson/mysql/bug25988/my51-bug25988
This commit is contained in:
commit
fc937c52b5
1 changed files with 21 additions and 14 deletions
35
vio/viossl.c
35
vio/viossl.c
|
@ -172,20 +172,15 @@ void vio_ssl_delete(Vio *vio)
|
|||
vio_delete(vio);
|
||||
}
|
||||
|
||||
int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
||||
{
|
||||
DBUG_ENTER("sslaccept");
|
||||
DBUG_RETURN(sslconnect(ptr, vio, timeout));
|
||||
}
|
||||
|
||||
|
||||
int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
||||
static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
|
||||
int (*connect_accept_func)(SSL*))
|
||||
{
|
||||
SSL *ssl;
|
||||
my_bool unused;
|
||||
my_bool was_blocking;
|
||||
|
||||
DBUG_ENTER("sslconnect");
|
||||
DBUG_ENTER("ssl_do");
|
||||
DBUG_PRINT("enter", ("ptr: 0x%lx, sd: %d ctx: 0x%lx",
|
||||
(long) ptr, vio->sd, (long) ptr->ssl_context));
|
||||
|
||||
|
@ -204,13 +199,9 @@ int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
|||
SSL_SESSION_set_timeout(SSL_get_session(ssl), timeout);
|
||||
SSL_set_fd(ssl, vio->sd);
|
||||
|
||||
/*
|
||||
SSL_do_handshake will select between SSL_connect
|
||||
or SSL_accept depending on server or client side
|
||||
*/
|
||||
if (SSL_do_handshake(ssl) < 1)
|
||||
if (connect_accept_func(ssl) < 1)
|
||||
{
|
||||
DBUG_PRINT("error", ("SSL_do_handshake failure"));
|
||||
DBUG_PRINT("error", ("SSL_connect/accept failure"));
|
||||
report_errors(ssl);
|
||||
SSL_free(ssl);
|
||||
vio_blocking(vio, was_blocking, &unused);
|
||||
|
@ -259,6 +250,20 @@ int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
|||
}
|
||||
|
||||
|
||||
int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
||||
{
|
||||
DBUG_ENTER("sslaccept");
|
||||
DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_accept));
|
||||
}
|
||||
|
||||
|
||||
int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
||||
{
|
||||
DBUG_ENTER("sslconnect");
|
||||
DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_connect));
|
||||
}
|
||||
|
||||
|
||||
int vio_ssl_blocking(Vio *vio __attribute__((unused)),
|
||||
my_bool set_blocking_mode,
|
||||
my_bool *old_mode)
|
||||
|
@ -269,4 +274,6 @@ int vio_ssl_blocking(Vio *vio __attribute__((unused)),
|
|||
return (set_blocking_mode ? 0 : 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
|
Loading…
Reference in a new issue