Merge 192.168.0.5:mysql/bug25203/my50-bug25203
into pilot.mysql.com:/home/msvensson/mysql/mysql-5.0-maint vio/vio.c: Auto merged vio/viossl.c: Auto merged
This commit is contained in:
commit
61d638f01e
@ -1,7 +1,3 @@
|
||||
# TODO: THIS TEST DOES NOT WORK ON WINDOWS
|
||||
# This should be fixed.
|
||||
--source include/not_windows.inc
|
||||
|
||||
source include/have_openssl.inc;
|
||||
source include/master-slave.inc;
|
||||
|
||||
|
19
vio/vio.c
19
vio/vio.c
@ -86,7 +86,7 @@ static void vio_init(Vio* vio, enum enum_vio_type type,
|
||||
#ifdef HAVE_OPENSSL
|
||||
if (type == VIO_TYPE_SSL)
|
||||
{
|
||||
vio->viodelete =vio_delete;
|
||||
vio->viodelete =vio_ssl_delete;
|
||||
vio->vioerrno =vio_errno;
|
||||
vio->read =vio_ssl_read;
|
||||
vio->write =vio_ssl_write;
|
||||
@ -220,17 +220,16 @@ Vio *vio_new_win32shared_memory(NET *net,HANDLE handle_file_map, HANDLE handle_m
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
void vio_delete(Vio* vio)
|
||||
{
|
||||
/* It must be safe to delete null pointers. */
|
||||
/* This matches the semantics of C++'s delete operator. */
|
||||
if (vio)
|
||||
{
|
||||
if (vio->type != VIO_CLOSED)
|
||||
vio->vioclose(vio);
|
||||
my_free((gptr) vio->read_buffer, MYF(MY_ALLOW_ZERO_PTR));
|
||||
my_free((gptr) vio,MYF(0));
|
||||
}
|
||||
if (!vio)
|
||||
return; /* It must be safe to delete null pointers. */
|
||||
|
||||
if (vio->type != VIO_CLOSED)
|
||||
vio->vioclose(vio);
|
||||
my_free((gptr) vio->read_buffer, MYF(MY_ALLOW_ZERO_PTR));
|
||||
my_free((gptr) vio,MYF(0));
|
||||
}
|
||||
|
||||
|
||||
|
@ -32,6 +32,7 @@ int vio_ssl_write(Vio *vio,const gptr buf,int 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);
|
||||
|
||||
|
20
vio/viossl.c
20
vio/viossl.c
@ -140,13 +140,29 @@ int vio_ssl_close(Vio *vio)
|
||||
SSL_get_error(ssl, r)));
|
||||
break;
|
||||
}
|
||||
SSL_free(ssl);
|
||||
vio->ssl_arg= 0;
|
||||
}
|
||||
DBUG_RETURN(vio_close(vio));
|
||||
}
|
||||
|
||||
|
||||
void vio_ssl_delete(Vio *vio)
|
||||
{
|
||||
if (!vio)
|
||||
return; /* It must be safe to delete null pointer */
|
||||
|
||||
if (vio->type == VIO_TYPE_SSL)
|
||||
vio_ssl_close(vio); /* Still open, close connection first */
|
||||
|
||||
if (vio->ssl_arg)
|
||||
{
|
||||
SSL_free((SSL*) vio->ssl_arg);
|
||||
vio->ssl_arg= 0;
|
||||
}
|
||||
|
||||
vio_delete(vio);
|
||||
}
|
||||
|
||||
|
||||
int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
|
||||
{
|
||||
SSL *ssl;
|
||||
|
Loading…
x
Reference in New Issue
Block a user