]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/Dhcp6Dxe/Dhcp6Io.c
DHCP6 bug fix:
[mirror_edk2.git] / NetworkPkg / Dhcp6Dxe / Dhcp6Io.c
index e0a2b4b15f298625993852c6d4e758e3691d80df..063605e60947bb6a8c7291e27d8c49445cbbda79 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   Dhcp6 internal functions implementation.\r
 \r
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -544,7 +545,6 @@ Dhcp6UpdateIaInfo (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-  EFI_DHCP6_STATE             State;\r
   UINT8                       *Option;\r
   UINT8                       *IaInnerOpt;\r
   UINT16                      IaInnerLen;\r
@@ -565,7 +565,6 @@ Dhcp6UpdateIaInfo (
   //\r
   // See details in the section-18.1.8 of rfc-3315.\r
   //\r
-  State  = Dhcp6Init;\r
   Option = Dhcp6SeekIaOption (\r
              Packet->Dhcp6.Option,\r
              Packet->Length - sizeof (EFI_DHCP6_HEADER),\r
@@ -2428,14 +2427,12 @@ Dhcp6HandleAdvertiseMsg (
 {\r
   EFI_STATUS                  Status;\r
   UINT8                       *Option;\r
-  UINT16                      StsCode;\r
   BOOLEAN                     Timeout;\r
 \r
   ASSERT(Instance->Config);\r
   ASSERT(Instance->IaCb.Ia);\r
 \r
   Timeout = FALSE;\r
-  StsCode = Dhcp6StsSuccess;\r
 \r
   //\r
   // If the client does receives a valid reply message that includes a rapid\r
@@ -2815,6 +2812,7 @@ Dhcp6ReceivePacket (
   LIST_ENTRY                *Next1;\r
   LIST_ENTRY                *Entry2;\r
   LIST_ENTRY                *Next2;\r
+  EFI_STATUS                Status;\r
 \r
   ASSERT (Udp6Wrap != NULL);\r
   ASSERT (Context != NULL);\r
@@ -2894,6 +2892,18 @@ Dhcp6ReceivePacket (
 \r
 ON_CONTINUE:\r
 \r
+  if (!IsDispatched) {\r
+    Status = UdpIoRecvDatagram (\r
+             Service->UdpIo,\r
+             Dhcp6ReceivePacket,\r
+             Service,\r
+             0\r
+             );\r
+    if (EFI_ERROR (Status)) {\r
+      Dhcp6CleanupRetry (Instance, DHCP6_PACKET_ALL);\r
+    }\r
+  }\r
+\r
   NetbufFree (Udp6Wrap);\r
 \r
   if (Packet != NULL) {\r