diff options
author | Timo Ewalds <timo@ewalds.ca> | 2019-03-05 15:36:39 +0000 |
---|---|---|
committer | Gregory P. Smith <greg@krypto.org> | 2019-03-05 07:36:39 -0800 |
commit | 233f6b01d456bf355f7b283525c68475560a3ba1 (patch) | |
tree | 50e3e8fab1c74963a958959934ef3e5d284045c6 | |
parent | 58f5beb1275c6424802c59a169eb09d479d79818 (diff) | |
download | portpicker-233f6b01d456bf355f7b283525c68475560a3ba1.tar.gz |
Handle a rare race condition with reserved ports. (#14)
-rw-r--r-- | src/portpicker.py | 5 |
1 files changed, 4 insertions, 1 deletions
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 @@ def pick_unused_port(pid=None, portserver_address=None): 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. |