summaryrefslogtreecommitdiffstats
path: root/src/net/tcp/http.c
diff options
context:
space:
mode:
authorMichael Brown2011-06-24 15:14:41 +0200
committerMichael Brown2011-06-28 15:45:08 +0200
commite01ec74601b58f54a5e2ae7b9fd1196972034114 (patch)
tree54f2d2202274523e2365584502dee7db8deca43b /src/net/tcp/http.c
parent[xfer] Send xfer_window_changed() after xfer_vredirect() (diff)
downloadipxe-e01ec74601b58f54a5e2ae7b9fd1196972034114.tar.gz
ipxe-e01ec74601b58f54a5e2ae7b9fd1196972034114.tar.xz
ipxe-e01ec74601b58f54a5e2ae7b9fd1196972034114.zip
[process] Pass containing object pointer to process step() methods
Give the step() method a pointer to the containing object, rather than a pointer to the process. This is consistent with the operation of interface methods, and allows a single function to serve as both an interface method and a process step() method. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/tcp/http.c')
-rw-r--r--src/net/tcp/http.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/net/tcp/http.c b/src/net/tcp/http.c
index 598f28931..15f88b319 100644
--- a/src/net/tcp/http.c
+++ b/src/net/tcp/http.c
@@ -483,11 +483,9 @@ static int http_socket_deliver ( struct http_request *http,
/**
* HTTP process
*
- * @v process Process
+ * @v http HTTP request
*/
-static void http_step ( struct process *process ) {
- struct http_request *http =
- container_of ( process, struct http_request, process );
+static void http_step ( struct http_request *http ) {
const char *host = http->uri->host;
const char *user = http->uri->user;
const char *password =
@@ -561,6 +559,10 @@ static struct interface_descriptor http_xfer_desc =
INTF_DESC_PASSTHRU ( struct http_request, xfer,
http_xfer_operations, socket );
+/** HTTP process descriptor */
+static struct process_descriptor http_process_desc =
+ PROC_DESC ( struct http_request, process, http_step );
+
/**
* Initiate an HTTP connection, with optional filter
*
@@ -591,7 +593,7 @@ int http_open_filter ( struct interface *xfer, struct uri *uri,
intf_init ( &http->xfer, &http_xfer_desc, &http->refcnt );
http->uri = uri_get ( uri );
intf_init ( &http->socket, &http_socket_desc, &http->refcnt );
- process_init ( &http->process, http_step, &http->refcnt );
+ process_init ( &http->process, &http_process_desc, &http->refcnt );
/* Open socket */
memset ( &server, 0, sizeof ( server ) );