diff options
author | unknown <msvensson@pilot.mysql.com> | 2008-02-07 09:55:49 +0100 |
---|---|---|
committer | unknown <msvensson@pilot.mysql.com> | 2008-02-07 09:55:49 +0100 |
commit | 2d88db9555eaed2581127771b5c246f0d975400e (patch) | |
tree | aebf06f4835002e735e559e17101f3e9ef45f409 /vio/viossl.c | |
parent | 0c0c3460101862af923e538c61b0a07c638aa6d9 (diff) | |
parent | 8d040352d99a95e272e69c622fbe72c89fe425d5 (diff) | |
download | mariadb-git-2d88db9555eaed2581127771b5c246f0d975400e.tar.gz |
Merge pilot.mysql.com:/data/msvensson/mysql/bug25988/my50-bug25988
into pilot.mysql.com:/data/msvensson/mysql/bug25988/my51-bug25988
vio/viossl.c:
Auto merged
Diffstat (limited to 'vio/viossl.c')
-rw-r--r-- | vio/viossl.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/vio/viossl.c b/vio/viossl.c index 24bb18b9c68..0651fd8b7a3 100644 --- a/vio/viossl.c +++ b/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 */ |