]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-ssl-iostream: Add get_compression accessor
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 26 Sep 2016 10:52:33 +0000 (13:52 +0300)
committerTimo Sirainen <tss@dovecot.fi>
Tue, 31 Oct 2017 15:35:48 +0000 (17:35 +0200)
This is needed by login-common

src/lib-ssl-iostream/iostream-openssl.c
src/lib-ssl-iostream/iostream-ssl-private.h
src/lib-ssl-iostream/iostream-ssl.c
src/lib-ssl-iostream/iostream-ssl.h

index 9cb216e4f791bd119d2eb2bc89955d9f2cb0e2e6..19a8614578631691146ae3fefa1ea6b5cf75ce37 100644 (file)
@@ -710,6 +710,19 @@ static const char *openssl_iostream_get_server_name(struct ssl_iostream *ssl_io)
        return ssl_io->host;
 }
 
+static const char *
+openssl_iostream_get_compression(struct ssl_iostream *ssl_io)
+{
+#if defined(HAVE_SSL_COMPRESSION) && !defined(OPENSSL_NO_COMP)
+       const COMP_METHOD *comp;
+
+       comp = SSL_get_current_compression(ssl_io->ssl);
+       return comp == NULL ? NULL : SSL_COMP_get_name(comp);
+#else
+       return NULL;
+#endif
+}
+
 static const char *
 openssl_iostream_get_security_string(struct ssl_iostream *ssl_io)
 {
@@ -764,6 +777,7 @@ static const struct iostream_ssl_vfuncs ssl_vfuncs = {
        openssl_iostream_cert_match_name,
        openssl_iostream_get_peer_name,
        openssl_iostream_get_server_name,
+       openssl_iostream_get_compression,
        openssl_iostream_get_security_string,
        openssl_iostream_get_last_error
 };
index 7a997175a06e139d872ea81c0ccdcb1e1621ed9e..2995381ac433e22fc45aaa4d9bbaa95ed26ee4c7 100644 (file)
@@ -32,6 +32,7 @@ struct iostream_ssl_vfuncs {
        int (*cert_match_name)(struct ssl_iostream *ssl_io, const char *name);
        const char *(*get_peer_name)(struct ssl_iostream *ssl_io);
        const char *(*get_server_name)(struct ssl_iostream *ssl_io);
+       const char *(*get_compression)(struct ssl_iostream *ssl_io);
        const char *(*get_security_string)(struct ssl_iostream *ssl_io);
        const char *(*get_last_error)(struct ssl_iostream *ssl_io);
 };
index 2d8905c2b827edc89bff5f4761bbfd58d635fc2d..71f3c9945fd251df2eb37709178904e035802a5e 100644 (file)
@@ -200,6 +200,11 @@ const char *ssl_iostream_get_server_name(struct ssl_iostream *ssl_io)
        return ssl_vfuncs->get_server_name(ssl_io);
 }
 
+const char *ssl_iostream_get_compression(struct ssl_iostream *ssl_io)
+{
+       return ssl_vfuncs->get_compression(ssl_io);
+}
+
 const char *ssl_iostream_get_security_string(struct ssl_iostream *ssl_io)
 {
        return ssl_vfuncs->get_security_string(ssl_io);
index 13260966bccb7110d1133720c0c8c9ab669931c0..36a8c5caffedea03f3d613e2319fca4d5c2e9ce7 100644 (file)
@@ -71,6 +71,7 @@ int ssl_iostream_check_cert_validity(struct ssl_iostream *ssl_io,
                                     const char *host, const char **error_r);
 int ssl_iostream_cert_match_name(struct ssl_iostream *ssl_io, const char *name);
 const char *ssl_iostream_get_peer_name(struct ssl_iostream *ssl_io);
+const char *ssl_iostream_get_compression(struct ssl_iostream *ssl_io);
 const char *ssl_iostream_get_server_name(struct ssl_iostream *ssl_io);
 const char *ssl_iostream_get_security_string(struct ssl_iostream *ssl_io);
 const char *ssl_iostream_get_last_error(struct ssl_iostream *ssl_io);