diff options
Diffstat (limited to 'src/technology.c')
-rw-r--r-- | src/technology.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/technology.c b/src/technology.c index 0293094c..faf5ae02 100644 --- a/src/technology.c +++ b/src/technology.c @@ -328,8 +328,7 @@ static int set_tethering(struct connman_technology *technology, if (bridge == NULL) return -EOPNOTSUPP; - if (technology->type == CONNMAN_SERVICE_TYPE_WIFI && - (ident == NULL || passphrase == NULL)) + if (technology->type == CONNMAN_SERVICE_TYPE_WIFI && ident == NULL) return -EINVAL; for (tech_drivers = technology->driver_list; tech_drivers != NULL; @@ -890,19 +889,23 @@ static DBusMessage *set_property(DBusConnection *conn, if (technology->type != CONNMAN_SERVICE_TYPE_WIFI) return __connman_error_not_supported(msg); - if (strlen(str) < 8 || strlen(str) > 63) - return __connman_error_passphrase_required(msg); - - if (g_strcmp0(technology->tethering_passphrase, str) != 0) { - g_free(technology->tethering_passphrase); - technology->tethering_passphrase = g_strdup(str); - technology_save(technology); - - connman_dbus_property_changed_basic(technology->path, - CONNMAN_TECHNOLOGY_INTERFACE, - "TetheringPassphrase", - DBUS_TYPE_STRING, - &technology->tethering_passphrase); + if (strlen(str) < 8 || strlen(str) > 63) { + if (g_str_equal(str, "")) + technology->tethering_passphrase = NULL; + else + return __connman_error_passphrase_required(msg); + } else { + if (g_strcmp0(technology->tethering_passphrase, str) != 0) { + g_free(technology->tethering_passphrase); + technology->tethering_passphrase = g_strdup(str); + technology_save(technology); + + connman_dbus_property_changed_basic(technology->path, + CONNMAN_TECHNOLOGY_INTERFACE, + "TetheringPassphrase", + DBUS_TYPE_STRING, + &technology->tethering_passphrase); + } } } else if (g_str_equal(name, "Powered") == TRUE) { connman_bool_t enable; |