Bug#33050 5.0.50 fails many SSL testcases

parent 91a7720a
...@@ -172,20 +172,15 @@ void vio_ssl_delete(Vio *vio) ...@@ -172,20 +172,15 @@ void vio_ssl_delete(Vio *vio)
vio_delete(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; SSL *ssl;
my_bool unused; my_bool unused;
my_bool was_blocking; my_bool was_blocking;
DBUG_ENTER("sslconnect"); DBUG_ENTER("ssl_do");
DBUG_PRINT("enter", ("ptr: 0x%lx, sd: %d ctx: 0x%lx", DBUG_PRINT("enter", ("ptr: 0x%lx, sd: %d ctx: 0x%lx",
(long) ptr, vio->sd, (long) ptr->ssl_context)); (long) ptr, vio->sd, (long) ptr->ssl_context));
...@@ -204,13 +199,9 @@ int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout) ...@@ -204,13 +199,9 @@ int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
SSL_SESSION_set_timeout(SSL_get_session(ssl), timeout); SSL_SESSION_set_timeout(SSL_get_session(ssl), timeout);
SSL_set_fd(ssl, vio->sd); SSL_set_fd(ssl, vio->sd);
/* if (connect_accept_func(ssl) < 1)
SSL_do_handshake will select between SSL_connect
or SSL_accept depending on server or client side
*/
if (SSL_do_handshake(ssl) < 1)
{ {
DBUG_PRINT("error", ("SSL_do_handshake failure")); DBUG_PRINT("error", ("SSL_connect/accept failure"));
report_errors(ssl); report_errors(ssl);
SSL_free(ssl); SSL_free(ssl);
vio_blocking(vio, was_blocking, &unused); vio_blocking(vio, was_blocking, &unused);
...@@ -259,6 +250,20 @@ int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout) ...@@ -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)), int vio_ssl_blocking(Vio *vio __attribute__((unused)),
my_bool set_blocking_mode, my_bool set_blocking_mode,
my_bool *old_mode) my_bool *old_mode)
...@@ -269,4 +274,6 @@ int vio_ssl_blocking(Vio *vio __attribute__((unused)), ...@@ -269,4 +274,6 @@ int vio_ssl_blocking(Vio *vio __attribute__((unused)),
return (set_blocking_mode ? 0 : 1); return (set_blocking_mode ? 0 : 1);
} }
#endif /* HAVE_OPENSSL */ #endif /* HAVE_OPENSSL */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment