Module: kamailio
Branch: master
Commit: fe99687608929b19be62412c334cf41e84845f81
URL: 
https://github.com/kamailio/kamailio/commit/fe99687608929b19be62412c334cf41e84845f81

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2016-09-16T22:27:33+02:00

tls: updated bio functions to support libssl v1.1.0 api

---

Modified: modules/tls/tls_bio.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/fe99687608929b19be62412c334cf41e84845f81.diff
Patch: 
https://github.com/kamailio/kamailio/commit/fe99687608929b19be62412c334cf41e84845f81.patch

---

diff --git a/modules/tls/tls_bio.c b/modules/tls/tls_bio.c
index d2c2107..b0aae5b 100644
--- a/modules/tls/tls_bio.c
+++ b/modules/tls/tls_bio.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * Kamailio TLS module
  *
  * Copyright (C) 2010 iptelorg GmbH
@@ -137,14 +137,22 @@ int tls_BIO_mbuf_set(BIO* b, struct tls_mbuf* rd, struct 
tls_mbuf* wr)
        struct tls_bio_mbuf_data* d;
 
        TLS_BIO_DBG("tls_BIO_mbuf_set called (%p => %p, %p)\n", b, rd, wr);
-       if (unlikely(b->ptr == 0)){
-               BUG("null BIO ptr\n");
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
+       d = b->ptr;
+#else
+       d = BIO_get_data(b);
+#endif
+       if (unlikely(d == 0)){
+               BUG("null BIO ptr data\n");
                return 0;
        }
-       d = b->ptr;
        d->rd = rd;
        d->wr = wr;
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
        b->init = 1;
+#else
+       BIO_set_init(b, 1);
+#endif
        return 1;
 }
 
@@ -157,8 +165,9 @@ int tls_BIO_mbuf_set(BIO* b, struct tls_mbuf* rd, struct 
tls_mbuf* wr)
 static int tls_bio_mbuf_new(BIO* b)
 {
        struct tls_bio_mbuf_data* d;
-       
+
        TLS_BIO_DBG("tls_bio_mbuf_new called (%p)\n", b);
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
        b->init = 0; /* not initialized yet */
        b->num = 0;
        b->ptr = 0;
@@ -169,6 +178,14 @@ static int tls_bio_mbuf_new(BIO* b)
        d->rd = 0;
        d->wr = 0;
        b->ptr = d;
+#else
+       BIO_set_init(b, 0);
+       BIO_set_data(b, NULL);
+       d = OPENSSL_zalloc(sizeof(*d));
+       if (unlikely(d == 0))
+               return 0;
+       BIO_set_data(b, d);
+#endif
        return 1;
 }
 
@@ -183,11 +200,23 @@ static int tls_bio_mbuf_free(BIO* b)
        TLS_BIO_DBG("tls_bio_mbuf_free called (%p)\n", b);
        if (unlikely( b == 0))
                        return 0;
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
        if (likely(b->ptr)){
                OPENSSL_free(b->ptr);
                b->ptr = 0;
                b->init = 0;
        }
+#else
+       do {
+               struct tls_bio_mbuf_data* d;
+               d = BIO_get_data(b);
+               if (likely(d)) {
+                       OPENSSL_free(d);
+                       BIO_set_data(b, NULL);
+                       BIO_set_init(b, 0);
+               }
+       } while(0);
+#endif
        return 1;
 }
 
@@ -203,10 +232,14 @@ static int tls_bio_mbuf_read(BIO* b, char* dst, int 
dst_len)
        struct tls_bio_mbuf_data* d;
        struct tls_mbuf* rd;
        int ret;
-       
+
        ret = 0;
        if (likely(dst)) {
-               d= b->ptr;
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
+               d = b->ptr;
+#else
+               d = BIO_get_data(b);
+#endif
                BIO_clear_retry_flags(b);
                if (unlikely(d == 0 || d->rd->buf == 0)) {
                        if (d == 0)
@@ -256,9 +289,13 @@ static int tls_bio_mbuf_write(BIO* b, const char* src, int 
src_len)
        struct tls_bio_mbuf_data* d;
        struct tls_mbuf* wr;
        int ret;
-       
+
        ret = 0;
-       d= b->ptr;
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
+       d = b->ptr;
+#else
+       d = BIO_get_data(b);
+#endif
        BIO_clear_retry_flags(b);
        if (unlikely(d == 0 || d->wr->buf == 0)) {
                if (d == 0)
@@ -330,12 +367,10 @@ static long tls_bio_mbuf_ctrl(BIO* b, int cmd, long arg1, 
void* arg2)
 static int tls_bio_mbuf_puts(BIO* b, const char* s)
 {
        int len;
-       
+
        TLS_BIO_DBG("puts called (%p, %s)\n", b, s);
        len=strlen(s);
        return tls_bio_mbuf_write(b, s, len);
 }
 
-
-
 /* vi: set ts=4 sw=4 tw=79:ai:cindent: */


_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to