All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] dbus: Add private _dbus_message_new_error
@ 2016-04-18 14:31 Andrew Zaborowski
  2016-04-18 14:31 ` [PATCH 2/2] dbus: Handle kdbus KDBUS_ITEM_REPLY_TIMEOUT / _DEAD Andrew Zaborowski
                   ` (9 more replies)
  0 siblings, 10 replies; 15+ messages in thread
From: Andrew Zaborowski @ 2016-04-18 14:31 UTC (permalink / raw)
  To: ell

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

---
 ell/dbus-message.c | 47 +++++++++++++++++++++++++++++++----------------
 ell/dbus-private.h |  5 +++++
 2 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/ell/dbus-message.c b/ell/dbus-message.c
index a409e53..86cec96 100644
--- a/ell/dbus-message.c
+++ b/ell/dbus-message.c
@@ -328,33 +328,32 @@ LIB_EXPORT struct l_dbus_message *l_dbus_message_new_method_return(
 	return message;
 }
 
-LIB_EXPORT struct l_dbus_message *l_dbus_message_new_error_valist(
-					struct l_dbus_message *method_call,
-					const char *name,
-					const char *format, va_list args)
+struct l_dbus_message *_dbus_message_new_error(uint8_t version,
+						uint32_t reply_serial,
+						const char *destination,
+						const char *name,
+						const char *error)
 {
-	char str[1024];
 	struct l_dbus_message *reply;
-	struct dbus_header *hdr = method_call->header;
-	const char *sender;
+	bool r;
 
 	if (!_dbus_valid_interface(name))
 		return NULL;
 
-	vsnprintf(str, sizeof(str), format, args);
 	reply = message_new_common(DBUS_MESSAGE_TYPE_ERROR,
 					DBUS_MESSAGE_FLAG_NO_REPLY_EXPECTED,
-					hdr->version);
-
-	reply->reply_serial = _dbus_message_get_serial(method_call);
-
-	sender = l_dbus_message_get_sender(method_call);
-	if (sender)
-		reply->destination = l_strdup(sender);
+					version);
 
 	reply->error_name = l_strdup(name);
+	reply->destination = l_strdup(destination);
+	reply->reply_serial = reply_serial;
 
-	if (!l_dbus_message_set_arguments(reply, "s", str)) {
+	if (error)
+		r = l_dbus_message_set_arguments(reply, "s", error);
+	else
+		r = l_dbus_message_set_arguments(reply, "");
+
+	if (!r) {
 		l_dbus_message_unref(reply);
 		return NULL;
 	}
@@ -362,6 +361,22 @@ LIB_EXPORT struct l_dbus_message *l_dbus_message_new_error_valist(
 	return reply;
 }
 
+LIB_EXPORT struct l_dbus_message *l_dbus_message_new_error_valist(
+					struct l_dbus_message *method_call,
+					const char *name,
+					const char *format, va_list args)
+{
+	char str[1024];
+	struct dbus_header *hdr = method_call->header;
+
+	vsnprintf(str, sizeof(str), format, args);
+
+	return _dbus_message_new_error(hdr->version,
+					_dbus_message_get_serial(method_call),
+					l_dbus_message_get_sender(method_call),
+					name, str);
+}
+
 LIB_EXPORT struct l_dbus_message *l_dbus_message_new_error(
 					struct l_dbus_message *method_call,
 					const char *name,
diff --git a/ell/dbus-private.h b/ell/dbus-private.h
index 63c239b..030ce0b 100644
--- a/ell/dbus-private.h
+++ b/ell/dbus-private.h
@@ -141,6 +141,11 @@ struct l_dbus_message *_dbus_message_new_signal(uint8_t version,
 						const char *path,
 						const char *interface,
 						const char *name);
+struct l_dbus_message *_dbus_message_new_error(uint8_t version,
+						uint32_t reply_serial,
+						const char *destination,
+						const char *name,
+						const char *error);
 
 struct l_dbus_message *dbus_message_from_blob(const void *data, size_t size);
 struct l_dbus_message *dbus_message_build(void *header, size_t header_size,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-04-22  0:03 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-18 14:31 [PATCH 1/2] dbus: Add private _dbus_message_new_error Andrew Zaborowski
2016-04-18 14:31 ` [PATCH 2/2] dbus: Handle kdbus KDBUS_ITEM_REPLY_TIMEOUT / _DEAD Andrew Zaborowski
2016-04-18 14:31 ` [PATCH] dbus: Check message->sealed before get_header_field() Andrew Zaborowski
2016-04-19  2:39   ` Denis Kenzior
2016-04-18 14:31 ` [PATCH] dbus: Don't send replies to messages with no reply flag Andrew Zaborowski
2016-04-18 14:31 ` [PATCH] unit: Add test-dbus-properties --kdbus option Andrew Zaborowski
2016-04-19  2:41   ` Denis Kenzior
2016-04-18 14:31 ` [PATCH 1/5] dbus: Add a Bus Name cache Andrew Zaborowski
2016-04-21  3:30   ` Denis Kenzior
2016-04-18 14:31 ` [PATCH 2/5] dbus: Use the name cache API in _dbus_filter Andrew Zaborowski
2016-04-18 14:31 ` [PATCH 3/5] unit: Update _dbus_filter usage in test-dbus-watch Andrew Zaborowski
2016-04-18 14:31 ` [PATCH 4/5] dbus: Add service watch API based on the name cache Andrew Zaborowski
2016-04-18 14:31 ` [PATCH 5/5] dbus: Use the name cache for public service watches Andrew Zaborowski
2016-04-19  2:37 ` [PATCH 1/2] dbus: Add private _dbus_message_new_error Denis Kenzior
2016-04-22  0:03   ` Andrzej Zaborowski

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.