Skip to content

Failure to connect, but killswitch created. Disabling killswitch errors. #14

@Iron730

Description

@Iron730

We are happy to answer your questions about the code or discuss technical ideas.

Please complete the following checklist (by adding [x]):

  • I have searched open and closed issues for duplicates
  • This isn't a feature request
  • This is not a report about my app not working as expected

After recent updates to Fedora KDE spin, VPN fails to connect, but creates a "pvpn-killswitch" connection despite being turned off in config. Killswitch can be turned on, but not off.

Output when running 'protonvpn connect':

Traceback (most recent call last):
  File "/usr/lib64/python3.14/asyncio/tasks.py", line 488, in wait_for
    return await fut
           ^^^^^^^^^
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/protonvpn", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/__init__.py", line 170, in main
    app(
    ~~~^
        obj=Params(
        ^^^^^^^^^^^
    ...<4 lines>...
        args=cli_args
        ^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.14/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/core/run_async.py", line 31, in wrapper
    return asyncio.run(func(*args, **kwargs))
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/asyncio/runners.py", line 204, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/commands/server.py", line 140, in connect
    connection_state = await controller.connect(server)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/core/controller.py", line 452, in connect
    connector = await self.get_vpn_connector()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/core/controller.py", line 531, in get_vpn_connector
    vpn_connector = await self._api.get_vpn_connector()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/api.py", line 69, in get_vpn_connector
    self._vpn_connector = await VPNConnector.get(
                          ^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/connection.py", line 100, in get
    await connector.initialize_state()
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/connection.py", line 296, in initialize_state
    await self._update_state(state)
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/connection.py", line 517, in _update_state
    new_event = await self._current_state.run_tasks()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/connection/states.py", line 196, in run_tasks
    await self.context.kill_switch.disable()
  File "/usr/lib/python3.14/site-packages/proton/vpn/backend/networkmanager/killswitch/wireguard/wgkillswitch.py", line 76, in disable
    await self._ks_handler.remove_killswitch_connection()
  File "/usr/lib/python3.14/site-packages/proton/vpn/backend/networkmanager/killswitch/wireguard/killswitch_connection_handler.py", line 270, in remove_killswitch_connection
    await self._remove_connection(_get_connection_id(permanent=False))
  File "/usr/lib/python3.14/site-packages/proton/vpn/backend/networkmanager/killswitch/wireguard/killswitch_connection_handler.py", line 289, in _remove_connection
    await _wrap_future(self.nm_client.remove_connection_async(connection))
  File "/usr/lib/python3.14/site-packages/proton/vpn/backend/networkmanager/killswitch/wireguard/killswitch_connection_handler.py", line 56, in _wrap_future
    return await asyncio.wait_for(
           ^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/usr/lib64/python3.14/asyncio/tasks.py", line 487, in wait_for
    async with timeouts.timeout(timeout):
               ~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib64/python3.14/asyncio/timeouts.py", line 114, in __aexit__
    raise TimeoutError from exc_val
TimeoutError

Output when running 'protonvpn config set kill-switch off':

Traceback (most recent call last):
  File "/usr/bin/protonvpn", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/__init__.py", line 170, in main
    app(
    ~~~^
        obj=Params(
        ^^^^^^^^^^^
    ...<4 lines>...
        args=cli_args
        ^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.14/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/core/run_async.py", line 31, in wrapper
    return asyncio.run(func(*args, **kwargs))
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/asyncio/runners.py", line 204, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/commands/settings.py", line 189, in killswitch_command
    controller = await Controller.create(params=ctx.obj, click_ctx=ctx)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/core/controller.py", line 158, in create
    await controller.get_settings()
  File "/usr/lib/python3.14/site-packages/proton/vpn/cli/core/controller.py", line 217, in get_settings
    return await self._api.load_settings()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/api.py", line 85, in load_settings
    user_tier = self._session_holder.user_tier or 0
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/session_holder.py", line 102, in user_tier
    if self.session.loaded:
       ^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/vpn/core/session_holder.py", line 93, in session
    self._session = self._proton_sso.get_default_session(
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        override_class=VPNSession
        ^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.14/site-packages/proton/sso/sso.py", line 195, in get_default_session
    sessions = self.sessions
               ^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/sso/sso.py", line 140, in sessions
    cleaned_index = [account_name for account_name in keyring_index if len(self._get_session_data(account_name)) > 0]
                                                                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/sso/sso.py", line 239, in _get_session_data
    data = self._keyring[self.__keyring_key_name(account_name)]
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/proton/keyring/_base.py", line 65, in __getitem__
    return self._get_item(key)
           ~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.14/site-packages/proton/keyring_linux/secretservice/secretservice_backend.py", line 56, in _get_item
    stored_data = self._backend.get_password(
        self.KEYRING_SERVICE,
        key
    )
  File "/usr/lib/python3.14/site-packages/keyring/backends/SecretService.py", line 84, in get_password
    return item.get_secret().decode('utf-8')
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions