diff options
author | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2016-12-08 10:35:29 +0100 |
---|---|---|
committer | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2016-12-08 10:35:29 +0100 |
commit | f31a8c4de08f00d4cc54446ff137b5b7ada46602 (patch) | |
tree | f92780283712f5f960d8c1a0a53d5a8e483713ea | |
parent | da5f41723aa3714a3a3faef59270066bdab2f11b (diff) | |
download | efl-devs/bu5hm4n/ssl-fix.tar.gz |
-rw-r--r-- | src/lib/ecore_con/efl_net_ssl_conn-openssl.c | 24 |
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; |