core: drop all remaining core-internal error domains

A number of classes in core had their own error domains that aren't
really necessary.

In the case of NMDcbError, NMDhcpManagerError, NMDnsManagerError,
NMDnsmasqManagerError, NMPppManagerError, and NMSessionMonitorError,
most of the codes they defined weren't even being used, and at any
rate, the errors were always returned into contexts where they would
just have their message extracted and then get thrown away without
anyone ever looking at the domain or code. So all uses of those
domains can just be replaced with NM_MANAGER_ERROR_FAILED without any
loss of information.

NMAuthManagerError only had 1 error code, and it just indicated
"something went wrong", so it can be replaced with
NM_MANAGER_ERROR_FAILED without loss of information.
(nm-auth-manager.c has also been fixed to return
NM_MANAGER_ERROR_FAILED when the CheckAuthorization D-Bus call fails,
rather than returning whatever error domain/code the D-Bus call
returned.)

NMVpnManagerError used 2 of its 4 error codes, and they could actually
end up getting returned across D-Bus in some cases. But there are
NMManagerError codes that are semantically similar enough to make the
NMVpnManagerError ones unnecessary.
This commit is contained in:
Dan Winship 2014-10-16 16:51:22 -04:00
parent 388a0c5e78
commit da8d79f1c5
17 changed files with 41 additions and 215 deletions

View file

@ -44,17 +44,6 @@
#include "nm-glib-compat.h"
#include "NetworkManagerUtils.h"
GQuark
nm_dhcp_manager_error_quark (void)
{
static GQuark ret = 0;
if (ret == 0)
ret = g_quark_from_static_string ("nm_dhcp_manager_error");
return ret;
}
#define NM_DHCP_CLIENT_DBUS_IFACE "org.freedesktop.nm_dhcp_client"
#define DHCP_TIMEOUT 45 /* default DHCP timeout, in seconds */
@ -298,7 +287,7 @@ get_client_type (const char *client, GError **error)
return NM_TYPE_DHCP_DHCPCD;
else {
g_set_error_literal (error,
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
_("no usable DHCP client could be found."));
return G_TYPE_INVALID;
}
@ -307,7 +296,7 @@ get_client_type (const char *client, GError **error)
if (!strcmp (client, "dhclient")) {
if (!use_dhclient) {
g_set_error_literal (error,
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
_("'dhclient' could not be found or was disabled."));
return G_TYPE_INVALID;
}
@ -317,7 +306,7 @@ get_client_type (const char *client, GError **error)
if (!strcmp (client, "dhcpcd")) {
if (!use_dhcpcd) {
g_set_error_literal (error,
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
_("'dhcpcd' could not be found or was disabled."));
return G_TYPE_INVALID;
}
@ -325,7 +314,7 @@ get_client_type (const char *client, GError **error)
}
g_set_error (error,
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
_("unsupported DHCP client '%s'"), client);
return G_TYPE_INVALID;
}

View file

@ -29,16 +29,6 @@
#include "nm-ip4-config.h"
#include "nm-dhcp4-config.h"
typedef enum {
NM_DHCP_MANAGER_ERROR_BAD_CLIENT = 0, /*< nick=BadClient >*/
NM_DHCP_MANAGER_ERROR_INTERNAL = 1, /*< nick=InternalError >*/
} NMDhcpManagerError;
#define NM_DHCP_MANAGER_ERROR (nm_dhcp_manager_error_quark ())
GQuark nm_dhcp_manager_error_quark (void);
#define NM_TYPE_DHCP_MANAGER (nm_dhcp_manager_get_type ())
#define NM_DHCP_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DHCP_MANAGER, NMDhcpManager))
#define NM_DHCP_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DHCP_MANAGER, NMDhcpManagerClass))

View file

