Hi Bulek,
DHCP client is implemented according to RFC 2132. Thus, its implementation is as robust as defined by the specification.
There are timeout events, I copy&paste below a comment from the /rtcs/source/tcpip/dhcpclnt.c:
There are three timed events which may or may not be active depending on the current state. If we are initializing for the first time, only the RESEND event will be active. Once we have a lease and are in a bound state, the RESEND event is cancelled and the RENEW and TERMINATE events are set.
If we are in a RESENDING state, all three events will be set until we are re-bound. If we are in a REBINDING state, only the RESEND and TERMINATE events will be active. If we received a DHCPNAK message when renewing or rebinding, we will try to get a new lease starting from the INITIALIZE
state. If the DHCP server does not wish to renew the current lease, then only the TERMINATE event will be set for the remainder of the lease.