New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make it possible to restart qrexec-agent #1148

Open
marmarek opened this Issue Aug 25, 2015 · 0 comments

Comments

Projects
None yet
2 participants
@marmarek
Member

marmarek commented Aug 25, 2015

This would be useful at least for upgrades, which tend to breaks when old qrexec-agent is running.
Problems with that:

  1. Currently you can't restart qrexec agent, because it will not be able connect to dom0 again, without restarting qrexec daemon there too. This is probably easy to solve.
  2. Even if you can restart it, it needs to happen before that hanging qrexec call. IIUC in default debian scripts, this would happen after all the custom preinst (where the qrexec call is placed)
  3. Restarting only qrexec agent wont be enough because this particular problem happens in qrexec-fork-server, which is part of the user session. So it wont be affected by qrexec-agent restart. And of course you can't restart the whole user session in the middle of upgrade...
    3a. Actually above isn't a big problem, because you can simply kill qrexec-fork-server. This process is used to start new applications inside user session (so they are proper children of session leader, as apparently required by logind and PolicyKit). But if you kill that process, qrexec-agent will use a fallback of starting new session ("su - -c ...") for each call. This should be more than enough for service calls, just may have some problems with GUI applications, but we don't need them in this particular case.
  4. And finally, restarting qrexec-agent will of course will break all the running connections. If you're running upgrade through qrexec (for example using some script - from which this thread has started), the upgrade will be interrupted.

The last one (4) is true only on R2, on R3.0 qrexec was redesigned to
hold running connections in separate processes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment