DHCP6 bug fix:

DHCP6 won’t process more message if one message’s Xid is mismatched.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gary Lin <glin@suse.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16832 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Gary Lin 2015-02-11 08:26:36 +00:00 committed by sfu5
parent 234f9ff96e
commit 4701d96534
1 changed files with 14 additions and 1 deletions

View File

@ -2,7 +2,7 @@
Dhcp6 internal functions implementation. Dhcp6 internal functions implementation.
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -2812,6 +2812,7 @@ Dhcp6ReceivePacket (
LIST_ENTRY *Next1; LIST_ENTRY *Next1;
LIST_ENTRY *Entry2; LIST_ENTRY *Entry2;
LIST_ENTRY *Next2; LIST_ENTRY *Next2;
EFI_STATUS Status;
ASSERT (Udp6Wrap != NULL); ASSERT (Udp6Wrap != NULL);
ASSERT (Context != NULL); ASSERT (Context != NULL);
@ -2891,6 +2892,18 @@ Dhcp6ReceivePacket (
ON_CONTINUE: ON_CONTINUE:
if (!IsDispatched) {
Status = UdpIoRecvDatagram (
Service->UdpIo,
Dhcp6ReceivePacket,
Service,
0
);
if (EFI_ERROR (Status)) {
Dhcp6CleanupRetry (Instance, DHCP6_PACKET_ALL);
}
}
NetbufFree (Udp6Wrap); NetbufFree (Udp6Wrap);
if (Packet != NULL) { if (Packet != NULL) {