mirror of
https://github.com/ipxe/ipxe
synced 2026-02-14 02:31:26 +03:00
[http] Hide HTTP transport-layer filter implementation details
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -21,6 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||||||
#include <ipxe/ntlm.h>
|
#include <ipxe/ntlm.h>
|
||||||
|
|
||||||
struct http_transaction;
|
struct http_transaction;
|
||||||
|
struct http_connection;
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
*
|
*
|
||||||
@@ -43,11 +44,10 @@ struct http_scheme {
|
|||||||
unsigned int port;
|
unsigned int port;
|
||||||
/** Transport-layer filter (if any)
|
/** Transport-layer filter (if any)
|
||||||
*
|
*
|
||||||
* @v xfer Data transfer interface
|
* @v conn HTTP connection
|
||||||
* @v name Host name
|
|
||||||
* @ret rc Return status code
|
* @ret rc Return status code
|
||||||
*/
|
*/
|
||||||
int ( * filter ) ( struct interface *xfer, const char *name );
|
int ( * filter ) ( struct http_connection *conn );
|
||||||
};
|
};
|
||||||
|
|
||||||
/** HTTP scheme table */
|
/** HTTP scheme table */
|
||||||
|
|||||||
@@ -301,8 +301,7 @@ int http_connect ( struct interface *xfer, struct uri *uri ) {
|
|||||||
goto err_open;
|
goto err_open;
|
||||||
|
|
||||||
/* Add filter, if any */
|
/* Add filter, if any */
|
||||||
if ( scheme->filter &&
|
if ( scheme->filter && ( ( rc = scheme->filter ( conn ) ) != 0 ) )
|
||||||
( ( rc = scheme->filter ( &conn->socket, uri->host ) ) != 0 ) )
|
|
||||||
goto err_filter;
|
goto err_filter;
|
||||||
|
|
||||||
/* Attach to parent interface, mortalise self, and return */
|
/* Attach to parent interface, mortalise self, and return */
|
||||||
|
|||||||
@@ -31,12 +31,24 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ipxe/open.h>
|
#include <ipxe/open.h>
|
||||||
|
#include <ipxe/uri.h>
|
||||||
#include <ipxe/tls.h>
|
#include <ipxe/tls.h>
|
||||||
#include <ipxe/http.h>
|
#include <ipxe/http.h>
|
||||||
#include <ipxe/features.h>
|
#include <ipxe/features.h>
|
||||||
|
|
||||||
FEATURE ( FEATURE_PROTOCOL, "HTTPS", DHCP_EB_FEATURE_HTTPS, 1 );
|
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 */
|
/** HTTPS URI opener */
|
||||||
struct uri_opener https_uri_opener __uri_opener = {
|
struct uri_opener https_uri_opener __uri_opener = {
|
||||||
.scheme = "https",
|
.scheme = "https",
|
||||||
@@ -47,5 +59,5 @@ struct uri_opener https_uri_opener __uri_opener = {
|
|||||||
struct http_scheme https_scheme __http_scheme = {
|
struct http_scheme https_scheme __http_scheme = {
|
||||||
.name = "https",
|
.name = "https",
|
||||||
.port = HTTPS_PORT,
|
.port = HTTPS_PORT,
|
||||||
.filter = add_tls,
|
.filter = https_filter,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user