mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-11 12:46:49 +00:00
fix(console): a serial console worker holds only its own terminal
pty.fork returns an inheritable master descriptor, so each new console worker, and the ssh it may start, held the terminals of every other open session until it ended. A worker now closes every descriptor above its own terminal before it starts.
This commit is contained in:
parent
cbd6317e55
commit
504d86faa3
2 changed files with 28 additions and 0 deletions
|
|
@ -52,6 +52,9 @@ def connect(sid, environ, auth):
|
|||
pid, fd = pty.fork()
|
||||
if pid == 0:
|
||||
try:
|
||||
# pty.fork's master is inheritable: without this each worker would
|
||||
# hold the other sessions' consoles open
|
||||
os.closerange(3, os.sysconf("SC_OPEN_MAX"))
|
||||
os.execv(sys.executable, [sys.executable, CONSOLECALLBACK, str(instance.pk)])
|
||||
finally:
|
||||
os._exit(1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue