dovecot-2.2: lib-ssl-iostream: Added ssl_iostream_destroy() to d...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Jul 28 17:56:05 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/ff479f84022f
changeset: 14720:ff479f84022f
user: Timo Sirainen <tss at iki.fi>
date: Sat Jul 28 17:32:14 2012 +0300
description:
lib-ssl-iostream: Added ssl_iostream_destroy() to do a clean SSL shutdown.
diffstat:
src/lib-ssl-iostream/iostream-openssl.c | 13 +++++++++++++
src/lib-ssl-iostream/iostream-ssl-none.c | 4 ++++
src/lib-ssl-iostream/iostream-ssl.h | 2 ++
3 files changed, 19 insertions(+), 0 deletions(-)
diffs (49 lines):
diff -r eee77416e137 -r ff479f84022f src/lib-ssl-iostream/iostream-openssl.c
--- a/src/lib-ssl-iostream/iostream-openssl.c Sat Jul 28 16:29:22 2012 +0300
+++ b/src/lib-ssl-iostream/iostream-openssl.c Sat Jul 28 17:32:14 2012 +0300
@@ -252,6 +252,19 @@
ssl_iostream_free(ssl_io);
}
+void ssl_iostream_destroy(struct ssl_iostream **_ssl_io)
+{
+ struct ssl_iostream *ssl_io = *_ssl_io;
+
+ *_ssl_io = NULL;
+
+ (void)SSL_shutdown(ssl_io->ssl);
+ (void)ssl_iostream_more(ssl_io);
+ (void)o_stream_flush(ssl_io->plain_output);
+
+ ssl_iostream_unref(&ssl_io);
+}
+
static bool ssl_iostream_bio_output(struct ssl_iostream *ssl_io)
{
size_t bytes, max_bytes;
diff -r eee77416e137 -r ff479f84022f src/lib-ssl-iostream/iostream-ssl-none.c
--- a/src/lib-ssl-iostream/iostream-ssl-none.c Sat Jul 28 16:29:22 2012 +0300
+++ b/src/lib-ssl-iostream/iostream-ssl-none.c Sat Jul 28 17:32:14 2012 +0300
@@ -18,6 +18,10 @@
{
}
+void ssl_iostream_destroy(struct ssl_iostream **ssl_io ATTR_UNUSED)
+{
+}
+
int ssl_iostream_handshake(struct ssl_iostream *ssl_io ATTR_UNUSED)
{
return -1;
diff -r eee77416e137 -r ff479f84022f src/lib-ssl-iostream/iostream-ssl.h
--- a/src/lib-ssl-iostream/iostream-ssl.h Sat Jul 28 16:29:22 2012 +0300
+++ b/src/lib-ssl-iostream/iostream-ssl.h Sat Jul 28 17:32:14 2012 +0300
@@ -24,6 +24,8 @@
struct ssl_iostream **iostream_r);
/* returned input and output streams must also be unreferenced */
void ssl_iostream_unref(struct ssl_iostream **ssl_io);
+/* shutdown SSL connection and unreference ssl iostream */
+void ssl_iostream_destroy(struct ssl_iostream **ssl_io);
int ssl_iostream_handshake(struct ssl_iostream *ssl_io);
void ssl_iostream_set_handshake_callback(struct ssl_iostream *ssl_io,
More information about the dovecot-cvs
mailing list