diff --git a/profiles/audio/sink.c b/profiles/audio/sink.c
index 7cac210..9664405 100644
--- a/profiles/audio/sink.c
+++ b/profiles/audio/sink.c
if (sink->connect_id > 0 || sink->disconnect_id > 0)
return FALSE;
- if (session && !sink->session)
- sink->session = avdtp_ref(session);
-
- if (!sink->session)
- return FALSE;
+ if (!sink->session) {
+ if (session)
+ sink->session = avdtp_ref(session);
+ else
+ sink->session = a2dp_avdtp_get(
+ btd_service_get_device(service));
+
+ if (!sink->session) {
+ DBG("Unable to get a session");
+ return FALSE;
+ }
+ }
sink->connect_id = a2dp_discover(sink->session, discovery_complete,
sink);
{
struct sink *sink = btd_service_get_user_data(service);
- if (!sink->session)
- sink->session = a2dp_avdtp_get(btd_service_get_device(service));
-
- if (!sink->session) {
- DBG("Unable to get a session");
- return -EIO;
- }
-
if (sink->connect_id > 0 || sink->disconnect_id > 0)
return -EBUSY;
diff --git a/profiles/audio/source.c b/profiles/audio/source.c
index 4081e19..0ac20fe 100644
--- a/profiles/audio/source.c
+++ b/profiles/audio/source.c
if (source->connect_id > 0 || source->disconnect_id > 0)
return FALSE;
- if (session && !source->session)
- source->session = avdtp_ref(session);
-
- if (!source->session)
- return FALSE;
+ if (!source->session) {
+ if (session)
+ source->session = avdtp_ref(session);
+ else
+ source->session = a2dp_avdtp_get(
+ btd_service_get_device(service));
+
+ if (!source->session) {
+ DBG("Unable to get a session");
+ return FALSE;
+ }
+ }
source->connect_id = a2dp_discover(source->session, discovery_complete,
source);
{
struct source *source = btd_service_get_user_data(service);
- if (!source->session)
- source->session = a2dp_avdtp_get(btd_service_get_device(service));
-
- if (!source->session) {
- DBG("Unable to get a session");
- return -EIO;
- }
-
if (source->connect_id > 0 || source->disconnect_id > 0)
return -EBUSY;