GDBus: Add new call flag to allow interactive authorization

DBus has recently introduced new message flag
DBUS_HEADER_FLAG_ALLOW_INTERACTIVE_AUTHORIZATION, which tells that
caller is willing to wait for unspecified amount of time for the call
to return, as the service may perform interactive authorization (e.g.
using polkit).

https://bugzilla.gnome.org/show_bug.cgi?id=739616
This commit is contained in:
Jan Safranek 2014-11-04 11:54:00 +00:00 committed by Matthias Clasen
parent 865ce79ce0
commit b31a873fb3
2 changed files with 16 additions and 3 deletions

View File

@ -5265,8 +5265,14 @@ static void
add_call_flags (GDBusMessage *message, add_call_flags (GDBusMessage *message,
GDBusCallFlags flags) GDBusCallFlags flags)
{ {
GDBusMessageFlags msg_flags = 0;
if (flags & G_DBUS_CALL_FLAGS_NO_AUTO_START) if (flags & G_DBUS_CALL_FLAGS_NO_AUTO_START)
g_dbus_message_set_flags (message, G_DBUS_MESSAGE_FLAGS_NO_AUTO_START); msg_flags |= G_DBUS_MESSAGE_FLAGS_NO_AUTO_START;
if (flags & G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION)
msg_flags |= G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION;
if (msg_flags)
g_dbus_message_set_flags (message, msg_flags);
} }
static GVariant * static GVariant *

View File

@ -1212,6 +1212,8 @@ typedef enum {
* @G_DBUS_CALL_FLAGS_NO_AUTO_START: The bus must not launch * @G_DBUS_CALL_FLAGS_NO_AUTO_START: The bus must not launch
* an owner for the destination name in response to this method * an owner for the destination name in response to this method
* invocation. * invocation.
* @G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: the caller is prepared to
* wait for interactive authorization. Since 2.46.
* *
* Flags used in g_dbus_connection_call() and similar APIs. * Flags used in g_dbus_connection_call() and similar APIs.
* *
@ -1219,7 +1221,8 @@ typedef enum {
*/ */
typedef enum { typedef enum {
G_DBUS_CALL_FLAGS_NONE = 0, G_DBUS_CALL_FLAGS_NONE = 0,
G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0) G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0),
G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<1)
} GDBusCallFlags; } GDBusCallFlags;
/* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */ /* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */
@ -1249,6 +1252,9 @@ typedef enum {
* @G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED: A reply is not expected. * @G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED: A reply is not expected.
* @G_DBUS_MESSAGE_FLAGS_NO_AUTO_START: The bus must not launch an * @G_DBUS_MESSAGE_FLAGS_NO_AUTO_START: The bus must not launch an
* owner for the destination name in response to this message. * owner for the destination name in response to this message.
* @G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: If set on a method
* call, this flag means that the caller is prepared to wait for interactive
* authorization. Since 2.46.
* *
* Message flags used in #GDBusMessage. * Message flags used in #GDBusMessage.
* *
@ -1257,7 +1263,8 @@ typedef enum {
typedef enum { typedef enum {
G_DBUS_MESSAGE_FLAGS_NONE = 0, G_DBUS_MESSAGE_FLAGS_NONE = 0,
G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED = (1<<0), G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED = (1<<0),
G_DBUS_MESSAGE_FLAGS_NO_AUTO_START = (1<<1) G_DBUS_MESSAGE_FLAGS_NO_AUTO_START = (1<<1),
G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<2)
} GDBusMessageFlags; } GDBusMessageFlags;
/** /**