From 2b6b02ee7eaad2539e26eb9507833aa3c1c9c15e Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 7 Dec 2020 13:51:46 +0000 Subject: [tls] Use intf_insert() to add TLS to an interface Restructure the use of add_tls() to insert a TLS filter onto an existing interface. This allows for the possibility of using add_tls() to start TLS on an existing connection (as used in several protocols which will negotiate the choice to use TLS before the ClientHello is sent). Signed-off-by: Michael Brown --- src/net/tls.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/net/tls.c') diff --git a/src/net/tls.c b/src/net/tls.c index ea827600f..482200650 100644 --- a/src/net/tls.c +++ b/src/net/tls.c @@ -3088,8 +3088,14 @@ static int tls_session ( struct tls_connection *tls, const char *name ) { ****************************************************************************** */ -int add_tls ( struct interface *xfer, const char *name, - struct interface **next ) { +/** + * Add TLS on an interface + * + * @v xfer Data transfer interface + * @v name Host name + * @ret rc Return status code + */ +int add_tls ( struct interface *xfer, const char *name ) { struct tls_connection *tls; int rc; @@ -3133,8 +3139,7 @@ int add_tls ( struct interface *xfer, const char *name, tls_restart ( tls ); /* Attach to parent interface, mortalise self, and return */ - intf_plug_plug ( &tls->plainstream, xfer ); - *next = &tls->cipherstream; + intf_insert ( xfer, &tls->plainstream, &tls->cipherstream ); ref_put ( &tls->refcnt ); return 0; -- cgit v1.2.3-55-g7522