Reviewed-by: Ye Ting <[email protected]> 

-----Original Message-----
From: Zhang, Lubo 
Sent: Tuesday, December 15, 2015 11:36 AM
To: [email protected]
Cc: Ye, Ting; Fu, Siyuan; Wu, Jiaxin
Subject: [patch] NetworkPkg:Fix the issue Http boot hang when network failed.

For both IPv4 and IPv6, when network transfer failed, such as disconnected 
cable or disable http server, HTTP boot should exit back to the menu UI rather 
than hang.

Cc: Ye Ting <[email protected]>
Cc: Fu Siyuan <[email protected]>
Cc: Wu Jiaxin <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <[email protected]>
---
 NetworkPkg/HttpDxe/HttpProto.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/NetworkPkg/HttpDxe/HttpProto.c b/NetworkPkg/HttpDxe/HttpProto.c 
index 85f8401..165e95c 100644
--- a/NetworkPkg/HttpDxe/HttpProto.c
+++ b/NetworkPkg/HttpDxe/HttpProto.c
@@ -148,17 +148,23 @@ HttpTcpReceiveNotifyDpc (
   
   if (UsingIpv6) {
     gBS->CloseEvent (Wrap->TcpWrap.Rx6Token.CompletionToken.Event);
     
     if (EFI_ERROR (Wrap->TcpWrap.Rx6Token.CompletionToken.Status)) {
+      Wrap->HttpToken->Status = Wrap->TcpWrap.Rx6Token.CompletionToken.Status;
+      gBS->SignalEvent (Wrap->HttpToken->Event);
+      FreePool (Wrap);
       return ;
     }
 
   } else {
     gBS->CloseEvent (Wrap->TcpWrap.Rx4Token.CompletionToken.Event);
     
     if (EFI_ERROR (Wrap->TcpWrap.Rx4Token.CompletionToken.Status)) {
+      Wrap->HttpToken->Status = Wrap->TcpWrap.Rx4Token.CompletionToken.Status;
+      gBS->SignalEvent (Wrap->HttpToken->Event);
+      FreePool (Wrap);
       return ;
     }
   }
 
   //
--
1.9.5.msysgit.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to