public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
From: Fabien Chevalier <fabchevalier@free.fr>
To: BlueZ development <bluez-devel@lists.sourceforge.net>
Subject: [Bluez-devel] Some Audio error handling fixes.
Date: Sat, 13 Sep 2008 17:54:54 +0200	[thread overview]
Message-ID: <48CBE24E.6080507@free.fr> (raw)

[-- Attachment #1: Type: text/plain, Size: 569 bytes --]

Hi all,

While running tests on bluez-utils lately i found a number of big and
little error handling issues.
Attached patchset fixes all of them :-)

Can anyone have a look to it ?

While reading the latest code, i noticed common/error.{c, h} is gone...
There's a new one in src/, but with only one generic
error handling routine. I have the feeling this is a big step backwards,
as DBUS error names get duplicated into each service
again and again, paving the way for un unmanageable level of error
strings fragmentation :-( What do you guys think ?

Cheers,

Fabien


[-- Attachment #2: 0001-Error-code-fixes.patch --]
[-- Type: text/x-patch, Size: 1526 bytes --]

>>From a22fa4ea791b5555673cdb1729f8d72510fbb74f Mon Sep 17 00:00:00 2001
From: Fabien Chevalier <fabchevalier@free.fr>
Date: Sat, 13 Sep 2008 17:11:08 +0200
Subject: [PATCH] Error code fixes

In case of socket errors, we used to return a positive value
where the convention is to return negative values only
---
 audio/avdtp.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/audio/avdtp.c b/audio/avdtp.c
index 592322f..ae56910 100644
--- a/audio/avdtp.c
+++ b/audio/avdtp.c
@@ -1380,7 +1380,7 @@ static gboolean avdtp_parse_cmd(struct avdtp *session,
 		debug("Received DISCOVER_CMD");
 		return avdtp_discover_cmd(session, (void *) header, size);
 	case AVDTP_GET_CAPABILITIES:
-		debug("Received  GET_CAPABILITIES_CMD");
+		debug("Received	GET_CAPABILITIES_CMD");
 		return avdtp_getcap_cmd(session, (void *) header, size);
 	case AVDTP_SET_CONFIGURATION:
 		debug("Received SET_CONFIGURATION_CMD");
@@ -1559,9 +1559,9 @@ static void l2cap_connect_cb(GIOChannel *chan, int err, const bdaddr_t *src,
 	len = sizeof(l2o);
 	if (getsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &l2o,
 				&len) < 0) {
-		err = errno;
-		error("getsockopt(L2CAP_OPTIONS): %s (%d)", strerror(err),
-				err);
+		err = -errno;
+		error("getsockopt(L2CAP_OPTIONS): %s (%d)", strerror(-err),
+				-err);
 		goto failed;
 	}
 
@@ -1598,7 +1598,7 @@ failed:
 					AVDTP_STATE_IDLE);
 		session->pending_open = NULL;
 	} else
-		connection_lost(session, -err);
+		connection_lost(session, err);
 
 	return;
 }
-- 
1.5.6.5



[-- Attachment #3: 0002-Connect-fix.patch --]
[-- Type: text/x-patch, Size: 960 bytes --]

>>From dbaed0dc30ebe2a4503a43d2e8e9fd69f1eced2d Mon Sep 17 00:00:00 2001
From: Fabien Chevalier <fabchevalier@free.fr>
Date: Sat, 13 Sep 2008 17:13:27 +0200
Subject: [PATCH] Connect() fix.

In case we are unable to connect the sink, we forget to send DBUS reply.
Caller is stuck forever...
---
 audio/sink.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/audio/sink.c b/audio/sink.c
index c6d2dc4..e79b9f1 100644
--- a/audio/sink.c
+++ b/audio/sink.c
@@ -381,11 +381,11 @@ static void discovery_complete(struct avdtp *session, GSList *seps, struct avdtp
 	return;
 
 failed:
-	pending_request_free(pending);
+	error_failed(pending->conn, pending->msg, "Stream setup failed");
+ 	pending_request_free(pending);
 	sink->connect = NULL;
 	avdtp_unref(sink->session);
 	sink->session = NULL;
-	error_failed(pending->conn, pending->msg, "Stream setup failed");
 }
 
 static DBusMessage *sink_connect(DBusConnection *conn,
-- 
1.5.6.5



[-- Attachment #4: 0003-Error-value-fixes.patch --]
[-- Type: text/x-patch, Size: 1233 bytes --]

>>From 6a3a4f1229728754e01f3bc7911c3d508348a56f Mon Sep 17 00:00:00 2001
From: Fabien Chevalier <fabchevalier@free.fr>
Date: Sat, 13 Sep 2008 17:14:34 +0200
Subject: [PATCH] Error value fixes.

In case the HSP/HFP headset is down, we return "not supported" : this is non-sense :
change that to connection attempt failed
---
 audio/headset.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/audio/headset.c b/audio/headset.c
index 102d0bc..45bcf34 100644
--- a/audio/headset.c
+++ b/audio/headset.c
@@ -1074,7 +1074,9 @@ static void get_record_cb(sdp_list_t *recs, int err, gpointer user_data)
 	if (err < 0) {
 		error("Unable to get service record: %s (%d)", strerror(-err),
 			-err);
-		goto failed_not_supported;
+		error_connection_attempt_failed(dev->conn, p->msg, p->err);
+
+		goto failed;
 	}
 
 	if (!recs || !recs->data) {
@@ -1140,10 +1142,13 @@ static void get_record_cb(sdp_list_t *recs, int err, gpointer user_data)
 failed_not_supported:
 	if (p->msg) {
 		error_not_supported(dev->conn, p->msg);
+	}
+failed:
+	if (p->msg) {
 		dbus_message_unref(p->msg);
 		p->msg = NULL;
 	}
-failed:
+
 	if (classes)
 		sdp_list_free(classes, free);
 	pending_connect_finalize(dev);
-- 
1.5.6.5



[-- Attachment #5: Type: text/plain, Size: 363 bytes --]

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

[-- Attachment #6: Type: text/plain, Size: 164 bytes --]

_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel

             reply	other threads:[~2008-09-13 15:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-13 15:54 Fabien Chevalier [this message]
2008-09-13 16:12 ` [Bluez-devel] Some Audio error handling fixes Luiz Augusto von Dentz
2008-09-13 19:08   ` Fabien Chevalier
2008-09-13 17:03 ` Marcel Holtmann
2008-09-13 19:49   ` Fabien Chevalier
2008-09-13 20:50 ` Fabien Chevalier
2008-09-13 20:57   ` Marcel Holtmann
2008-09-14  8:14     ` Fabien Chevalier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48CBE24E.6080507@free.fr \
    --to=fabchevalier@free.fr \
    --cc=bluez-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox