diff options
Diffstat (limited to 'network/manager.c')
-rw-r--r-- | network/manager.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/network/manager.c b/network/manager.c index 26146642..b571b44b 100644 --- a/network/manager.c +++ b/network/manager.c @@ -429,7 +429,7 @@ static DBusHandlerResult find_server(DBusConnection *conn, for (list = server_paths; list; list = list->next) { path = (const char *) list->data; - if (server_find_data(conn, path, pattern) == 0) + if (server_find_data(path, pattern) == 0) break; } @@ -831,11 +831,11 @@ static void register_server(uint16_t id) if (dev_id >= 0) hci_devba(dev_id, &src); - if (server_register(connection, path, &src, id) < 0) + if (server_register(path, &src, id) < 0) return; if (bacmp(&src, BDADDR_ANY) != 0) - server_store(connection, path); + server_store(path); server_paths = g_slist_append(server_paths, g_strdup(path)); } @@ -862,8 +862,7 @@ static void register_servers_stored(const char *adapter, const char *profile) if (stat (filename, &s) == 0 && (s.st_mode & __S_IFREG)) { snprintf(path, MAX_PATH_LENGTH, NETWORK_PATH"/%s", profile); - if (server_register_from_file(connection, path, - &src, id, filename) == 0) { + if (server_register_from_file(path, &src, id, filename) == 0) { server_paths = g_slist_append(server_paths, g_strdup(path)); } @@ -937,6 +936,16 @@ int network_init(DBusConnection *conn) return -1; } + /* + * There is one socket to handle the incomming connections. NAP, + * GN and PANU servers share the same PSM. The initial BNEP message + * (setup connection request) contains the destination service + * field that defines which service the source is connecting to. + */ + if (server_init(conn) < 0) { + return -1; + } + if (!dbus_connection_create_object_path(conn, NETWORK_PATH, NULL, manager_unregister)) { error("D-Bus failed to create %s path", NETWORK_PATH); @@ -959,13 +968,9 @@ int network_init(DBusConnection *conn) register_stored(); - /* PAN user server */ + /* Register PANU, GN and NAP servers if they don't exist */ register_server(BNEP_SVC_PANU); - - /* Group Network server */ register_server(BNEP_SVC_GN); - - /* Network Access Point server */ register_server(BNEP_SVC_NAP); return 0; @@ -973,6 +978,7 @@ int network_init(DBusConnection *conn) void network_exit(void) { + server_exit(); dbus_connection_destroy_object_path(connection, NETWORK_PATH); dbus_connection_unref(connection); |