[libvirt] [PATCH] Revert "dbus: correctly build reply message"

Marc-André Lureau marcandre.lureau at redhat.com
Mon Sep 9 11:47:21 UTC 2019


Hi

On Fri, Sep 6, 2019 at 7:37 PM Michal Privoznik <mprivozn at redhat.com> wrote:
>
> This reverts commit 39dded7bb61444bb608fadd3f82f6fe93d08fd0e.
>
> This commit broke virpolkittest on Ubuntu 18 which has an old
> dbus (v1.12.2). Any other distro with the recent one works
> (v1.12.16) which hints its a bug in dbus somewhere. Revert the
> commit to stop tickling it.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>

This patch is no longer necessary for dbus-vmstate in this series. I
found this "bug" when implementing an alternative solution. So
reverting it is fine by me.

However, it may be revealing a transient bug in
virDBusMessageIterDecode() rather than libdbus. It would be worth to
have VIR_DEBUG() output from the failing test.

For now:
Reviewed-by: Marc-André Lureau <marcandre.lureau at redhat.com>


> ---
>  src/util/virdbus.c      | 18 ++++++------------
>  src/util/virdbus.h      |  6 ++----
>  tests/virfirewalltest.c |  9 +++------
>  tests/virpolkittest.c   |  3 +--
>  4 files changed, 12 insertions(+), 24 deletions(-)
>
> diff --git a/src/util/virdbus.c b/src/util/virdbus.c
> index 64513eef14..b0ac8d7055 100644
> --- a/src/util/virdbus.c
> +++ b/src/util/virdbus.c
> @@ -1456,7 +1456,6 @@ int virDBusCreateMethod(DBusMessage **call,
>
>  /**
>   * virDBusCreateReplyV:
> - * @msg: the message to reply to
>   * @reply: pointer to be filled with a method reply message
>   * @types: type signature for following method arguments
>   * @args: method arguments
> @@ -1469,14 +1468,13 @@ int virDBusCreateMethod(DBusMessage **call,
>   * as variadic args. See virDBusCreateMethodV for a
>   * description of this parameter.
>   */
> -int virDBusCreateReplyV(DBusMessage *msg,
> -                        DBusMessage **reply,
> +int virDBusCreateReplyV(DBusMessage **reply,
>                          const char *types,
>                          va_list args)
>  {
>      int ret = -1;
>
> -    if (!(*reply = dbus_message_new_method_return(msg))) {
> +    if (!(*reply = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN))) {
>          virReportOOMError();
>          goto cleanup;
>      }
> @@ -1495,7 +1493,6 @@ int virDBusCreateReplyV(DBusMessage *msg,
>
>  /**
>   * virDBusCreateReply:
> - * @msg: the message to reply to
>   * @reply: pointer to be filled with a method reply message
>   * @types: type signature for following method arguments
>   * @...: method arguments
> @@ -1503,15 +1500,14 @@ int virDBusCreateReplyV(DBusMessage *msg,
>   * See virDBusCreateReplyV for a description of the
>   * behaviour of this method.
>   */
> -int virDBusCreateReply(DBusMessage *msg,
> -                       DBusMessage **reply,
> +int virDBusCreateReply(DBusMessage **reply,
>                         const char *types, ...)
>  {
>      va_list args;
>      int ret;
>
>      va_start(args, types);
> -    ret = virDBusCreateReplyV(msg, reply, types, args);
> +    ret = virDBusCreateReplyV(reply, types, args);
>      va_end(args);
>
>      return ret;
> @@ -1815,8 +1811,7 @@ int virDBusCreateMethodV(DBusMessage **call ATTRIBUTE_UNUSED,
>      return -1;
>  }
>
> -int virDBusCreateReplyV(DBusMessage *msg ATTRIBUTE_UNUSED,
> -                        DBusMessage **reply ATTRIBUTE_UNUSED,
> +int virDBusCreateReplyV(DBusMessage **reply ATTRIBUTE_UNUSED,
>                          const char *types ATTRIBUTE_UNUSED,
>                          va_list args ATTRIBUTE_UNUSED)
>  {
> @@ -1825,8 +1820,7 @@ int virDBusCreateReplyV(DBusMessage *msg ATTRIBUTE_UNUSED,
>      return -1;
>  }
>
> -int virDBusCreateReply(DBusMessage *msg ATTRIBUTE_UNUSED,
> -                       DBusMessage **reply ATTRIBUTE_UNUSED,
> +int virDBusCreateReply(DBusMessage **reply ATTRIBUTE_UNUSED,
>                         const char *types ATTRIBUTE_UNUSED, ...)
>  {
>      virReportError(VIR_ERR_INTERNAL_ERROR,
> diff --git a/src/util/virdbus.h b/src/util/virdbus.h
> index 0303e91045..083c074d59 100644
> --- a/src/util/virdbus.h
> +++ b/src/util/virdbus.h
> @@ -52,11 +52,9 @@ int virDBusCreateMethodV(DBusMessage **call,
>                           const char *member,
>                           const char *types,
>                           va_list args);
> -int virDBusCreateReply(DBusMessage *msg,
> -                       DBusMessage **reply,
> +int virDBusCreateReply(DBusMessage **reply,
>                         const char *types, ...);
> -int virDBusCreateReplyV(DBusMessage *msg,
> -                        DBusMessage **reply,
> +int virDBusCreateReplyV(DBusMessage **reply,
>                          const char *types,
>                          va_list args);
>
> diff --git a/tests/virfirewalltest.c b/tests/virfirewalltest.c
> index e5eeb52175..78685a3bf4 100644
> --- a/tests/virfirewalltest.c
> +++ b/tests/virfirewalltest.c
> @@ -150,8 +150,7 @@ VIR_MOCK_WRAP_RET_ARGS(dbus_connection_send_with_reply_and_block,
>              if (nargs == 1 &&
>                  STREQ(type, "ipv4") &&
>                  STREQ(args[0], "-L")) {
> -                if (virDBusCreateReply(message,
> -                                       &reply,
> +                if (virDBusCreateReply(&reply,
>                                         "s", TEST_FILTER_TABLE_LIST) < 0)
>                      goto error;
>              } else if (nargs == 3 &&
> @@ -159,13 +158,11 @@ VIR_MOCK_WRAP_RET_ARGS(dbus_connection_send_with_reply_and_block,
>                         STREQ(args[0], "-t") &&
>                         STREQ(args[1], "nat") &&
>                         STREQ(args[2], "-L")) {
> -                if (virDBusCreateReply(message,
> -                                       &reply,
> +                if (virDBusCreateReply(&reply,
>                                         "s", TEST_NAT_TABLE_LIST) < 0)
>                      goto error;
>              } else {
> -                if (virDBusCreateReply(message,
> -                                       &reply,
> +                if (virDBusCreateReply(&reply,
>                                         "s", "success") < 0)
>                      goto error;
>              }
> diff --git a/tests/virpolkittest.c b/tests/virpolkittest.c
> index 845ceb1736..ce1ff92bf2 100644
> --- a/tests/virpolkittest.c
> +++ b/tests/virpolkittest.c
> @@ -123,8 +123,7 @@ VIR_MOCK_WRAP_RET_ARGS(dbus_connection_send_with_reply_and_block,
>          VIR_FREE(cancellationId);
>          virStringListFreeCount(details, detailslen);
>
> -        if (virDBusCreateReply(message,
> -                               &reply,
> +        if (virDBusCreateReply(&reply,
>                                 "(bba&{ss})",
>                                 is_authorized,
>                                 is_challenge,
> --
> 2.21.0
>




More information about the libvir-list mailing list