summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authorMichael Widenius <monty@askmonty.org>2012-08-17 16:46:34 +0300
committerMichael Widenius <monty@askmonty.org>2012-08-17 16:46:34 +0300
commitf1159b18d930910d5b5b9c454a17b0ee66f853c3 (patch)
tree67d9ac4fb191347f0fff24a4b2b1f0e9fceda319 /vio
parent60589aeee03949033c66da5c1eae70d4342179fc (diff)
downloadmariadb-git-f1159b18d930910d5b5b9c454a17b0ee66f853c3.tar.gz
More fixes
Diffstat (limited to 'vio')
-rw-r--r--vio/vio.c8
-rw-r--r--vio/vio_priv.h1
-rw-r--r--vio/viossl.c10
3 files changed, 19 insertions, 0 deletions
diff --git a/vio/vio.c b/vio/vio.c
index e2a3b9dcf50..a18482f3dfd 100644
--- a/vio/vio.c
+++ b/vio/vio.c
@@ -106,6 +106,8 @@ static void vio_init(Vio *vio, enum enum_vio_type type,
vio->was_timeout =vio_was_timeout;
vio->vioclose =vio_close_pipe;
vio->peer_addr =vio_peer_addr;
+ vio->vioblocking =vio_blocking;
+ vio->is_blocking =vio_is_blocking;
vio->io_wait =no_io_wait;
vio->is_connected =vio_is_connected_pipe;
vio->has_data =has_no_data;
@@ -126,6 +128,8 @@ static void vio_init(Vio *vio, enum enum_vio_type type,
vio->was_timeout =vio_was_timeout;
vio->vioclose =vio_close_shared_memory;
vio->peer_addr =vio_peer_addr;
+ vio->vioblocking =vio_blocking;
+ vio->is_blocking =vio_is_blocking;
vio->io_wait =no_io_wait;
vio->is_connected =vio_is_connected_shared_memory;
vio->has_data =vio_shared_memory_has_data;
@@ -146,6 +150,8 @@ static void vio_init(Vio *vio, enum enum_vio_type type,
vio->was_timeout =vio_was_timeout;
vio->vioclose =vio_ssl_close;
vio->peer_addr =vio_peer_addr;
+ vio->vioblocking =vio_ssl_blocking;
+ vio->is_blocking =vio_is_blocking;
vio->io_wait =vio_io_wait;
vio->is_connected =vio_is_connected;
vio->has_data =vio_ssl_has_data;
@@ -164,6 +170,8 @@ static void vio_init(Vio *vio, enum enum_vio_type type,
vio->was_timeout =vio_was_timeout;
vio->vioclose =vio_close;
vio->peer_addr =vio_peer_addr;
+ vio->vioblocking =vio_blocking;
+ vio->is_blocking =vio_is_blocking;
vio->io_wait =vio_io_wait;
vio->is_connected =vio_is_connected;
vio->shutdown =vio_socket_shutdown;
diff --git a/vio/vio_priv.h b/vio/vio_priv.h
index c1dc090a106..248e1a59b23 100644
--- a/vio/vio_priv.h
+++ b/vio/vio_priv.h
@@ -58,6 +58,7 @@ size_t vio_ssl_write(Vio *vio,const uchar* buf, size_t size);
/* When the workday is over... */
int vio_ssl_close(Vio *vio);
void vio_ssl_delete(Vio *vio);
+int vio_ssl_blocking(Vio *vio, my_bool set_blocking_mode, my_bool *old_mode);
my_bool vio_ssl_has_data(Vio *vio);
#endif /* HAVE_OPENSSL */
diff --git a/vio/viossl.c b/vio/viossl.c
index dfca68947cc..74ad97809e2 100644
--- a/vio/viossl.c
+++ b/vio/viossl.c
@@ -451,6 +451,16 @@ int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout, unsigned long *e
}
+int vio_ssl_blocking(Vio *vio __attribute__((unused)),
+ my_bool set_blocking_mode,
+ my_bool *old_mode)
+{
+ /* Mode is always blocking */
+ *old_mode= 1;
+ /* Return error if we try to change to non_blocking mode */
+ return (set_blocking_mode ? 0 : 1);
+}
+
my_bool vio_ssl_has_data(Vio *vio)
{
return SSL_pending(vio->ssl_arg) > 0 ? TRUE : FALSE;