Hi Leena,

On Fri, Nov 19, 2010 at 11:26:48AM +0530, [email protected] wrote:
> Below is a  patch for:
> http://bugs.meego.com/show_bug.cgi?id=10205
> 
> When connected to a WiFi service if connmand is killed/restarted, 
> test-connman services will display a empty list and also test-connman state 
> will show as offline. Whereas iwconfig correctly show that wlan interface is 
> associated to network. ping also works fine.
> 
> For the existing interface, the interface_property is obtained and for 
> CurrentBSS interface_bss_added is called which will obtain the BSS properties 
> by invoking supplicant_dbus_property_get_all. But this dbus call results in a 
> org.freedesktop.DBus.Error.InvalidArgs error. Same issue is also seen for 
> CurrentNetwork. As a result no bss_property is obtained and no 
> GSupplicantNetworks are created and hence the issue.
> 
> The org.freedesktop.DBus.Error.InvalidArgs error is seen because the 
> interface is wrongly specified for getting the BSS and Network property. For 
> eg: the wpa_supplicant interface for BSS is fi.w1.wpa_supplicant1.BSS whereas 
> in interface_bss_added it is fi.w1.wpa_supplicant1.Interface.BSS
> 
> There are quite a few places where the interfaces are incorrect. Also there 
> is no such interface fi.w1.wpa_supplicant1.Interface.Blob. Blob signals are 
> sent on fi.w1.wpa_supplicant1.Interface
> 
> Below is the patch with all the above changes.
Again, thanks a lot, patch applied.

Cheers,
Samuel.


> ---
>  gsupplicant/supplicant.c |   14 +++++---------
>  1 files changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
> index 2a1021f..861936e 100644
> --- a/gsupplicant/supplicant.c
> +++ b/gsupplicant/supplicant.c
> @@ -824,7 +824,7 @@ static void interface_network_added(DBusMessageIter 
> *iter, void *user_data)
>       }
>  
>       supplicant_dbus_property_get_all(path,
> -                             SUPPLICANT_INTERFACE ".Interface.Network",
> +                             SUPPLICANT_INTERFACE ".Network",
>                                               network_property, network);
>  }
>  
> @@ -1177,7 +1177,7 @@ static void interface_bss_added(DBusMessageIter *iter, 
> void *user_data)
>       }
>  
>       supplicant_dbus_property_get_all(path,
> -                                     SUPPLICANT_INTERFACE ".Interface.BSS",
> +                                     SUPPLICANT_INTERFACE ".BSS",
>                                                       bss_property, bss);
>  }
>  
> @@ -1664,7 +1664,7 @@ static struct {
>       { SUPPLICANT_INTERFACE ".Interface", "NetworkAdded",      
> signal_network_added     },
>       { SUPPLICANT_INTERFACE ".Interface", "NetworkRemoved",    
> signal_network_removed   },
>  
> -     { SUPPLICANT_INTERFACE ".Interface.BSS", "PropertiesChanged", 
> signal_bss_changed   },
> +     { SUPPLICANT_INTERFACE ".BSS", "PropertiesChanged", signal_bss_changed  
>  },
>  
>       { }
>  };
> @@ -2438,11 +2438,9 @@ static const char *g_supplicant_rule2 = "type=signal,"
>  static const char *g_supplicant_rule3 = "type=signal,"
>                       "interface=" SUPPLICANT_INTERFACE ".Interface.WPS";
>  static const char *g_supplicant_rule4 = "type=signal,"
> -                     "interface=" SUPPLICANT_INTERFACE ".Interface.BSS";
> +                     "interface=" SUPPLICANT_INTERFACE ".BSS";
>  static const char *g_supplicant_rule5 = "type=signal,"
> -                     "interface=" SUPPLICANT_INTERFACE ".Interface.Network";
> -static const char *g_supplicant_rule6 = "type=signal,"
> -                     "interface=" SUPPLICANT_INTERFACE ".Interface.Blob";
> +                     "interface=" SUPPLICANT_INTERFACE ".Network";
>  
>  static void invoke_introspect_method(void)
>  {
> @@ -2491,7 +2489,6 @@ int g_supplicant_register(const GSupplicantCallbacks 
> *callbacks)
>       dbus_bus_add_match(connection, g_supplicant_rule3, NULL);
>       dbus_bus_add_match(connection, g_supplicant_rule4, NULL);
>       dbus_bus_add_match(connection, g_supplicant_rule5, NULL);
> -     dbus_bus_add_match(connection, g_supplicant_rule6, NULL);
>       dbus_connection_flush(connection);
>  
>       if (dbus_bus_name_has_owner(connection,
> @@ -2533,7 +2530,6 @@ void g_supplicant_unregister(const GSupplicantCallbacks 
> *callbacks)
>       SUPPLICANT_DBG("");
>  
>       if (connection != NULL) {
> -             dbus_bus_remove_match(connection, g_supplicant_rule6, NULL);
>               dbus_bus_remove_match(connection, g_supplicant_rule5, NULL);
>               dbus_bus_remove_match(connection, g_supplicant_rule4, NULL);
>               dbus_bus_remove_match(connection, g_supplicant_rule3, NULL);
> -- 
> 1.7.2.2
> _______________________________________________
> connman mailing list
> [email protected]
> http://lists.connman.net/listinfo/connman

-- 
Intel Open Source Technology Centre
http://oss.intel.com/
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to