summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2010-10-31 08:54:37 +0100
committerHans de Goede <hdegoede@redhat.com>2010-10-31 09:07:13 +0100
commit899dc0656c7569b0c884025c714be165903016c4 (patch)
tree9362695e12444c090e94715a3c306fab5d4e2143
parent027959474724cc026b189598facbdc6b940c586e (diff)
vdagentd: Do not try to get active session on startup
This will fail when we are started from the initscripts as there won't be an active session (yet). Instead get the active session when the first agent connects (and/or when console kit signals an active session change). Also fix a copy paste error in GetActiveSession logging.
-rw-r--r--console-kit.c12
-rw-r--r--vdagentd.c15
2 files changed, 7 insertions, 20 deletions
diff --git a/console-kit.c b/console-kit.c
index 6a89488..eb15939 100644
--- a/console-kit.c
+++ b/console-kit.c
@@ -85,11 +85,6 @@ struct console_kit *console_kit_create(FILE *errfile)
return NULL;
}
- if (!console_kit_get_active_session(ck)) {
- console_kit_destroy(ck);
- return NULL;
- }
-
return ck;
}
@@ -202,11 +197,11 @@ const char *console_kit_get_active_session(struct console_kit *ck)
&error);
if (reply == NULL || dbus_error_is_set(&error)) {
if (dbus_error_is_set(&error)) {
- fprintf(ck->errfile, "GetSeats failed: %s\n",
+ fprintf(ck->errfile, "GetActiveSession failed: %s\n",
error.message);
dbus_error_free(&error);
} else
- fprintf(ck->errfile, "GetSeats failed\n");
+ fprintf(ck->errfile, "GetActiveSession failed\n");
goto exit;
}
@@ -236,7 +231,8 @@ exit:
dbus_message_unref(message);
}
- return ck->active_session;
+ /* In case the session was changed while we were running */
+ return console_kit_check_active_session_change(ck);
}
char *console_kit_session_for_pid(struct console_kit *ck, uint32_t pid)
diff --git a/vdagentd.c b/vdagentd.c
index bab21b6..b3c1ef3 100644
--- a/vdagentd.c
+++ b/vdagentd.c
@@ -409,6 +409,9 @@ void update_active_session_connection(void)
struct udscs_connection *new_conn = NULL;
int n;
+ if (!active_session)
+ active_session = console_kit_get_active_session(console_kit);
+
n = udscs_server_for_all_clients(server, connection_matches_active_session,
(void*)&new_conn);
if (n != 1)
@@ -588,11 +591,6 @@ void main_loop(void)
if (FD_ISSET(ck_fd, &readfds)) {
active_session = console_kit_get_active_session(console_kit);
update_active_session_connection();
- if (!active_session) {
- fprintf(logfile, "Fatal error: could not get active session\n");
- retval = 1;
- break;
- }
}
fflush(logfile);
}
@@ -678,13 +676,6 @@ int main(int argc, char *argv[])
udscs_destroy_server(server);
return 1;
}
- active_session = console_kit_get_active_session(console_kit);
- if (!active_session) {
- fprintf(logfile, "Fatal could not get active session\n");
- console_kit_destroy(console_kit);
- udscs_destroy_server(server);
- return 1;
- }
main_loop();