2006-04-20 Robert Love <rml@novell.com>

Fix bug where hidden ESSID's would not show up in the applet, even
	if NMI provided a BSSID -> ESSID mapping from Gconf.  This occurred
	because nm_policy_device_list_update_from_allowed_list() would merge
	the data, putting a name to the hidden networks, but never notify NMI
	of the changes.  Simple fix is to invoke the function
	nm_dbus_signal_wireless_network_change() if we make a mapping.
	* src/NetworkManagerAPList.c: Call the function
	  nm_dbus_signal_wireless_network_change() if we made a successful
	  BSSID to ESSID mapping, notifying the applet of the "new" network.
	* src/NetworkManagerAPList.h: Update the prototypes for both
	  nm_ap_list_copy_essids_by_address() and
	  nm_ap_list_copy_one_essid_by_address().


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1700 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Robert Love 2006-04-20 20:40:25 +00:00 committed by Robert Love
parent 84b973fd59
commit 6fd1cc39d2
6 changed files with 33 additions and 9 deletions

View file

@ -1,3 +1,18 @@
2006-04-20 Robert Love <rml@novell.com>
Fix bug where hidden ESSID's would not show up in the applet, even
if NMI provided a BSSID -> ESSID mapping from Gconf. This occurred
because nm_policy_device_list_update_from_allowed_list() would merge
the data, putting a name to the hidden networks, but never notify NMI
of the changes. Simple fix is to invoke the function
nm_dbus_signal_wireless_network_change() if we make a mapping.
* src/NetworkManagerAPList.c: Call the function
nm_dbus_signal_wireless_network_change() if we made a successful
BSSID to ESSID mapping, notifying the applet of the "new" network.
* src/NetworkManagerAPList.h: Update the prototypes for both
nm_ap_list_copy_essids_by_address() and
nm_ap_list_copy_one_essid_by_address().
2006-04-20 Robert Love <rml@novell.com>
* gnome/applet/applet-dbus-info.c: Don't bail out if the timestamp is

View file

@ -470,7 +470,7 @@ nmi_dbus_get_network_properties (DBusConnection *connection,
/* Third arg: Trusted (BOOLEAN) */
dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &trusted);
/* Fourth arg: List of AP BSSIDs (ARRAY, STRING) */
dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &array_iter);
if (bssids_value && (g_slist_length (gconf_value_get_list (bssids_value)) > 0))

View file

@ -589,7 +589,10 @@ void nm_ap_list_copy_properties (NMAccessPointList *dest, NMAccessPointList *sou
* If one is found, copy the essid over to the original access point.
*
*/
void nm_ap_list_copy_one_essid_by_address (NMAccessPoint *ap, NMAccessPointList *search_list)
void nm_ap_list_copy_one_essid_by_address (NMData *app_data,
NMDevice80211Wireless *dev,
NMAccessPoint *ap,
NMAccessPointList *search_list)
{
NMAccessPoint *found_ap;
@ -599,7 +602,10 @@ void nm_ap_list_copy_one_essid_by_address (NMAccessPoint *ap, NMAccessPointList
if (!nm_ap_get_essid (ap) && (found_ap = nm_ap_list_get_ap_by_address (search_list, nm_ap_get_address (ap))))
{
if (nm_ap_get_essid (found_ap))
{
nm_ap_set_essid (ap, nm_ap_get_essid (found_ap));
nm_dbus_signal_wireless_network_change (app_data->dbus_connection, dev, ap, NETWORK_STATUS_APPEARED, 0);
}
}
}
@ -612,7 +618,10 @@ void nm_ap_list_copy_one_essid_by_address (NMAccessPoint *ap, NMAccessPointList
* its found, copy the source access point's essid to the dest access point.
*
*/
void nm_ap_list_copy_essids_by_address (NMAccessPointList *dest, NMAccessPointList *source)
void nm_ap_list_copy_essids_by_address (NMData *app_data,
NMDevice80211Wireless *dev,
NMAccessPointList *dest,
NMAccessPointList *source)
{
NMAPListIter *iter;
NMAccessPoint *dest_ap;
@ -623,7 +632,7 @@ void nm_ap_list_copy_essids_by_address (NMAccessPointList *dest, NMAccessPointLi
if ((iter = nm_ap_list_iter_new (dest)))
{
while ((dest_ap = nm_ap_list_iter_next (iter)))
nm_ap_list_copy_one_essid_by_address (dest_ap, source);
nm_ap_list_copy_one_essid_by_address (app_data, dev, dest_ap, source);
nm_ap_list_iter_free (iter);
}

View file

@ -48,8 +48,8 @@ NMAccessPoint * nm_ap_list_get_ap_by_essid (NMAccessPointList *list, const char
NMAccessPoint * nm_ap_list_get_ap_by_address (NMAccessPointList *list, const struct ether_addr *addr);
void nm_ap_list_copy_properties (NMAccessPointList *dest, NMAccessPointList *source);
void nm_ap_list_copy_essids_by_address (NMAccessPointList *dest, NMAccessPointList *source);
void nm_ap_list_copy_one_essid_by_address (NMAccessPoint *ap, NMAccessPointList *search_list);
void nm_ap_list_copy_essids_by_address (NMData *app_data, NMDevice80211Wireless *dev, NMAccessPointList *dest, NMAccessPointList *source);
void nm_ap_list_copy_one_essid_by_address (NMData *app_data, NMDevice80211Wireless *dev, NMAccessPoint *ap, NMAccessPointList *search_list);
gboolean nm_ap_list_merge_scanned_ap (NMDevice80211Wireless *dev, NMAccessPointList *list, NMAccessPoint *merge_ap);

View file

@ -608,7 +608,7 @@ static gboolean nm_policy_device_list_update_from_allowed_list (NMData *data)
* in the ESSID of base stations that aren't broadcasting their ESSID, if we have their
* MAC address in our allowed list.
*/
nm_ap_list_copy_essids_by_address (nm_device_802_11_wireless_ap_list_get (wdev), data->allowed_ap_list);
nm_ap_list_copy_essids_by_address (data, wdev, nm_device_802_11_wireless_ap_list_get (wdev), data->allowed_ap_list);
nm_ap_list_copy_properties (nm_device_802_11_wireless_ap_list_get (wdev), data->allowed_ap_list);
}
else

View file

@ -1394,7 +1394,7 @@ nm_device_802_11_wireless_set_essid (NMDevice80211Wireless *self,
wreq.u.essid.pointer = (caddr_t) safe_essid;
wreq.u.essid.length = strlen ((char *) safe_essid) + 1;
wreq.u.essid.flags = 1; /* Enable essid on card */
#ifdef IOCTL_DEBUG
nm_info ("%s: About to SET IWESSID.", iface);
#endif
@ -3259,7 +3259,7 @@ add_new_ap_to_device_list (NMDevice80211Wireless *dev,
if (!nm_ap_get_essid (ap))
{
nm_ap_set_broadcast (ap, FALSE);
nm_ap_list_copy_one_essid_by_address (ap, app_data->allowed_ap_list);
nm_ap_list_copy_one_essid_by_address (app_data, dev, ap, app_data->allowed_ap_list);
}
/* Add the AP to the device's AP list */