site_linux_router: fix local servers cleanup
Make a copy of self.local_servers and use it to iterate through
servers for cleanup. This avoids the problem where elements
are being removed from list while iterating through it at the same
time.
BUG=chromium:476582
TEST=Run network_WiFi_ConnectionIdentifier and
network_WiFi_VerifyRouter test
Change-Id: I243d9f9ec4507b66cc7a432877e9f140fd55bd14
Reviewed-on: https://chromium-review.googlesource.com/265831
Trybot-Ready: Zeping Qiu <zqiu@chromium.org>
Tested-by: Zeping Qiu <zqiu@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Zeping Qiu <zqiu@chromium.org>
diff --git a/server/site_linux_router.py b/server/site_linux_router.py
index 74d109b..6e9cd3f 100644
--- a/server/site_linux_router.py
+++ b/server/site_linux_router.py
@@ -3,6 +3,7 @@
# found in the LICENSE file.
import collections
+import copy
import logging
import random
import string
@@ -731,7 +732,7 @@
else:
instances = self.hostapd_instances
self.hostapd_instances = []
- local_servers = self.local_servers
+ local_servers = copy.copy(self.local_servers)
for instance in instances:
if silent:
@@ -742,7 +743,7 @@
self.kill_hostapd_instance(instance)
self.release_interface(instance.interface)
if self.station_instances:
- local_servers = self.local_servers
+ local_servers = copy.copy(self.local_servers)
instance = self.station_instances.pop()
if instance.dev_type == 'ibss':
self.iw_runner.ibss_leave(instance.interface)