diff options
author | Forest Bond <forest@alittletooquiet.net> | 2010-05-11 20:56:06 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-05-12 03:09:31 +0200 |
commit | 3e6995b377ef331e8e15267f6be357e7a958203a (patch) | |
tree | a2cf749ddc6863cb04300b11c6b1a9e81afbe569 /src/notifier.c | |
parent | b2965652f2bd6adb29296e7fa7cda0c5ac6dca89 (diff) | |
download | connman-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.c | 27 |
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(®istered[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; |