summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel-hollerbach@t-online.de>2016-12-08 10:35:29 +0100
committerMarcel Hollerbach <marcel-hollerbach@t-online.de>2016-12-08 10:35:29 +0100
commitf31a8c4de08f00d4cc54446ff137b5b7ada46602 (patch)
treef92780283712f5f960d8c1a0a53d5a8e483713ea
parentda5f41723aa3714a3a3faef59270066bdab2f11b (diff)
downloadefl-devs/bu5hm4n/ssl-fix.tar.gz
-rw-r--r--src/lib/ecore_con/efl_net_ssl_conn-openssl.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/lib/ecore_con/efl_net_ssl_conn-openssl.c b/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
index 9572a3478f..2b5bbb954f 100644
--- a/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
+++ b/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
@@ -129,7 +129,7 @@ efl_net_socket_bio_puts(BIO *b, const char *str)
return efl_net_socket_bio_write(b, str, strlen(str));
}
-static BIO_METHOD efl_net_socket_bio = {
+static BIO_METHOD efl_net_socket_bio_struct = {
0x400, /* 0x400 means source & sink */
"efl_net_socket wrapper",
efl_net_socket_bio_write,
@@ -141,6 +141,25 @@ static BIO_METHOD efl_net_socket_bio = {
efl_net_socket_bio_destroy
};
+static BIO_METHOD *efl_net_socket_bio;
+
+static void
+bio_method_init(void)
+{
+#if 1
+ efl_net_socket_bio = &efl_net_socket_bio_struct;
+#else
+ efl_net_socket_bio = BIO_meth_new(0x400,"efl_net_socket wrapper");
+ BIO_meth_set_write(efl_net_socket_bio, efl_net_socket_bio_write);
+ BIO_meth_set_read(efl_net_socket_bio, efl_net_socket_bio_read);
+ BIO_meth_set_puts(efl_net_socket_bio, efl_net_socket_bio_puts);
+ //BIO_meth_set_gets
+ BIO_meth_set_ctrl(efl_net_socket_bio, efl_net_socket_bio_ctrl);
+ BIO_meth_set_create(efl_net_socket_bio, efl_net_socket_bio_create);
+ BIO_meth_set_destroy(efl_net_socket_bio, efl_net_socket_bio_destroy);
+#endif
+}
+
struct _Efl_Net_Ssl_Conn
{
SSL *ssl;
@@ -314,7 +333,8 @@ efl_net_ssl_conn_setup(Efl_Net_Ssl_Conn *conn, Eina_Bool is_dialer, Efl_Net_Sock
conn->ssl = efl_net_ssl_context_connection_new(context);
EINA_SAFETY_ON_NULL_RETURN_VAL(conn->ssl, ENOSYS);
- conn->bio = BIO_new(&efl_net_socket_bio);
+ bio_method_init();
+ conn->bio = BIO_new(efl_net_socket_bio);
EINA_SAFETY_ON_NULL_GOTO(conn->bio, error_bio);
conn->bio->ptr = sock;