summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2009-02-23 19:00:07 +0200
committerJohan Hedberg <johan.hedberg@nokia.com>2009-02-23 19:00:07 +0200
commitd12aa59e7b0a87604a3f26d283e6279746a1ff6a (patch)
treeb8125b4eeadae787379753997b6dd2227f39a6b5 /src
parentbe61ef7476cd9d6c4eb53c8f6b631a91218b4da2 (diff)
Return proper error replies to DiscoverServices
Diffstat (limited to 'src')
-rw-r--r--src/device.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/device.c b/src/device.c
index 6322231c..582f659f 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1021,12 +1021,27 @@ static void append_and_grow_string(void *data, const char *str)
buff->data_size += len;
}
-static void discover_device_reply(struct browse_req *req, sdp_list_t *recs)
+static void discover_services_reply(struct browse_req *req, int err,
+ sdp_list_t *recs)
{
DBusMessage *reply;
DBusMessageIter iter, dict;
sdp_list_t *seq;
+ if (err) {
+ const char *err_if;
+
+ if (err == -EHOSTDOWN)
+ err_if = ERROR_INTERFACE ".ConnectionAttemptFailed";
+ else
+ err_if = ERROR_INTERFACE ".Failed";
+
+ reply = dbus_message_new_error(req->msg, err_if,
+ strerror(-err));
+ g_dbus_send_message(req->conn, reply);
+ return;
+ }
+
reply = dbus_message_new_method_return(req->msg);
if (!reply)
return;
@@ -1258,7 +1273,7 @@ proceed:
if (dbus_message_is_method_call(req->msg, DEVICE_INTERFACE,
"DiscoverServices")) {
- discover_device_reply(req, req->records);
+ discover_services_reply(req, err, req->records);
goto cleanup;
}