aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2015-08-19 02:31:15 -0400
committerSteven Fackler <[email protected]>2015-08-19 02:31:15 -0400
commit4cb68efd99fc723c47c9bf5ff95cf8507e61f26e (patch)
tree2cef88fe33fc1ad4589092d5c61f61f3e8b52e60 /openssl/src
parentFix openssl source link in tests (diff)
parentAdd get_state_string() (diff)
downloadrust-openssl-4cb68efd99fc723c47c9bf5ff95cf8507e61f26e.tar.xz
rust-openssl-4cb68efd99fc723c47c9bf5ff95cf8507e61f26e.zip
Merge pull request #253 from manuels/master
Add get_state_string()
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/ssl/mod.rs27
-rw-r--r--openssl/src/ssl/tests.rs8
2 files changed, 35 insertions, 0 deletions
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs
index 0d7351dc..35180d3a 100644
--- a/openssl/src/ssl/mod.rs
+++ b/openssl/src/ssl/mod.rs
@@ -6,6 +6,7 @@ use std::fmt;
use std::io;
use std::io::prelude::*;
use std::mem;
+use std::str;
use std::net;
use std::path::Path;
use std::ptr;
@@ -690,6 +691,24 @@ impl Ssl {
Ok(ssl)
}
+ pub fn get_state_string(&self) -> &'static str {
+ let state = unsafe {
+ let ptr = ffi::SSL_state_string(self.ssl);
+ CStr::from_ptr(ptr)
+ };
+
+ str::from_utf8(state.to_bytes()).unwrap()
+ }
+
+ pub fn get_state_string_long(&self) -> &'static str {
+ let state = unsafe {
+ let ptr = ffi::SSL_state_string_long(self.ssl);
+ CStr::from_ptr(ptr)
+ };
+
+ str::from_utf8(state.to_bytes()).unwrap()
+ }
+
fn get_rbio<'a>(&'a self) -> MemBioRef<'a> {
unsafe { self.wrap_bio(ffi::SSL_get_rbio(self.ssl)) }
}
@@ -1316,6 +1335,14 @@ impl<S: Read+Write> SslStream<S> {
pub fn pending(&self) -> usize {
self.kind.ssl().pending()
}
+
+ pub fn get_state_string(&self) -> &'static str {
+ self.kind.ssl().get_state_string()
+ }
+
+ pub fn get_state_string_long(&self) -> &'static str {
+ self.kind.ssl().get_state_string_long()
+ }
}
impl<S: Read+Write> Read for SslStream<S> {
diff --git a/openssl/src/ssl/tests.rs b/openssl/src/ssl/tests.rs
index 3a8ffa2b..9198a642 100644
--- a/openssl/src/ssl/tests.rs
+++ b/openssl/src/ssl/tests.rs
@@ -395,6 +395,14 @@ fn test_pending() {
assert_eq!(pending, len);
}
+#[test]
+fn test_state() {
+ let tcp = TcpStream::connect("127.0.0.1:15418").unwrap();
+ let stream = SslStream::connect_generic(&SslContext::new(Sslv23).unwrap(), tcp).unwrap();
+ assert_eq!(stream.get_state_string(), "SSLOK ");
+ assert_eq!(stream.get_state_string_long(), "SSL negotiation finished successfully");
+}
+
/// Tests that connecting with the client using NPN, but the server not does not
/// break the existing connection behavior.
#[test]