GDBusMessage: Make endianness for D-Bus messages match host byte order

Signed-off-by: David Zeuthen <davidz@redhat.com>
This commit is contained in:
David Zeuthen 2010-07-14 11:39:22 -04:00
parent 497edd8b40
commit 14e37ef796

View File

@ -1945,8 +1945,18 @@ g_dbus_message_to_blob (GDBusMessage *message,
mos = G_MEMORY_OUTPUT_STREAM (g_memory_output_stream_new (NULL, 0, g_realloc, g_free)); mos = G_MEMORY_OUTPUT_STREAM (g_memory_output_stream_new (NULL, 0, g_realloc, g_free));
dos = g_data_output_stream_new (G_OUTPUT_STREAM (mos)); dos = g_data_output_stream_new (G_OUTPUT_STREAM (mos));
/* TODO: detect endianess... */ /* Any D-Bus implementation is supposed to handle both Big and
* Little Endian encodings and the Endianness is part of the D-Bus
* message - we prefer to use Big Endian (since it's Network Byte
* Order and just easier to read for humans) but if the machine is
* Little Endian we use that for performance reasons.
*/
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
byte_order = G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN; byte_order = G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN;
#else
/* this could also be G_PDP_ENDIAN */
byte_order = G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN;
#endif
g_data_output_stream_set_byte_order (dos, byte_order); g_data_output_stream_set_byte_order (dos, byte_order);
/* Core header */ /* Core header */