]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD/medium: ssl: Fix build with OpenSSL < 1.1.0
authorOlivier Houchard <ohouchard@haproxy.com>
Thu, 18 Apr 2019 13:58:15 +0000 (15:58 +0200)
committerOlivier Houchard <cognet@ci0.org>
Thu, 18 Apr 2019 13:58:58 +0000 (15:58 +0200)
Make sure it builds with OpenSSL < 1.1.0, a lot of the BIO_get/set methods
were introduced with OpenSSL 1.1.0, so fallback with the old way of doing
things if needed.

src/ssl_sock.c

index 30876e2ea7b67f65e582585896e3938c6373bf0a..112520c82a3c8db638f8aa9786ddc85db8507f70 100644 (file)
@@ -261,7 +261,11 @@ static int ha_ssl_write(BIO *h, const char *buf, int num)
        struct ssl_sock_ctx *ctx;
        int ret;
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000
+       ctx = h->ptr;
+#else
        ctx = BIO_get_data(h);
+#endif
        tmpbuf.size = num;
        tmpbuf.area = (void *)(uintptr_t)buf;
        tmpbuf.data = num;
@@ -290,7 +294,11 @@ static int ha_ssl_read(BIO *h, char *buf, int size)
        struct ssl_sock_ctx *ctx;
        int ret;
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000
+       ctx = h->ptr;
+#else
        ctx = BIO_get_data(h);
+#endif
        tmpbuf.size = size;
        tmpbuf.area = buf;
        tmpbuf.data = 0;
@@ -316,8 +324,13 @@ static long ha_ssl_ctrl(BIO *h, int cmd, long arg1, void *arg2)
 
 static int ha_ssl_new(BIO *h)
 {
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+       h->init = 1;
+       h->ptr = NULL;
+#else
        BIO_set_init(h, 1);
        BIO_set_data(h, NULL);
+#endif
        BIO_clear_flags(h, ~0);
        return 1;
 }
@@ -9840,7 +9853,7 @@ static void __ssl_sock_init(void)
        ERR_load_SSL_strings();
 #if OPENSSL_VERSION_NUMBER < 0x10100000L
        ha_meth = malloc(sizeof(*ha_meth));
-       bzero(ha_meth, sizeof(*ha_metho));
+       bzero(ha_meth, sizeof(*ha_meth));
        ha_meth->bwrite = ha_ssl_write;
        ha_meth->bread = ha_ssl_read;
        ha_meth->ctrl = ha_ssl_ctrl;