diff options
author | Tomasz Bursztyka <tomasz.bursztyka@nokia.com> | 2011-01-26 10:09:42 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-01-27 12:55:08 +0100 |
commit | bab3e488db5083315e13a15ba642d6a125f0d62c (patch) | |
tree | 579244abbc090f85fcc2b6481417e8102ba44146 /src | |
parent | 055f6018131f8a5b6f068bbc82ce58bef71ab47f (diff) | |
download | connman-bab3e488db5083315e13a15ba642d6a125f0d62c.tar.gz connman-bab3e488db5083315e13a15ba642d6a125f0d62c.tar.bz2 connman-bab3e488db5083315e13a15ba642d6a125f0d62c.zip |
service: WPS connection logic
Diffstat (limited to 'src')
-rw-r--r-- | src/service.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/service.c b/src/service.c index fa10bc26..7743ae9d 100644 --- a/src/service.c +++ b/src/service.c @@ -2316,9 +2316,12 @@ static void request_input_cb (struct connman_service *service, { DBG ("RequestInput return, %p", service); - if (passphrase == NULL) + if (passphrase == NULL && service->wps == FALSE) return; - __connman_service_set_passphrase(service, passphrase); + + if (passphrase != NULL) + __connman_service_set_passphrase(service, passphrase); + __connman_service_connect(service); } @@ -3296,7 +3299,8 @@ static connman_bool_t prepare_network(struct connman_service *service) &ssid_len) == NULL) return FALSE; - connman_network_set_string(service->network, + if (service->passphrase != NULL) + connman_network_set_string(service->network, "WiFi.Passphrase", service->passphrase); break; case CONNMAN_NETWORK_TYPE_ETHERNET: @@ -3380,8 +3384,16 @@ static int service_connect(struct connman_service *service) case CONNMAN_SERVICE_SECURITY_PSK: case CONNMAN_SERVICE_SECURITY_WPA: case CONNMAN_SERVICE_SECURITY_RSN: - if (service->passphrase == NULL) - return -ENOKEY; + if (service->passphrase == NULL) { + if (service->network == NULL) + return -EOPNOTSUPP; + + if (service->wps == FALSE || + connman_network_get_bool( + service->network, + "WiFi.UseWPS") == FALSE) + return -ENOKEY; + } break; case CONNMAN_SERVICE_SECURITY_8021X: break; |