The best way to iterate is usually: while ((current_type = dbus_message_iter_get_arg_type (&iter)) != DBUS_TYPE_INVALID) dbus_message_iter_next (&iter); Havoc