summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2020-12-23 21:11:29 -0500
committerSteven Fackler <sfackler@gmail.com>2020-12-23 21:11:29 -0500
commit625205de6fd3169101ce36468d9471b6cb686f75 (patch)
tree7ce4993c92aa143fb7bb036d1ca5b56890277e50
parentac3dec7c402ccd7f3a79bf9a4ba22b6cbc8f2759 (diff)
downloadrust-openssl-625205de6fd3169101ce36468d9471b6cb686f75.zip
Fix argument type of Ssl::new
-rw-r--r--openssl/src/ssl/mod.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs
index 199e33b6..f60b1ee1 100644
--- a/openssl/src/ssl/mod.rs
+++ b/openssl/src/ssl/mod.rs
@@ -1823,6 +1823,14 @@ foreign_type_and_impl_send_sync! {
impl Clone for SslContext {
fn clone(&self) -> Self {
+ (**self).to_owned()
+ }
+}
+
+impl ToOwned for SslContextRef {
+ type Owned = SslContext;
+
+ fn to_owned(&self) -> Self::Owned {
unsafe {
SSL_CTX_up_ref(self.as_ptr());
SslContext::from_ptr(self.as_ptr())
@@ -2381,11 +2389,11 @@ impl Ssl {
///
/// [`SSL_new`]: https://www.openssl.org/docs/man1.0.2/ssl/SSL_new.html
// FIXME should take &SslContextRef
- pub fn new(ctx: &SslContext) -> Result<Ssl, ErrorStack> {
+ pub fn new(ctx: &SslContextRef) -> Result<Ssl, ErrorStack> {
unsafe {
let ptr = cvt_p(ffi::SSL_new(ctx.as_ptr()))?;
let mut ssl = Ssl::from_ptr(ptr);
- ssl.set_ex_data(*SESSION_CTX_INDEX, ctx.clone());
+ ssl.set_ex_data(*SESSION_CTX_INDEX, ctx.to_owned());
Ok(ssl)
}