summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>2013-11-28 16:38:02 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2013-11-29 10:29:51 +0200
commit0ba58ed345041fe51f36ced3f12d9c94017295f0 (patch)
treea786a374dd5f7bfa2c0d31abe9bde2d7ace167cd /android
parentab159fbbdd46a74dd3dc56c527f7539504cbb5bb (diff)
downloadbluez-0ba58ed345041fe51f36ced3f12d9c94017295f0.tar.gz
android/socket: Fix rfsock lists
This fixes several places where rfsock structure were not removed from the list due to connection errors.
Diffstat (limited to 'android')
-rw-r--r--android/socket.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/android/socket.c b/android/socket.c
index 4550dc86a..85f1ec47b 100644
--- a/android/socket.c
+++ b/android/socket.c
@@ -625,8 +625,6 @@ static void accept_cb(GIOChannel *io, GError *err, gpointer user_data)
return;
}
- connections = g_list_append(connections, rfsock_acc);
-
DBG("rfsock: fd %d real_sock %d chan %u sock %d",
rfsock->fd, rfsock->real_sock, rfsock->channel,
sock_acc);
@@ -636,6 +634,8 @@ static void accept_cb(GIOChannel *io, GError *err, gpointer user_data)
return;
}
+ connections = g_list_append(connections, rfsock_acc);
+
/* Handle events from Android */
cond = G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL;
io_stack = g_io_channel_unix_new(rfsock_acc->fd);
@@ -700,7 +700,6 @@ static int handle_listen(void *buf)
}
rfsock->real_sock = g_io_channel_unix_get_fd(io);
- servers = g_list_append(servers, rfsock);
/* TODO: Add server watch */
g_io_channel_set_close_on_unref(io, TRUE);
@@ -717,6 +716,8 @@ static int handle_listen(void *buf)
rfsock->service_handle = sdp_service_register(profile, cmd->name);
+ servers = g_list_append(servers, rfsock);
+
return hal_fd;
}
@@ -787,6 +788,7 @@ static void connect_cb(GIOChannel *io, GError *err, gpointer user_data)
return;
fail:
+ connections = g_list_remove(connections, rfsock);
cleanup_rfsock(rfsock);
}
@@ -865,6 +867,7 @@ static void sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
return;
fail:
+ connections = g_list_remove(connections, rfsock);
cleanup_rfsock(rfsock);
}