gboolean noscan;
GSList *scan_results;
struct iw_range *range;
+ gboolean connecting;
gboolean disconnecting;
};
return NULL;
snprintf(bssid, 13, "%02x%02x%02x%02x%02x%02x",
- ioctl_bssid[0], ioctl_bssid[1],
- ioctl_bssid[2], ioctl_bssid[3],
- ioctl_bssid[4], ioctl_bssid[5]);
+ ioctl_bssid[0], ioctl_bssid[1],
+ ioctl_bssid[2], ioctl_bssid[3],
+ ioctl_bssid[4], ioctl_bssid[5]);
return bssid;
}
if (str == NULL)
return NULL;
+ if (ssid == NULL) {
+ g_string_append_printf(str, "hidden_%s", addr);
+ goto done;
+ }
+
for (i = 0; special_ssid[i].name; i++) {
if (g_strcmp0(special_ssid[i].name, name) == 0) {
if (special_ssid[i].value == NULL)
struct supplicant_result *result)
{
DBusMessageIter array;
- struct ether_addr *eth;
+ struct ether_addr eth;
unsigned char *addr;
int addr_len;
if (result->path == NULL)
return;
- eth = (void *) addr;
-
+ memcpy(ð, addr, sizeof(eth));
snprintf(result->path, 13, "%02x%02x%02x%02x%02x%02x",
- eth->ether_addr_octet[0],
- eth->ether_addr_octet[1],
- eth->ether_addr_octet[2],
- eth->ether_addr_octet[3],
- eth->ether_addr_octet[4],
- eth->ether_addr_octet[5]);
+ eth.ether_addr_octet[0],
+ eth.ether_addr_octet[1],
+ eth.ether_addr_octet[2],
+ eth.ether_addr_octet[3],
+ eth.ether_addr_octet[4],
+ eth.ether_addr_octet[5]);
}
static void extract_ssid(DBusMessageIter *value,
if (ssid_len < 1)
return;
+ if (ssid[0] == '\0')
+ return;
+
result->ssid = g_try_malloc(ssid_len);
if (result->ssid == NULL)
return;
unsigned char strength;
unsigned short channel, frequency;
const char *mode, *security;
- char *group;
+ char *group = NULL;
unsigned int ssid_len;
DBG("task %p", task);
connman_network_set_uint16(network, "WiFi.Channel", channel);
connman_network_set_string(network, "WiFi.Security", security);
- connman_network_set_group(network, group);
+ if (result.ssid != NULL)
+ connman_network_set_group(network, group);
+done:
g_free(group);
-done:
g_free(result.path);
g_free(result.addr);
g_free(result.name);
if (g_str_equal(security, "none") == FALSE && passphrase == NULL)
return -EINVAL;
+ task->connecting = TRUE;
+
add_network(task);
select_network(task);
case WPA_COMPLETED:
if (connman_network_get_group(task->network) == NULL) {
const char *name, *mode, *security;
- char *group, *bssid;
+ char *bssid;
/*
* This is a hidden network, we need to set its
"WiFi.Security");
if (bssid && name && mode && security) {
+ char *group;
+
group = build_group(bssid, name, NULL, 0,
mode, security);
connman_network_set_group(task->network, group);
+ g_free(group);
}
g_free(bssid);
- g_free(group);
}
/* carrier on */
connman_network_set_connected(task->network, TRUE);
connman_device_set_scanning(task->device, FALSE);
+ task->connecting = FALSE;
break;
case WPA_DISCONNECTED:
/* carrier off */
connman_network_set_connected(task->network, FALSE);
connman_device_set_scanning(task->device, FALSE);
+ task->connecting = FALSE;
}
break;
task->created = FALSE;
task->noscan = FALSE;
task->state = WPA_INVALID;
+ task->connecting = FALSE;
task->disconnecting = FALSE;
task->pending_network = NULL;