Diff between 68a2dd1ba822014ae10ae367dcf8e110b5e3f65c and 4522ac85dd6dc1db4d49507330b4abc3bbaf4e6c

Changed Files

File Additions Deletions Status
src/service.c +12 -0 modified

Full Patch

diff --git a/src/service.c b/src/service.c
index cae2804..2ed72fb 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;