Skip to content

Commit

Permalink
[Console] Block interactive-mode on Windows even with windows-curses
Browse files Browse the repository at this point in the history
Testing with window-curses results in hangs on initial loading with background error:

    File "C:\Users\Docker\Deluge\.venv\lib\site-packages\twisted\internet\selectreactor.py", line 39, in win32select
        r, w, e = select.select(r, w, w, timeout)
    builtins.OSError: [WinError 10038] An operation was attempted on something that is not a socket

This is due to passing a Console class to addReader but this fails since
select on Windows cannot handle non-socket file object unlike Unix which accepts
sockets and file objects.

There is likely a further issue where windows-curses has not implemented
resizeterm so would need to use resize_term instead.

Refs: https://docs.python.org/3/library/select.html#select.select
Refs: https://stackoverflow.com/questions/11731175/python-twisted-addreader-works-in-linux-but-not-windows
Refs: zephyrproject-rtos/windows-curses#40
Refs: https://docs.python.org/3/library/curses.html#curses.resize_term

Closes: deluge-torrent#457
Co-authored-by: Calum Lind <calumlind+deluge@gmail.com>
  • Loading branch information
mhertz and cas-- committed Sep 8, 2024
1 parent 491458c commit c88f750
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion deluge/ui/console/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def start_ui(self):
except ImportError:
wrapper = None

if deluge.common.windows_check() and not wrapper:
if deluge.common.windows_check():
print(
"""\nDeluge-console does not run in interactive mode on Windows. \n
Please use commands from the command line, e.g.:\n
Expand All @@ -148,6 +148,7 @@ def start_ui(self):
deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent"
"""
)
return

# We don't ever want log output to terminal when running in
# interactive mode, so insert a dummy here
Expand Down

0 comments on commit c88f750

Please sign in to comment.