From e80a36317aacb142c282e0795b9f5b3a20aec1dc Mon Sep 17 00:00:00 2001 From: IWASE Yusuke Date: Wed, 19 Oct 2016 13:36:14 +0900 Subject: [PATCH] dpset: Fix iteration error when disconnecting switches When disconnecting switches, dpset will fail to unregister ports, because size of values in the port state dictionary might be changed when doing the iteration. This patch fixes to copy the values list and fixes this problem. Signed-off-by: IWASE Yusuke Signed-off-by: FUJITA Tomonori --- ryu/controller/dpset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryu/controller/dpset.py b/ryu/controller/dpset.py index 5af6835a..8004b2a8 100644 --- a/ryu/controller/dpset.py +++ b/ryu/controller/dpset.py @@ -218,7 +218,7 @@ class DPSet(app_manager.RyuApp): # Now datapath is already dead, so port status change event doesn't # interfere us. ev = EventDP(dp, False) - for port in self.port_state.get(dp.id, {}).values(): + for port in list(self.port_state.get(dp.id, {}).values()): self._port_deleted(dp, port) ev.ports.append(port)