Commit 64b8e5e5 authored by Steven Fackler's avatar Steven Fackler Committed by GitHub
Browse files

Merge pull request #471 from sfackler/no-comp

Handle OPENSSL_NO_COMP
parents e1d1006f f520aa28
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -599,6 +599,7 @@ extern {
    pub fn SSL_get_ex_data_X509_STORE_CTX_idx() -> c_int;
    pub fn SSL_get_SSL_CTX(ssl: *const SSL) -> *mut SSL_CTX;
    pub fn SSL_set_SSL_CTX(ssl: *mut SSL, ctx: *mut SSL_CTX) -> *mut SSL_CTX;
    #[cfg(not(osslconf = "OPENSSL_NO_COMP"))]
    pub fn SSL_get_current_compression(ssl: *mut SSL) -> *const COMP_METHOD;
    pub fn SSL_get_peer_certificate(ssl: *const SSL) -> *mut X509;
    pub fn SSL_get_ssl_method(ssl: *mut SSL) -> *const SSL_METHOD;
@@ -615,6 +616,7 @@ extern {
    #[cfg(not(ossl101))]
    pub fn SSL_get0_param(ssl: *mut ::SSL) -> *mut X509_VERIFY_PARAM;

    #[cfg(not(osslconf = "OPENSSL_NO_COMP"))]
    pub fn SSL_COMP_get_name(comp: *const COMP_METHOD) -> *const c_char;

    pub fn SSL_CIPHER_get_name(cipher: *const SSL_CIPHER) -> *const c_char;
+5 −0
Original line number Diff line number Diff line
@@ -18,4 +18,9 @@ fn main() {
        println!("cargo:rustc-cfg=ossl101");
        println!("cargo:rustc-cfg=ossl10x");
    }
    if let Ok(vars) = env::var("DEP_OPENSSL_OSSLCONF") {
        for var in vars.split(",") {
            println!("cargo:rustc-cfg=osslconf=\"{}\"", var);
        }
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -952,6 +952,11 @@ impl<'a> SslRef<'a> {
    /// The result will be either None, indicating no compression is in use, or
    /// a string with the compression name.
    pub fn compression(&self) -> Option<String> {
        self._compression()
    }

    #[cfg(not(osslconf = "OPENSSL_NO_COMP"))]
    fn _compression(&self) -> Option<String> {
        let ptr = unsafe { ffi::SSL_get_current_compression(self.as_ptr()) };
        if ptr == ptr::null() {
            return None;
@@ -965,6 +970,11 @@ impl<'a> SslRef<'a> {
        Some(s)
    }

    #[cfg(osslconf = "OPENSSL_NO_COMP")]
    fn _compression(&self) -> Option<String> {
        None
    }

    /// Returns the server's name for the current connection
    pub fn servername(&self) -> Option<String> {
        let name = unsafe { ffi::SSL_get_servername(self.as_ptr(), ffi::TLSEXT_NAMETYPE_host_name) };