Index: uspace/srv/net/dhcp/dhcp.c
===================================================================
--- uspace/srv/net/dhcp/dhcp.c	(revision 86cf96db61d51787a47d6d8c6ac8e3d1961b743d)
+++ uspace/srv/net/dhcp/dhcp.c	(revision 003504fcbb88dc60bc2333d51f6664f36e03d56c)
@@ -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 86cf96db61d51787a47d6d8c6ac8e3d1961b743d)
+++ uspace/srv/net/dhcp/transport.c	(revision 003504fcbb88dc60bc2333d51f6664f36e03d56c)
@@ -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;
 }
 
