From 4522ac85dd6dc1db4d49507330b4abc3bbaf4e6c Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Mon, 26 Oct 2015 10:41:43 +0200 Subject: [PATCH] core/service: Fix calling driver .accept multiple times service_accept shall not call driver .accept callback multiple times. --- src/service.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/service.c b/src/service.c index cae280488..2ed72fbec 100644 --- a/src/service.c +++ b/src/service.c @@ -184,6 +184,18 @@ int service_accept(struct btd_service *service) char addr[18]; int err; + switch (service->state) { + case BTD_SERVICE_STATE_UNAVAILABLE: + return -EINVAL; + case BTD_SERVICE_STATE_DISCONNECTED: + break; + case BTD_SERVICE_STATE_CONNECTING: + case BTD_SERVICE_STATE_CONNECTED: + return -EALREADY; + case BTD_SERVICE_STATE_DISCONNECTING: + return -EBUSY; + } + if (!service->profile->accept) goto done; -- 2.47.3