diff --git a/ChangeLog b/ChangeLog index 486f4f5d4a..9334d2cb57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2006-04-20 Robert Love + + 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 * gnome/applet/applet-dbus-info.c: Don't bail out if the timestamp is diff --git a/gnome/applet/applet-dbus-info.c b/gnome/applet/applet-dbus-info.c index 5caa8e1380..886003a05d 100644 --- a/gnome/applet/applet-dbus-info.c +++ b/gnome/applet/applet-dbus-info.c @@ -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)) diff --git a/src/NetworkManagerAPList.c b/src/NetworkManagerAPList.c index 6fb99431da..37d9a1a89f 100644 --- a/src/NetworkManagerAPList.c +++ b/src/NetworkManagerAPList.c @@ -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); } diff --git a/src/NetworkManagerAPList.h b/src/NetworkManagerAPList.h index 144746fee0..d4e83830ba 100644 --- a/src/NetworkManagerAPList.h +++ b/src/NetworkManagerAPList.h @@ -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); diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c index 39b8a4fd58..1750c2f288 100644 --- a/src/NetworkManagerPolicy.c +++ b/src/NetworkManagerPolicy.c @@ -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 diff --git a/src/nm-device-802-11-wireless.c b/src/nm-device-802-11-wireless.c index dbbdf806cd..2d9d438616 100644 --- a/src/nm-device-802-11-wireless.c +++ b/src/nm-device-802-11-wireless.c @@ -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 */