summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-message-util.c
diff options
context:
space:
mode:
authorWilliam Lachance <wrlach@gmail.com>2009-04-21 13:51:46 -0400
committerColin Walters <walters@verbum.org>2009-04-21 13:51:46 -0400
commit16a947eedb7f7f2951fff4ebbf301af7776aa8df (patch)
treeb3095a345c3547e36ae5015660d2b8a7655569f0 /dbus/dbus-message-util.c
parentce09b82ec2dd3cb1d239605f8f458e09afd70694 (diff)
Bug 19567 - Make marshaling code usable without DBusConnection
Some projects want to reuse the DBus message format, without actually going through a DBusConnection. This set of changes makes a few functions from DBusMessage public, and adds a new function to determine the number of bytes needed to demarshal a message. Signed-off-by: Colin Walters <walters@verbum.org>
Diffstat (limited to 'dbus/dbus-message-util.c')
-rw-r--r--dbus/dbus-message-util.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/dbus/dbus-message-util.c b/dbus/dbus-message-util.c
index 0fa010cc..46cbe4e3 100644
--- a/dbus/dbus-message-util.c
+++ b/dbus/dbus-message-util.c
@@ -949,7 +949,7 @@ _dbus_message_test (const char *test_data_dir)
"TestMethod"));
_dbus_assert (strcmp (dbus_message_get_path (message),
"/org/freedesktop/TestPath") == 0);
- _dbus_message_set_serial (message, 1234);
+ dbus_message_set_serial (message, 1234);
/* string length including nul byte not a multiple of 4 */
if (!dbus_message_set_sender (message, "org.foo.bar1"))
@@ -1041,7 +1041,7 @@ _dbus_message_test (const char *test_data_dir)
"/org/freedesktop/TestPath",
"Foo.TestInterface",
"TestMethod");
- _dbus_message_set_serial (message, 1);
+ dbus_message_set_serial (message, 1);
dbus_message_set_reply_serial (message, 5678);
v_INT16 = -0x123;
@@ -1172,7 +1172,7 @@ _dbus_message_test (const char *test_data_dir)
dbus_message_unref (copy);
/* Message loader test */
- _dbus_message_lock (message);
+ dbus_message_lock (message);
loader = _dbus_message_loader_new ();
/* check ref/unref */
@@ -1226,6 +1226,7 @@ _dbus_message_test (const char *test_data_dir)
DBusError error = DBUS_ERROR_INIT;
char *marshalled = NULL;
int len = 0;
+ char garbage_header[DBUS_MINIMUM_HEADER_SIZE] = "xxx";
if (!dbus_message_marshal (message, &marshalled, &len))
_dbus_assert_not_reached ("failed to marshal message");
@@ -1233,6 +1234,7 @@ _dbus_message_test (const char *test_data_dir)
_dbus_assert (len != 0);
_dbus_assert (marshalled != NULL);
+ _dbus_assert (dbus_message_demarshal_bytes_needed (marshalled, len) == len);
message2 = dbus_message_demarshal (marshalled, len, &error);
_dbus_assert (message2 != NULL);
@@ -1255,6 +1257,14 @@ _dbus_message_test (const char *test_data_dir)
_dbus_assert (message2 == NULL);
_dbus_assert (dbus_error_is_set (&error));
dbus_error_free (&error);
+
+ /* Bytes needed to demarshal empty message: 0 (more) */
+
+ _dbus_assert (dbus_message_demarshal_bytes_needed ("", 0) == 0);
+
+ /* Bytes needed to demarshal invalid message: -1 (error). */
+
+ _dbus_assert (dbus_message_demarshal_bytes_needed (garbage_header, DBUS_MINIMUM_HEADER_SIZE) == -1);
}
dbus_message_unref (message);