diff options
| author | Michael Brown | 2007-01-18 23:38:13 +0100 |
|---|---|---|
| committer | Michael Brown | 2007-01-18 23:38:13 +0100 |
| commit | 4e3976711dec26ba1f462f19c4b865dea3dbe4d7 (patch) | |
| tree | fab4b8042cdc2e01adc2b43f5f816611e5978068 /src/net | |
| parent | When an async operation dies, orphan its children. (diff) | |
| download | ipxe-4e3976711dec26ba1f462f19c4b865dea3dbe4d7.tar.gz ipxe-4e3976711dec26ba1f462f19c4b865dea3dbe4d7.tar.xz ipxe-4e3976711dec26ba1f462f19c4b865dea3dbe4d7.zip | |
A working name resolution framework
Diffstat (limited to 'src/net')
| -rw-r--r-- | src/net/tcp/http.c | 14 | ||||
| -rw-r--r-- | src/net/udp/dns.c | 7 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/net/tcp/http.c b/src/net/tcp/http.c index 04e8f9a1d..87f6eee2b 100644 --- a/src/net/tcp/http.c +++ b/src/net/tcp/http.c @@ -35,6 +35,7 @@ #include <gpxe/uri.h> #include <gpxe/buffer.h> #include <gpxe/download.h> +#include <gpxe/resolv.h> #include <gpxe/http.h> static struct async_operations http_async_operations; @@ -391,17 +392,12 @@ int http_get ( struct uri *uri, struct buffer *buffer, struct async *parent ) { http->buffer = buffer; async_init ( &http->async, &http_async_operations, parent ); - -#warning "Quick name resolution hack" - extern int dns_resolv ( const char *name, - struct sockaddr *sa, - struct async *parent ); - - if ( ( rc = dns_resolv ( uri->host, &http->server, - &http->async ) ) != 0 ) + /* Start name resolution. The download proper will start when + * name resolution completes. + */ + if ( ( rc = resolv ( uri->host, &http->server, &http->async ) ) != 0 ) goto err; - return 0; err: diff --git a/src/net/udp/dns.c b/src/net/udp/dns.c index 872e3b296..a5b658c29 100644 --- a/src/net/udp/dns.c +++ b/src/net/udp/dns.c @@ -26,6 +26,7 @@ #include <byteswap.h> #include <gpxe/async.h> #include <gpxe/udp.h> +#include <gpxe/resolv.h> #include <gpxe/dns.h> /** @file @@ -468,3 +469,9 @@ int dns_resolv ( const char *name, struct sockaddr *sa, free ( dns ); return rc; } + +/** DNS name resolver */ +struct resolver dns_resolver __resolver = { + .name = "DNS", + .resolv = dns_resolv, +}; |
