The patch is good, do you have access authority of edk2? Or I can help to 
commit this patch.

Reviewed-by: Fu Siyuan <siyuan...@intel.com>




-----Original Message-----
From: Gary Ching-Pang Lin [mailto:g...@suse.com] 
Sent: Thursday, August 20, 2015 11:49 AM
To: edk2-devel@lists.01.org
Cc: Laszlo Ersek; Justen, Jordan L; Fu, Siyuan
Subject: [PATCH v3 1/2] NetworkPkg: Remove the hostname from the http request 
URL

Per RFC7230, the URL must be a absolute-path when making a request directly to 
the server. Since proxy is not supported now, all requests to the HTTP driver 
are actually direct requests. This commit removes the scheme and the hostname 
from the URL in the http request if the URL is an absolute-URI so that the HTTP 
server can interpret the request properly.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gary Ching-Pang Lin <g...@suse.com>
Reviewed-by: Ye Ting <ting...@intel.com>
---
 NetworkPkg/HttpDxe/HttpImpl.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c 
index 545fe42..6684f77 100644
--- a/NetworkPkg/HttpDxe/HttpImpl.c
+++ b/NetworkPkg/HttpDxe/HttpImpl.c
@@ -227,6 +227,7 @@ EfiHttpRequest (
   CHAR16                        *HostNameStr;
   HTTP_TOKEN_WRAP               *Wrap;
   HTTP_TCP_TOKEN_WRAP           *TcpWrap;
+  CHAR8                         *FileUrl;
 
   if ((This == NULL) || (Token == NULL)) {
     return EFI_INVALID_PARAMETER;
@@ -450,7 +451,23 @@ EfiHttpRequest (
   //
   // Create request message.
   //
-  RequestStr = HttpGenRequestString (HttpInstance, HttpMsg, Url);
+  FileUrl = Url;
+  if (*FileUrl != '/') {
+    //
+    // Convert the absolute-URI to the absolute-path
+    //
+    while (*FileUrl != ':')
+      FileUrl++;
+    if ((*(FileUrl+1) == '/') && (*(FileUrl+2) == '/')) {
+      FileUrl += 3;
+      while (*FileUrl != '/')
+        FileUrl++;
+    } else {
+      Status = EFI_INVALID_PARAMETER;
+      goto Error3;
+    }
+  }
+  RequestStr = HttpGenRequestString (HttpInstance, HttpMsg, FileUrl);
   if (RequestStr == NULL) {
     Status = EFI_OUT_OF_RESOURCES;
     goto Error3;
--
2.1.4

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to