[Console] Block interactive-mode on Windows even with windows-curses

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: https://github.com/zephyrproject-rtos/windows-curses/issues/40
Refs: https://docs.python.org/3/library/curses.html#curses.resize_term

Closes: https://github.com/deluge-torrent/deluge/pull/457
Co-authored-by: Calum Lind <calumlind+deluge@gmail.com>
This commit is contained in:
Martin Hertz 2024-08-16 14:21:03 +02:00 committed by Calum Lind
parent 491458c4ad
commit c88f750108
No known key found for this signature in database
GPG Key ID: 90597A687B836BA3
1 changed files with 2 additions and 1 deletions

View File

@ -138,7 +138,7 @@ class ConsoleUI(component.Component, TermResizeHandler):
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
@ -148,6 +148,7 @@ deluge-console.exe "add --help"
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