| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
'client' is unused.
|
|
|
|
|
|
|
|
| |
The unlock screen may have user verifier extensions too, so we
need to track the reauth user verifier, too.
This API is clearly less than optimal, but fixing it is a task for
another day.
|
|
|
|
| |
This makes the code much tidier.
|
|
|
|
|
|
|
|
|
|
| |
Since commit 2615fb4ffe05b2640c15f4a9706796fe3b1376a9 user verifier
extensions are stored as user data on the user verifier object.
Unfortunately that commit, mixed up where the user verifier object
was in place.
This commit fixes that.
|
|
|
|
|
|
|
|
|
| |
GdmClient fails to free the hash table associated with user
verifier extensions when the client is done with the user verifier.
This commit ties the user verifier extensions to the user verifier
instance associated with it, instead of storing the extensions
directly in the client struct.
|
|
|
|
|
|
|
|
|
|
|
| |
There's a race condition in the client connection code at the moment,
where a user verifier could be waiting for its connection when the login
screen asks for a greeter synchronously. The greeter will then end up
with a different connection that the user verifier which breaks
expectations.
This commit just makes the connection fetching code synchronous for now
to side step the problem.
|
|
|
|
|
|
|
|
| |
There are are few places in the code where the client object is
retrieved via g_async_result_get_source_object. Those calls
return a fresh reference that is never unreferenced later.
This commit plugs those leaks by using g_autoptr's
|
|
|
|
| |
This also gets rid of the deprecated `g_type_class_add_private()`
|
|
|
|
|
| |
Using auto pointers allows to manage things in a cleaner way without having
to manually unref things before returning.
|
| |
|
|
|
|
|
| |
There's no need to keep the manager connection address around, and
use autofree to clean it up
|
|
|
|
|
|
|
|
|
| |
Instead of using the hard-to-maintain shared pointer to the dbus connection
to the manager and reset it when the proxies that use it are deleted, just
look which proxy is currently available and try to reuse the connection
from it.
Fixes #386
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Both if we re-use the shared connection in `gdm_client_get_connection` and if
we create a new one in `on_connected`, we steal the pointer here by using
`g_task_propagate_pointer` and thus we don't have to add an additional
reference to this connection when returning, or it won't ever be consumed by
function customers.
|
|
|
|
|
|
|
|
|
| |
This instance has already been reffed when passed to the task, and since
we're stealing it with `g_task_propagate_pointer` it won't be unreffed.
We could also do this in the `on_reauthentication_channel_opened` callback
but since the new task will ref it anyway, we can just be clean and do it
here.
|
|
|
|
|
|
|
|
|
| |
The GDBusProxies hold a strong reference to the connection themselves,
so maintaining separate weak references is unnecessary.
This commit drops those extraneous weak references.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment we call gdm_client_open_connection and when it finishes,
assume client->priv->connection is implicitly initialized.
This commit makes the operation more explicit by changing
gdm_client_open_connection to gdm_client_get_connection and returning
the GDBusConnection object directly, instead of returning a boolean.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment we add a weakref on each proxy to the connection
object. For the _sync variant functions, When the weakref fires,
they call g_clear_object, clearing the connection, even if other
proxies still have a reference.
This commit changes that weak ref code to use g_object_unref instead.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now we keep the manager proxy alive long after we need it.
It doesn't get cleared until one of the other proxies go away.
That is not only unnecessary but illogical and confusing.
This commit changes the manager proxy to be transient—only alive
long enough to get what we need from it.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
| |
The manager fetching code in GdmClient treats its task
return value as boolean, but it's actually a pointer (the manager)
This commit corrects the confusion.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now libgdm tries to handle multiple simultaneous
open calls at the same time by serializing the requests
and giving them all the same connection. It's broken,
though.
- The pending_opens list is never populated, so we
end up just doing multiple simultaneous open
operations at a time anyway.
- The finish code ends up calling
g_task_return_error (task, NULL) instead of
g_task_return_pointer in the non-error case.
Since the feature doesn't work, drop it for now.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
| |
At the moment we fail to nullify GdmClient's
connection to GDM when the connection is disposed.
This commit adds a weak pointer to correct that mistake.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If an async task tries to reuse an open connection,
it erroneously explicitly unrefs it. That is incorrect,
because there are weak references in use to handle
disposing the connection when its no longer in use.
This commit makes sure the local connection object
in open_connection is nullified so the connection
doesn't get autofree'd.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=783082
|
|
|
|
|
|
| |
This provides gnome-shell with a way to use the new interface.
https://bugzilla.gnome.org/show_bug.cgi?id=788851
|
|
|
|
|
|
|
|
| |
g_dbus_connection_new_for_address_finish() returns a new reference;
we can't simply ignore the returned connection, even though it is also
passed in as the source object of the GAsyncReadyCallback.
https://bugzilla.gnome.org/show_bug.cgi?id=738246
|
|
|
|
|
|
|
| |
g_async_result_get_source_object() returns a reference that must be
unreferenced.
https://bugzilla.gnome.org/show_bug.cgi?id=738246
|
|
|
|
|
|
|
| |
All async results were leaked, since g_simple_async_result_complete_in_idle()
takes a new reference rather than assuming the ref passed in.
https://bugzilla.gnome.org/show_bug.cgi?id=738246
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we would emit the timed-login-requested signal after the
client connects, which might be before it was listening for the
signal.
Now we only emit the signal in direct response to a GetTimedLoginDetails
call, which we make implicitly when the appropiate proxy interface is
set up.
https://bugzilla.gnome.org/show_bug.cgi?id=680348
|
|
libgdm isn't a UI, so it's weird to be in a directory
called GUI.
This commit moves it up a layer.
|