diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-03-19 17:52:02 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-03-19 17:59:27 +0100 |
commit | 10bf505febd4d0c0f14c224667d187f8d3f0c88d (patch) | |
tree | aa75631b4ac97c632b8d34b6d8efdf9df282ad04 | |
parent | 4e849d234d2da376d58bf88e0e348a8896a031b1 (diff) | |
download | qutebrowser-10bf505febd4d0c0f14c224667d187f8d3f0c88d.tar.gz qutebrowser-10bf505febd4d0c0f14c224667d187f8d3f0c88d.zip |
Only connect IPC after init has finished
Otherwise, if there's a fatal error message shown during init, we try to
open something via IPC before we're fully initialized. This can e.g.
lead to a KeyError for qtnetwork-download-manager:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/qutebrowser/app.py", line 120, in <lambda>
process_pos_args(args, cwd=cwd, via_ipc=True,
File "/usr/lib/python3/dist-packages/qutebrowser/app.py", line 230, in process_pos_args
win_id = mainwindow.get_window(via_ipc, force_window=True)
File "/usr/lib/python3/dist-packages/qutebrowser/mainwindow/mainwindow.py", line 89, in get_window
window = MainWindow(private=None)
File "/usr/lib/python3/dist-packages/qutebrowser/mainwindow/mainwindow.py", line 220, in __init__
self._init_downloadmanager()
File "/usr/lib/python3/dist-packages/qutebrowser/mainwindow/mainwindow.py", line 350, in _init_downloadmanager
qtnetwork_download_manager = objreg.get('qtnetwork-download-manager')
File "/usr/lib/python3/dist-packages/qutebrowser/utils/objreg.py", line 249, in get
return reg[name]
File "/usr/lib/python3.8/collections/__init__.py", line 1010, in __getitem__
raise KeyError(key)
KeyError: 'qtnetwork-download-manager'
(cherry picked from commit 6c0d8d59647b39ecf3292b125991522d3502db65)
-rw-r--r-- | qutebrowser/app.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 1a18881b5..cdeffa7d3 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -120,13 +120,14 @@ def run(args): log.init.warning( "Backend from the running instance will be used") sys.exit(usertypes.Exit.ok) - else: - quitter.instance.shutting_down.connect(server.shutdown) - server.got_args.connect(lambda args, target_arg, cwd: - process_pos_args(args, cwd=cwd, via_ipc=True, - target_arg=target_arg)) init(args=args) + + quitter.instance.shutting_down.connect(server.shutdown) + server.got_args.connect( + lambda args, target_arg, cwd: + process_pos_args(args, cwd=cwd, via_ipc=True, target_arg=target_arg)) + ret = qt_mainloop() return ret |