mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-04-22 15:10:51 +02:00
wifi: fix completing Wi-Fi connection for AP mode
In AP mode we should not look up an access point. It is wrong to do, and it ends up marking the connection as hidden. It seems wrong to me that if the client explicitly set hidden=FALSE before AddAndActivate(), that complete_connection() would still set it to TRUE if it cannot find the access point. That is, because complete_connection() does not know whether hidden was omitted or set intentionally by the user.
This commit is contained in:
parent
74335004f3
commit
c5fb410998
1 changed files with 23 additions and 10 deletions
|
|
@ -791,15 +791,18 @@ complete_connection (NMDevice *device,
|
|||
NMSettingWireless *s_wifi;
|
||||
const char *setting_mac;
|
||||
char *str_ssid = NULL;
|
||||
NMWifiAP *ap = NULL;
|
||||
NMWifiAP *ap;
|
||||
const GByteArray *ssid = NULL;
|
||||
GByteArray *tmp_ssid = NULL;
|
||||
GBytes *setting_ssid = NULL;
|
||||
gboolean hidden = FALSE;
|
||||
const char *perm_hw_addr;
|
||||
const char *mode;
|
||||
|
||||
s_wifi = nm_connection_get_setting_wireless (connection);
|
||||
|
||||
mode = s_wifi ? nm_setting_wireless_get_mode (s_wifi) : NULL;
|
||||
|
||||
if (!specific_object) {
|
||||
/* If not given a specific object, we need at minimum an SSID */
|
||||
if (!s_wifi) {
|
||||
|
|
@ -819,19 +822,29 @@ complete_connection (NMDevice *device,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/* Find a compatible AP in the scan list */
|
||||
ap = find_first_compatible_ap (self, connection, FALSE);
|
||||
if (!nm_streq0 (mode, NM_SETTING_WIRELESS_MODE_AP)) {
|
||||
/* Find a compatible AP in the scan list */
|
||||
ap = find_first_compatible_ap (self, connection, FALSE);
|
||||
|
||||
/* If we still don't have an AP, then the WiFI settings needs to be
|
||||
* fully specified by the client. Might not be able to find an AP
|
||||
* if the network isn't broadcasting the SSID for example.
|
||||
*/
|
||||
if (!ap) {
|
||||
/* If we still don't have an AP, then the WiFI settings needs to be
|
||||
* fully specified by the client. Might not be able to find an AP
|
||||
* if the network isn't broadcasting the SSID for example.
|
||||
*/
|
||||
if (!ap) {
|
||||
if (!nm_setting_verify (NM_SETTING (s_wifi), connection, error))
|
||||
return FALSE;
|
||||
|
||||
hidden = TRUE;
|
||||
}
|
||||
} else {
|
||||
if (!nm_setting_verify (NM_SETTING (s_wifi), connection, error))
|
||||
return FALSE;
|
||||
|
||||
hidden = TRUE;
|
||||
ap = NULL;
|
||||
}
|
||||
} else if (nm_streq0 (mode, NM_SETTING_WIRELESS_MODE_AP)) {
|
||||
if (!nm_setting_verify (NM_SETTING (s_wifi), connection, error))
|
||||
return FALSE;
|
||||
ap = NULL;
|
||||
} else {
|
||||
ap = get_ap_by_path (self, specific_object);
|
||||
if (!ap) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue