From ae7a01e67ea79720ce017150957ef75ea0ac8472 Mon Sep 17 00:00:00 2001 From: Don Zickus Date: Oct 25 2016 17:35:37 +0000 Subject: Fix OBEX connections --- diff --git a/0001-core-profile-Fix-calling-service_accept.patch b/0001-core-profile-Fix-calling-service_accept.patch new file mode 100644 index 0000000..74ee377 --- /dev/null +++ b/0001-core-profile-Fix-calling-service_accept.patch @@ -0,0 +1,72 @@ +From 71633478a8dfac2a5865fe567e8754b0276a904e Mon Sep 17 00:00:00 2001 +From: Luiz Augusto von Dentz +Date: Mon, 24 Oct 2016 19:32:57 +0300 +Subject: [PATCH] core/profile: Fix calling service_accept + +service_accept shall only be used with profiles that implement .accept +callback, to set connecting state directly use service_set_connecting +which does not require .accept to be implemented. +--- + src/profile.c | 2 +- + src/service.c | 19 +++++++++++++++++++ + src/service.h | 1 + + 3 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/src/profile.c b/src/profile.c +index c81a9f9..7c5318c 100644 +--- a/src/profile.c ++++ b/src/profile.c +@@ -1047,7 +1047,7 @@ static void ext_connect(GIOChannel *io, GError *err, gpointer user_data) + conn); + } + +- if (conn->service && service_accept(conn->service) < 0) ++ if (conn->service && service_set_connecting(conn->service) < 0) + goto drop; + + if (send_new_connection(ext, conn)) +diff --git a/src/service.c b/src/service.c +index 20a41d0..207ffae 100644 +--- a/src/service.c ++++ b/src/service.c +@@ -214,6 +214,25 @@ done: + return 0; + } + ++int service_set_connecting(struct btd_service *service) ++{ ++ 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 0; ++ case BTD_SERVICE_STATE_DISCONNECTING: ++ return -EBUSY; ++ } ++ ++ change_state(service, BTD_SERVICE_STATE_CONNECTING, 0); ++ ++ return 0; ++} ++ + int btd_service_connect(struct btd_service *service) + { + struct btd_profile *profile = service->profile; +diff --git a/src/service.h b/src/service.h +index c1f97f6..6f1edfb 100644 +--- a/src/service.h ++++ b/src/service.h +@@ -49,6 +49,7 @@ int service_probe(struct btd_service *service); + void service_remove(struct btd_service *service); + + int service_accept(struct btd_service *service); ++int service_set_connecting(struct btd_service *service); + + /* Connection control API */ + int btd_service_connect(struct btd_service *service); +-- +2.7.4 + diff --git a/bluez.spec b/bluez.spec index 033079d..fff11fd 100644 --- a/bluez.spec +++ b/bluez.spec @@ -3,7 +3,7 @@ Name: bluez Summary: Bluetooth utilities Version: 5.42 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ Group: Applications/System URL: http://www.bluez.org/ @@ -18,6 +18,7 @@ Patch2: 0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch Patch3: 0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch Patch4: 0002-autopair-Don-t-handle-the-iCade.patch Patch5: 0004-agent-Assert-possible-infinite-loop.patch +Patch6: 0001-core-profile-Fix-calling-service_accept.patch BuildRequires: git BuildRequires: dbus-devel >= 1.6 @@ -245,6 +246,9 @@ sed -i 's/#\[Policy\]$/\[Policy\]/; s/#AutoEnable=false/AutoEnable=true/' ${RPM_ %{_userunitdir}/obex.service %changelog +* Tue Oct 25 2016 Don Zickus 5.42-2 +- Fix OBEX connections + * Wed Oct 19 2016 Peter Robinson 5.42-1 - Update to 5.42