dhcp request (ethernet.begin(mac)) hangs in parseDHCPResponse of Dhcp.cpp

Thanks for the response.

It sounded like this should fix the problem, yet somehow doesn't. I spent the afternoon trying to figure out the problem myself. Even with your change, when I first get back the DHCPOffer packet, it reports 614 bytes in the UDP part of the packet. Looking at wireshark the correct size should have been 311.

Here is how I examine the size of the udp packet (see Serial.println):

uint8_t DhcpClass::parseDHCPResponse(unsigned long responseTimeout, uint32_t& transactionId)
{
	uint16_t avail;
    uint16_t cc = 0;
    uint8_t type = 0;
    uint8_t opt_len = 0;

    unsigned long startTime = millis();

    while((avail = _dhcpUdpSocket.parsePacket()) <= 0)
    {
        if((millis() - startTime) > responseTimeout)
        {
            return 255;
        }
        delay(50);
    }
    // start reading in the packet
    RIP_MSG_FIXED fixedMsg;
    Serial.print("~bytes at top of parseDHCPResponse=");Serial.println(_dhcpUdpSocket.available());
    _dhcpUdpSocket.read((uint8_t*)&fixedMsg, sizeof(RIP_MSG_FIXED));

I checked this all the way to the code you suggest modifying and it returns what I see here.

The other puzzling part of this is I used this same arduino/ethernet shield and version of the compiler at home and it worked fine.