david/ipxe
Archived
1
0

[DHCP] Fix DHCP state confusion.

DHCP code was using an incorrect check for whether to construct a
DHCPDISCOVER or DHCPREQUEST packet.
This commit is contained in:
Michael Brown 2008-03-25 16:38:01 +00:00
parent 8f00c84828
commit 7234f91bf8

View File

@ -622,7 +622,7 @@ static int dhcp_send_request ( struct dhcp_session *dhcp ) {
.netdev = dhcp->netdev, .netdev = dhcp->netdev,
}; };
struct io_buffer *iobuf; struct io_buffer *iobuf;
struct dhcp_packet *dhcpoffer; struct dhcp_packet *dhcpoffer = NULL;
struct dhcp_packet dhcppkt; struct dhcp_packet dhcppkt;
int rc; int rc;
@ -643,7 +643,10 @@ static int dhcp_send_request ( struct dhcp_session *dhcp ) {
return -ENOMEM; return -ENOMEM;
/* Create DHCP packet in temporary buffer */ /* Create DHCP packet in temporary buffer */
dhcpoffer = ( dhcp->response ? &dhcp->response->dhcppkt : NULL ); if ( dhcp->state == DHCPREQUEST ) {
assert ( dhcp->response );
dhcpoffer = &dhcp->response->dhcppkt;
}
if ( ( rc = create_dhcp_request ( &dhcppkt, dhcp->netdev, if ( ( rc = create_dhcp_request ( &dhcppkt, dhcp->netdev,
dhcpoffer, iobuf->data, dhcpoffer, iobuf->data,
iob_tailroom ( iobuf ) ) ) != 0 ) { iob_tailroom ( iobuf ) ) ) != 0 ) {