diff options
-rw-r--r-- | src/include/ipxe/http.h | 6 | ||||
-rw-r--r-- | src/net/tcp/httpconn.c | 3 | ||||
-rw-r--r-- | src/net/tcp/https.c | 14 |
3 files changed, 17 insertions, 6 deletions
diff --git a/src/include/ipxe/http.h b/src/include/ipxe/http.h index 117f174af..5a9baddcb 100644 --- a/src/include/ipxe/http.h +++ b/src/include/ipxe/http.h @@ -21,6 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include <ipxe/ntlm.h> struct http_transaction; +struct http_connection; /****************************************************************************** * @@ -43,11 +44,10 @@ struct http_scheme { unsigned int port; /** Transport-layer filter (if any) * - * @v xfer Data transfer interface - * @v name Host name + * @v conn HTTP connection * @ret rc Return status code */ - int ( * filter ) ( struct interface *xfer, const char *name ); + int ( * filter ) ( struct http_connection *conn ); }; /** HTTP scheme table */ diff --git a/src/net/tcp/httpconn.c b/src/net/tcp/httpconn.c index 2804e09d5..f9221b27e 100644 --- a/src/net/tcp/httpconn.c +++ b/src/net/tcp/httpconn.c @@ -301,8 +301,7 @@ int http_connect ( struct interface *xfer, struct uri *uri ) { goto err_open; /* Add filter, if any */ - if ( scheme->filter && - ( ( rc = scheme->filter ( &conn->socket, uri->host ) ) != 0 ) ) + if ( scheme->filter && ( ( rc = scheme->filter ( conn ) ) != 0 ) ) goto err_filter; /* Attach to parent interface, mortalise self, and return */ diff --git a/src/net/tcp/https.c b/src/net/tcp/https.c index e91000322..5a44bdebf 100644 --- a/src/net/tcp/https.c +++ b/src/net/tcp/https.c @@ -31,12 +31,24 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); */ #include <ipxe/open.h> +#include <ipxe/uri.h> #include <ipxe/tls.h> #include <ipxe/http.h> #include <ipxe/features.h> FEATURE ( FEATURE_PROTOCOL, "HTTPS", DHCP_EB_FEATURE_HTTPS, 1 ); +/** + * Add HTTPS filter + * + * @v conn HTTP connection + * @ret rc Return status code + */ +static int https_filter ( struct http_connection *conn ) { + + return add_tls ( &conn->socket, conn->uri->host ); +} + /** HTTPS URI opener */ struct uri_opener https_uri_opener __uri_opener = { .scheme = "https", @@ -47,5 +59,5 @@ struct uri_opener https_uri_opener __uri_opener = { struct http_scheme https_scheme __http_scheme = { .name = "https", .port = HTTPS_PORT, - .filter = add_tls, + .filter = https_filter, }; |