Handle a rare race condition with reserved ports. (#14)
diff --git a/src/portpicker.py b/src/portpicker.py
index 7636733..e54dcbc 100644
--- a/src/portpicker.py
+++ b/src/portpicker.py
@@ -158,8 +158,11 @@
Raises:
NoFreePortFoundError: No free port could be found.
"""
- if _free_ports:
+ try: # Instead of `if _free_ports:` to handle the race condition.
port = _free_ports.pop()
+ except KeyError:
+ pass
+ else:
_owned_ports.add(port)
return port
# Provide access to the portserver on an opt-in basis.