@@ -196,7 +196,6 @@ def _dsm_reset(self) -> None:
196
196
"""Close the socket and set attributes to default values used by the
197
197
state machine INIT state."""
198
198
debug_msg ("Resetting DHCP state machine." , self ._debug )
199
- self ._socket_release ()
200
199
self .dhcp_server_ip = _BROADCAST_SERVER_ADDR
201
200
self ._eth .ifconfig = (
202
201
_UNASSIGNED_IP_ADDR ,
@@ -215,7 +214,7 @@ def _dsm_reset(self) -> None:
215
214
def _socket_release (self ) -> None :
216
215
"""Close the socket if it exists."""
217
216
debug_msg ("Releasing socket." , self ._debug )
218
- if self ._wiz_sock :
217
+ if self ._wiz_sock is not None :
219
218
self ._eth .socket_close (self ._wiz_sock )
220
219
self ._wiz_sock = None
221
220
debug_msg (" Socket released." , self ._debug )
@@ -386,12 +385,16 @@ def _handle_dhcp_message(self) -> int:
386
385
return msg_type_in
387
386
except ValueError as error :
388
387
debug_msg (error , self ._debug )
388
+ finally :
389
+ self ._socket_release ()
389
390
if not self ._blocking or self ._renew :
390
391
debug_msg (
391
392
"No message, FSM is nonblocking or renewing, exiting loop." ,
392
393
self ._debug ,
393
394
)
395
+ self ._socket_release ()
394
396
return 0 # Did not receive a response in a single attempt.
397
+ self ._socket_release ()
395
398
raise TimeoutError (
396
399
"No response from DHCP server after {} retries." .format (attempt )
397
400
)
@@ -409,7 +412,6 @@ def _dhcp_state_machine(self, *, blocking: bool = False) -> None:
409
412
now = time .monotonic ()
410
413
if now < self ._t1 :
411
414
debug_msg ("No timers have expired. Exiting FSM." , self ._debug )
412
- self ._socket_release ()
413
415
return
414
416
if now > self ._lease :
415
417
debug_msg (
0 commit comments