Hi Frédéric,
* Frédéric Danis <[email protected]> [2011-02-04 15:44:04 +0100]:
> ---
> plugins/bluetooth.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++----
> 1 files changed, 115 insertions(+), 10 deletions(-)
>
> diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c
> index b489dad..8d28b07 100644
> --- a/plugins/bluetooth.c
> +++ b/plugins/bluetooth.c
> @@ -44,6 +44,8 @@ static GHashTable *adapter_address_hash = NULL;
> static gint bluetooth_refcount;
> static GSList *server_list = NULL;
>
> +#define TIMEOUT (60) /* Timeout for user response (seconds) */
> +
> struct server {
> guint8 channel;
> char *sdp_record;
> @@ -58,6 +60,8 @@ struct cb_data {
> struct server *server;
> char *path;
> guint source;
> + GIOChannel *io;
> + gboolean pending_auth;
> };
>
> void bluetooth_create_path(const char *dev_addr, const char *adapter_addr,
> @@ -483,26 +487,104 @@ static void cb_data_destroy(gpointer data)
> g_free(cb_data);
> }
>
> +static void cancel_authorization(struct cb_data *user_data)
> +{
> + DBusMessage *msg;
> +
> + if (user_data->path == NULL)
> + return;
> +
> + msg = dbus_message_new_method_call(BLUEZ_SERVICE, user_data->path,
> + BLUEZ_SERVICE_INTERFACE,
> + "CancelAuthorization");
> +
> + if (msg == NULL) {
> + ofono_error("Unable to allocate D-Bus CancelAuthorization"
> + " message");
> + return;
> + }
> +
> + g_dbus_send_message(connection, msg);
> +}
> +
> static gboolean client_event(GIOChannel *chan, GIOCondition cond, gpointer
> data)
> {
> struct cb_data *cb_data = data;
> struct server *server = cb_data->server;
>
> - server->client_list = g_slist_remove(server->client_list,
> + if (cb_data->pending_auth == TRUE) {
> + cancel_authorization(cb_data);
> +
> + cb_data->pending_auth = FALSE;
> + } else {
> + server->client_list = g_slist_remove(server->client_list,
> GUINT_TO_POINTER(cb_data->source));
>
> - cb_data_destroy(cb_data);
> + cb_data_destroy(cb_data);
> + }
Don't you have to call g_slist_remove and cb_data_destroy for both cases? when
pending_auth is TRUE or FALSE.
--
Gustavo F. Padovan
http://profusion.mobi
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono