From: Patrik Flykt <[email protected]>
If a service is hidden, no modification are allowed to it.
The hidden service acts as a placeholder to instantiate
a proper connection once it is assigned an SSID.
---
src/service.c | 28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/src/service.c b/src/service.c
index 057b020..3530b23 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2212,7 +2212,7 @@ int __connman_service_get_index(struct connman_service
*service)
void __connman_service_set_domainname(struct connman_service *service,
const char *domainname)
{
- if (service == NULL)
+ if (service == NULL || service->hidden == TRUE)
return;
g_free(service->domainname);
@@ -2248,7 +2248,7 @@ char **connman_service_get_nameservers(struct
connman_service *service)
void connman_service_set_proxy_method(struct connman_service *service,
enum connman_service_proxy_method
method)
{
- if (service == NULL)
+ if (service == NULL || service->hidden == TRUE)
return;
service->proxy = method;
@@ -2297,7 +2297,7 @@ const char *connman_service_get_proxy_url(struct
connman_service *service)
void __connman_service_set_proxy_autoconfig(struct connman_service *service,
const char *url)
{
- if (service == NULL)
+ if (service == NULL || service->hidden == TRUE)
return;
service->proxy = CONNMAN_SERVICE_PROXY_METHOD_AUTO;
@@ -2443,6 +2443,8 @@ int __connman_service_timeserver_remove(struct
connman_service *service,
void __connman_service_set_pac(struct connman_service *service,
const char *pac)
{
+ if (service->hidden == TRUE)
+ return;
g_free(service->pac);
service->pac = g_strdup(pac);
@@ -2452,7 +2454,7 @@ void __connman_service_set_pac(struct connman_service
*service,
void __connman_service_set_identity(struct connman_service *service,
const char *identity)
{
- if (service->immutable)
+ if (service->immutable || service->hidden == TRUE)
return;
g_free(service->identity);
@@ -2467,6 +2469,8 @@ void __connman_service_set_identity(struct
connman_service *service,
void __connman_service_set_agent_identity(struct connman_service *service,
const char *agent_identity)
{
+ if (service->hidden == TRUE)
+ return;
g_free(service->agent_identity);
service->agent_identity = g_strdup(agent_identity);
@@ -2479,7 +2483,7 @@ void __connman_service_set_agent_identity(struct
connman_service *service,
void __connman_service_set_passphrase(struct connman_service *service,
const char* passphrase)
{
- if (service->immutable == TRUE)
+ if (service->immutable == TRUE || service->hidden == TRUE)
return;
g_free(service->passphrase);
@@ -2498,6 +2502,8 @@ void __connman_service_set_passphrase(struct
connman_service *service,
void __connman_service_set_agent_passphrase(struct connman_service *service,
const char *agent_passphrase)
{
+ if (service->hidden == TRUE)
+ return;
g_free(service->agent_passphrase);
service->agent_passphrase = g_strdup(agent_passphrase);
@@ -2792,7 +2798,7 @@ static DBusMessage *set_property(DBusConnection *conn,
if (type != DBUS_TYPE_STRING)
return __connman_error_invalid_arguments(msg);
- if (service->immutable == TRUE)
+ if (service->immutable == TRUE || service->hidden == TRUE)
return __connman_error_not_supported(msg);
dbus_message_iter_get_basic(&value, &passphrase);
@@ -2973,7 +2979,7 @@ static DBusMessage *clear_property(DBusConnection *conn,
g_get_current_time(&service->modified);
service_save(service);
} else if (g_str_equal(name, "Passphrase") == TRUE) {
- if (service->immutable == TRUE)
+ if (service->immutable == TRUE || service->hidden == TRUE)
return __connman_error_not_supported(msg);
g_free(service->passphrase);
@@ -3245,7 +3251,7 @@ static DBusMessage *remove_service(DBusConnection *conn,
if (service->type == CONNMAN_SERVICE_TYPE_ETHERNET)
return __connman_error_not_supported(msg);
- if (service->immutable == TRUE)
+ if (service->immutable == TRUE || service->hidden == TRUE)
return __connman_error_not_supported(msg);
if (service->favorite == FALSE && service->state !=
@@ -3877,6 +3883,8 @@ int __connman_service_set_favorite(struct connman_service
*service,
{
GSequenceIter *iter;
+ if (service->hidden == TRUE)
+ return -EOPNOTSUPP;
iter = g_hash_table_lookup(service_hash, service->identifier);
if (iter == NULL)
return -ENOENT;
@@ -3899,6 +3907,8 @@ int __connman_service_set_favorite(struct connman_service
*service,
int __connman_service_set_immutable(struct connman_service *service,
connman_bool_t immutable)
{
+ if (service->hidden == TRUE)
+ return -EOPNOTSUPP;
service->immutable = immutable;
immutable_changed(service);
@@ -3909,6 +3919,8 @@ int __connman_service_set_immutable(struct
connman_service *service,
void __connman_service_set_string(struct connman_service *service,
const char *key, const char *value)
{
+ if (service->hidden == TRUE)
+ return;
if (g_str_equal(key, "EAP") == TRUE) {
g_free(service->eap);
service->eap = g_strdup(value);
--
1.7.2.5
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman