diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2013-11-28 16:38:02 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-11-29 10:29:51 +0200 |
commit | 0ba58ed345041fe51f36ced3f12d9c94017295f0 (patch) | |
tree | a786a374dd5f7bfa2c0d31abe9bde2d7ace167cd /android | |
parent | ab159fbbdd46a74dd3dc56c527f7539504cbb5bb (diff) | |
download | bluez-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.c | 9 |
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); } |