From d12aa59e7b0a87604a3f26d283e6279746a1ff6a Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 23 Feb 2009 19:00:07 +0200 Subject: Return proper error replies to DiscoverServices --- src/device.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src') 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; } -- cgit