diff options
| author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-09-04 19:51:31 +0000 | 
|---|---|---|
| committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-09-04 19:51:31 +0000 | 
| commit | 5e4e6d23323b869b36fb02d815dd4b928f94eacb (patch) | |
| tree | 994587adcc7a7ac135c39027bf77ae254ed289d0 | |
| parent | c4be6b437310018f154f7a01e6a3ddc2c9d1e175 (diff) | |
Fix connection storage.
| -rw-r--r-- | network/manager.c | 47 | 
1 files changed, 24 insertions, 23 deletions
| diff --git a/network/manager.c b/network/manager.c index b571b44b..5c619d94 100644 --- a/network/manager.c +++ b/network/manager.c @@ -766,11 +766,6 @@ static void parse_stored_connection(char *key, char *value, void *data)  				&dst, id, name, ptr) == 0) {  		char *rpath = g_strdup(path);  		connection_paths = g_slist_append(connection_paths, rpath); -		dbus_connection_emit_signal(connection, NETWORK_PATH, -						NETWORK_MANAGER_INTERFACE, -						"ConnectionCreated", -						DBUS_TYPE_STRING, &rpath, -						DBUS_TYPE_INVALID);  	}  	g_free(name); @@ -780,7 +775,7 @@ static void register_connections_stored(const char *adapter)  {  	char filename[PATH_MAX + 1];  	char *pattern; -	struct stat s; +	struct stat st;  	GSList *list;  	bdaddr_t src;  	bdaddr_t default_src; @@ -790,26 +785,32 @@ static void register_connections_stored(const char *adapter)  	str2ba(adapter, &src); +	if (stat(filename, &st) < 0) +		return; + +	if (!(st.st_mode & __S_IFREG)) +		return; + +	textfile_foreach(filename, parse_stored_connection, &src); + +	/* Check default connection for current default adapter */  	bacpy(&default_src, BDADDR_ANY); -	dev_id = hci_get_route(NULL); +	dev_id = hci_get_route(&default_src);  	if (dev_id < 0) -		hci_devba(dev_id, &default_src); +		return; -	if (stat (filename, &s) == 0 && (s.st_mode & __S_IFREG)) { -		textfile_foreach(filename, parse_stored_connection, &src); -		pattern = textfile_get(filename, "default"); - -		list = find_connection_pattern(connection, pattern); -		if (list != NULL) -			default_index = g_slist_position(connection_paths, list); -		else if (bacmp(&src, &default_src) == 0) { -			list = g_slist_last(connection_paths); -			if (list == NULL) -				return; -			default_index = g_slist_position(connection_paths, list); -			connection_store(connection, list->data, TRUE); -		} -	} +	hci_devba(dev_id, &default_src); +	if (bacmp(&default_src, &src) != 0) +		return; + +	pattern = textfile_get(filename, "default"); +	if (!pattern) +		return; + +	list = find_connection_pattern(connection, pattern); +	if (!list) +		return; +	default_index = g_slist_position(connection_paths, list);  }  static void register_server(uint16_t id) | 
