2004-06-07 21:02:23 +00:00
|
|
|
Important for 1.0
|
|
|
|
|
===
|
2005-01-18 20:42:15 +00:00
|
|
|
|
|
|
|
|
- change .service files to have Names=list rather than Name=string
|
2004-05-07 22:45:15 +00:00
|
|
|
|
2003-03-18 23:22:12 +00:00
|
|
|
- How we will handle DCOP needs sorting out. Among other things, we
|
|
|
|
|
need to check that service and service-ownership semantics map to DCOP
|
|
|
|
|
reasonably well.
|
|
|
|
|
|
|
|
|
|
- Activation needs some careful additional thinking-through.
|
|
|
|
|
|
2004-06-07 21:02:23 +00:00
|
|
|
- Audit @todo and FIXME for security issues
|
|
|
|
|
|
|
|
|
|
- The convenience functions in dbus-bus.h should perhaps have
|
|
|
|
|
the signatures that they would have if they were autogenerated
|
|
|
|
|
stubs. e.g. the acquire service function. We should also evaluate
|
|
|
|
|
which of these functions to include, in light of the fact that
|
|
|
|
|
GLib/Qt native stubs will probably also exist.
|
|
|
|
|
|
2005-01-15 Havoc Pennington <hp@redhat.com>
* Land the new message args API and type system.
This patch is huge, but the public API change is not
really large. The set of D-BUS types has changed somewhat,
and the arg "getters" are more geared toward language bindings;
they don't make a copy, etc.
There are also some known issues. See these emails for details
on this huge patch:
http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
* dbus/dbus-marshal-*: all the new stuff
* dbus/dbus-message.c: basically rewritten
* dbus/dbus-memory.c (check_guards): with "guards" enabled, init
freed blocks to be all non-nul bytes so using freed memory is less
likely to work right
* dbus/dbus-internals.c (_dbus_test_oom_handling): add
DBUS_FAIL_MALLOC=N environment variable, so you can do
DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
thorough.
* qt/message.cpp: port to the new message args API
(operator<<): use str.utf8() rather than str.unicode()
(pretty sure this is right from the Qt docs?)
* glib/dbus-gvalue.c: port to the new message args API
* bus/dispatch.c, bus/driver.c: port to the new message args API
* dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
"locked" flag to TRUE and align_offset to 0; I guess we never
looked at these anyhow, but seems cleaner.
* dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
move allocation padding macro to this header; use it to implement
(_DBUS_STRING_STATIC): ability to declare a static string.
* dbus/dbus-message.c (_dbus_message_has_type_interface_member):
change to return TRUE if the interface is not set.
* dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
to dbus-marshal-validate.[hc]
* dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
dbus-internals.c
* dbus/Makefile.am: cut over from dbus-marshal.[hc]
to dbus-marshal-*.[hc]
* dbus/dbus-object-tree.c (_dbus_decompose_path): move this
function here from dbus-marshal.c
2005-01-15 07:15:38 +00:00
|
|
|
- the "break loader" and valid/invalid message tests are all disabled;
|
|
|
|
|
they need to be fixed and re-enabled with the new message args stuff.
|
|
|
|
|
I think I want to drop the .message files thing and just have code
|
|
|
|
|
that generates messages, more like the tests for
|
|
|
|
|
dbus-marshal-recursive.c
|
2004-06-07 21:02:23 +00:00
|
|
|
|
|
|
|
|
- modify the auth protocol to also support other initial-handshake
|
|
|
|
|
type of information:
|
|
|
|
|
|
|
|
|
|
Perhaps the auth protocol should be able to negotiate a protocol
|
|
|
|
|
version to the least-common-denominator between client and server?
|
|
|
|
|
Though in practice ever using this feature would be pretty tough,
|
|
|
|
|
since protocol probably modifies the API. But we could have it there
|
|
|
|
|
as a safety net.
|
|
|
|
|
|
|
|
|
|
- need to define bus behavior if you send a message to
|
|
|
|
|
yourself; is it an error, or allowed? If allowed,
|
|
|
|
|
we need to have a test for it in the test suite.
|
|
|
|
|
|
2005-01-15 Havoc Pennington <hp@redhat.com>
* Land the new message args API and type system.
This patch is huge, but the public API change is not
really large. The set of D-BUS types has changed somewhat,
and the arg "getters" are more geared toward language bindings;
they don't make a copy, etc.
There are also some known issues. See these emails for details
on this huge patch:
http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
* dbus/dbus-marshal-*: all the new stuff
* dbus/dbus-message.c: basically rewritten
* dbus/dbus-memory.c (check_guards): with "guards" enabled, init
freed blocks to be all non-nul bytes so using freed memory is less
likely to work right
* dbus/dbus-internals.c (_dbus_test_oom_handling): add
DBUS_FAIL_MALLOC=N environment variable, so you can do
DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
thorough.
* qt/message.cpp: port to the new message args API
(operator<<): use str.utf8() rather than str.unicode()
(pretty sure this is right from the Qt docs?)
* glib/dbus-gvalue.c: port to the new message args API
* bus/dispatch.c, bus/driver.c: port to the new message args API
* dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
"locked" flag to TRUE and align_offset to 0; I guess we never
looked at these anyhow, but seems cleaner.
* dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
move allocation padding macro to this header; use it to implement
(_DBUS_STRING_STATIC): ability to declare a static string.
* dbus/dbus-message.c (_dbus_message_has_type_interface_member):
change to return TRUE if the interface is not set.
* dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
to dbus-marshal-validate.[hc]
* dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
dbus-internals.c
* dbus/Makefile.am: cut over from dbus-marshal.[hc]
to dbus-marshal-*.[hc]
* dbus/dbus-object-tree.c (_dbus_decompose_path): move this
function here from dbus-marshal.c
2005-01-15 07:15:38 +00:00
|
|
|
- add string array support back to append_args()
|
|
|
|
|
|
2005-01-28 05:30:53 +00:00
|
|
|
- validate dict entry number of fields
|
|
|
|
|
|
2005-01-27 00:52:30 +00:00
|
|
|
- just before 1.0, try a HAVE_INT64=0 build and be sure it runs
|
2005-01-18 20:42:15 +00:00
|
|
|
|
2005-01-28 05:30:53 +00:00
|
|
|
- the spec and implementation should probably require dict keys
|
|
|
|
|
to be basic types
|
|
|
|
|
|
2004-07-03 11:20:05 +00:00
|
|
|
Important for 1.0 GLib Bindings
|
|
|
|
|
===
|
|
|
|
|
|
2004-06-07 21:02:23 +00:00
|
|
|
- finish dbus-glib-tool support for adding introspection
|
|
|
|
|
data to GObject and autoexporting GObject using same
|
|
|
|
|
|
|
|
|
|
- the GLib bindings varargs take DBUS_TYPE_WHATEVER and
|
|
|
|
|
return stuff allocated with dbus_malloc(); should this
|
|
|
|
|
be made more "G" at some expense in code duplication?
|
|
|
|
|
You also still have to use some D-BUS functions such as
|
|
|
|
|
dbus_message_get_args() which takes a DBusError.
|
|
|
|
|
Probably we need to either fully encapsulate and hide
|
|
|
|
|
dbus/dbus.h, or encapsulate it slightly less e.g. no
|
|
|
|
|
GError. Or maybe it's as simple as "never return dbus_malloc()
|
|
|
|
|
memory" and just fully encapsulate the get_args() type of
|
|
|
|
|
stuff.
|
|
|
|
|
|
2004-06-20 15:28:15 +00:00
|
|
|
- dbus_gproxy_connect_signal() has to take a signature for the signal
|
|
|
|
|
so it can figure out how to invoke the callback, or we have to rely
|
|
|
|
|
on having introspection data.
|
2004-06-07 21:02:23 +00:00
|
|
|
|
2005-01-18 20:42:15 +00:00
|
|
|
- DBusGProxy doesn't emit "destroy" when it should
|
|
|
|
|
|
2004-06-07 21:02:23 +00:00
|
|
|
Might as Well for 1.0
|
|
|
|
|
===
|
|
|
|
|
|
|
|
|
|
- add dbus_message_has_path(), maybe has_member/interface
|
|
|
|
|
|
2004-11-25 Havoc Pennington <hp@redhat.com>
The primary change here is to always write() once before adding
the write watch, which gives us about a 10% performance increase.
* dbus/dbus-transport-unix.c: a number of modifications to cope
with removing messages_pending
(check_write_watch): properly handle
DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
messages_pending stuff
(check_read_watch): properly handle WAITING_FOR_MEMORY and
AUTHENTICATED cases
(unix_handle_watch): after writing, see if the write watch can be
removed
(unix_do_iteration): assert that write_watch/read_watch are
non-NULL rather than testing that they aren't, since they
aren't allowed to be NULL. check_write_watch() at the end so
we add the watch if we did not finish writing (e.g. got EAGAIN)
* dbus/dbus-transport-protected.h: remove messages_pending call,
since it resulted in too much inefficient watch adding/removing;
instead we now require that the transport user does an iteration
after queueing outgoing messages, and after trying the first
write() we add a write watch if we got EAGAIN or exceeded our
max bytes to write per iteration setting
* dbus/dbus-string.c (_dbus_string_validate_signature): add this
function
* dbus/dbus-server-unix.c (unix_finalize): the socket name was
freed and then accessed, valgrind flagged this bug, fix it
* dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
as the last valid field plus 1, where really it is equal to the
last valid field. Corrects some message corruption issues.
* dbus/dbus-mainloop.c: verbosity changes
* dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
instead of aborting in one of the test codepaths
* dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
caused not printing the pid ever again if a verbose was missing
the newline at the end
(_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE
* dbus/dbus-connection.c: verbosity changes;
(dbus_connection_has_messages_to_send): new function
(_dbus_connection_message_sent): no longer call transport->messages_pending
(_dbus_connection_send_preallocated_unlocked): do one iteration to
try to write() immediately, so we can avoid the write watch. This
is the core purpose of this patchset
(_dbus_connection_get_dispatch_status_unlocked): if disconnected,
dump the outgoing message queue, so nobody will get confused
trying to send them or thinking stuff is pending to be sent
* bus/test.c: verbosity changes
* bus/driver.c: verbosity/assertion changes
* bus/dispatch.c: a bunch of little tweaks to get it working again
because this patchset changes when/where you need to block.
2004-11-26 01:53:13 +00:00
|
|
|
- connection_open/connection_disconnect lacks symmetry, open/close
|
|
|
|
|
or connect/disconnect
|
|
|
|
|
|
2005-01-15 Havoc Pennington <hp@redhat.com>
* Land the new message args API and type system.
This patch is huge, but the public API change is not
really large. The set of D-BUS types has changed somewhat,
and the arg "getters" are more geared toward language bindings;
they don't make a copy, etc.
There are also some known issues. See these emails for details
on this huge patch:
http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
* dbus/dbus-marshal-*: all the new stuff
* dbus/dbus-message.c: basically rewritten
* dbus/dbus-memory.c (check_guards): with "guards" enabled, init
freed blocks to be all non-nul bytes so using freed memory is less
likely to work right
* dbus/dbus-internals.c (_dbus_test_oom_handling): add
DBUS_FAIL_MALLOC=N environment variable, so you can do
DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
thorough.
* qt/message.cpp: port to the new message args API
(operator<<): use str.utf8() rather than str.unicode()
(pretty sure this is right from the Qt docs?)
* glib/dbus-gvalue.c: port to the new message args API
* bus/dispatch.c, bus/driver.c: port to the new message args API
* dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
"locked" flag to TRUE and align_offset to 0; I guess we never
looked at these anyhow, but seems cleaner.
* dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
move allocation padding macro to this header; use it to implement
(_DBUS_STRING_STATIC): ability to declare a static string.
* dbus/dbus-message.c (_dbus_message_has_type_interface_member):
change to return TRUE if the interface is not set.
* dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
to dbus-marshal-validate.[hc]
* dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
dbus-internals.c
* dbus/Makefile.am: cut over from dbus-marshal.[hc]
to dbus-marshal-*.[hc]
* dbus/dbus-object-tree.c (_dbus_decompose_path): move this
function here from dbus-marshal.c
2005-01-15 07:15:38 +00:00
|
|
|
- protocol version in each message is pretty silly
|
|
|
|
|
|
2004-06-07 21:02:23 +00:00
|
|
|
Can Be Post 1.0
|
|
|
|
|
===
|
|
|
|
|
|
2005-01-18 20:42:15 +00:00
|
|
|
- The message bus internal code still says "service" for
|
|
|
|
|
"name", "base service" for "unique name", "activate" for
|
|
|
|
|
"start"; would be nice to clean up.
|
|
|
|
|
|
2003-03-18 23:22:12 +00:00
|
|
|
- Property list feature on message bus (list of properties associated
|
|
|
|
|
with a connection). May also include message matching rules
|
|
|
|
|
that involve the properties of the source or destination
|
|
|
|
|
connection.
|
|
|
|
|
|
2003-03-28 05:42:19 +00:00
|
|
|
- Disconnecting the remote end on invalid UTF-8 is probably not a good
|
2004-06-07 21:02:23 +00:00
|
|
|
idea. The definition of "valid" is slightly fuzzy. I think it might
|
2003-03-28 05:42:19 +00:00
|
|
|
be better to just silently "fix" the UTF-8, or perhaps return an error.
|
|
|
|
|
|
2003-03-31 18:58:14 +00:00
|
|
|
Owen says we should only validate the UTF-8 on dbus_message_get_string()
|
|
|
|
|
(changing get_string to have an error return, and allowing a type error
|
|
|
|
|
as a possible return)
|
|
|
|
|
|
2003-04-05 00:37:17 +00:00
|
|
|
- assorted _-prefixed symbols in libdbus aren't actually used by
|
|
|
|
|
libdbus, only by the message bus. These bloat up the library
|
|
|
|
|
size. Not sure how to fix, really.
|
|
|
|
|
|
2003-05-03 23:07:19 +00:00
|
|
|
- build and install the Doxygen manual in Makefile when --enable-docs
|
2003-05-05 19:12:58 +00:00
|
|
|
|
|
|
|
|
- if you send the same message to multiple connections, the serial number
|
|
|
|
|
will only be right for one of them. Probably need to just write() the serial
|
|
|
|
|
number, rather than putting it in the DBusMessage, or something.
|
|
|
|
|
|
2003-05-17 17:53:17 +00:00
|
|
|
- perhaps the bus driver should have properties that reflect attributes
|
|
|
|
|
of the session, such as hostname, architecture, operating system,
|
|
|
|
|
etc. Could be useful for code that wants to special-case behavior
|
|
|
|
|
for a particular host or class of hosts, for example.
|
|
|
|
|
|
2003-05-16 20:09:25 +00:00
|
|
|
- currently the security policy stuff for messages to/from
|
|
|
|
|
the bus driver is kind of strange; basically it's hardcoded that
|
|
|
|
|
you can always talk to the driver, but the default config file
|
|
|
|
|
has rules for it anyway, or something. it's conceptually
|
|
|
|
|
screwy at the moment.
|
2003-05-17 17:53:17 +00:00
|
|
|
|
2003-08-30 00:26:00 +00:00
|
|
|
- when making a method call, if the call serial were globally unique,
|
|
|
|
|
we could forward the call serial along with any method calls made
|
|
|
|
|
as a result of the first method call, and allow reentrancy that was
|
|
|
|
|
strictly part of the call stack of said method call. But I don't
|
|
|
|
|
really see how to do this without making the user pass around the
|
|
|
|
|
call serial to all method calls all the time, or disallowing
|
|
|
|
|
async calls.
|
2003-08-31 01:51:44 +00:00
|
|
|
|
2004-06-07 21:02:23 +00:00
|
|
|
If done post 1.0 will probably be an optional/ugly-API type
|
|
|
|
|
of thing.
|
2003-09-01 18:02:06 +00:00
|
|
|
|
2003-09-17 03:52:07 +00:00
|
|
|
- I don't want to introduce DBusObject, but refcounting and object
|
|
|
|
|
data could still be factored out into an internal "base class"
|
|
|
|
|
perhaps.
|
2003-09-21 18:43:20 +00:00
|
|
|
|
2003-09-21 19:53:56 +00:00
|
|
|
- document the auth protocol as a set of states and transitions, and
|
|
|
|
|
then reimplement it in those terms
|
|
|
|
|
|
2003-10-21 05:46:52 +00:00
|
|
|
- recursive dispatch, see dbus_connection_dispatch()
|
|
|
|
|
|
2004-06-07 20:48:33 +00:00
|
|
|
- do we need per-display activation; if so I'd like to do this by setting a
|
|
|
|
|
"display ID" property on screen 0, with a GUID, and keying activation by
|
|
|
|
|
said GUID. Otherwise you get all kinds of unrobust
|
|
|
|
|
string/hostname-based mess. per-screen is then done by appending screen number
|
|
|
|
|
to the display. If displays have a deterministic ID like this, you can
|
|
|
|
|
do per-display by simply including GUID in the service name.
|
2004-06-01 13:58:57 +00:00
|
|
|
|
2004-06-07 21:02:23 +00:00
|
|
|
- optimization and profiling!
|