summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--serial/port.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/serial/port.c b/serial/port.c
index 22fc0129..c220110c 100644
--- a/serial/port.c
+++ b/serial/port.c
@@ -146,11 +146,12 @@ static void rfcomm_node_free(struct rfcomm_node *node)
dbus_connection_unref(node->conn);
if (node->owner)
g_free(node->owner);
- rfcomm_release(node->id);
if (node->io) {
g_source_remove(node->io_id);
+ g_io_channel_close(node->io);
g_io_channel_unref(node->io);
}
+ rfcomm_release(node->id);
g_free(node);
}
@@ -173,9 +174,6 @@ static gboolean rfcomm_disconnect_cb(GIOChannel *io,
{
debug("RFCOMM node %s was disconnected", node->name);
- if (cond & (G_IO_ERR | G_IO_HUP))
- g_io_channel_close(io);
-
name_listener_remove(node->conn, node->owner,
(name_cb_t) connection_owner_exited, node);