[http] Hide HTTP transport-layer filter implementation details

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/181/head
Michael Brown 2020-12-08 14:55:44 +00:00
parent 1b112e9d18
commit be47c2c72c
3 changed files with 17 additions and 6 deletions

View File

@ -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 */

View File

@ -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 */

View File

@ -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,
};