[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/4] Allow non-default ports for HTTP requests
From: |
Matthew Garrett |
Subject: |
[PATCH 1/4] Allow non-default ports for HTTP requests |
Date: |
Mon, 23 Jan 2017 15:45:05 -0800 |
Add support for passing ports in HTTP requests. This takes the form of:
(http,serverip:portnum)/file
---
grub-core/net/http.c | 8 ++++++--
grub-core/net/net.c | 10 +++++++++-
include/grub/net.h | 1 +
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/grub-core/net/http.c b/grub-core/net/http.c
index 5aa4ad3..389a78e 100644
--- a/grub-core/net/http.c
+++ b/grub-core/net/http.c
@@ -309,7 +309,7 @@ http_establish (struct grub_file *file, grub_off_t offset,
int initial)
{
http_data_t data = file->data;
grub_uint8_t *ptr;
- int i;
+ int i, port;
struct grub_net_buff *nb;
grub_err_t err;
@@ -390,8 +390,12 @@ http_establish (struct grub_file *file, grub_off_t offset,
int initial)
grub_netbuff_put (nb, 2);
grub_memcpy (ptr, "\r\n", 2);
+ if (file->device->net->port)
+ port = file->device->net->port;
+ else
+ port = HTTP_PORT;
data->sock = grub_net_tcp_open (file->device->net->server,
- HTTP_PORT, http_receive,
+ port, http_receive,
http_err, http_err,
file);
if (!data->sock)
diff --git a/grub-core/net/net.c b/grub-core/net/net.c
index 10773fc..585f4f7 100644
--- a/grub-core/net/net.c
+++ b/grub-core/net/net.c
@@ -1261,7 +1261,7 @@ grub_net_open_real (const char *name)
grub_net_app_level_t proto;
const char *protname, *server;
grub_size_t protnamelen;
- int try;
+ int try, port = 0;
if (grub_strncmp (name, "pxe:", sizeof ("pxe:") - 1) == 0)
{
@@ -1278,7 +1278,14 @@ grub_net_open_real (const char *name)
else
{
const char *comma;
+ char *colon;
comma = grub_strchr (name, ',');
+ colon = grub_strchr (name, ':');
+ if (colon)
+ {
+ port = (int) grub_strtol(colon+1, NULL, 10);
+ *colon = '\0';
+ }
if (comma)
{
protnamelen = comma - name;
@@ -1310,6 +1317,7 @@ grub_net_open_real (const char *name)
if (!ret)
return NULL;
ret->protocol = proto;
+ ret->port = port;
ret->server = grub_strdup (server);
if (!ret->server)
{
diff --git a/include/grub/net.h b/include/grub/net.h
index 2192fa1..c517509 100644
--- a/include/grub/net.h
+++ b/include/grub/net.h
@@ -276,6 +276,7 @@ typedef struct grub_net
grub_fs_t fs;
int eof;
int stall;
+ int port;
} *grub_net_t;
extern grub_net_t (*EXPORT_VAR (grub_net_open)) (const char *name);
--
2.9.3
- [PATCH 1/4] Allow non-default ports for HTTP requests,
Matthew Garrett <=