diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-03-28 17:52:43 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-03-28 17:52:43 +0000 |
commit | 12575376b7b94dd7b4a145ab166f0805755c13a1 (patch) | |
tree | 97016ed5c17847a5dfc9abb3f958fbaa92be2c9b | |
parent | 1e711201f649f10fee1a8365976d42b98e7373f9 (diff) |
network: making service name/security configurable
-rw-r--r-- | network/server.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/network/server.c b/network/server.c index e04d6de4..72f8dc4a 100644 --- a/network/server.c +++ b/network/server.c @@ -78,8 +78,10 @@ static void pending_auth_free(struct pending_auth *pauth) if (pauth->addr) g_free(pauth->addr); /* FIXME: Is it necessary close the BNEP socket? */ - if (pauth->io) + if (pauth->io) { g_io_channel_unref(pauth->io); + g_io_channel_close(pauth->io); + } g_free(pauth); } @@ -97,7 +99,8 @@ static void add_lang_attr(sdp_record_t *r) sdp_list_free(langs, 0); } -static int create_server_record(sdp_buf_t *buf, uint16_t id) +static int create_server_record(sdp_buf_t *buf, const char *name, + uint16_t id, dbus_bool_t secure) { sdp_list_t *svclass, *pfseq, *apseq, *root, *aproto; uuid_t root_uuid, pan, l2cap, bnep; @@ -105,16 +108,13 @@ static int create_server_record(sdp_buf_t *buf, uint16_t id) sdp_list_t *proto[2]; sdp_data_t *v, *p; uint16_t psm = BNEP_PSM, version = 0x0100; - uint16_t security_desc = 0; + uint16_t security_desc = (secure ? 0x0001 : 0x0000); uint16_t net_access_type = 0xfffe; uint32_t max_net_access_rate = 0; - const char *name = "BlueZ PAN"; const char *desc = "BlueZ PAN Service"; sdp_record_t record; int ret; - /* FIXME: service name must be configurable */ - memset(&record, 0, sizeof(sdp_record_t)); sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP); @@ -322,7 +322,7 @@ static gboolean connect_setup_event(GIOChannel *chan, return FALSE; if (cond & (G_IO_ERR | G_IO_HUP)) { - error("Hangup or error on L2CAP socket"); + error("Hangup or error on BNEP socket"); /* FIXME: Cancel the pending authorization if applied */ return FALSE; } @@ -522,7 +522,7 @@ fail: return -err; } -static uint32_t add_server_record(DBusConnection *conn, uint16_t id) +static uint32_t add_server_record(struct network_server *ns) { DBusMessage *msg, *reply; DBusError derr; @@ -536,7 +536,7 @@ static uint32_t add_server_record(DBusConnection *conn, uint16_t id) return 0; } - if (create_server_record(&buf, id) < 0) { + if (create_server_record(&buf, ns->name, ns->id, ns->secure) < 0) { error("Unable to allocate new service record"); dbus_message_unref(msg); return 0; @@ -546,7 +546,7 @@ static uint32_t add_server_record(DBusConnection *conn, uint16_t id) &buf.data, buf.data_size, DBUS_TYPE_INVALID); dbus_error_init(&derr); - reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &derr); + reply = dbus_connection_send_with_reply_and_block(ns->conn, msg, -1, &derr); free(buf.data); dbus_message_unref(msg); @@ -638,7 +638,7 @@ static DBusHandlerResult enable(DBusConnection *conn, return DBUS_HANDLER_RESULT_NEED_MEMORY; /* Add the service record */ - ns->record_id = add_server_record(conn, ns->id); + ns->record_id = add_server_record(ns); if (!ns->record_id) { error("Unable to register the server(0x%x) service record", ns->id); return err_failed(conn, msg, "Unable to register the service record"); @@ -916,9 +916,16 @@ int server_register(DBusConnection *conn, const char *path, uint16_t id) goto fail; } + /* Setting a default name */ + if (id == BNEP_SVC_NAP) + ns->name = g_strdup("Bluetooth NAP service"); + else + ns->name = g_strdup("Bluetooth GN service"); + ns->path = g_strdup(path); ns->id = id; ns->conn = dbus_connection_ref(conn); + info("Registered server path:%s", ns->path); return 0; |