Turns out libdbus doesn't send struct ucred credentials on linux, but
just relies on the SO_PEERCRED support. However, gdbus does send, and
expect to recieve a ucred credential. So, when libdbus talks to a
gdbus server the authentication fails to send the credentials.
We fix this by falling back to g_socket_get_credentials() if we don't
get any credential messages.
goto out;
}
- if (g_unix_credentials_message_is_supported ())
+ if (g_unix_credentials_message_is_supported () &&
+ /* Fall back on get_credentials if the other side didn't send the credentials */
+ nscm > 0)
{
if (nscm != 1)
{