summaryrefslogtreecommitdiff
path: root/src/notifier.c
diff options
context:
space:
mode:
authorForest Bond <forest@alittletooquiet.net>2010-05-11 20:56:06 -0400
committerMarcel Holtmann <marcel@holtmann.org>2010-05-12 03:09:31 +0200
commit3e6995b377ef331e8e15267f6be357e7a958203a (patch)
treea2cf749ddc6863cb04300b11c6b1a9e81afbe569 /src/notifier.c
parentb2965652f2bd6adb29296e7fa7cda0c5ac6dca89 (diff)
downloadconnman-3e6995b377ef331e8e15267f6be357e7a958203a.tar.gz
connman-3e6995b377ef331e8e15267f6be357e7a958203a.tar.bz2
connman-3e6995b377ef331e8e15267f6be357e7a958203a.zip
Fail immediately enabling/disabling unregistered technology
Previously, calling EnableTechnology or DisableTechnology with an unregistered technology type caused the call to fail silently and eventually timeout. With this patch, a "Not Registered" error is returned immediately instead.
Diffstat (limited to 'src/notifier.c')
-rw-r--r--src/notifier.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/notifier.c b/src/notifier.c
index 2777783d..95794ac1 100644
--- a/src/notifier.c
+++ b/src/notifier.c
@@ -401,10 +401,8 @@ void __connman_notifier_offlinemode(connman_bool_t enabled)
}
}
-connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type)
+static connman_bool_t technology_supported(enum connman_service_type type)
{
- DBG("type %d", type);
-
switch (type) {
case CONNMAN_SERVICE_TYPE_UNKNOWN:
case CONNMAN_SERVICE_TYPE_SYSTEM:
@@ -419,6 +417,29 @@ connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type)
break;
}
+ return TRUE;
+}
+
+connman_bool_t __connman_notifier_is_registered(enum connman_service_type type)
+{
+ DBG("type %d", type);
+
+ if (technology_supported(type) == FALSE)
+ return FALSE;
+
+ if (g_atomic_int_get(&registered[type]) > 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type)
+{
+ DBG("type %d", type);
+
+ if (technology_supported(type) == FALSE)
+ return FALSE;
+
if (g_atomic_int_get(&enabled[type]) > 0)
return TRUE;