summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/violite.h14
-rw-r--r--vio/viossl.c44
-rw-r--r--vio/viosslfactories.c4
3 files changed, 33 insertions, 29 deletions
diff --git a/include/violite.h b/include/violite.h
index a94f6787731..bc10a8f527c 100644
--- a/include/violite.h
+++ b/include/violite.h
@@ -35,6 +35,10 @@ extern "C" {
enum enum_vio_type { VIO_CLOSED, VIO_TYPE_TCPIP, VIO_TYPE_SOCKET,
VIO_TYPE_NAMEDPIPE, VIO_TYPE_SSL};
+#ifndef __WIN__
+#define HANDLE void *
+#endif
+
Vio* vio_new(my_socket sd,
enum enum_vio_type type,
my_bool localhost);
@@ -45,6 +49,10 @@ void vio_delete(Vio* vio);
#ifdef EMBEDDED_LIBRARY
void vio_reset(Vio *vio);
+#else
+void vio_reset(Vio* vio, enum enum_vio_type type,
+ my_socket sd, HANDLE hPipe,
+ my_bool localhost);
#endif
/*
@@ -188,8 +196,6 @@ struct st_VioSSLAcceptorFd
/* One copy for client */
struct st_VioSSLConnectorFd
{
- BIO* bio_;
- gptr ssl_;
SSL_CTX* ssl_context_;
SSL_METHOD* ssl_method_;
/* function pointers which are only once for SSL client */
@@ -212,10 +218,6 @@ Vio* new_VioSSL(struct st_VioSSLAcceptorFd* fd, Vio* sd,int state);
#endif
#endif /* HAVE_OPENSSL */
-#ifndef __WIN__
-#define HANDLE void *
-#endif
-
#ifndef EMBEDDED_LIBRARY
/* This structure is for every connection on both sides */
struct st_vio
diff --git a/vio/viossl.c b/vio/viossl.c
index 696d7d54a29..e4fe9d87228 100644
--- a/vio/viossl.c
+++ b/vio/viossl.c
@@ -63,6 +63,26 @@
#ifdef HAVE_OPENSSL
+
+static void
+report_errors()
+{
+ unsigned long l;
+ const char* file;
+ const char* data;
+ int line,flags;
+ DBUG_ENTER("report_errors");
+
+ while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0)
+ {
+ char buf[200];
+ DBUG_PRINT("error", ("OpenSSL: %s:%s:%d:%s\n", ERR_error_string(l,buf),
+ file,line,(flags&ERR_TXT_STRING)?data:"")) ;
+ }
+ DBUG_VOID_RETURN;
+}
+
+
void vio_ssl_delete(Vio * vio)
{
/* It must be safe to delete null pointers. */
@@ -266,24 +286,6 @@ my_bool vio_ssl_poll_read(Vio *vio,uint timeout)
}
-static void
-report_errors()
-{
- unsigned long l;
- const char* file;
- const char* data;
- int line,flags;
- DBUG_ENTER("report_errors");
-
- while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0)
- {
- char buf[200];
- DBUG_PRINT("error", ("OpenSSL: %s:%s:%d:%s\n", ERR_error_string(l,buf),
- file,line,(flags&ERR_TXT_STRING)?data:"")) ;
- }
- DBUG_VOID_RETURN;
-}
-
/* FIXME: There are some duplicate code in
* sslaccept()/sslconnect() which maybe can be eliminated
*/
@@ -326,7 +328,7 @@ Vio *sslconnect(struct st_VioSSLConnectorFd* ptr, Vio* sd)
DBUG_PRINT("enter", ("sd=%s ptr=%p ctx: %p", sd->desc,ptr,ptr->ssl_context_));
vio_reset(sd,VIO_TYPE_SSL,sd->sd,0,FALSE);
- ptr->bio_=0;
+ sd->bio_=0;
sd->ssl_=0;
sd->open_=FALSE;
assert(sd != 0);
@@ -339,7 +341,7 @@ Vio *sslconnect(struct st_VioSSLConnectorFd* ptr, Vio* sd)
report_errors();
DBUG_RETURN(sd);
}
- if (!(ptr->bio_ = BIO_new_socket(sd->sd, BIO_NOCLOSE)))
+ if (!(sd->bio_ = BIO_new_socket(sd->sd, BIO_NOCLOSE)))
{
DBUG_PRINT("error", ("BIO_new_socket failure"));
report_errors();
@@ -347,7 +349,7 @@ Vio *sslconnect(struct st_VioSSLConnectorFd* ptr, Vio* sd)
sd->ssl_=0;
DBUG_RETURN(sd);
}
- SSL_set_bio(sd->ssl_, ptr->bio_, ptr->bio_);
+ SSL_set_bio(sd->ssl_, sd->bio_, sd->bio_);
SSL_set_connect_state(sd->ssl_);
/* sprintf(ptr->desc_, "VioSSL(%d)", sd->sd);
sd->ssl_cip_ = SSL_get_cipher(sd->ssl_);*/
diff --git a/vio/viosslfactories.c b/vio/viosslfactories.c
index dfe67b503f8..4be956ed9ba 100644
--- a/vio/viosslfactories.c
+++ b/vio/viosslfactories.c
@@ -186,7 +186,7 @@ struct st_VioSSLConnectorFd* new_VioSSLConnectorFd(const char* key_file,
DBUG_RETURN(ptr);
ctor_failure:
DBUG_PRINT("exit", ("there was an error"));
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
}
@@ -267,7 +267,7 @@ new_VioSSLAcceptorFd(const char* key_file,
DBUG_RETURN(ptr);
ctor_failure:
DBUG_PRINT("exit", ("there was an error"));
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
}