Unverified Commit c42d49c1 authored by Alex Gaynor's avatar Alex Gaynor Committed by GitHub
Browse files

Merge pull request #2414 from alex/boringssl-fix

fixed building on the latest boringssl
parents eb88fb05 5e24219c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ jobs:
            - name: aws-lc
              version: vendored
            - name: boringssl
              version: e23fe9b6eecc10e4f9ea1f0027fea5eaee7bd6b6
              version: 71bae60c26549ce1875f07d8c394b934de4b0f7b
            - name: openssl
              version: vendored
            - name: openssl
+1 −0
Original line number Diff line number Diff line
@@ -265,6 +265,7 @@ fn try_vcpkg() {
    println!("cargo:rustc-link-lib=user32");
    println!("cargo:rustc-link-lib=gdi32");
    println!("cargo:rustc-link-lib=crypt32");
    println!("cargo:rustc-link-lib=advapi32");

    process::exit(0);
}
+26 −7
Original line number Diff line number Diff line
@@ -189,7 +189,7 @@ unsafe extern "C" fn destroy<S>(bio: *mut BIO) -> c_int {
}

cfg_if! {
    if #[cfg(any(ossl110, libressl273))] {
    if #[cfg(any(ossl110, libressl273, boringssl))] {
        use ffi::{BIO_get_data, BIO_set_data, BIO_set_flags, BIO_set_init};
        use crate::cvt;

@@ -201,15 +201,34 @@ cfg_if! {

        impl BIO_METHOD {
            fn new<S: Read + Write>() -> Result<BIO_METHOD, ErrorStack> {
                #[cfg(not(boringssl))]
                use ffi::{
                    BIO_meth_set_write__fixed_rust as BIO_meth_set_write,
                    BIO_meth_set_read__fixed_rust as BIO_meth_set_read,
                    BIO_meth_set_puts__fixed_rust as BIO_meth_set_puts,
                    BIO_meth_set_ctrl__fixed_rust as BIO_meth_set_ctrl,
                    BIO_meth_set_create__fixed_rust as BIO_meth_set_create,
                    BIO_meth_set_destroy__fixed_rust as BIO_meth_set_destroy,
                };
                #[cfg(boringssl)]
                use ffi::{
                    BIO_meth_set_write,
                    BIO_meth_set_read,
                    BIO_meth_set_puts,
                    BIO_meth_set_ctrl,
                    BIO_meth_set_create,
                    BIO_meth_set_destroy,
                };

                unsafe {
                    let ptr = cvt_p(ffi::BIO_meth_new(ffi::BIO_TYPE_NONE, b"rust\0".as_ptr() as *const _))?;
                    let method = BIO_METHOD(ptr);
                    cvt(ffi::BIO_meth_set_write__fixed_rust(method.0, Some(bwrite::<S>)))?;
                    cvt(ffi::BIO_meth_set_read__fixed_rust(method.0, Some(bread::<S>)))?;
                    cvt(ffi::BIO_meth_set_puts__fixed_rust(method.0, Some(bputs::<S>)))?;
                    cvt(ffi::BIO_meth_set_ctrl__fixed_rust(method.0, Some(ctrl::<S>)))?;
                    cvt(ffi::BIO_meth_set_create__fixed_rust(method.0, Some(create)))?;
                    cvt(ffi::BIO_meth_set_destroy__fixed_rust(method.0, Some(destroy::<S>)))?;
                    cvt(BIO_meth_set_write(method.0, Some(bwrite::<S>)))?;
                    cvt(BIO_meth_set_read(method.0, Some(bread::<S>)))?;
                    cvt(BIO_meth_set_puts(method.0, Some(bputs::<S>)))?;
                    cvt(BIO_meth_set_ctrl(method.0, Some(ctrl::<S>)))?;
                    cvt(BIO_meth_set_create(method.0, Some(create)))?;
                    cvt(BIO_meth_set_destroy(method.0, Some(destroy::<S>)))?;
                    Ok(method)
                }
            }