From 3db6c5de810977be99cc44941247847147b62d96 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Tue, 14 Aug 2012 17:05:34 +0300 Subject: [PATCH] service: Remember provider pending dbus message The provider connect dbus reply message is stored in service until provider is connected. --- src/connman.h | 3 +++ src/service.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/connman.h b/src/connman.h index 89fe7db..305f09f 100644 --- a/src/connman.h +++ b/src/connman.h @@ -625,6 +625,9 @@ int __connman_service_disconnect(struct connman_service *service); int __connman_service_disconnect_all(void); void __connman_service_auto_connect(void); gboolean __connman_service_remove(struct connman_service *service); +connman_bool_t __connman_service_is_provider_pending(struct connman_service *service); +void __connman_service_set_provider_pending(struct connman_service *service, + DBusMessage *msg); void __connman_service_set_hidden_data(struct connman_service *service, gpointer user_data); void __connman_service_return_error(struct connman_service *service, diff --git a/src/service.c b/src/service.c index c5fe023..205573a 100644 --- a/src/service.c +++ b/src/service.c @@ -105,6 +105,7 @@ struct connman_service { char *private_key_passphrase; char *phase2; DBusMessage *pending; + DBusMessage *provider_pending; guint timeout; struct connman_stats stats; struct connman_stats stats_roaming; @@ -3468,6 +3469,31 @@ static void reply_pending(struct connman_service *service, int error) } } +connman_bool_t +__connman_service_is_provider_pending(struct connman_service *service) +{ + if (service == NULL) + return FALSE; + + if (service->provider_pending != NULL) + return TRUE; + + return FALSE; +} + +void __connman_service_set_provider_pending(struct connman_service *service, + DBusMessage *msg) +{ + if (service->provider_pending != NULL) { + DBG("service %p provider pending msg %p already exists", + service, service->provider_pending); + return; + } + + service->provider_pending = msg; + return; +} + static void check_pending_msg(struct connman_service *service) { if (service->pending == NULL) -- 2.7.4