@ -348,8 +348,8 @@ write_resolv_conf (FILE *f,
if (fprintf (f, "%s","# Generated by NetworkManager\n") < 0) {
g_set_error (error,
NM_DNS_MANAGER_ERROR,
NM_DNS_MANAGER_ERROR_SYSTEM,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not write " _PATH_RESCONF ": %s\n",
g_strerror (errno));
return FALSE;
@ -414,8 +414,8 @@ dispatch_resolvconf (char **searches,
nm_log_info (LOGD_DNS, "Writing DNS information to %s", RESOLVCONF_PATH);
if ((f = popen (cmd, "w")) == NULL)
g_set_error (error,
NM_DNS_MANAGER_ERROR,
NM_DNS_MANAGER_ERROR_SYSTEM,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not write to %s: %s\n",
RESOLVCONF_PATH,
g_strerror (errno));
@ -470,8 +470,8 @@ update_resolv_conf (char **searches,
old_errno = errno;
if ((f = fopen (_PATH_RESCONF, "w")) == NULL) {
g_set_error (error,
NM_DNS_MANAGER_ERROR,
NM_DNS_MANAGER_ERROR_SYSTEM,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not open %s: %s\nCould not open %s: %s\n",
tmp_resolv_conf_realpath,
g_strerror (old_errno),
@ -493,8 +493,8 @@ update_resolv_conf (char **searches,
* since its error is more important.
*/
g_set_error (error,
NM_DNS_MANAGER_ERROR,
NM_DNS_MANAGER_ERROR_SYSTEM,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not close %s: %s\n",
tmp_resolv_conf_realpath,
g_strerror (errno));
@ -507,8 +507,8 @@ update_resolv_conf (char **searches,
if (*error == NULL && do_rename) {
if (rename (tmp_resolv_conf_realpath, resolv_conf_realpath) < 0) {
g_set_error (error,
NM_DNS_MANAGER_ERROR,
NM_DNS_MANAGER_ERROR_SYSTEM,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not replace " _PATH_RESCONF ": %s\n",
g_strerror (errno));
}
@ -1055,16 +1055,6 @@ nm_dns_manager_get (void)
return singleton;
}
GQuark
nm_dns_manager_error_quark (void)
{
static GQuark quark = 0;
if (!quark)
quark = g_quark_from_static_string ("nm_dns_manager_error");
return quark;
}
static void
init_resolv_conf_mode (NMDnsManager *self)
{

View file

@ -28,22 +28,12 @@
#include "nm-ip4-config.h"
#include "nm-ip6-config.h"
typedef enum {
NM_DNS_MANAGER_ERROR_SYSTEM,
NM_DNS_MANAGER_ERROR_INVALID_NAMESERVER,
NM_DNS_MANAGER_ERROR_INVALID_HOST,
NM_DNS_MANAGER_ERROR_INVALID_ID
} NMDnsManagerError;
typedef enum {
NM_DNS_IP_CONFIG_TYPE_DEFAULT = 0,
NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE,
NM_DNS_IP_CONFIG_TYPE_VPN
} NMDnsIPConfigType;
#define NM_DNS_MANAGER_ERROR nm_dns_manager_error_quark ()
GQuark nm_dns_manager_error_quark (void);
G_BEGIN_DECLS
#define NM_TYPE_DNS_MANAGER (nm_dns_manager_get_type ())

View file

@ -54,22 +54,6 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 };
typedef enum {
NM_DNSMASQ_MANAGER_ERROR_NOT_FOUND,
NM_DNSMASQ_MANAGER_ERROR_INVALID_IP_RANGE,
} NMDnsMasqManagerError;
GQuark
nm_dnsmasq_manager_error_quark (void)
{
static GQuark quark;
if (!quark)
quark = g_quark_from_static_string ("nm_dnsmasq_manager_error");
return quark;
}
static void
nm_dnsmasq_manager_init (NMDnsMasqManager *manager)
{
@ -282,8 +266,8 @@ create_dm_cmd_line (const char *iface,
if (!nm_dnsmasq_utils_get_range (tmp, first, last, &error_desc)) {
g_set_error_literal (error,
NM_DNSMASQ_MANAGER_ERROR,
NM_DNSMASQ_MANAGER_ERROR_INVALID_IP_RANGE,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
error_desc);
nm_log_warn (LOGD_SHARING, "Failed to find DHCP address ranges: %s", error_desc);
g_free (error_desc);

View file

@ -61,9 +61,4 @@ gboolean nm_dnsmasq_manager_start (NMDnsMasqManager *manager,
void nm_dnsmasq_manager_stop (NMDnsMasqManager *manager);
#define NM_DNSMASQ_MANAGER_ERROR nm_dnsmasq_manager_error_quark()
#define NM_TYPE_DNSMASQ_MANAGER_ERROR (nm_dnsmasq_manager_error_get_type ())
GQuark nm_dnsmasq_manager_error_quark (void);
#endif /* __NETWORKMANAGER_DNSMASQ_MANAGER_H__ */

View file

@ -21,7 +21,7 @@
#include "nm-auth-manager.h"
#include "nm-logging.h"
#include "nm-errors.h"
#define POLKIT_SERVICE "org.freedesktop.PolicyKit1"
#define POLKIT_OBJECT_PATH "/org/freedesktop/PolicyKit1/Authority"
@ -80,16 +80,6 @@ G_DEFINE_TYPE (NMAuthManager, nm_auth_manager, G_TYPE_OBJECT)
#define NM_AUTH_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_AUTH_MANAGER, NMAuthManagerPrivate))
GQuark
nm_auth_manager_error_quark (void)
{
static GQuark quark = 0;
if (G_UNLIKELY (quark == 0))
quark = g_quark_from_static_string ("nm-auth-manager-error-quark");
return quark;
}
/*****************************************************************************/
gboolean
@ -135,12 +125,13 @@ _call_check_authorization_complete_with_error (CheckAuthData *data,
const char *error_message)
{
NMAuthManager *self = data->self;
GError *error = NULL;
_LOGD ("call[%u]: CheckAuthorization failed due to internal error: %s", data->call_id, error_message);
g_set_error_literal (&error, NM_AUTH_MANAGER_ERROR, NM_AUTH_MANAGER_ERROR_DBUS_FAILURE, error_message);
g_simple_async_result_set_from_error (data->simple, error);
g_clear_error (&error);
g_simple_async_result_set_error (data->simple,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Authorization check failed: %s",
error_message);
g_simple_async_result_complete_in_idle (data->simple);
@ -199,7 +190,11 @@ check_authorization_cb (GDBusProxy *proxy,
g_object_ref (self));
} else
_LOGD ("call[%u]: CheckAuthorization failed: %s", data->call_id, error->message);
g_simple_async_result_set_from_error (data->simple, error);
g_simple_async_result_set_error (data->simple,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Authorization check failed: %s",
error->message);
g_error_free (error);
} else {
GVariant *result_value;

View file

@ -40,12 +40,6 @@ G_BEGIN_DECLS
#define NM_AUTH_MANAGER_SIGNAL_CHANGED "changed"
#define NM_AUTH_MANAGER_ERROR (nm_auth_manager_error_quark ())
typedef enum {
NM_AUTH_MANAGER_ERROR_DBUS_FAILURE = 1,
} NMAuthManagerError;
typedef struct {
GObject parent;
} NMAuthManager;
@ -55,7 +49,6 @@ typedef struct {
} NMAuthManagerClass;
GType nm_auth_manager_get_type (void);
GQuark nm_auth_manager_error_quark (void);
NMAuthManager *nm_auth_manager_setup (gboolean polkit_enabled);
NMAuthManager *nm_auth_manager_get (void);

View file

@ -29,16 +29,6 @@
#include "nm-posix-signals.h"
#include "nm-logging.h"
GQuark
nm_dcb_error_quark (void)
{
static GQuark ret = 0;
if (ret == 0)
ret = g_quark_from_static_string ("nm-dcb-error");
return ret;
}
static const char *helper_names[] = { "dcbtool", "fcoeadm" };
gboolean
@ -63,7 +53,7 @@ do_helper (const char *iface,
split = g_strsplit_set (cmdline, " ", 0);
if (!split) {
g_set_error (error, NM_DCB_ERROR, NM_DCB_ERROR_INTERNAL,
g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
"failure parsing %s command line", helper_names[which]);
goto out;
}
@ -327,7 +317,7 @@ run_helper (char **argv, guint which, gpointer user_data, GError **error)
if (ignore_error == FALSE) {
nm_log_warn (LOGD_DCB, "'%s' failed: '%s'",
cmdline, (errmsg && strlen (errmsg)) ? errmsg : outmsg);
g_set_error (error, NM_DCB_ERROR, NM_DCB_ERROR_HELPER_FAILED,
g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
"Failed to run '%s'", cmdline);
success = FALSE;
}

View file

@ -24,30 +24,6 @@
#include <glib.h>
#include "nm-setting-dcb.h"
/**
* NMDcbError:
* @NM_DCB_ERROR_UNKNOWN: unknown or unclassified error
* @NM_DCB_ERROR_INTERNAL: a internal programmer error
* @NM_DCB_ERROR_BAD_CONFIG: configuration was invalid
* @NM_DCB_ERROR_HELPER_NOT_FOUND: the required helper program was not found
* @NM_DCB_ERROR_HELPER_FAILED: the helper program failed
*
* NOTE: these errors are internal-use only and should never be used with D-Bus.
**/
typedef enum {
NM_DCB_ERROR_UNKNOWN = 0,
NM_DCB_ERROR_INTERNAL,
NM_DCB_ERROR_BAD_CONFIG,
NM_DCB_ERROR_HELPER_NOT_FOUND,
NM_DCB_ERROR_HELPER_FAILED,
} NMDcbError;
#define NM_DCB_ERROR (nm_dcb_error_quark ())
GQuark nm_dcb_error_quark (void);
#define NM_TYPE_DCB_ERROR (nm_dcb_error_get_type ())
GType nm_dcb_error_get_type (void);
gboolean nm_dcb_enable (const char *iface, gboolean enable, GError **error);
gboolean nm_dcb_setup (const char *iface, NMSettingDcb *s_dcb, GError **error);
gboolean nm_dcb_cleanup (const char *iface, GError **error);

View file

@ -21,18 +21,7 @@
#include <sys/types.h>
#include "nm-session-utils.h"
/********************************************************************/
GQuark
nm_session_monitor_error_quark (void)
{
static GQuark ret = 0;
if (G_UNLIKELY (ret == 0))
ret = g_quark_from_static_string ("nm-session-monitor-error");
return ret;
}
#include "nm-errors.h"
/********************************************************************/
@ -44,8 +33,8 @@ nm_session_uid_to_user (uid_t uid, const char **out_user, GError **error)
pw = getpwuid (uid);
if (!pw) {
g_set_error (error,
NM_SESSION_MONITOR_ERROR,
NM_SESSION_MONITOR_ERROR_UNKNOWN_USER,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not get username for UID %d",
uid);
return FALSE;
@ -64,8 +53,8 @@ nm_session_user_to_uid (const char *user, uid_t *out_uid, GError **error)
pw = getpwnam (user);
if (!pw) {
g_set_error (error,
NM_SESSION_MONITOR_ERROR,
NM_SESSION_MONITOR_ERROR_UNKNOWN_USER,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"Could not get UID for username '%s'",
user);
return FALSE;

View file

@ -23,17 +23,6 @@
#include <glib.h>
#include <glib-object.h>
#define NM_SESSION_MONITOR_ERROR (nm_session_monitor_error_quark ())
GQuark nm_session_monitor_error_quark (void) G_GNUC_CONST;
GType nm_session_monitor_error_get_type (void) G_GNUC_CONST;
typedef enum {
NM_SESSION_MONITOR_ERROR_IO_ERROR = 0, /*< nick=IOError >*/
NM_SESSION_MONITOR_ERROR_MALFORMED_DATABASE, /*< nick=MalformedDatabase >*/
NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, /*< nick=UnknownUser >*/
NM_SESSION_MONITOR_ERROR_NO_DATABASE, /*< nick=NoDatabase >*/
} NMSessionMonitorError;
gboolean nm_session_uid_to_user (uid_t uid, const char **out_user, GError **error);
gboolean nm_session_user_to_uid (const char *user, uid_t *out_uid, GError **error);

View file

@ -118,21 +118,6 @@ enum {
LAST_PROP
};
typedef enum {
NM_PPP_MANAGER_ERROR_UNKOWN
} NMPPPManagerError;
GQuark
nm_ppp_manager_error_quark (void)
{
static GQuark quark;
if (!quark)
quark = g_quark_from_static_string ("nm_ppp_manager_error");
return quark;
}
static void
nm_ppp_manager_init (NMPPPManager *manager)
{
@ -388,7 +373,8 @@ extract_details_from_connection (NMConnection *connection,
setting = nm_connection_get_setting_by_name (connection, setting_name);
if (!setting) {
g_set_error_literal (error, NM_PPP_MANAGER_ERROR, NM_PPP_MANAGER_ERROR_UNKOWN,
/* This shouldn't ever happen */
g_set_error_literal (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
"Missing type-specific setting; no secrets could be found.");
return FALSE;
}
@ -1112,8 +1098,8 @@ nm_ppp_manager_start (NMPPPManager *manager,
#if !WITH_PPP
/* PPP support disabled */
g_set_error_literal (err,
NM_PPP_MANAGER_ERROR,
NM_PPP_MANAGER_ERROR_UNKOWN,
NM_MANAGER_ERROR,
NM_MANAGER_ERROR_FAILED,
"PPP support is not enabled.");
return FALSE;
#endif

View file

@ -70,9 +70,4 @@ gboolean nm_ppp_manager_start (NMPPPManager *manager,
GError **err);
#define NM_PPP_MANAGER_ERROR nm_ppp_manager_error_quark()
#define NM_TYPE_PPP_MANAGER_ERROR (nm_ppp_manager_error_get_type ())
GQuark nm_ppp_manager_error_quark (void);
#endif /* __NETWORKMANAGER_PPP_MANAGER_H__ */

View file

@ -43,15 +43,6 @@ typedef struct {
guint monitor_id;
} NMVpnManagerPrivate;
GQuark
nm_vpn_manager_error_quark (void)
{
static GQuark quark = 0;
if (!quark)
quark = g_quark_from_static_string ("nm-vpn-manager-error");
return quark;
}
static NMVpnService *
get_service_by_namefile (NMVpnManager *self, const char *namefile)
@ -95,7 +86,7 @@ nm_vpn_manager_activate_connection (NMVpnManager *manager,
g_assert (device);
if ( nm_device_get_state (device) != NM_DEVICE_STATE_ACTIVATED
&& nm_device_get_state (device) != NM_DEVICE_STATE_SECONDARIES) {
g_set_error_literal (error, NM_VPN_MANAGER_ERROR, NM_VPN_MANAGER_ERROR_DEVICE_NOT_ACTIVE,
g_set_error_literal (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED,
"The base device for the VPN connection was not active.");
return FALSE;
}
@ -109,7 +100,7 @@ nm_vpn_manager_activate_connection (NMVpnManager *manager,
g_assert (service_name);
service = g_hash_table_lookup (NM_VPN_MANAGER_GET_PRIVATE (manager)->services, service_name);
if (!service) {
g_set_error (error, NM_VPN_MANAGER_ERROR, NM_VPN_MANAGER_ERROR_SERVICE_INVALID,
g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_CONNECTION_NOT_AVAILABLE,
"The VPN service '%s' was not installed.",
service_name);
return FALSE;
@ -302,7 +293,5 @@ nm_vpn_manager_class_init (NMVpnManagerClass *manager_class)
/* virtual methods */
object_class->dispose = dispose;
dbus_g_error_domain_register (NM_VPN_MANAGER_ERROR, NULL, NM_TYPE_VPN_MANAGER_ERROR);
}

View file

@ -33,20 +33,6 @@
#define NM_IS_VPN_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_VPN_MANAGER))
#define NM_VPN_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_VPN_MANAGER, NMVpnManagerClass))
typedef enum
{
NM_VPN_MANAGER_ERROR_DEVICE_NOT_ACTIVE = 0, /*< nick=BaseDeviceNotActive >*/
NM_VPN_MANAGER_ERROR_CONNECTION_INVALID, /*< nick=ConnectionInvalid >*/
NM_VPN_MANAGER_ERROR_SERVICE_INVALID, /*< nick=ServiceInvalid >*/
NM_VPN_MANAGER_ERROR_SERVICE_START_FAILED, /*< nick=ServiceStartFailed >*/
} NMVpnManagerError;
#define NM_VPN_MANAGER_ERROR (nm_vpn_manager_error_quark ())
GQuark nm_vpn_manager_error_quark (void);
GType nm_vpn_manager_error_get_type (void);
typedef struct {
GObject parent;
} NMVpnManager;

View file

@ -218,7 +218,7 @@ nm_vpn_service_daemon_exec (NMVpnService *service, GError **error)
spawn_error && spawn_error->message ? spawn_error->message : "(unknown)");
g_set_error (error,
NM_VPN_MANAGER_ERROR, NM_VPN_MANAGER_ERROR_SERVICE_START_FAILED,
NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
"%s", spawn_error ? spawn_error->message : "unknown g_spawn_async() error");
nm_vpn_service_stop_connections (service, FALSE, NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED);