On 01/19/2015 02:36 PM, Daniel P. Berrange wrote: > The virDBusMethodCall method has a DBusError as one of its > parameters. If the caller wants to pass a non-NULL value > for this, it immediately makes the calling code require > DBus at build time. This has led to breakage of non-DBus > builds several times. It is desirable that only the virdbus.c > file should need WITH_DBUS conditionals, so we must ideally > remove the DBusError parameter from the method. > > We can't simply raise a libvirt error, since the whole point > of this parameter is to give the callers a way to check if > the error is one they want to ignore, without having the logs > polluted with an error message. So, we add a virErrorPtr > parameter which the caller can then either ignore or raise > using virSetError. > > Signed-off-by: Daniel P. Berrange <[email protected]> > --- > src/util/virdbus.c | 31 +++++++++++++++++++------------ > src/util/virdbus.h | 4 ++-- > src/util/virfirewall.c | 29 ++++++----------------------- > src/util/virsystemd.c | 15 +++++++-------- > 4 files changed, 34 insertions(+), 45 deletions(-) >
> @@ -820,11 +808,9 @@ virFirewallApplyRuleFirewallD(virFirewallRulePtr rule,
> */
> if (ignoreErrors) {
> VIR_DEBUG("Ignoring error '%s': '%s'",
> - error.name, error.message);
> + error.str1, error.message);
> } else {
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("Unable to apply rule '%s'"),
> - error.message);
> + virSetError(&error);
If ignoreErrors is false, we should be reporting the error, not just setting
it. virRaiseErrorFull seems to be the only virError call writing to the log.
> goto cleanup;
> }
> } else {
> diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
> index 3eea5c2..0b71b26 100644
> --- a/src/util/virsystemd.c
> +++ b/src/util/virsystemd.c
> @@ -280,21 +280,20 @@ int virSystemdCreateMachine(const char *name,
> "Before", "as", 1, "libvirt-guests.service") <
> 0)
> goto cleanup;
>
> - if (dbus_error_is_set(&error)) {
> + if (error.level == VIR_ERR_ERROR) {
> if (STREQ_NULLABLE("org.freedesktop.DBus.Error.UnknownMethod",
> - error.name)) {
> + error.str1)) {
> VIR_INFO("CreateMachineWithNetwork isn't supported,
> switching "
> "to legacy CreateMachine method for
> systemd-machined");
> - dbus_error_free(&error);
> + virResetError(&error);
> virAtomicIntSet(&hasCreateWithNetwork, 0);
> /* Could re-structure without Using goto, but this
> * avoids another atomic read which would trigger
> * another memory barrier */
> goto fallback;
> }
> - virReportError(VIR_ERR_DBUS_SERVICE,
> - _("CreateMachineWithNetwork: %s"),
> - error.message ? error.message : _("unknown
> error"));
> + virSetError(&error);
> + virResetError(&error);
Same here.
Jan
> goto cleanup;
> }
> } else {
>
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
