On 30 October 2016 at 09:39, Michael Niedermayer <mich...@niedermayer.cc> wrote:
> On Fri, Oct 28, 2016 at 12:47:08AM -0700, Michael Forney wrote: > > Signed-off-by: Michael Forney <mfor...@mforney.org> > > --- > > libavformat/tls_openssl.c | 12 ++++++------ > > 1 file changed, 6 insertions(+), 6 deletions(-) > > > > diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c > > index c551ac7..9712856 100644 > > --- a/libavformat/tls_openssl.c > > +++ b/libavformat/tls_openssl.c > > @@ -43,7 +43,7 @@ typedef struct TLSContext { > > TLSShared tls_shared; > > SSL_CTX *ctx; > > SSL *ssl; > > -#if OPENSSL_VERSION_NUMBER >= 0x1010000fL > > +#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_ > NUMBER) > > BIO_METHOD* url_bio_method; > > #endif > > } TLSContext; > > @@ -68,7 +68,7 @@ static unsigned long openssl_thread_id(void) > > > > static int url_bio_create(BIO *b) > > { > > -#if OPENSSL_VERSION_NUMBER >= 0x1010000fL > > +#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_ > NUMBER) > > BIO_set_init(b, 1); > > BIO_set_data(b, NULL); > > BIO_set_flags(b, 0); > > @@ -85,7 +85,7 @@ static int url_bio_destroy(BIO *b) > > return 1; > > } > > > > -#if OPENSSL_VERSION_NUMBER >= 0x1010000fL > > +#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_ > NUMBER) > > #define GET_BIO_DATA(x) BIO_get_data(x); > > #else > > #define GET_BIO_DATA(x) (x)->ptr; > > @@ -133,7 +133,7 @@ static int url_bio_bputs(BIO *b, const char *str) > > return url_bio_bwrite(b, str, strlen(str)); > > } > > > > -#if OPENSSL_VERSION_NUMBER < 0x1010000fL > > +#if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_ > NUMBER) > > static BIO_METHOD url_bio_method = { > > .type = BIO_TYPE_SOURCE_SINK, > > .name = "urlprotocol bio", > > @@ -212,7 +212,7 @@ static int tls_close(URLContext *h) > > SSL_CTX_free(c->ctx); > > if (c->tls_shared.tcp) > > ffurl_close(c->tls_shared.tcp); > > -#if OPENSSL_VERSION_NUMBER >= 0x1010000fL > > +#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_ > NUMBER) > > if (c->url_bio_method) > > BIO_meth_free(c->url_bio_method); > > #endif > > @@ -265,7 +265,7 @@ static int tls_open(URLContext *h, const char *uri, > int flags, AVDictionary **op > > ret = AVERROR(EIO); > > goto fail; > > } > > -#if OPENSSL_VERSION_NUMBER >= 0x1010000fL > > +#if OPENSSL_VERSION_NUMBER >= 0x1010000fL && !defined(LIBRESSL_VERSION_ > NUMBER) > > p->url_bio_method = BIO_meth_new(BIO_TYPE_SOURCE_SINK, > "urlprotocol bio"); > > BIO_meth_set_write(p->url_bio_method, url_bio_bwrite); > > BIO_meth_set_read(p->url_bio_method, url_bio_bread); > This also seems a bit odd, why is libreSSL setting an openssl version number of 1.1.0 or higher when it doesnt actually conform to the corresponding openssl version. LibreSSl setting the openssl version number to 2.0.0 seems to be problematic and causes problems not just for ffmpeg. Of course theres not much we can do about that but perhaps an alternative to Michaels suggestion would be to just add a single check near the top of the file that checks for libressl and then redefines the openssl version to the api libressl actually supports. i.e. #ifdef LIBRESSL_VERSION_NUMBER #undef OPENSSL_VERSION_NUMBER #define OPENSSL_VERSION_NUMBER 0x1000107fL #endif This I believe is what some other projects have done to avoid this issue and is rather simple to add and prevents further clutter in our configure. I dont have any preference between this and the other suggestion, im just providing some alternatives. The above is pretty simple so if it works for you i can write up a patch for that pretty easily. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel