Index: uspace/srv/net/dhcp/dhcp.c
===================================================================
--- uspace/srv/net/dhcp/dhcp.c	(revision 8a64320e304a59746f5987caeba986e6baf11dd7)
+++ uspace/srv/net/dhcp/dhcp.c	(revision 91deaff052ddd8a9a08e5684bb9d995509e5fc26)
@@ -562,4 +562,7 @@
 	}
 
+	/* XXX Work around multiple simultaneous sessions issue */
+	dhcp_transport_fini(&dlink->dt);
+
 	log_msg(LOG_DEFAULT, LVL_NOTE, "%s: Successfully configured.",
 	    dlink->link_info.name);
Index: uspace/srv/net/dhcp/transport.c
===================================================================
--- uspace/srv/net/dhcp/transport.c	(revision 8a64320e304a59746f5987caeba986e6baf11dd7)
+++ uspace/srv/net/dhcp/transport.c	(revision 91deaff052ddd8a9a08e5684bb9d995509e5fc26)
@@ -95,4 +95,9 @@
 	int rc;
 
+	if (dt->fd < 0) {
+		/* Terminated */
+		return EIO;
+	}
+
 	src_addr_size = sizeof(src_addr);
 	rc = recvfrom(dt->fd, msgbuf, MAX_MSG_SIZE, 0,
@@ -166,4 +171,5 @@
 {
 	closesocket(dt->fd);
+	dt->fd = -1;
 }
 
