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
next 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.