diff --git a/qubes-rpc/qubes.WaitForSession b/qubes-rpc/qubes.WaitForSession index ba1fbe2..9d43a19 100755 --- a/qubes-rpc/qubes.WaitForSession +++ b/qubes-rpc/qubes.WaitForSession @@ -1,16 +1,8 @@ #!/bin/sh -# old API - get the user from caller -#read -r IGNORE_USERNAME +USERNAME="$(qubesdb-read /default-user || echo 'user')" -# use default user provided in QubesDB, or hardcoded 'user' - this must be the -# same as the X session owner -USERNAME=$(qubesdb-read /default-user || echo 'user') -cmd='echo $$ >> /tmp/qubes-session-waiter; [ ! -f /tmp/qubes-session-env ] && exec sleep inf' -if [ "$(id -un)" = "$USERNAME" ]; then - sh -c "$cmd" 2>/dev/null -else - su -s /bin/sh -c "$cmd" - "$USERNAME" 2> /dev/null -fi -# the above line is _expected_ to be terminated by a signal, don't treat this as a failure -exit 0 +while ! [ -e "/var/run/qubes/qrexec-server.$USERNAME.sock" ] +do + sleep 0.1 +done diff --git a/qubes-rpc/vm-file-editor.c b/qubes-rpc/vm-file-editor.c index 45004e8..0373e90 100644 --- a/qubes-rpc/vm-file-editor.c +++ b/qubes-rpc/vm-file-editor.c @@ -147,11 +147,10 @@ void send_file_back(const char * filename) int main() { - struct stat stat_pre, stat_post, session_stat; + struct stat stat_pre, stat_post; int view_only = 0; char *filename = get_filename(&view_only); int child, status, log_fd, null_fd; - FILE *waiter_pidfile; copy_file_by_name(filename); if (view_only) { @@ -162,37 +161,7 @@ main() perror("stat pre"); exit(1); } -#ifdef DEBUG - fprintf(stderr, "time=%s, waiting for qubes-session\n", gettime()); -#endif - // wait for X server to starts (especially in DispVM) - if (stat("/tmp/qubes-session-env", &session_stat)) { - switch (child = fork()) { - case -1: - perror("fork"); - exit(1); - case 0: - waiter_pidfile = fopen("/tmp/qubes-session-waiter", "a"); - if (waiter_pidfile == NULL) { - perror("fopen waiter_pidfile"); - exit(1); - } - fprintf(waiter_pidfile, "%d\n", getpid()); - fclose(waiter_pidfile); - // check the second time, to prevent race - if (stat("/tmp/qubes-session-env", &session_stat)) { - // wait for qubes-session notify - pause(); - } - exit(0); - default: - waitpid(child, &status, 0); - if (WIFEXITED(status) && WEXITSTATUS(status) != 0) { - //propagate exit code from child - exit(WEXITSTATUS(status)); - } - } - } + #ifdef DEBUG fprintf(stderr, "time=%s, starting editor\n", gettime()); #endif