2006-03-02 John (J5) Palmieri <johnp@redhat.com>
[platform/upstream/dbus.git] / ChangeLog
1 2006-03-02  John (J5) Palmieri  <johnp@redhat.com>
2
3         * dbus/dbus-connection.c: 
4         (_dbus_connection_block_pending_call):
5         Check to see if our data has already been read off the connection
6         by another blocking pending call before we block in poll.
7         (check_for_reply_and_update_dispatch_unlocked):
8         Code taken from _dbus_connection_block_pending_call - checks for
9         an already read reply and updates the dispatch if there is one.
10
11         * test/name-test/test-pending-call-dispatch.c:
12         New test for making sure we don't get stuck polling a 
13         dbus connection which has no data on the socket when
14         blocking out of order on two or more pending calls.
15
16 2006-02-28  Thiago Macieira <thiago.macieira@trolltech.com>
17
18         * qt/Makefile.am: Patch by Sjoerd Simons. More .moc issues:
19         make/automake don't detect that we're talking about the same
20         .lo file if I specify the full path to the source files.
21
22 2006-02-26  Havoc Pennington  <hp@redhat.com>
23
24         * bus/dbus-daemon.1.in: improve the language in a couple spots I noticed
25
26         * dbus/dbus-bus.c (internal_bus_get): in the error message if the
27         session bus variable is unset, suggest "man dbus-launch" and "man
28         dbus-daemon" to figure out how to fix the problem
29
30 2006-02-25  Havoc Pennington  <hp@redhat.com>
31
32         * glib/dbus-glib-tool.c (usage): fix up the usage message, someone
33         should make this thing use the new glib options parser
34
35 2006-02-25  Thiago Macieira <thiago.macieira@trolltech.com>
36
37         * qt/Makefile.am: Patch by Sjoerd Simons. Fix the path to the
38         .lo files taking moc sources.
39
40 2006-02-25  Havoc Pennington  <hp@redhat.com>
41
42         * dbus/dbus.h, dbus/Makefile.am: add dbus-signature.h to dbus.h
43         and install it as a public header
44
45 2006-02-24  John (J5) Palmieri  <johnp@redhat.com>
46
47         * Released 0.61
48
49 2006-02-24  John (J5) Palmieri  <johnp@redhat.com>
50         
51         * proxies.py: Fix the callchain
52
53 2006-02-24  John (J5) Palmieri <johnp@redhat.com>
54         
55         * patch from Sjoerd Simons <sjoerd at debian.org>:      
56
57         * dbus/dbus-sysdeps-util.c (_dbus_group_info_free): Moved to 
58         dbus/dbus-sysdeps.c
59
60         * dbus/dbus-userdb.c (_dbus_group_info_free_allocated): Don't
61         call _dbus_group_info_free_allocated which causes infinite loop,
62         correctly call _dbus_group_info_free
63
64 2006-02-20  Thiago Macieira <thiago.macieira@trolltech.com>
65
66         * qt/qdbusinterface_p.h:
67         * qt/qdbusinterface.cpp: Use the standard
68         org.freedesktop.DBus.Method.NoReply annotation for the "async"
69         calls instead of creating one for us.
70
71         * qt/qdbusconnection_p.h:
72         * qt/qdbusintegrator.cpp: Remove debugging code.
73
74         * qt/qdbusintegrator.cpp:
75         * qt/qdbusmessage.cpp:
76         * qt/qdbusmessage_p.h:
77         * qt/qdbusmessage.h: Change the behaviour of automatic
78         reply-sending: now a reply is always sent, unless the caller
79         didn't request one or if the user slot has already sent one.
80
81 2006-02-16  Robert McQueen  <robot101@debian.org>
82
83         * configure.in: Patch from Debian packages by Sjoerd Simons
84         <sjoerd@debian.org> to add --with-qt-moc and --with-qt3-moc
85         arguments so it's possible to build both bindings in the
86         same tree.
87
88         * qt/Makefile.am: Fix truncated value so that make dist works.
89
90 2006-02-16  Robert McQueen  <robot101@debian.org>
91
92         * acinclude.m4, configure.in: Patch from Brad Hards
93         <bradh@frogmouth.net> to avoid warnings from autoconf 1.9 by
94         improving quoting, re-ordering a few checks, and a few other
95         aesthetic tidy-ups.
96
97 2006-02-16  Robert McQueen  <robot101@debian.org>
98
99         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array):
100         Patch from Rob Taylor <rob.taylor@collabora.co.uk> to correct a bogus
101         assertion that the next element to read from the iter is fixed in
102         size. This is not the case when you are at the end of the iter,
103         because the next element type is INVALID.
104
105         * dbus/dbus-string.c (_dbus_string_init_const_len): Correct a
106         a bogus assert which means that you may not initialise a 0-length
107         string unless you provide a non-NULL pointer. This prevented
108         you from marshalling messages containing zero-length arrays in
109         some cases.
110
111         * glib/dbus-gvalue.c (demarshal_collection_array): Another patch
112         from Rob to correct bogus asserts when trying to demarshal an
113         array and get_fixed_array got you 0 elements. Append nothing to
114         the GArray in this case.
115
116         * test/glib/test-dbus-glib.c: Add a test case for round-tripping
117         an empty array via the glib bindings. Without all of the above
118         patches, this new test fails.
119
120 2006-02-16  Robert McQueen  <robot101@debian.org>
121
122         * glib/dbus-gmain.c: Make the previous commit compile.
123
124         * python/_dbus.py, python/matchrules.py: Patch from Ole Andre
125         Ravnaas <ole.andre.ravnaas@collabora.co.uk> to allow you to
126         specify sender_keyword="foo", path_keyword="bar" when adding
127         a signal listener, so that you can bind to signals generically
128         but still do something useful in your callback.
129
130         * python/dbus_bindings.pyx: Demarshal the byte type as unsigned
131         chars so that they're not cast to chars and made negative. Thanks
132         to Jakub Stachowski for reporting this and testing the fix.
133
134 2006-02-15  John (J5) Palmieri  <johnp@redhat.com>
135
136         * dbus/dbus-glib.h:
137         * glib/dbus-gmain.h:
138         (dbus_g_connection_open): new method for openning
139         a connection to an arbitrary address in the glib bindings
140
141         * ChangeLog: checkin last entry which doesn't seem to be commited
142
143 2006-02-13  John (J5) Palmieri  <johnp@redhat.com>
144
145         * tools/dbus-launch.c: Fixed sh syntax output
146
147 2006-02-13  Robert McQueen  <robot101@debian.org>
148
149         * glib/dbus-binding-tool-glib.c, glib/dbus-gmain.c,
150         glib/dbus-gsignature.c, glib/dbus-gtype-specialized.c,
151         glib/dbus-gtype-specialized.h, glib/dbus-gvalue-utils.c,
152         glib/dbus-gvalue-utils.h, glib/dbus-gvalue.c:
153         Patch from Rob Taylor <rob.taylor@collabora.co.uk> to add a big
154         missing piece of the glib bindings jigsaw puzzle. This modifies
155         the existing specialised types to have N type parameters (rather
156         than the current 1 or 2 for arrays and dictionaries respectively).
157         You can then use this to get a glib type to represent any arbitrary
158         D-Bus struct type using dbus_g_type_get_struct. The only
159         implementation of these types is with GValueArrays as before,
160         but it's now possible to store these in arrays, emit them in
161         signals, etc.
162
163 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
164
165         * dbus/dbus-signature.c (dbus_signature_iter_recurse): Correctly
166         deal with nested arrays (Bug #5823) Patch by Thiago Macieira 
167         <thiago.macieira at trolltech.com>
168
169 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
170
171         * mono/doc/Makefile.am: Fix parallel make problem with mono-doc
172         (Bug #4213) Patch from Doug Goldstein <cardoe at gentoo.org>
173
174 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
175
176         * bus/connection.c (bus_connections_expect_reply): Make
177         pending reply limit not common to all connections (Bug #5416)
178         Patch from Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>
179
180 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
181
182         * tools/dbus-launch.c: Fixed csh syntax output (Bug #5720)
183
184 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
185
186         * gcj/Makefile.am: point to correct jar command (Bug #4529)
187         patch from Doug Goldstein <cardoe at gentoo.org>
188
189 2006-02-09  Joe Shaw  <joeshaw@novell.com>
190
191         * mono/Arguments.cs: Fix a magic number in the mono bindings
192         that doesn't work on 64 bit arches.  Patch from Peter Johanson.
193
194 2006-01-27  Robert McQueen  <robot101@debian.org>
195
196         * glib/dbus-binding-tool-glib.[ch]: Patch based on Ricardo Kekki's
197         patch to use an annotation org.freedesktop.DBus.GLib.ClientCSymbol
198         when generating the client-side methods, instead of overloading
199         CSymbol which broke everything horribly. My apologies.
200
201 2006-01-27  Robert McQueen  <robot101@debian.org>
202
203         * glib/dbus-gtype-specialized.[ch], glib/dbus-gvalue-utils.c: Patch
204         by me and Rob Taylor to add a simple_free function to D-Bus map
205         and collection types, which allows those types which can be freed
206         with a GDestroyNotify (such as GHashTables and GArrays, but not
207         GPtrArrays) to be stored as the values in hashtables.
208
209         * test/glib/test-dbus-glib.c, test/glib/test-service-glib.{c,xml}:
210         Patch by Rob Taylor to add nested dicts to the glib tests to check
211         the above code works, and appears not to leak when called repeatedly.
212
213 2006-01-27  Robert McQueen  <robot101@debian.org>
214
215         * glib/dbus-gvalue.c (demarshal_valuearray): Patch from Rob Taylor
216         to free a D-Bus allocated string with dbus_free () instead of
217         g_free ().
218
219 2006-01-27  Iain Holmes  <iain@openedhand.com>
220
221         * glib/dbus-gproxy.c (dbus_g_proxy_dispose): Protect the dispose
222         method from being called multiple times.
223
224 2006-01-19  Robert McQueen  <robot101@debian.org>
225
226         * glib/dbus-binding-tool-glib.c: Patch from Rob Taylor
227         <rob.taylor@collabora.co.uk> to add support for generating bindings
228         to arrays that are represented as GPtrArrays rather than GArrays (ie
229         size-variable things, such as strings, objects, structs, etc).
230
231 2006-01-05  Robert McQueen  <robot101@debian.org>
232
233         * dbus/dbus-glib.h, glib/dbus-gproxy.c: Patch from Ricardo Kekki
234         <ricardo.kekki@movial.fi> to make it possible to inherit from
235         DBusGProxy, by splitting the DBusGProxy struct into a public part and
236         a private part, and moving the setting of the DBusGProxyManager into a
237         connection property, allowing proper GObject construction.
238
239 2006-01-05  Robert McQueen  <robot101@debian.org>
240
241         * glib/dbus-binding-tool-glib.c: Patch from Ricardo Kekki
242         <ricardo.kekki@movial.fi> to make dbus-binding-tool heed C symbol name
243         annotations when generating glib client bindings.
244
245 2005-12-19 John (J5) Palmieri  <johnp@redhat.com>
246
247         * dbus/dbus-shared.h: Call it shared constants instead of shared macros
248
249         * dbus/dbus-protocol.h: add DOxygen markup to quiet warnings
250
251 2005-12-19 John (J5) Palmieri  <johnp@redhat.com>
252
253         * dbus/dbus-shared.h: add DOxygen markup to quiet warnings
254
255 2005-12-19 John (J5) Palmieri  <johnp@redhat.com> 
256
257         * dbus/dbus-macros.h: correct DOxygen end of section (s/}@/@})
258
259 2005-12-19  Ross Burton  <ross@openedhand.com>
260
261         * doc/dbus-tutorial.xml:
262         Document the Glib client-side bindings, and list all possible annotations.
263
264 2005-12-19  John (J5) Palmieri  <johnp@redhat.com>
265
266         * dbus/bus.c (dbus_bus_release_name): Add documentation
267
268 2005-12-06  Robert McQueen  <robot101@debian.org>
269
270         * python/service.py: s/sucessful/successful/ so we're allocating to
271         and reading from the same variable. Oops.
272
273 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
274
275         * Released 0.60
276
277 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
278
279         * test/qt/Makefile.am: build from srcdir
280
281         * qt/qtconnection.cpp (requestName): Changed PROHIBIT_REPLACE to ALLOW_REPLACE
282         Note - this code is wrong and needs to be fixed by the Qt binding
283         developers.  The flags should be treated as bitfields and not enums.
284
285         * qt/qtconnection.h: Change ProhibitReplace to AllowReplace
286
287 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
288
289         * dbus/dbus-list.c (_dbus_list_insert_after_link, _dbus_list_insert_after, 
290           link_after): remove #ifdef DBUS_BUILD_TESTS since we use these methods 
291           in production code
292
293 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
294
295         * dbus/dbus-connection.c (dbus_connection_read_write): Add new
296         method for getting messages off the bus in the absence of a
297         mainloop.  This method is much like 
298         dbus_connection_read_write_dispatch except it does not dispatch
299         the messages to a registered filter function.  Instead it
300         allows a developer to process messages by directly popping
301         them off the bus.
302
303 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
304
305         * bus/desktop-file.c (parse_key_value): Ignore locales allowing 
306         the parser to continue instead of returning error
307         (bus_desktop_file_load): Do not free parser data when
308         parse_section_start or parse_key_value fails because it was 
309         already freed by parser_free (patch from Carlos Garcia Campos  
310         <carlosgc at gnome.org>)
311
312 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
313
314         * dbus/dbus-auth.c, dbus/dbus-connection.c, dbus/dbus-keyring.c,
315         dbus/dbus-server-debug-pipe.c, glib/dbus-binding-tool-glib.c
316         glib/dbus-glib-tool.c, glib/dbus-gparser.c, glib/dbus-gproxy.c
317         test/test-segfault.c, test/test-utils.c,
318         test/glib/test-dbus-glib.c, tools/dbus-cleanup-sockets.c
319         tools/dbus-launch.c, tools/dbus-tree-view.c, tools/dbus-viewer.c:
320         Various cleanup of dead code and compiler warnings (patch from
321         Kjartan Maraas <kmaraas at gnome.org>) 
322
323 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
324
325         * glib/dbus-gmain.c (connection_setup_add_watch): plugged a leak
326         (patch from Carlos Garnacho Parro <carlosg at gnome.org>
327
328 2005-11-27  Robert McQueen  <robot101@debian.org>
329
330         * python/dbus_bindings.pyx: Repair my previous commit which reverted
331         part of the preceding one. Oops. Merge patch by Johan Hedberg
332         <johan.hedberg@nokia.com> to fix marshalling of 16-bit integer values
333         on big-endian platforms.
334
335         * test/python/test-client.py: Add some 16-bit integers to the test
336         values.
337
338 2005-11-27  Carlos Garcia Campos  <carlosgc@gnome.org>
339
340         * glib/dbus-gobject.c: Append a GValue instead of a basic type in
341         method return message for property getters
342
343 2005-11-27  Robert McQueen  <robot101@debian.org>
344
345         * python/dbus_bindings.pyx: Fix a bug where doing a strict append
346         with type v of an instance of dbus.Variant(foo, type='x') caused
347         it to be boxed twice before sending over the bus.
348
349         * python/dbus_bindings.pyx, python/service.py,
350         test/python/test-client.py: Update the constants for the new
351         request_name flags, and update comments/test cases now that queueing
352         is the default action.
353
354 2005-11-22  John (J5) Palmieri  <johnp@redhat.com>
355
356         * configure.in:
357         - Change version to 0.60 for impending release
358         - upped the sonames because of ABI and API breakage
359
360 2005-11-22  John (J5) Palmieri  <johnp@redhat.com>
361
362         * configure.in: Add test/name-test/Makefile to the generated
363         Makefile list
364
365         * dbus/dbus-shared.h (#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT):
366         New flag which replaces DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT
367         (#define DBUS_NAME_FLAG_DO_NOT_QUEUE): New flag for specifying
368         not to queue an ower if it can't be the primary owner
369
370         * bus/bus.h: Add new internal BusOwner struct
371
372         * bus/driver.c (bus_driver_handle_hello): Send flags (0 for default)
373         to bus_registry_ensure and don't set the prohibit_replacement flag
374         since they are now set per BusOwner and not per name.
375         (bus_driver_handle_list_queued_owners): bus method (ListQueuedOwners) 
376         that returns the list of connections in a name's connection queue
377         
378         * bus/services.c (struct BusService): remove prohibit_replacement field
379         (struct BusOwner): new struct for keeping track of queued connections
380         and their associated flags for the queue
381         (struct BusRegistry): add a BusOwner memory pool
382         (bus_registry_new): initialize the BusOwner memory pool
383         (bus_registry_unref): free the BusOwner memory pool
384         (_bus_service_find_owner_link): new internal method for
385         searching the queue for a specific connection
386         (bus_owner_set_flags): new method for adding setting the flags on a
387         bus owner
388         (bus_owner_new): new method that creates a BusOwner object from the
389         pool and sets its flags
390         (bus_owner_ref, bus_owner_unref): ref counting for BusOwner objects
391         (bus_registry_ensure): Add the flags parameter
392         (bus_registry_acquire_service): Switch from using raw connections to
393         using the BusOwner struct
394         Add new state machine for dealing with the new set of flags
395         (bus_registry_set_service_context_table, struct OwnershipCancelData, 
396         cancel_ownership, free_ownership_cancel_data, 
397         add_cancel_ownership_to_transaction, struct OwnershipRestoreData, 
398         restore_ownership, free_ownership_restore_data, 
399         add_restore_ownership_to_transaction): Switch to using BusOwner 
400         instead of raw connections
401         (bus_service_add_owner): Add flags parameter
402         Switch to using BusOwner instead of raw connections
403         Add state machine for dealing with the new set of flags
404         (bus_service_swap_owner): Swaps the first and second owners in the
405         queue.  Used to make sure proper signals are sent when a service looses 
406         or gains primary ownership.  We never insert an owner at the top of the
407         queue.  Instead we insert it in the second position and then swap.
408         (bus_service_remove_owner): Remove the owner from the queue sending
409         out the NameLost and NameOwnerChanged signals if the we were the 
410         primary owner
411         (bus_service_get_primary_owners_connection): New method that extracts
412         the connection from the primary owner
413         (bus_service_get_primary_owner): Returns the BusOwner instead of the 
414         connection
415         (bus_service_get_allow_replacement): Changed from the old 
416         bus_service_get_prohibit_replacement method.  Checks the flags of the 
417         primary owner and returns if it can be replaced or not
418         (bus_service_set_prohibit_replacement): removed
419         (bus_service_has_owner): returns TRUE if and owner with
420         the specified connection exists in the queue
421         
422         * dbus/dbus-bus.c (dbus_bus_connection_get_unique_name): New helper
423         method that only compiles if tests are enabled.  Allows us to get the 
424         unique name of a connection so we can check it against the queue when
425         doing regression tests
426
427         * bus/activation.c (bus_activation_send_pending_auto_activate),
428         bus/dispatch.c (bus_dispatch),  
429         bus/driver.c (bus_driver_handle_get_service_owner, 
430         bus_driver_handle_get_connection_unix_user, 
431         bus_driver_handle_get_connection_unix_process_id,
432         bus_driver_handle_get_connection_selinux_security_context),
433         bus/signals.c (connection_is_primary_owner): 
434         use bus_service_get_primary_owners_connection instead of
435         bus_service_get_primary_owner
436
437         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket, 
438         _dbus_listen_unix_socket): Calculate the length of the socket
439         path and use that instead of using a fixed length which was
440         causing socket names to contain many trailing Nul bytes.
441
442         * dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c
443         (dbus_g_method_get_sender): New method for extracting the sender 
444         from a DBusGMethodInvocation
445         (dbus_g_method_return_get_reply): changed name to 
446         dbus_g_method_get_reply
447         (dbus_g_method_return_send_reply): changed name to
448         dbus_g_method_send reply
449
450         * doc/dbus-specification.xml: New docs that describe how the new
451         queueing system works and talks about the changes to the how
452         we specify socket names
453
454         * glib/examples/example-service.c, 
455         glib/examples/example-signal-emitter.c,
456         glib/examples/statemachine/statemachine-server.c:
457         Changed the RequestName flags to the new system
458
459         * test/name-test/ (test-names.c, run-test.sh, Makefile.am): New
460         regression test suite for testing various states of the new
461         queueing system
462         
463 2005-11-15  Robert McQueen  <robot101@debian.org>
464
465         * dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c: Patch from Rob
466         Taylor to add two methods, dbus_g_method_return_get_reply and
467         dbus_g_method_return_send_reply, to allow you to get the reply
468         message from a DBusGMethodInvocation, append arbitrary stuff to it,
469         and send it. The GLib bindings can't marshal a return value of
470         something like a(s) if the array is empty - ultimately they should be
471         made to heed the signature of the out arguments as the Python bindings
472         now can, but this is a workable interim solution which might have
473         other applications.
474
475 2005-11-15  Robert McQueen  <robot101@debian.org>
476
477         * bus/driver.c, bus/services.c, bus/services.h: Add a ReleaseName
478         method to org.freedesktop.DBus to release a bus name or give up
479         waiting in the queue for it.
480
481         * dbus/dbus-bus.c, dbus/dbus-bus.h, dbus/dbus-shared.h: Add a
482         dbus_bus_release_name method to send the ReleaseName method calls.
483         Add constants for the return values to dbus/dbus-shared.h.
484
485         * doc/dbus-specification.xml: Document the new ReleaseName method
486         in the specification.
487
488         * python/dbus_bindings.pyx: Add a low-level python binding for the
489         release name method.
490
491         * python/exceptions.py, python/service.py: Make freeing BusName
492         objects release the name. Add a NameExistsException, and fix a
493         bug with creating UnknownMethodException.
494
495         * test/python/test-client.py: Add tests for freeing BusName
496         objects causing names to be released.
497
498 2005-11-14  Robert McQueen  <robot101@debian.org>
499
500         * python/service.py: Include the traceback in the error reply when we
501         send an exception over the bus. _BEST_ _PATCH_ _EVER_
502
503 2005-11-14  David Zeuthen  <davidz@redhat.com>
504
505         Patch from Timo Hoenig <thoenig@suse.de>.
506
507         * bus/bus.c: I've recently investigated why the automatic reload
508         of configuration files does not work as expected.
509
510         Currently, reloading configuration files does only work when
511         running dbus-daemon with --nodaemon.  If we are running as daemon
512         we're hitting a dnotify bug once we fork the process.
513
514         We're initializing the dnotify fds before calling fork().  Once
515         the child process forked it does still have the fds (and they
516         still show up in /proc/`pidof dbus-daemon`/fd/) but we're not
517         getting SIGIO as changes are made to the configuration files.
518
519         The attached patch moves the initialization of the dnotify fds to
520         process_config_postinit().  This is safe for all current code
521         paths and solves the dnotify disfunction.  If we're running
522         dbus-daemon as daemon the fds for dnotify are now being
523         initialized after fork() for the child process.
524
525         * configure.in: The current configure.in check for dnotify probes
526         'x$target_os' for being 'xlinux-gnu'.  I've changed the check to
527         match for 'xlinux', too. Additionally I have adapted the configure
528         option's style to match with the others.
529
530 2005-11-14  Robert McQueen  <robot101@debian.org>
531
532         * python/decorators.py, python/service.py: Add a new argument to the
533         dbus.service.method decorator called sender_keyword, which if set,
534         specifies the name of an argument which will be provided the bus
535         name of the method caller.
536
537         * test/python/test-client.py, test/python/test-service.py: Add a
538         method and test to check the sender_keyword functionality.
539
540 2005-11-07  John (J5) Palmieri  <johnp@redhat.com>
541
542         * bus/driver.c (bus_driver_handle_reload_config): Make sure we send an 
543         empty reply so blocking calls don't block forever (Patch from Sjoerd 
544         Simons <sjoerd at luon.net>)
545
546         * AUTHORS: Add Robert McQueen for his work on the Python
547         Bindings and other parts of D-Bus
548
549 2005-11-07  Robert McQueen  <robot101@debian.org>
550
551         * python/decorators.py: Change emit_signal function to use the
552         signature annotation of the signal when marhsalling the arguments from
553         the service. Fix a bug where the code checking signature length
554         against argument length referenced the wrong variable.
555
556         * python/introspect_parser.py: Avoid adding the type signature of
557         signal arguments to any methods which occur after them in the
558         introspection data (!) by making the parser a little more careful
559         about its current state.
560
561         * python/service.py: Remove debug prints from last commit (again :D).
562
563         * test/python/test-client.py, test/python/test-service.py: Add test
564         signals with signature decorators to test the strict marshalling code
565         gives errors at the right time. Could do with checking the signals
566         actually get emitted too, given that the test does nothing with
567         signals at the moment...
568
569 2005-11-07  Robert McQueen  <robot101@debian.org>
570
571         * python/_dbus.py: Add WeakReferenceDictionary cache of dbus.Bus
572         instances to stop madness of creating new instances representing
573         the same bus connection all the time, rendering any tracking of
574         match rules and bus names quite meaningless. Caught a bug where
575         the private argument to SessionBus() and friends was being passed
576         in as use_default_mainloop by mistake. Still some problems with
577         multiple dbus_binding.Connection instances representing the same
578         low-level connection (eg when you use both SessionBus() and
579         StarterBus() in same process), but it's a lot better now than it
580         was.
581
582         * python/dbus_bindings.pyx: Add constants with the return values
583         for bus_request_name().
584
585         * python/service.py: Store bus name instances in a per-dbus.Bus cache
586         and retrieve the same instances for the same name, so deletion can be
587         done with refcounting. Also now throws some kind of error if you
588         don't actually get the name you requested, unlike previously...
589
590         * test/python/test-client.py: Add tests for instance caching of buses
591         and bus name objects.
592
593 2005-11-04  Robert McQueen  <robot101@debian.org>
594
595         * python/dbus_bindings.pyx, test/python/test-client.py: Fix
596         marshalling of boolean values. Add some booleans to the values in
597         the test client.
598
599         * python/decorators.py, python/service.py: Add an 'async_callbacks'
600         argument to the dbus.service.method decorator, which allows you to
601         name arguments to take two callback functions for replying with
602         return values or an exception.
603
604         * test/python/test-client.py, test/python/test-service.py: Add test
605         case using asynchronous method reply functions, both return values and
606         errors, and from within both the function itself and from a mainloop
607         callback.
608
609         * python/decorators.py, python/service.py: Perform checking that the
610         number of method/signal arguments matches the number of types in the
611         signature at class loading time, not when you first introspect the
612         class.
613
614         * python/service.py: Remove debug print left by the last commit.
615
616 2005-11-03  Robert McQueen  <robot101@debian.org>
617
618         * python/service.py: Heavy refactoring of method invocation, with
619         hopefully no effect on functionality. Nuked _dispatch_dbus_method_call
620         in favour of a new _message_cb that uses seperate functions for
621         looking up the method to call, marshalling the return values, and
622         sending exceptions as errors, and is easier to follow as a
623         consequence.  Fixes some corner cases about returning things that
624         don't match your declared out_signature, allows exceptions to define
625         _dbus_error_name and have it be sent over the bus as the error name,
626         and paves the way for cool stuff like heeding the message no reply
627         flag, asynchronous method implementations, informing the method of the
628         sender, and including backtraces in the error messages.
629
630         * test/python/test-client.py: Catch and print exceptions thrown in the
631         async callback tests, rather than passing them to the low-level
632         bindings to be ignored in a noisy and frustrating manner.
633
634 2005-11-03  Robert McQueen  <robot101@debian.org>
635
636         * python/_dbus.py, python/proxies.py, python/service.py: Add __repr__
637         functions to dbus.Bus, dbus.service.BusName and dbus.service.Object,
638         tweak others to be consistent.
639
640         * test/python/test-client.py: Tweak output of testInheritance.
641
642 2005-10-29  Robert McQueen  <robot101@debian.org>
643
644         * python/service.py: Major changes to allow multiple inheritance
645         from classes that define D-Bus interfaces:
646         
647          1. Create a new Interface class which is the parent class of
648             Object, and make the ObjectType metaclass into InterfaceType.
649         
650          2. Patch written with Rob Taylor to replace use of method_vtable
651             with code that walks the class's __MRO__ (method resolution order)
652             to behave like Python does when invoking methods and allow
653             overriding as you'd expect. Code is quite tricky because
654             we have to find two methods, the one to invoke which has the
655             right name and isn't decorated with the /wrong/ interface,
656             and the one to pick up the signatures from which is decorated
657             with the right interface.
658         
659             The same caveats apply as to normal multiple inheritance -
660             this has undefined behaviour if you try and inherit from two
661             classes that define a method with the same name but are
662             decorated with different interfaces. You should decorate
663             your overriding method with the interface you want.
664         
665          3. Replace grungy introspection XML generation code in the metaclass
666             with dictionaries that cope correctly with multiple inheritance
667             and the overriding of methods. This also uses the signature
668             decorations to provide correct introspection data, including
669             the debut appearance of the types of your return values. :D
670
671         * test/python/test-client.py, test/python/test-service.py: Add a test
672         case to try invoking an method that overrides one inherited from a
673         D-Bus interface class.
674
675 2005-10-29  Robert McQueen  <robot101@debian.org>
676
677         * python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert().
678         Add checking for the end of struct character when marshalling a
679         struct in MessageIter.append_strict.
680
681         * python/examples/example-service.py,
682         python/examples/gconf-proxy-service.py,
683         python/examples/gconf-proxy-service2.py: Update to use gobject
684         mainloop directly rather than appearing to depend on gtk.
685
686         * python/test/test-client.py, python/test/test-server.py: Remove
687         obsolete and broken test scripts for old bindings. We have up to date
688         and working tests in test/python/.
689
690 2005-10-29  Robert McQueen  <robot101@debian.org>
691
692         * python/decorators.py: Add optional arguments to the method and
693         signal decorators to allow you to specify the signature of arguments
694         and return values. Preserve the doc strings of signal functions in the
695         decorated version, for pydoc and friends.
696
697         * python/dbus_bindings.pyx, python/proxies.py: Replace the
698         parse_signature_block function with an iterable dbus.Signature()
699         type. Fix a bug in MessageIter.append_strict where you could append
700         anything by claiming it was a string.
701
702         * python/service.py: Use the out_signature decoration on methods to
703         marshal return values, meaning you no longer require dbus.Array()
704         or dbus.Dictionary() to indicate the type when returning empty
705         arrays or dictionaries. Fix a bug where exceptions which are defined
706         in __main__ are not turned into error replies.
707
708         * test/python/test-client.py, test/python/test-service.py: Add test
709         for correct marshalling of return values according to out_signature.
710         Fix a bug in the async call test where the error_handler is missing a
711         self argument.
712
713 2005-10-29  Robert McQueen  <robot101@debian.org>
714
715         * glib/Makefile.am, glib/examples/Makefile.am,
716         glib/examples/statemachine/Makefile.am: Merge patch from Ubuntu by
717         Daniel Stone to replace explicit calls to libtool with $(LIBTOOL).
718
719         * test/python/.cvsignore: Add run-with-tmp-session-bus.conf.
720
721         * tools/dbus-monitor.1, tools/dbus-monitor.c: Merge dbus-monitor patch
722         from Ubuntu by Daniel Silverstone to allow specifying match rules on
723         the command line.
724
725 2005-10-27  Ross Burton  <ross@openedhand.com>
726
727         * dbus/dbus-marshal-header.c:
728         Remove dead code.
729
730         * glib/dbus-gobject.c:
731         Stop compiler warning.
732
733 2005-10-25  Ross Burton  <ross@openedhand.com>
734
735         * dbus/dbus-auth.c:
736         * dbus/dbus-server-unix.c:
737         * dbus/dbus-transport-unix.c:
738         * glib/dbus-gmain.c:
739         * glib/dbus-gobject.c:
740         Add some const keywords.
741
742 2005-10-25  Ross Burton  <ross@openedhand.com>
743
744         * doc/dbus-specification.xml:
745         Document the NoReply annotation.
746
747         * glib/dbus-binding-tool-glib.h:
748         * glib/dbus-binding-tool-glib.c:
749         Respect the NoReply annotation.
750
751 2005-10-24  Robert McQueen <robot101@debian.org>
752
753         * python/dbus_bindings.pyx (String, MessageIter): make D-Bus strings
754         derive from unicode instead of str, and encode/decode UTF-8 when
755         marshalling/unmarshalling bus messages
756
757         * python/introspect_parser.py: encode introspection data as UTF-8
758         before passing the buffer into libxml2
759
760         * test/python/test-client.py: add unicode test strings
761
762         * test/data/valid-service-files/.cvsignore, test/python/.cvsignore:
763         ignore generated python test files
764
765 2005-10-17  John (J5) Palmieri  <johnp@redhat.com>
766
767         * glib/dbus-gvalue-utils.c (hash_free_from_gtype): handle gdouble
768         and G_TYPE_VALUE_ARRAY (DBUS_TYPE_STRUCT)
769         (gvalue_from_hash_value, hash_value_from_gvalue): handle gdouble
770
771         * glib/dbus-gvalue.c (dbus_gvalue_to_signature): add missing
772         DBUS_STRUCT_BEGIN_CHAR and DBUS_STRUCT_END_CHAR charaters
773         when constructing struct signatures
774
775         * python/_dbus.py (Bus): handle private connections using the
776         private keyword in the constructor. defaults to private=False
777         (Bus::close): new method to close a connection to the bus
778
779         * python/dbus_bindings.pyx (Connection::close): renamed method
780         was previously called disconnect
781         (bus_get): now supports getting a private connection
782
783         * python/proxies.py (ProxyMethod::__call__): check if ignore_reply
784         keyword is set to True.  if it is, execute the method without waiting
785         for a reply
786         (ProxyObject::_introspect_execute_queue): new method for executing
787         all the pending methods that were waiting for the introspect to
788         finish.  this is called when introspect either succeeds or fails
789         (ProxyObject::_introspect_error_handler): call queued methods
790
791 2005-10-14  John (J5) Palmieri  <johnp@redhat.com>
792
793         * python/dbus_bindings.pyx (MessageIter::append_strict): check for
794         STRUCT_BEGIN not TYPE_STRUCT in indicate we are marshalling a struct
795
796         * python/service.py (Object::_message_cb): handle exceptions correctly
797         by sending them over the wire to the calling app.  This makes sure
798         the client returns immediately instead of waiting the 15 seconds to
799         timeout.
800
801         * test/python/test-client.py (TestDBusBindings::testBenchmarkIntrospect): 
802         Add a test to benchmark how long it takes to introspect a service and 
803         call a method which returns a large element (pretty fast)
804
805         * test/python/test-service.py (TestObject::GetComplexArray): new test 
806         method which pushes a lot of data
807
808 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
809
810         * python/service.py(ObjectType::_reflect_on_signal, _reflect_on_method):        
811         reclaim memory outside of the loop and use del istead of just setting
812         the key to None
813
814 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
815
816         * python/service.py (ObjectType::_reflect_on_signal): Always close
817         signal tag even when there are no arguments
818
819 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
820
821         * configure.in: Set mono, mono-docs and Qt3 to default
822         to no instead of auto when building.  These bindings do not
823         have full time maintainers and will not be supported for the
824         1.0 release.
825
826 2005-10-12  John (J5) Palmieri  <johnp@redhat.com>
827
828         patches from Michael Krivoruchko <misha at sun.com>: 
829         
830         * dbus/dbus-connection.c (_dbus_connection_queue_received_message_link,
831         _dbus_connection_message_sent, 
832         _dbus_connection_send_preallocated_unlocked_no_update, 
833         _dbus_connection_pop_message_link_unlocked): handle the case when path 
834         is NULL when calling _dbus_verbose
835
836         * configure.in: check for functions getpeerucred and getpeereid
837
838         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): provides 
839         support of auth EXTERNAL on Solaris 10+ (getpeerucred), FreeBSD 4.6+, 
840         OpenBSD 3.0+ and FreeBSD 5.0+ as well as MacOSX 10.2+ (getpeereid). 
841         Patch was only tested on Solaris 10 x86 so it might be issues
842         with other platforms (i.e. BSDs and MacOSX)
843         
844
845 2005-10-05  John (J5) Palmieri  <johnp@redhat.com>
846
847         * glib/dbus-gvalue.c (marshal_variant): call _dbus_gvalue_marshal 
848         instead of marshal basic so we can handle recursive types in a variant
849
850         * test/glib/test-dbus-glib.c: Add test for marshaling recurive types
851         in variants
852
853         * test/glib/test-service-glib.c, test-service-glib.xml
854         (my_object_echo_variant [EchoVariant], 
855         my_object_process_variant_of_array_of_ints123
856         [ProcessVariantOfArrayOfInts123]): 
857         Add two test methods
858
859         * python/introspect_parser.py: New module for parsing introspect
860         data.
861
862         * python/dbus_bindings.pyx:
863         (various places): when throwing errors fix to use errormsg instead 
864         of message local variable because Pyrex can get confused with other 
865         message variables (initial patch by Robert McQueen 
866         <robert.mcqueen at collabora.co.uk>)
867         (MessageIter::parse_signature_block): new method for getting the next
868         block in a signiture.
869         (MessageIter::append_strict): new method for appending values strictly
870         using the passed in signature instead of guessing at the type
871         (MessageItter:: append_dict, append_struct, append_array): use 
872         signatures to marshal children if the signature is available
873         
874         * python/exceptions.py (IntrospectionParserException): new exception
875
876         * python/proxies.py (ProxyMethod::__call__): Marshal args with 
877         introspected signatures if available, else we fall back to the
878         old way of doing things.
879         (ProxyObject::_introspect_reply_handler ): parse introspection data
880         
881         * python/service.py (ObjectType::_reflect_on_method): Properly
882         terminate <method> if there are no args in the reflection data
883
884         * test/python/test-client.py: add tests for talking with the GLib
885         test server.  This gives us better coverage for introspection since
886         python to python will always generate arguments as variants.  It also
887         allows us to test the robustness of the GLib bindings and interlanguage
888         communications.
889
890         
891 2005-10-03  John (J5) Palmieri  <johnp@redhat.com>
892
893         * bus/driver.c (bus_driver_handle_introspect): Add signals
894         to the introspect data. (patch from Daniel P. Berrange 
895         <dan at berrange.com>)
896
897         * bus/dispatch.c (check_existent_ping): Add testcase for Ping
898         
899         * dbus/dbus-connection.c (_dbus_connection_peer_filter,
900         _dbus_connection_run_builtin_filters): Changed these to
901         be unlock_no_update functions and call 
902         _dbus_connection_send_unlocked_no_update instead of
903         dbus_connection_send to avoid locking errors.
904         
905         * doc/TODO: Removed the make Ping test TODO
906         
907 2005-09-26  John (J5) Palmieri  <johnp@redhat.com>
908
909         * dbus/Python.pyx: Fixed memory leaks when throwing errors.
910         We now copy the message from a DBusError and then free 
911         the error object befor throwing the error
912
913         * glib/dbus-glib-tool.c: removed extra comma at the end of the
914         DBusBindingOutputMode enum which was causing a warning.
915         #include <time.h> so using time_t is explicitly defined
916
917 2005-09-26  John (J5) Palmieri  <johnp@redhat.com>
918
919         * Integrate patches from Lennart Poettering <mzsqb at 0pointer.de>:
920         - dbus/dbus-bus.c
921         (internal_bus_get): new method that take over the heavy lifting
922         of dbus_bus_get and adds the ability to get a private connection
923         to the bus
924         (dbus_bus_get): wrapper to internal_bus_get that provides the same
925         interface as in previous versions
926         (dbus_bus_get_private): new method that is a wrapper to 
927         internal_bus_get to get a private connection to the bus
928
929         - dbus/dbus-bus.h
930         (dbus_bus_get_private): add as a public libdbus interface
931
932         - dbus-1.pc.in: output system_bus_default_address and 
933         sysconfdir variables so apps can use them when compiling
934
935 2005-09-23  Harald Fernengel  <harry@kdevelop.org>
936         * dbus/qt: New Qt bindings
937
938 2005-09-12  Waldo Bastian  <bastian@kde.org>
939
940         * dbus/dbus-marshal-validate.c,
941         doc/dbus-specification.xml, test/Makefile.am,
942         test/test-names.c: allow hyphens in bus names.
943
944 2005-09-11  Mark McLoughlin  <mark@skynet.ie>
945
946         * test/data/auth/fallback.auth-script: we don't
947         retry the EXTERNAL method when we know its going
948         to fail anymore.
949
950 2005-09-11  Mark McLoughlin  <mark@skynet.ie>
951
952         * dbus/dbus-connection-internal.h: rename
953         (add|remove|toggle)_(watch|timeout) to unlocked()
954         
955         * dbus/dbus-connection.c: ditto.
956         
957         * dbus/dbus-timeout.c, dbus/dbus-transport-unix.c:
958         Update some callers for the renaming.
959
960 2005-09-10  Mark McLoughlin  <mark@skynet.ie>
961
962         * dbus/dbus-auth.c: (record_mechanisms): don't
963         retry the first auth mechanism because we know
964         we're just going to get rejected again.
965         
966         * dbus/dbus-keyring.c: (_dbus_keyring_reload):
967         Fix thinko ... and what a nasty little bugger to
968         track down you were ...
969
970         * dbus/dbus-connection.c:
971         (_dbus_connection_add_watch),
972         (_dbus_connection_remove_watch): add note about
973         these needing the connection to be locked.
974         (_dbus_connection_get_dispatch_status_unlocked):
975         set status to DATA_REMAINS when we queue the
976         disconnected message.
977         
978         * bus/dispatch.c:
979         (bus_dispatch): fix warning.
980         (check_existent_service_no_auto_start):
981         Expect ChildSignaled error too.
982         (check_existent_hello_from_self): fix another
983         couple of warnings.
984         
985 2005-09-08  Joe Shaw  <joeshaw@novell.com>
986
987         Patches from James Willcox <snorp@snorp.net>
988
989         * mono/Makefile.am: Add Int16.cs and UInt16.cs
990
991         * mono/DBusType/Array.cs: Handle multidimensional arrays, and
992         support array "out" parameters.
993
994         * mono/DBusType/Int16.cs, mono/DBusType/UInt16.cs: New files,
995         for 16-bit int support.
996
997 2005-09-06  John (J5) Palmieri  <johnp@redhat.com>
998
999         * Released 0.50
1000
1001         * Patch from Steve Grubb:
1002         - bus/activation.c (bus_activation_service_reload_test): clean up
1003         some indentation
1004         - dbus/dbus-keyring.c (_dbus_keyring_reload): fix conditional 
1005         - dbus/dbus-message-factory.c (generate_special): fix a couple of
1006         buffer overflows in the test suite.  This is non critical because
1007         it can not be exploited and this code is only run when doing a 
1008         make check.
1009
1010         * Patch from Yaakov Selkowitz: Build fixes for Cygwin
1011         - configure.in: Don't check and link against kdecore, only qt headers
1012         - dbus/Makefile.am: Add -no-undefined to libdbus_1_la_LDFLAGS
1013         - gcj/org/freedesktop/dbus/Makefile.am:
1014         add libdbus_gcj_1_la_LDFLAGS = -no-undefined
1015         - glib/Makefile.am: Add -no-undefined to libdbus_glib_1_la_LDFLAGS
1016         and $(DBUS_GLIB_LIBS) to dbus_binding_tool_LDADD
1017         - qt/Makefile.am: Add -no-undefined to libdbus_qt_1_la_LDFLAGS
1018         - tools/Makefile.am: Add platform extentions to binaries 
1019         (i.e. .exe on windows)
1020
1021         * configure.in: 
1022         - Make it so if no suitable version of python is found we only 
1023         disable building python instead of exiting the configure script
1024         - Require version 2.4 of glib for glib bindings
1025         - Up version to 0.50
1026
1027         * python/__init__.py: Sync version with libdbus to (0,50,0)
1028         
1029 2005-09-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1030
1031         * dbus/dbus-object-tree.c (find_subtree_recurse):
1032         a couple of optimizations (bug #710):
1033         - do a binary search in the tree
1034         - insert a new child at the right place directly, no need for
1035           qsort anymore
1036         - do the "double alloc" thing when allocating children
1037
1038 2005-08-31  John (J5) Palmieri  <johnp@redhat.com>
1039
1040         * python/Makefile.am: Break on pyrexc errors instead of ignoring them
1041
1042         * python/dbus_bindings.pyx: Memory management foo
1043         (global): remove hacky _user_data_references global list
1044         (GIL_safe_cunregister_function_handler): userdata now stuffed into
1045         tuples. Unref user_data
1046         (GIL_safe_cmessage_function_handler): userdata now stuffed into tuples
1047         (Connection::__del__): Remove and replace with __dealloc__ method
1048         (Connection::add_filter): Stuff user_data into a tuple.  Use Py_INCREF
1049         to keep tuple from being deallocated instead of the global var hack
1050         (Connection::register_object_path): Stuff user_data into a tuple.
1051         Use Py_INCREF to keep tuple from being deallocated instead of the 
1052         global var hack
1053         (Connection::register_fallback): Stuff user_data into a tuple.
1054         Use Py_INCREF to keep tuple from being deallocated instead of the 
1055         global var hack
1056         (GIL_safe_pending_call_notification): Don't unref the message
1057         because it gets unreffed when going out of scope.  Py_XDECREF
1058         the user_data
1059         (PendingCall::__del__): Remove and replace with __dealloc__ method
1060         (PendingCall::set_notify): ref the pending call because we will
1061         need it to stick around for when the notify callback gets called
1062         (Message::__del__): Remove and replace with __dealloc__ method
1063
1064         * python/dbus_glib_bindings.pyx (init_gthreads): Changed to 
1065         gthreads_init to match up with the dbus call
1066
1067         * python/glib.py (init_threads): Changed to threads_init to match
1068         up with gobject.threads_init().  init_threads is kept for backwards
1069         compat but will most likely be deprecated in the future
1070
1071         * test/python/test-client.py: 
1072         - revamp to use Python's unittest functionality
1073         - add async call tests
1074         - setup threads in glib and dbus so we make sure locks are working
1075         
1076 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
1077
1078         * python/dbus_bindings.pyx 
1079         (_pending_call_notification, cunregister_function_handler, 
1080         cmessage_function_handler): All callback functions have been rearranged 
1081         to workaround a bug in Pyrex when working with the GIL which is Python's 
1082         global lock when dealing with threads.  They have been split into
1083         a wrapper function (which assumes the name of the old function) and
1084         a _GIL_safe_<function name> function which contains the functionality
1085         of the old function.  This ensures that Pyrex does not write code
1086         the lock is released.
1087         
1088
1089 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
1090
1091         * python/dbus_bindings.pyx (_pending_call_notification): Obtain the
1092         GIL global lock when calling back into Python
1093
1094 2005-08-29  John (J5) Palmieri  <johnp@redhat.com>
1095
1096         * Release 0.36.2
1097
1098         * Add Havoc's patch that never got applied to HEAD (Bug #2436):
1099
1100         * bus/policy.c (bus_policy_allow_user): change default "user is
1101         allowed" to be "user has same uid as the bus itself"; any
1102         allow/deny rules will override.
1103
1104         * bus/session.conf.in: don't allow all users, since now by default
1105         the user that ran the bus can connect.
1106
1107 2005-08-26  Colin Walters  <walters@verbum.org>
1108
1109         * tools/dbus-print-message.c (print_message): Flush stdout
1110         after printing a message, so that redirecting to a file, then
1111         hitting Ctrl-C works.
1112
1113 2005-08-25  John (J5) Palmieri  <johnp@redhat.com>
1114
1115         * python/dbus_bindings.pyx: Tracked down a major memleak and fixed it
1116         (EmptyMessage): new class that subclasses Message.  This is a workaround
1117         to a Pyrex bug that fails to call __del__ when the Message object goes out
1118         of scope.  For some reason subclassing Message fixes this bug
1119         (Bus::send_with_reply_and_block): use EmptyMessage instead of Message
1120         - s/Message(_create=0)/EmptyMessage everywhere else
1121         
1122         * test/python/test-{server|client}.py: add the python/.libs directory
1123         to the lookup path so dbus_bindings and dbus_glib_bindings don't
1124         get picked up from the system
1125
1126 2005-08-25  Colin Walters  <walters@verbum.org>
1127
1128         * glib/dbus-gproxy.c (dbus_g_proxy_call): Doc update, thanks
1129         to Ryan Lortie for the suggestion.
1130
1131 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
1132
1133         * test/python: Add python regression test
1134
1135         * configure.in: Add test/python/Makefile
1136
1137         * test/Makefile.am: Add the python directory to SUBDIRS
1138
1139 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
1140
1141         * Release 0.36.1
1142
1143         * python/_dbus.py: 
1144         (Interface::connect_to_signal): propigate keywords for match on args
1145         (Bus::add_signal_receiver): Fix typo s/dbus_inteface/dbus_interface
1146
1147         * python/proxies.py (ProxyObject::connect_to_signal):
1148         propigate keywords for match on args
1149
1150         * Makefile.am: point everything to pyexecdir since python borks
1151         on multilib
1152
1153 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
1154
1155         * Release 0.36
1156
1157 2005-08-23  Colin Walters  <walters@verbum.org>
1158
1159         * test/glib/Makefile.am: Don't multiply-define EXTRA_DIST.
1160
1161 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
1162
1163         * python/dbus_glib_bindings.pyx: reorder imports and c definitions
1164         to fix some wranings. We now use dbus_bindings.DBusConnection instead
1165         of defining DBusConnection ourselves.
1166
1167 2005-08-18  John (J5) Palmieri  <johnp@redhat.com>
1168
1169         * python/dbus.pth: New path file to fix up problems when installing
1170         c libraries to lib64 and python files to lib.
1171
1172         * python/Makefile.am: install dbus.pth in the correct spot
1173
1174 2005-08-17  John (J5) Palmieri  <johnp@redhat.com>
1175         * ChangeLog: clean up my last entry a bit
1176
1177         * doc/introspect.xsl: New stylesheet for converting introspection data
1178         into browser renderable xhtml. Contributed by Lennart Poettering.
1179
1180         * doc/introspect.dtd: Fixups in the introspect format from Lennart
1181         Poettering.
1182
1183         * doc/dbus-tutorial.xml: 
1184         - Add Colin Walter to the Authors section for authoring the GLib
1185         section
1186         - Add descriptions of the new signature and type functionality
1187         in the Python complex type mapping section
1188         - Add a sidenote on the new args matching functionality in 
1189         the Python bindings
1190         - Fixed up some of the examples to use the gobject.MainLoop
1191         instead of gtk.main
1192         
1193         * python/_dbus.py:
1194         (Bus::_create_args_dict): New. Converts a hash of arg matches
1195         to a more useable format
1196         (Bus::add_signal_receiver): add a **keywords parameter for catching
1197         arg match parameters
1198         (Bus::remove_signal_receiver): add a **keywords parameter for catching
1199         arg match parameters
1200         
1201         * python/matchrules.py:
1202         (MatchTree::exec_matches): Check for arg matches
1203         (SignalMatchRule::add_args_match): New method
1204         (SignalMatchRule::execute): Added args_list parameter as an optimization
1205         so we don't have to marshal the args more than once
1206         (SignalMatchRule::match_args_from_list): New method that checks to see
1207         if the rule's arg matches match an argument list.  Only arguments
1208         set in the rule are checked.
1209         (SignalMatchRule::match_args_from_rule): New method that checks to see
1210         if the rule's arg matches match another rule's.  All args have to match
1211         in order for this method to return true.  If either rule has more args
1212         then it is not a match.
1213         (SignalMatchRule::is_match): Add args match
1214         (SignalMatchRule::repr): Add args to the final output if they exist
1215
1216 2005-08-17  Ross Burton  <ross@burtonini.com>
1217
1218         * glib/dbus-gproxy.c:
1219         (dbus_g_proxy_call_no_reply): unref the message once sent.
1220         (dbus_g_proxy_call): protect against NULL proxy.
1221
1222 2005-08-16  John (J5) Palmieri  <johnp@redhat.com>
1223
1224         * python/__init__.py: Version updated (0, 43, 0)
1225         
1226         * python/dbus_bindings.pyx: 
1227         - Fixed type objects to have self passed into __init__
1228         - Added the Variant type
1229         - Add the ability to specify types or signatures for Array, Variant 
1230         and Dictionary
1231         (Connection::send_with_reply_handlers): return a PendingCall object
1232         (_pending_call_notification): handle the case when an error is returned 
1233         without an error message in the body
1234         (MessageIter::get_boolean): return True or False instead of an integer
1235         (MessageIter::python_value_to_dbus_sig): add direct checking of types 
1236         and add checks for objects with embeded signatures or types (Array, 
1237         Variant and Dictionary)
1238         (MessageIter::append_byte): handle case when the value is a dbus.Byte
1239         (MessageIter::append_dict): handle embeded types or signatures
1240         (MessageIter::append_array): handle embeded types or signatures
1241         (MessageIter::append_variant): new method
1242         
1243         * python/proxies.py:
1244         (DeferedMethod): New. Dummy executable object used when queuing calls 
1245         blocking on introspection data
1246         (ProxyMethod::__call__): add the timeout keyword for specifying longer 
1247         or shorter timeouts for method calls
1248         (ProxyObject): Add first pass at an introspection state machine
1249         (ProxyObject::__init__): Add introspect keyword for turing off an on 
1250         introspection. 
1251         (ProxyObject::_Introspect): Internal Introspect call that bypasses 
1252         the usual mechanisms for sending messages.  This is to avoid a deadlock
1253         where the Intospect call would be queued waiting for the Introspect 
1254         call to finish ;-)
1255         (ProxyObject::_introspect_reply_handler): New.  This method is called 
1256         when introspection returns with no error
1257         (ProxyObject::_introspect_error_handler): New.  This method is called 
1258         when introspection encounters an error
1259         (ProxyObject::__getattr__): Code to handle different introspection 
1260         states.  Queue async calls or block blocking calls if we are 
1261         introspecting.  Pass through as normal if we are not or are done with 
1262         introspecting.
1263         
1264         * python/service.py: Import signal and method from decorators.py
1265
1266         * python/types.py: Add Variant type
1267
1268 2005-08-16  Colin Walters  <walters@verbum.org>
1269
1270         * glib/dbus-gobject.c (dbus_set_g_error): Don't lose if the
1271         DBusError message is NULL.
1272
1273 2005-08-09  Havoc Pennington  <hp@redhat.com>
1274
1275         * dbus/dbus-errors.c: apply patch from Timo Teras to make a
1276         malloc'd copy of the name parameter
1277
1278 2005-08-09  Havoc Pennington  <hp@redhat.com>
1279
1280         * dbus/dbus-message.c (dbus_message_set_reply_serial): print
1281         warning if the reply serial is set to 0
1282
1283 2005-08-04  Colin Walters  <walters@verbum.org>
1284
1285         * glib/dbus-gvalue-utils.h (_dbus_g_type_specialized_builtins_init)
1286         (dbus_g_type_is_fixed, dbus_g_type_fixed_get_size)
1287         (dbus_gvalue_set_from_pointer, dbus_g_hash_table_value_foreach)
1288         (dbus_g_hash_table_insert_values, dbus_g_hash_table_insert_steal_values)
1289         (dbus_gtype_is_valid_hash_key, dbus_gtype_is_valid_hash_value)
1290         (dbus_g_hash_func_from_gtype, dbus_g_hash_free_from_gtype)
1291         (dbus_g_hash_equal_from_gtype, dbus_gvalue_stor, dbus_gvalue_take):
1292         * glib/dbus-gvalue.h (dbus_g_value_types_init)
1293         (dbus_gvalue_demarshal, dbus_gvalue_demarshal_variant)
1294         (dbus_gvalue_demarshal_message, dbus_gvalue_marshal):
1295         
1296         Prefix name with _ to ensure they're not exported.  All callers
1297         updated.
1298
1299         * glib/dbus-gvalue.c (typecode_to_gtype)
1300         (dbus_typecode_maps_to_basic, basic_typecode_to_gtype)
1301         (signature_iter_to_g_type_dict)
1302         (signature_iter_to_g_type_array)
1303         (dbus_gtype_from_signature_iter, dbus_gtype_from_signature)
1304         (dbus_gtypes_from_arg_signature):
1305         Move to dbus-gsignature.c.
1306
1307         * glib/dbus-binding-tool-glib.c (dbus_binding_tool_output_glib_server): Call
1308         dbus_g_type_specialized_builtins_init instead of dbus_g_value_types_init.
1309         (dbus_binding_tool_output_glib_client): Ditto.
1310
1311         * glib/Makefile.am (DBUS_GLIB_INTERNALS): Add dbus-gsignature.c
1312         and dbus-gsignature.h
1313
1314         * test/glib/test-service-glib.c (my_object_rec_arrays): Delete
1315         unused variable.
1316
1317 2005-08-03  Colin Walters  <walters@verbum.org>
1318
1319         * glib/dbus-gobject.c: Add tests on hardcoded object info; this should
1320         catch any incompatible changes accidentally made.
1321
1322 2005-08-03  Havoc Pennington  <hp@redhat.com>
1323
1324         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): fix
1325         typo, from Julien Puydt
1326
1327         * bus/connection.c (bus_connection_disconnected): we were always
1328         doing a wait_for_memory due to a buggy loop, found by Timo Hoenig
1329
1330 2005-08-01  Colin Walters  <walters@verbum.org>
1331
1332         Patch from Joe Markus Clarke:   
1333         
1334         * glib/dbus-gidl.c (property_info_unref, arg_info_unref): Fix
1335         use-after-free.
1336
1337 2005-08-01  Colin Walters  <walters@verbum.org>
1338         
1339         Patch from Joe Markus Clarke:   
1340         
1341         * tools/dbus-send.c (main): 
1342         
1343         Don't use C99 style initializers (bug #3933).
1344         
1345 2005-08-01  Colin Walters  <walters@verbum.org>
1346
1347         Patch from Joe Markus Clarke:   
1348
1349         * glib/dbus-gvalue.c (dbus_g_value_types_init): 
1350         * glib/dbus-gvalue-utils.c (dbus_g_type_specialized_builtins_init) 
1351         * glib/dbus-gobject.c (write_interface):
1352
1353         Don't use C99 style initializers (bug #3933).
1354
1355 2005-07-31  Havoc Pennington  <hp@redhat.com>
1356
1357         * tools/dbus-viewer.c (load_child_nodes): fix invocation of
1358         dbus_g_proxy_call, fix from Piotr Zielinski bug #3920
1359
1360 2005-07-30  Havoc Pennington  <hp@redhat.com>
1361
1362         * fix a bunch of Doxygen warnings and mistakes
1363
1364 2005-07-30  Havoc Pennington  <hp@redhat.com>
1365
1366         * dbus/dbus-sysdeps.c (_dbus_string_parse_uint): remove #ifdef
1367         DBUS_BUILD_TESTS since it's now used in production code
1368
1369 2005-07-29  Havoc Pennington  <hp@redhat.com>
1370
1371         * test/glib/test-profile.c (write_junk): initialize the junk
1372         buffer so valgrind doesn't have a breakdown
1373
1374 2005-07-29  Havoc Pennington  <hp@redhat.com>
1375
1376         * bus/signals.c (bus_signals_test): add match_rule_equal() tests
1377         (match_rule_matches): remove unused arg
1378         (test_matching): add tests for match_rule_matches()
1379
1380         * bus/signals.c (bus_match_rule_parse_arg_match): add ability to
1381         do arg0='foo' arg5='bar' in the match rules
1382         (match_rule_matches): don't match if the arg0='foo' doesn't match.
1383
1384         * dbus/dbus-protocol.h (DBUS_MAXIMUM_MATCH_RULE_ARG_NUMBER): add this
1385
1386 2005-07-29  Ross Burton  <ross@openedhand.com>
1387
1388         * dbus/dbus-connection.c:
1389         Don't create a DBusCondVar which is never used.
1390
1391 2005-07-27  Ross Burton  <ross@openedhand.com>
1392
1393         * dbus/dbus-message.c:
1394         Reduce the size of the maximum cached message to 10K.
1395
1396 2005-07-25  Ross Burton  <ross@openedhand.com>
1397
1398         * glib/dbus-gproxy.c:
1399         Remove matches when all proxies are unregistered.
1400
1401 2005-07-24  Colin Walters  <walters@verbum.org>
1402
1403         * glib/dbus-gvalue.c (signature_iter_to_g_type_array): Don't require
1404         typedata; recursive arrays won't have it.
1405
1406         * test/glib/test-dbus-glib.c:
1407         * test/glib/test-service-glib.c:
1408         * test/glib/test-service-glib.xml: Add recursive arrays tests.
1409         
1410 2005-07-20  John (J5) Palmieir  <johnp@redhat.com>
1411
1412         * python/_dbus.py, _util.py, decorators.py, extract.py, matchrules.py.
1413         proxies.py, service.py: Cleanup of code after running it through the
1414         pyflakes code checker mostly dealing with undefined names.  
1415         (Bug #3828, Patch from Anthony Baxter <anthony@interlink.com.au>)
1416
1417 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
1418
1419         * NEWS: Update to 0.35.2
1420
1421 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
1422
1423         * python/_dbus.py: Remove import of the dbus.services
1424         module as it no longer exists (patch from Dimitur Kirov)
1425
1426         * python/service.py (Object::__init__): Fixed typo
1427         s/name/bus_name (patch from Dimitur Kirov)
1428
1429         * python/examples/example-signal-emitter.py: import dbus.glib
1430         to get the main loop and use glib mainloop instead of gtk so
1431         X doesn't have to be running.
1432
1433         * python/examples/example-signal-recipient.py: import dbus.glib
1434         to get the main loop and use glib mainloop instead of gtk so
1435         X doesn't have to be running. Import the decorators module
1436         directly.
1437
1438         * test/glib/Makefile.am:  Added DIST_EXTRA files that distcheck
1439         didn't pick up on but are needed to build
1440
1441         * configure.in: upped version to 0.35.2
1442
1443         * bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h:
1444         added Colin Walters' SELinux API rename patch from head 
1445         s/unix sercurity context/selinux security context/
1446
1447 2005-07-16  John (J5) Palmieri  <johnp@redhat.com>
1448
1449         * python/Makefile.am: dbus_binding.pxd.in should be included 
1450         in EXTRA_DIST not dbus_binding.pxd
1451         fix up $(srcdir) hopefully for the last time
1452
1453         * NEWS: Update to 0.35.1
1454
1455 2005-07-16  Colin Walters  <walters@verbum.org>
1456
1457         * bus/driver.c (bus_driver_handle_get_connection_selinux_security_context): Renamed
1458         from bus_driver_handle_get_connection_unix_security_context.  Update for
1459         error usage.
1460         (message_handlers): Update for renames.
1461
1462         * bus/selinux.c (bus_selinux_allows_send): Handle OOM on
1463         _dbus_string_init failure correctly.
1464         (bus_selinux_append_context): Convert SID to context.  Append it
1465         as a byte array.
1466         (bus_selinux_shutdown): Handle the case where bus_selinux_full_init
1467         hasn't been called.
1468
1469         * bus/selinux.h: Update prototype.
1470
1471         * dbus/dbus-protocol.h (DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN): Renamed
1472         from DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN.
1473
1474 2005-07-15  Colin Walters  <walters@verbum.org>
1475
1476         * doc/TODO: Add note about convenience wrappers.
1477
1478 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1479
1480         * NEWS: Update to 0.35
1481
1482 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1483
1484         * glib/Makefile.am: Add make-dbus-glib-error-switch.sh to EXTRA_DIST
1485         so distcheck doesn't fail
1486
1487         * glib/examples/Makefile.am: Add example-service.xml and 
1488         example-signal-emitter.xml to EXTRA_DIST so distcheck doesn't fail
1489
1490         * glib/examples/statemachine/Makefile.am: Add statemachine.xml and
1491         statemachine-server.xml to EXTRA_DIST so distcheck doesn't fail
1492
1493         * python/Makefile.am: Preprend $(srcdir)/ to source files so the
1494         compiler looks in the right places during distcheck
1495
1496 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1497
1498         * glib/example/Makefile.am: Fix a typo which cause make distcheck
1499         to fail
1500
1501 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1502
1503         * python/examples/example-service.py,
1504         python/examples/example-signal-emitter.py: Fixed up examples
1505         for API changes
1506
1507 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1508
1509         * python/__init__.py: Upped to version (0,42,0) because of
1510         the API change
1511
1512 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1513
1514         * ChangeLog: fix date in last entry
1515
1516         * configure.in, bus/system.conf.in: add the ability to configure 
1517         the system bus user at compiletime with the --with-dbus-user flag
1518         (patch from Kristof Vansant)
1519
1520 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1521
1522         * bus/dispatch.c, test/test-service.c: Add testcase
1523         for sending messages to oneself (TODO item).
1524
1525         * python/service.py (class Object): Swap ordering of bus_name 
1526         and object_path parameters to better support inheritance.
1527
1528         * doc/dbus-tutorial.xml: change Python docs to reflect change
1529         in parameter ordering and fix the inheritance section.
1530
1531         * doc/TODO: remove sending message to oneself TODO item
1532
1533 2005-07-15  Ross Burton  <ross@openedhand.com>
1534
1535         * glib/dbus-gproxy.c:
1536         Fix a leak when calling methods via the proxy.
1537
1538 2005-07-15  Colin Walters  <walters@verbum.org>
1539
1540         * bus/selinux.c (bus_selinux_append_context): Wrap in
1541         HAVE_SELINUX.
1542
1543 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
1544
1545         * python/_dbus.py (Bus::remove_signal_receiver):
1546         don't add a callback to the match if none has been passed in
1547         
1548         * python/matchrules.py (SignalMatchTree::remove): if the rule
1549         being matched does not have a callback treat it as a wildcard
1550         fix matching logic
1551
1552         * doc/dbus-tutorial.xml: Add Python tutorial
1553
1554 2005-07-14  Colin Walters  <walters@verbum.org>
1555
1556         * bus/driver.c
1557         (bus_driver_handle_get_connection_unix_security_context): New function.
1558         (message_handlers): Add.
1559
1560         * bus/selinux.c (bus_selinux_append_context): New function; appends
1561         security context to message.
1562
1563         * bus/selinux.h: Prototype.
1564
1565         * dbus/dbus-protocol.h (DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN): New.
1566
1567 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
1568
1569         * bus/activation.c: clean up all tabs to be 8 spaces 
1570         (bus_activation_activate_service): make sure we clean up
1571         if activation fails
1572
1573         * bus/dispatch.c: clean up all tabs to be 8 spaces 
1574         (check_shell_fail_service_auto_start): New function
1575         tests to make sure we get fail properly when trying to auto start a service
1576         with a faulty command line
1577         (check_shell_service_success_auto_start): New function tests to make sure
1578         auto started services get the arguments on the command line
1579
1580         * test/test-shell-service.c: Added service for testing auto-starting with 
1581         command line arguments
1582
1583         * test/data/valid-service-files/debug-shell-echo-fail.service.in, 
1584         test/data/valid-service-files/debug-shell-echo-success.service.in:
1585         Added service files for testing auto-starting with command line arguments
1586
1587         * */.cvsignore: added a bunch of generated files to various .cvsignore files
1588
1589 2005-07-14  Rodrigo Moya  <rodrigo@novell.com>
1590
1591         * dbus/dbus-shell.[ch]: copy/pasted code from GLib.
1592         
1593         * dbus/Makefile.am: added new files to build.
1594
1595         * bus/activation.c (bus_activation_activate_service): support
1596         activation commands with parameters.
1597
1598         * test/shell-test.c: added test program for the shell parsing
1599         code.
1600
1601 2005-07-13  David Zeuthen  <davidz@redhat.com>
1602
1603         * tools/dbus-send.c (append_arg, type_from_name): Also support 16 and
1604         64 bit signed and unsigned parameters
1605
1606 2005-07-13  John (J5) Palmieri  <johnp@redhat.com>
1607
1608         * python/.cvsignore: remove dbus_bindings.pyx, add dbus_bindings.pxd
1609
1610         * python/service.py (class Name): renamed BusName to make it clearer
1611         what the object is for (a name on the bus)
1612
1613         * python/examples/example-service.py,
1614         python/examples/example-signal-emitter.py: change the Name object to
1615         BusName
1616
1617 2005-07-12  Colin Walters  <walters@verbum.org>
1618
1619         Patch from Jim Gettys <Jim.Gettys@hp.com>.
1620
1621         * tools/dbus-launch.c: Include sys/select.h.
1622
1623 2005-07-12  John (J5) Palmieri  <johnp@redhat.com>
1624         * python/dbus_bindings.pyx.in: removed
1625
1626         * python/dbus_bindings.pyx: Added.
1627         - Fixed some memleaks (patch from 
1628         Sean Meiners <sean.meiners@linspireinc.com>)
1629         - Broke out the #include "dbus_h_wrapper.h" and put it in its
1630         own pxd file (Pyrex definition)
1631         - Broke out glib dependancies into its own pyx module
1632         
1633         * python/dbus_bindings.pdx: Added.
1634         - Defines C class Connection for exporting to other modules
1635
1636         * python/dbus_glib_bindings.pyx: Added.
1637         - New module to handle lowlevel dbus-glib mainloop integration
1638
1639         * python/glib.py: Added.
1640         - Registers the glib mainloop when you import this module
1641
1642         * python/services.py: Removed (renamed to service.py)
1643         
1644         * python/service.py: Added.
1645         - (class Server): renamed Name
1646
1647         * python/__init__.py: Bump ro version (0,41,0)
1648         -don't import the decorators or service module
1649         by default.  These now reside in the dbus.service namespace
1650
1651         * python/_dbus.py (Bus::__init__): Add code run the main loop 
1652         setup function on creation 
1653
1654         * python/examples/example-service.py,
1655         python/examples/example-signal-emitter.py: update examples
1656
1657         * python/examples/gconf-proxy-service.py,
1658         python/examples/gconf-proxy-service2.py: TODO fix these up
1659
1660         * doc/TODO: Addition
1661         - Added a Python Bindings 1.0 section
1662         - added "Add match on args or match on details to match rules"
1663
1664
1665 2005-07-12  Colin Walters  <walters@verbum.org>
1666
1667         * glib/examples/statemachine/Makefile.am (statemachine-server-glue.h) 
1668         (statemachine-glue.h): 
1669         * glib/examples/Makefile.am (example-service-glue.h) 
1670         (example-signal-emitter-glue.h): 
1671         * glib/Makefile.am (dbus-glib-error-switch.h): 
1672         Add libtool --mode=execute so we use the built library instead
1673         of any installed one.
1674
1675 2005-07-11  Colin Walters  <walters@verbum.org>
1676
1677         * glib/dbus-gvalue.c (struct _DBusGValue): Delete.
1678         (dbus_g_value_types_init): Remove assertion.
1679         (dbus_g_value_get_g_type, dbus_g_value_open)
1680         (dbus_g_value_iterator_get_values, dbus_g_value_get_signature)
1681         (dbus_g_value_copy, dbus_g_value_free): Delete unimplemented
1682         functions related to DBusGValue.  Now we marshal/demarshal
1683         structures as GValueArray.
1684         (dbus_gtype_from_signature_iter): Return G_TYPE_VALUE_ARRAY for
1685         structures.
1686         (signature_iter_to_g_type_array): Don't call
1687         signature_iter_to_g_type_struct.
1688         (signature_iter_to_g_type_struct): Delete.
1689         (dbus_gvalue_to_signature): Delete.
1690         (dbus_gvalue_to_signature): New function with same name as other
1691         one; we can convert structures to signatures.
1692         (demarshal_valuearray): New function.
1693         (get_type_demarshaller): Use it.
1694         (demarshal_recurse): Delete.
1695         (marshal_proxy): New function.
1696         (marshal_map): Warn if we can't determine signature from type.
1697         (marshal_collection_ptrarray): Ditto.
1698         (marshal_collection_array): Ditto.
1699         (get_type_marshaller): Use marshal_valuearray.
1700         (marshal_recurse): Delete.
1701         (_dbus_gvalue_test): Add some tests.
1702
1703         * dbus/dbus-glib.h (struct _DBusGValueIterator): 
1704         (dbus_g_value_get_g_type, DBUS_TYPE_G_VALUE)
1705         (dbus_g_value_open, dbus_g_value_iterator_get_value)
1706         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
1707         (dbus_g_value_free): Remove prototypes.
1708
1709         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_lookup_function): Handle
1710         G_TYPE_VALUE_ARRAY.
1711
1712         * glib/examples/example-service.c:
1713         * glib/examples/example-client.c: Implement GetTuple.
1714
1715         * test/glib/test-dbus-glib.c:
1716         * test/glib/test-service-glib.c:
1717         * test/glib/test-service-glib.xml: Add structure tests.
1718
1719 2005-07-10  Colin Walters  <walters@verbum.org>
1720
1721         * doc/TODO: Knock off some GLib items with this patch.
1722
1723         * glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error) 
1724         (_dbus_gvalue_signals_error): New functions.
1725
1726         * glib/dbus-gvalue-utils.h: Prototype them.
1727
1728         * glib/dbus-gobject.c (arg_iterate): Update to handle return vals
1729         and change to not output const/retval flags for input args.  All
1730         callers updated.
1731         (invoke_object_method): Refactor to handle return values.  Add
1732         some more comments in various places.  Remove debug g_print.
1733
1734         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New.
1735
1736         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name):
1737         Handle G_TYPE_NONE.
1738         (compute_gsignature): New function; refactored from code from
1739         compute_marshaller and compute_marshaller_name.  Enhance to
1740         handle return values and async ops more cleanly.  Update for
1741         async ops returning NONE instead of BOOLEAN.
1742         (compute_marshaller, compute_marshaller_name): Call compute_gsignature
1743         and output appropriate string.
1744         (generate_glue): Handle return value annotation.  Also don't dump
1745         constness flag for input arguments.
1746
1747         * glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains
1748         files shared between installed library and utilities.
1749         (libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS.
1750         (libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the
1751         binding tool can access gtype utility functions.
1752
1753         * test/glib/test-service-glib.c: 
1754         * test/glib/test-service-glib.xml: 
1755         * test/glib/test-dbus-glib.c: Add some tests for return values.
1756
1757 2005-07-09  Colin Walters  <walters@verbum.org>
1758
1759         * glib/dbus-gparser.c (parse_annotation): Add annotations to
1760         argument if available, not method.
1761
1762         * glib/dbus-gobject.c (arg_iterate): More verbose warnings.
1763         (invoke_object_method): First, remove some redundant
1764         GValues (object_value, error_value) in favor of working on
1765         array directly.  Second, rework constness to be less buggy.
1766         Now we iterate directly over the argument metadata instead
1767         of parallel iterating over output signature and metadata.
1768
1769         * glib/dbus-glib-tool.h: Add INVALID_ANNOTATION error.
1770
1771         * glib/dbus-binding-tool-glib.c (generate_glue): Barf on const
1772         annotation on input args.
1773         
1774 2005-07-09  Colin Walters  <walters@verbum.org>
1775
1776         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
1777         Define.
1778
1779         * glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
1780         annotation.
1781
1782         * glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
1783         (method_dir_signature_from_object_info): Handle arg_iterate change.
1784         (write_interface): Ditto.
1785         (lookup_object_info): Don't barf if format_version is > 0.
1786         (invoke_object_method): Handle arg constness.
1787
1788         * glib/dbus-gidl.c (struct ArgInfo): Add annotations.
1789         (arg_info_new): Create.
1790         (arg_info_unref): Destroy.
1791         (arg_info_get_annotations, arg_info_get_annotation) 
1792         (arg_info_add_annotation): New functions.
1793
1794         * glib/dbus-gidl.h: Prototype them.
1795
1796         * glib/dbus-gparser.c (parse_annotation): Allow annotations in
1797         args, disallow them in properties.
1798         (parse_annotation): Handle arg annotations.
1799
1800         * test/glib/test-service-glib.xml: 
1801         * test/glib/test-service-glib.c: Update to make some methods
1802         const.
1803
1804 2005-07-08  Colin Walters  <walters@verbum.org>
1805
1806         * test/glib/test-service-glib.xml: 
1807         * test/glib/test-service-glib.c:
1808         * test/glib/test-dbus-glib.c: Test a{sv}.
1809
1810         * glib/examples/statemachine/statemachine.c:
1811         * glib/examples/statemachine/statemachine-server.c:
1812         * glib/examples/statemachine/statemachine-client.c: Fix some bugs,
1813         add progress bar, etc.
1814
1815         * glib/dbus-gvalue.c (register_array, register_dict): Delete; not
1816         needed anymore due to generic array/map marshalling.
1817         (dbus_g_value_types_init): Don't register basic arrays or the
1818         string/string hash.
1819         (dbus_gtype_from_signature_iter): Don't try to recurse into
1820         variants.
1821         (dbus_gtype_to_signature): Check collection/map before type
1822         metadata.
1823         (demarshal_garray_basic): Renamed to demarshal_collection_array.
1824         (demarshal_ghashtable): Renamed to demarshal_map; fix to use new
1825         generic map creation/append functions instead of hash table
1826         specifically.
1827         (get_type_demarshaller): Handle maps.
1828         (demarshal_collection): Dispatch on collection type to either
1829         demarshal_collection_ptrarray or demarshal_collection_array.
1830         (get_type_marshaller): Handle maps.
1831         (marshal_collection): Dispatch collection type to either
1832         marshal_collection_ptrarray or marshal_collection_array.
1833         (_dbus_gvalue_test): New test.
1834
1835         * glib/dbus-gvalue-utils.c (unset_and_free_g_value): New function.
1836         (hash_free_from_gtype): Use it to free GValues.
1837         (hashtable_append): New function.
1838         (ptrarray_append): Fix prototype.
1839         (slist_append): Ditto.
1840         (_dbus_gvalue_utils_test): Extend tests.
1841
1842         * glib/dbus-gtype-specialized.c
1843         (dbus_g_type_specialized_init_append): Renamed from
1844         dbus_g_type_specialized_collection_init_append.  Remove const from
1845         value, since we steal it.
1846         (dbus_g_type_specialized_map_append): New function.
1847
1848         * glib/dbus-gtype-specialized.h: Update prototypes.
1849         Add DBusGTypeSpecializedMapAppendFunc.
1850
1851         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
1852         _dbus_gvalue_test.
1853         
1854         * glib/dbus-gtest.h: Prototype it.
1855
1856 2005-07-08  Ross Burton  <ross@openedhand.com>
1857
1858         * dbus/dbus-glib.h:
1859         Add DBysGAsyncData for the async bindings.
1860
1861         * glib/dbus-binding-tool-glib.c:
1862         Re-enable the async bindings.
1863
1864         * test/glib/test-dbus-glib.c:
1865         Add a test for the generated async bindings.
1866
1867 2005-07-08  Colin Walters  <walters@verbum.org>
1868
1869         * doc/TODO: Update GLib todo bits, also add a post-1.0 TODO for a
1870         connection concept.
1871         
1872 2005-07-08  Colin Walters  <walters@verbum.org>
1873         
1874         * tools/Makefile.am: Kill of print-introspect in favor of using
1875         dbus-send --print-reply=literal.
1876
1877         * test/glib/test-service-glib.xml: 
1878         * test/glib/test-service-glib.c (my_object_get_objs): New test
1879         for "ao".
1880
1881         * test/glib/test-dbus-glib.c (echo_received_cb): Free echo data.
1882         (main): Test GetObjs.
1883
1884         * glib/examples/statemachine/Makefile.am:
1885         * glib/examples/statemachine/sm-marshal.list:
1886         * glib/examples/statemachine/statemachine-client.c:
1887         * glib/examples/statemachine/statemachine-server.c:
1888         * glib/examples/statemachine/statemachine-server.xml:
1889         * glib/examples/statemachine/statemachine.c:
1890         * glib/examples/statemachine/statemachine.h:
1891         * glib/examples/statemachine/statemachine.xml:
1892
1893         New example.
1894
1895         * glib/examples/example-service.c (main): Move invocation
1896         of dbus_g_object_type_install_info earlier, to emphasize it
1897         should only be done once.
1898
1899         * glib/examples/example-signal-emitter.c (main): Ditto.
1900
1901         * glib/examples/Makefile.am (SUBDIRS): Include statemachine.
1902
1903         * glib/dbus-gvalue.h (dbus_gtype_to_signature)
1904         (dbus_gvalue_marshal): Update prototypes.
1905
1906         * glib/dbus-gvalue.c: Update all marshalling functions to take
1907         const GValue instead of GValue.
1908         (signature_iter_to_g_type_array): Return a GPtrArray for nonfixed
1909         types.
1910         (dbus_gvalue_to_signature): Update for dbus_gtype_to_signature
1911         change.
1912         (dbus_gtype_to_signature): Handle generic collecitons and maps.
1913         Return a newly-allocated string.
1914         (demarshal_proxy, demarshal_object_path, demarshal_object)
1915         (demarshal_strv, demarshal_ghashtable): Set error, don't assert if
1916         we get the wrong types from message.
1917         (get_type_demarshaller): New function, extracted from
1918         dbus_gvalue_demarshal.
1919         (demarshal_collection): New function, demarshals generic
1920         collection.
1921         (dbus_gvalue_demarshal): Just invoke result of
1922         get_type_demarshaller.  Throw error if we don't have one.
1923         (marshal_garray_basic): Abort on OOM.
1924         (get_type_marshaller): New function, extracted from
1925         dbus_gvalue_marshal.
1926         (collection_marshal_iterator, marshal_collection): New functions;
1927         implements generic marshalling for an iteratable specialized
1928         collection.
1929         (dbus_gvalue_marshal): Just invoke result of get_type_marshaller.
1930
1931         * glib/dbus-gvalue-utils.c (gvalue_from_ptrarray_value): Handle
1932         G_TYPE_STRING.
1933         (ptrarray_value_from_gvalue): Ditto.
1934         (ptrarray_append, ptrarray_free): New functions.
1935         (slist_constructor, slist_iterator, slist_copy_elt, slist_copy) 
1936         (slist_append, slist_end_append, slist_free): New functions.
1937         (dbus_g_type_specialized_builtins_init): Add append fuctions
1938         for GPtrArray and GSList.  Register GSList.
1939         (test_specialized_hash, _dbus_gvalue_utils_test): New functions.
1940
1941         * glib/dbus-gtype-specialized.h (DBusGTypeSpecializedAppendContext):
1942         New.
1943         (dbus_g_type_specialized_collection_init_append)
1944         (dbus_g_type_specialized_collection_append)
1945         (dbus_g_type_specialized_collection_end_append): Prototype.
1946         (DBusGTypeSpecializedCollectionVtable): Add append_func and
1947         end_append_func.
1948
1949         * glib/dbus-gtype-specialized.c (dbus_g_type_specialized_collection_init_append) 
1950         (dbus_g_type_specialized_collection_append) 
1951         (dbus_g_type_specialized_collection_end_append): New functions.
1952         (dbus_g_type_map_value_iterate): Take const GValue.
1953         (dbus_g_type_collection_value_iterate): Ditto.
1954
1955         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
1956         _dbus_gvalue_utils_test.
1957         
1958         * glib/dbus-gtest.h: Prototype it.
1959
1960         * glib/dbus-gproxy.c (dbus_g_proxy_manager_filter): Avoid
1961         using uninitialized owner_list.
1962         (dbus_g_proxy_begin_call_internal): Move return_if_fail to
1963         public API.
1964         (dbus_g_proxy_end_call_internal): Update to use error set
1965         from dbus_gvalue_demarshal instead of setting it here.
1966         (dbus_g_proxy_begin_call): Move return_if_fail here.
1967
1968         * glib/dbus-gobject.c (write_interface): Update for
1969         dbus_gtype_to_signature returning new string.
1970
1971         * configure.in: Add glib/examples/statemachine.
1972
1973 2005-07-08  Joe Shaw  <joeshaw@novell.com>
1974
1975         * configure.in: Add a configure option, --with-console-auth-dir
1976         
1977         * dbus/dbus-sysdeps-util.c (_dbus_user_at_console): Use the
1978         new setting.  Patch from Kay Sievers.
1979
1980 2005-07-06  Colin Walters  <walters@verbum.org>
1981
1982         * dbus/dbus-glib.h (DBusGPendingCall, DBusGPendingCallNotify)
1983         (DBUS_TYPE_G_PENDING_CALL, dbus_g_pending_call_get_g_type)
1984         (dbus_g_pending_call_ref, dbus_g_pending_call_unref): Delete.
1985         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel):
1986         Delete in favor of dbus_g_proxy_begin_call and
1987         dbus_g_proxy_cancel_call.
1988         (DBusGProxyCall, DBusGProxyCallNotify): New.
1989         (dbus_g_proxy_begin_call): Change prototype to take callback, user
1990         data, and destroy function.  This replaces
1991         dbus_g_pending_call_set_notify.
1992         (dbus_g_proxy_cancel_call): Prototype.
1993         (DBusGAsyncData): Delete, shouldn't be needed anymore.
1994
1995         * glib/dbus-gproxy.c (struct _DBusGProxy): Add call_id_counter and
1996         pending_calls map.
1997         (struct _DBusGProxyManager): Add bus_proxy member, which is an
1998         internal proxy for calls to the bus. Remove
1999         pending_nameowner_calls, now the internal proxy keeps track.
2000         (dbus_g_proxy_manager_unref): Unref bus proxy, remove reference to
2001         pending_nameowner_calls.
2002         (got_name_owner_cb): Update prototype, and use
2003         dbus_g_proxy_end_call.
2004         (got_name_owner_cb): Remove reference to pending_nameowner_calls.
2005         (dbus_g_proxy_manager_register): Delete directly libdbus code in
2006         favor of using internal proxy.
2007         (dbus_g_proxy_manager_unregister): Update to use
2008         dbus_g_proxy_cancel_call for any pending GetNameOwner call.
2009         (dbus_g_proxy_init): Initialize pending calls map.
2010         (dbus_g_proxy_constructor): New.
2011         (dbus_g_proxy_class_init): Add get/set property functions,
2012         constructor, and add NAME, PATH, and INTERFACE properties.
2013         (cancel_pending_call): New function.
2014         (dbus_g_proxy_dispose): Iterate over any outstanding calls and
2015         cancel them.
2016         (dbus_g_proxy_set_property, dbus_g_proxy_get_property): New.
2017         (GPendingNotifyClosure): New structure.
2018         (d_pending_call_notify, d_pending_call_free): Moved here from
2019         dbus-glib.c.
2020         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Moved around to satisfy function
2021         ordering.
2022         (manager_begin_bus_call): New internal function for talking to
2023         internal bus proxy.
2024         (dbus_g_proxy_new): Construct object using GObjet properties.
2025         (dbus_g_proxy_begin_call_internal): Update to take user data, etc.
2026         Create closure of same, and insert call into map of pending calls.
2027         (dbus_g_proxy_end_call_internal): Take call id instead of pending
2028         call.  Look up pending call in current set.  Remove it when we've
2029         completed.
2030         (dbus_g_pending_call_end, dbus_g_proxy_end_call_internal): Delete.
2031         (dbus_g_proxy_begin_call): Change API to take callback, user data,
2032         and destroy function directly.
2033         (dbus_g_proxy_end_call): Update to take DBusGProxyCall.
2034         (dbus_g_proxy_call): Invoke with NULL callback.
2035         (dbus_g_proxy_cancel_call): New function, replaces
2036         dbus_g_pending_call_cancel.
2037
2038         * glib/dbus-gparser.c (validate_signature): Fix call to
2039         dbus_set_g_error.
2040
2041         * glib/dbus-gobject.c (dbus_g_object_type_dbus_metadata_quark):
2042         New quark for attaching metadata to GType.
2043         (info_hash): Delete.
2044         (lookup_object_info): Look up using quark.
2045         (dbus_g_object_type_install_info): Check that a type is classed,
2046         not that it's an object.  Also just install type data using quark
2047         instead of using global hash.
2048
2049         * glib/dbus-glib.c (dbus_g_pending_call_ref) 
2050         (dbus_g_pending_call_unref, dbus_pending_call_get_g_type)
2051         (GPendingNotifyClosure): Delete.
2052         (d_pending_call_notify, d_pending_call_free): Move to dbus-gproxy.c.
2053         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel): Delete.
2054
2055         * glib/dbus-binding-tool-glib.c (generate_client_glue): Disable async
2056         client method generation until we can fix it...
2057         
2058         * tools/dbus-viewer.c (load_child_nodes): Use dbus_g_proxy_call.
2059         (load_from_service_thread_func): Ditto.
2060
2061         * tools/dbus-names-model.c (struct NamesModel): Hold
2062         DBusGProxyCall.
2063         (have_names_notify): Update prototype, use
2064         dbus_g_proxy_cancel_call.
2065         (names_model_reload): Update for new dbus_g_proxy_begin_call API.
2066
2067         * tools/dbus-monitor.c (filter_func): Update for print_message
2068         API change.
2069
2070         * test/glib/test-dbus-glib.c: Add more tests for async
2071         invocations.  Update many begin_call/end_call pairs to just use
2072         dbus_g_proxy_call.
2073
2074         * tools/dbus-send.c (main): Add --print-reply=literal mode.  This
2075         allows us to dump print-introspect.c.
2076
2077         * tools/dbus-print-message.h (print_message): Add literal argument
2078         to print_message which is intended to allow printing arguments without
2079         metadata like "string=".
2080
2081         * tools/dbus-print-message.c (print_iter): Add literal argument.
2082         (print_message): Allow printing string messages literally.
2083
2084 2005-07-05  Colin Walters  <walters@verbum.org>
2085
2086         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
2087         Remove value refcount leak, original patch from Jorn Baayen
2088         <jorn@openedhand.com>.  Also remove useless extra value in favor
2089         of prepending to value array directly.
2090
2091 2005-07-02  Colin Walters  <walters@verbum.org>
2092
2093         * glib/dbus-gmain.c (_dbus_gmain_test): Fix test.
2094
2095 2005-07-01  Colin Walters  <walters@verbum.org>
2096
2097         Patch from Jonathan Matthew <jonathan@kaolin.hn.org>
2098         
2099         * glib/dbus-gvalue.c (basic_typecode_to_gtype): Fix return type.
2100         (dbus_g_value_types_init): Marshal G_TYPE_CHAR as DBUS_TYPE_BYTE,
2101         G_TYPE_LONG as DBUS_TYPE_INT32, G_TYPE_ULONG as DBUS_TYPE_UINT32,
2102         and G_TYPE_FLOAT as DBUS_TYPE_DOUBLE.
2103
2104 2005-06-30  Colin Walters  <walters@verbum.org>
2105
2106         * test/glib/test-dbus-glib.c:
2107         * test/glib/test-service-glib.c:
2108         * test/glib/test-service-glib.xml: Update tests for new error
2109         setting bits, also add async tests (patch from Ross Burton).
2110
2111         * test/glib/Makefile.am (test_service_glib_LDADD): Add
2112         DBUS_GLIB_THREADS_LIBS.
2113
2114         * glib/dbus-gproxy.c (get_name_owner)
2115         (dbus_g_pending_call_end_valist): Ditto.
2116
2117         * glib/dbus-gobject.c (error_metadata): New mapping from GError
2118         domain (GQuark) to DBusGErrorInfo.  
2119         (gerror_domaincode_to_dbus_error_name): Attempt to look up error
2120         quark in error_metadata.  Take message interface as default
2121         error message interface.
2122         (gerror_to_dbus_error_message): Pass message interface.
2123         (dbus_set_g_error): Resurrected.
2124         (dbus_g_error_info_free): New function.
2125         (dbus_g_object_type_install_info): Use g_type_class_ref instead
2126         of _peek to actually create the object class if it hasn't been
2127         created yet.
2128         (dbus_g_error_domain_register): New function.
2129
2130         * glib/dbus-gmain.c (dbus_g_bus_get): Switch to dbus_set_g_error.
2131
2132         * glib/dbus-gparser.c (validate_signature): Ditto.
2133
2134         * dbus/dbus-glib.h (dbus_g_error_set): Delete.
2135         (dbus_g_error_domain_register): Prototype.
2136
2137         * glib/dbus-glib.c (dbus_g_error_set): Delete.
2138         Update tests.
2139
2140 2005-06-29  Colin Walters  <walters@verbum.org>
2141
2142         * dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY.  Add
2143         DBUS_TYPE_G_OBJECT_PATH.
2144
2145         * glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers
2146         for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should
2147         be handled more generically).  Add DBUS_TYPE_G_OBJECT_PATH.
2148         (dbus_g_object_path_get_g_type): New function.
2149         (dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH
2150         to DBUS_TYPE_G_OBJECT_PATH by default.
2151         (demarshal_proxy): Remove unused name variable.
2152         (demarshal_object_path, marshal_object_path): New functions.
2153         (demarshal_proxy_array, marshal_proxy_array): Delete.
2154         
2155         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map
2156         DBUS_TYPE_G_OBJECT_PATH to char *.
2157         (dbus_g_type_get_lookup_function): Map builtin
2158         DBUS_TYPE_G_OBJECT_PATH.
2159
2160         * test/glib/test-dbus-glib.c
2161         * test/glib/test-service-glib.c (my_object_objpath): 
2162         Adapt tests to new object path marshalling.
2163
2164 2005-06-29  John (J5) Palmieri  <johnp@redhat.com>
2165
2166         * configure.in: force check for Python >= 2.4
2167
2168 2005-06-29  Colin Walters  <walters@verbum.org>
2169         
2170         Patch from Ross Burton <ross@openedhand.com>
2171         
2172         * glib/dbus-gobject.c (invoke_object_method): Unset object
2173         value in all cases, not only in async case.
2174
2175 2005-06-29  Colin Walters  <walters@verbum.org>
2176
2177         * glib/dbus-gproxy.c (struct _DBusGProxy): Add new member
2178         name_call for keeping track of any outgoing GetNameOwner call.
2179         Also add for_owner and associated.
2180         (struct _DBusGProxyManager): Add owner_names, which is hash table
2181         that maps a base name to a list of names it owns (that we're
2182         interested in).  Add pending_nameowner_calls which is a list of
2183         all outstanding GetNameOwner; avoids us having to iterate over
2184         every proxy.  Add unassociated_proxies which keeps track of name
2185         proxies with no associated name owner.
2186         (dbus_g_proxy_manager_unref): Destroy owner_names.
2187         (struct DBusGProxyNameOwnerInfo): New struct for keeping track of
2188         name refcounts.
2189         (find_name_in_info, name_owner_foreach)
2190         (dbus_g_proxy_manager_lookup_name_owner, insert_nameinfo)
2191         (dbus_g_proxy_manager_monitor_name_owner)
2192         (dbus_g_proxy_manager_unmonitor_name_owner)
2193         (unassociate_proxies, dbus_g_proxy_manager_replace_name_owner):
2194         New functions; they manipulate the owner_names mapping.
2195         (got_name_owner_cb): New function.
2196         (get_name_owner): New function, extracted from
2197         dbus_g_proxy_new_for_name_owner.
2198         (dbus_g_proxy_manager_register): For now we need to keep track of
2199         all NameOwnerChanged.  Also if the proxy is for a name, if we
2200         don't already know the name owner, queue a new GetNameOwner
2201         request and add it to our list of unassociated proxies.  Otherwise
2202         inc the refcount.
2203         (dbus_g_proxy_manager_unregister): If this proxy is for a name,
2204         cancel any pending GetNameOwner call, etc.
2205         (dbus_g_proxy_manager_filter): Handle NameOwnerChanged.  Also use
2206         the owner_names mapping to look up the current names for the
2207         signal source, and dispatch to any proxies for that name.
2208         (dbus_g_proxy_new): Initialize new members.
2209         (dbus_g_proxy_new_for_name): Delete unused proxy variable.
2210         (dbus_g_proxy_new_for_name_owner): Use get_name_owner.
2211         (dbus_g_pending_call_end_valist): New function, extracted from
2212         dbus_g_proxy_end_call_internal.  Useful when we don't have a proxy
2213         but want to use the GLib infrastructure.  Also note how many
2214         arguments in reply were over.
2215         (dbus_g_pending_call_end): New function, just call
2216         dbus_g_pending_call_end_valist.
2217         (dbus_g_proxy_end_call_internal): Just call
2218         dbus_g_pending_call_end_valist.
2219
2220         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Fix lookup
2221         of builtin marshaller for STRING_STRING_STRING.
2222
2223         * test/glib/test-dbus-glib.c: 
2224         * test/glib/test-service-glib.c:
2225         * test/glib/test-service-glib.xml:
2226         Extend tests to cover name proxies, destruction of owner proxies,
2227         etc.
2228         
2229         * glib/examples/example-signal-recipient.c
2230         (dbus_g_proxy_new_for_name_owner): Create a name proxy.
2231         
2232         * tools/dbus-send.c (main): Print D-BUS error name in addition
2233         to message.
2234
2235 2005-06-28  John (J5) Palmieri  <johnp@redhat.com>
2236
2237         * python/dbus_bindings.pyx.in (cunregister_function_handler,
2238         cmessage_function_handler): Patch from 
2239         Anthony Baxter <anthony@interlink.com.au> fixes threading problems
2240         by using the Py_GILState_Ensure/Release to synchronize with the
2241         python runtime.
2242         
2243 2005-06-28  Ray Strode  <rstrode@redhat.com>
2244
2245         *  dbus/dbus-spawn.c (_dbus_babysitter_unref): kill
2246         babysitter helper process on last unref, bug #2813.
2247
2248 2005-06-27  Colin Walters  <walters@verbum.org>
2249
2250         * test/glib/test-dbus-glib.c: 
2251         * test/glib/test-service-glib.c:
2252         * test/glib/test-service-glib.xml:
2253         Test hash table signal emitting.
2254
2255         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Convert
2256         types to their fundamental basis types, since this is what
2257         marshallers operate on.  Also add an entry for VOID__BOXED.
2258         (dbus_g_object_register_marshaller_array): Convert to fundamental.
2259
2260 2005-06-26  Havoc Pennington  <hp@redhat.com>
2261
2262         * doc/dbus-tutorial.xml: fix names of interface/service/path, fix
2263         from Don Park
2264
2265 2005-06-26  Colin Walters  <walters@verbum.org>
2266
2267         * glib/dbus-glib.c (dbus_set_g_error): Delete.
2268         (dbus_g_error_set): New public function from its ashes; used by
2269         both service-side method implementation and GLib bindings
2270         internals.
2271         (dbus_g_error_has_name, dbus_g_error_get_name): New function.
2272         (_dbus_glib_test): Add some tests.
2273
2274         * test/glib/test-dbus-glib.c (main): Test dbus_g_error_has_name.
2275
2276         * test/glib/test-service-glib.c (my_object_throw_error): Use
2277         dbus_g_error_set.
2278
2279         * glib/dbus-gobject.c (gerror_to_dbus_error_message): Handle
2280         errors thrown by dbus_g_error_set.
2281
2282         * glib/dbus-gmain.c (dbus_g_bus_get): Change to dbus_g_error_set.
2283
2284         * glib/dbus-gparser.c (validate_signature): Ditto.
2285
2286         * glib/dbus-gproxy.c (dbus_g_proxy_new_for_name_owner) 
2287         (dbus_g_proxy_end_call_internal): Ditto.
2288
2289         * glib/Makefile.am: Generate dbus-glib-error-switch.h, which
2290         converts DBUS_ERROR_x to DBUS_GERROR_x.
2291         (libdbus_glib_1_la_SOURCES, BUILT_SOURCES, CLEANFILES): Add it.
2292
2293         * doc/TODO: Remove error TODO.
2294
2295         * doc/dbus-tutorial.xml: Update with documentation about error
2296         handling.
2297
2298         * dbus/make-dbus-glib-error-enum.sh: Tighten up regexp to make
2299         sure we only change DBUS_ERROR to DBUS_GERROR, not all ERROR to
2300         GERROR.  Also add DBUS_GERROR_REMOTE_EXCEPTION.
2301
2302 2005-06-22  Colin Walters  <walters@verbum.org>
2303         
2304         Patch from Ross Burton <ross@openedhand.com>
2305
2306         * glib/dbus-gobject.c (dbus_g_method_return): Free out_sig.
2307
2308 2005-06-20  Colin Walters  <walters@verbum.org>
2309
2310         * configure.in: Add glib/examples.
2311
2312         * glib/Makefile.am: Add examples/
2313
2314         * glib/examples/.cvsignore
2315         * glib/examples/Makefile.am
2316         * glib/examples/example-client.c
2317         * glib/examples/example-service.c
2318         * glib/examples/example-service.xml
2319         * glib/examples/example-signal-emitter.c
2320         * glib/examples/example-signal-emitter.xml
2321         * glib/examples/example-signal-recipient.c:
2322         New files; GLib binding examples, ported from
2323         python/examples.
2324
2325 2005-06-20  Colin Walters  <walters@verbum.org>
2326
2327         * dbus/dbus-glib.h: 
2328         * glib/dbus-gproxy.c: Rename dbus_g_proxy_invoke to
2329         dbus_g_proxy_call.
2330
2331         * glib/dbus-binding-tool-glib.c: 
2332         * doc/dbus-tutorial.xml: 
2333         * test/glib/test-dbus-glib.c: Update for rename.
2334         
2335 2005-06-20  Colin Walters  <walters@verbum.org>
2336
2337         Patch suggested by Ross Burton <ross@openedhand.com>
2338
2339         * glib/dbus-gobject.c (export_signals): Free signal name.
2340         (g_value_init): Use G_VALUE_NOCOPY_CONTENTS to plug
2341         memory leak.  Add a bit of documentation.
2342         (dbus_g_method_return_error): Free context, and note we do
2343         so.
2344
2345 2005-06-18  Murray Cumming  <murrayc@murrayc.com>
2346
2347         * dbus/dbus-glib.h:
2348         * glib/dbus-gobject.c:
2349         * glib/dbus-gproxy.c:
2350         * glib/dbus-gvalue.c: Predeclare structs as 
2351         typedef struct _Something Something instead of 
2352         typedef struct Something Something, so we can 
2353         redeclare the prototypes. Other GNOME libraries 
2354         do this already.
2355
2356 2005-06-17  Colin Walters  <walters@verbum.org>
2357
2358         * tools/dbus-names-model.c (have_names_notify): Fix call
2359         to dbus_g_proxy_end_call.
2360         
2361 2005-06-17  Colin Walters  <walters@verbum.org>
2362
2363         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): Don't
2364         spew warnings if we get malformed remote signals.
2365
2366         * glib/dbus-gobject.c (propsig_iterate): New function.
2367         (lookup_object_info): New function, extracted from
2368         lookup_object_and_method.
2369         (introspect_properties, introspect_signals): Delete; these
2370         are merged into write_interface.
2371         (write_interface): Write out signals and properties here;
2372         dump the org.gtk.object stuff and use the interface given
2373         in the introspection data blob.  Also fix up property XML.
2374         (lookup_values): New function.
2375         (introspect_interfaces): Gather a mapping from interface to a
2376         list of its methods, signals, and properties, then write out
2377         each interface.
2378         (lookup_object_and_method): Use lookup_object_info.
2379         (struct DBusGSignalClosure): Add interface.
2380         (dbus_g_signal_closure_new): Add interface. Don't dup signame;
2381         we can just use the constant data.
2382         (dbus_g_signal_closure_finalize): Don't free signal name.
2383         (signal_emitter_marshaller): Use interface from signal closure.
2384         (export_signals): Only export signals mentioned in introspection
2385         blob.
2386         (dbus_g_connection_register_g_object): Warn if we have no
2387         introspection data for an object.
2388         (funcsig_equal): Remove unused variable.
2389         (dbus_g_object_register_marshaller): Take varargs instead of
2390         list.
2391         (dbus_g_object_register_marshaller_array): New function,
2392         extracted from old dbus_g_object_register_marshaller.
2393
2394         * glib/dbus-binding-tool-glib.c (struct DBusBindingToolCData): Add
2395         signals and property data.
2396         (write_quoted_string): New function, extracted from generate_glue.
2397         (generate_glue): Write signals and properties to introspection
2398         blob.
2399
2400         * dbus/dbus-glib.h (struct DBusGObjectInfo): Include
2401         exported_signals and exported_properties.
2402         (dbus_g_object_register_marshaller): Update prototype.
2403         (dbus_g_object_register_marshaller_array): Prototype.
2404         
2405         * test/glib/test-dbus-glib.c: Extend testing to cover new signals.
2406
2407         * test/glib/test-service-glib.c: Add new test signals and method
2408         to emit them.
2409
2410         * test/glib/test-service-glib.xml: Add some test signals.
2411
2412         * test/glib/Makefile.am (BUILT_SOURCES): Add my-object-marshal.c
2413         and my-object-marshal.h
2414         (test_service_glib_SOURCES, test_dbus_glib_SOURCES): Add
2415         my-object-marshal.c.
2416         (my-object-marshal.c, my-object-marshal.h): Implement.
2417
2418         * test/glib/.cvsignore: Update.
2419
2420         * doc/TODO: Remove two GLib TODO items fixed by this
2421         patch.
2422
2423 2005-06-16  Colin Walters  <walters@verbum.org>
2424
2425         * doc/TODO: Update for GLib bindings.
2426         
2427 2005-06-16  Colin Walters  <walters@verbum.org>
2428
2429         * glib/dbus-binding-tool-glib.c:
2430         * glib/dbus-gobject.c:
2431         * glib/dbus-gproxy.c:  Add Nokia copyright; Patch
2432         from Ross Burton, for his GLib bindings work.
2433
2434 2005-06-16  Colin Walters  <walters@verbum.org>
2435
2436         * glib/dbus-gobject.c (funcsig_hash, funcsig_equal): Use n_params
2437         to iterate instead of walking to G_TYPE_INVALID.
2438
2439         Patch based on a patch from Ryan Gammon.
2440
2441 2005-06-16  Colin Walters  <walters@verbum.org>
2442
2443         * bus/bus.c (bus_context_new): Set parser to NULL
2444         after we unref it (Patch from Chris Boscolo, #2174).
2445         
2446 2005-06-16  Colin Walters  <walters@verbum.org>
2447
2448         * python/dbus_bindings.pyx.in: Import size_t,
2449         __int64_t, __uint64_t, and __signed.
2450
2451         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (write_credentials_byte):
2452         Define cmsg struct, output it.
2453         (_dbus_read_credentials_unix_socket):
2454         Use cmsg struct.
2455         
2456         Patch from Joe Markus Clarke for FreeBSD support.
2457         
2458 2005-06-16  Colin Walters  <walters@verbum.org>
2459
2460         * tools/dbus-send.c (append_array): Use strtok.
2461         (append_dict): New function.
2462         (type_from_name): New function, extracted from main.
2463         (main): Handle sending dicts.
2464
2465         * tools/dbus-print-message.c (print_iter): Print dict
2466         entries.
2467         
2468 2005-06-16  Colin Walters  <walters@verbum.org>
2469
2470         * glib/dbus-gvalue.c (marshal_basic): Marshal NULL string
2471         values as the empty string (#2948).
2472         
2473 2005-06-16  Colin Walters  <walters@verbum.org>
2474
2475         * dbus/Makefile.am:
2476         * mono/doc/Makefile.am:
2477         * test/glib/Makefile.am:
2478
2479         Fix srcdir != builddir issues (Patch from Chris Wilson, #3477)
2480
2481 2005-06-16  Colin Walters  <walters@verbum.org>
2482
2483         * dbus/dbus-marshal-header.c (_dbus_header_load): Set
2484         header byte order from expected byte order (Patch from Chris Wilson, #3475).
2485
2486         * dbus/dbus-marshal-byteswap.c (byteswap_body_helper): 
2487         Increment pointer after swapping fixed array.  Add assertion
2488         for array length.
2489                 
2490 2005-06-15  Colin Walters  <walters@verbum.org>
2491
2492         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
2493         Fix call to dbus_set_error.  (Patch from Michael Banck, #3461)
2494         
2495 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2496
2497         * NEWS: Update to 0.34
2498
2499 2005-06-15  David Zeuthen  <davidz@redhat.com>
2500
2501         * configure.in (LT_CURRENT): Revert back to 1 as the library
2502         hasn't changed and we've certainly not committed to protocol
2503         stability yet.  All this does is to break ABI. See commit note
2504         from hp@redhat.com 2005-05-05 for details.
2505         
2506 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2507
2508         * dbus/dbus-connection.c (_dbus_connection_peer_filter): New method 
2509         (_dbus_connection_run_builtin_filters): New method
2510         (dbus_connection_dispatch): Run the builtin filters which in turn
2511         runs the peer filter which handles Ping messages.
2512
2513         * doc/TODO: 
2514          - Ping isn't handled: This patch fixes it
2515          
2516          - Add a test case for the Ping message: added TODO item
2517
2518 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2519
2520         * dbus/dbus-message.c:
2521         (dbus_message_has_path): New method
2522         (dbus_message_has_interface): New method
2523         (dbus_message_has_member): New method
2524
2525         * dbus/dbus/dbus-sysdeps.c (_dbus_check_dir_is_private_to_user):
2526         New method
2527
2528         * dbus/dbus-keyring.c (_dbus_keyring_reload): Check to see that 
2529         the keyring directory is private to the user
2530
2531         * doc/TODO:
2532          - The convenience functions in dbus-bus.h should perhaps have
2533          the signatures that they would have if they were autogenerated
2534          stubs. e.g. the acquire service function. We should also evaluate
2535          which of these functions to include, in light of the fact that
2536          GLib/Qt native stubs will probably also exist.: Punted
2537
2538          - add dbus_message_has_path(), maybe has_member/interface:
2539          fixed in this patch
2540
2541          - in dbus-keyring.c, enforce that the keyring dir is not
2542          world readable/writable: Fixed in this patch
2543
2544 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2545
2546         * dbus/dbus-marshal-validate.h: Added a new validation
2547         error code DBUS_VALIDITY_UNKNOWN_OOM_ERROR = -4 for 
2548         out of memory errors when validating signitures
2549
2550         * dbus/dbus-marshal-header.c: use DBUS_VALIDITY_UNKNOWN_OOM_ERROR
2551         in places where we previously used DBUS_VALID and a FALSE return 
2552         value to indicate OOM
2553         
2554         * dbus/dbus-marshal-validate.c (_dbus_validate_signature_with_reason):
2555         Use a stack to track the number of elements inside containers.  The 
2556         stack values are then used to validate that dict entries have only two
2557         elements within them.
2558         (validate_body_helper): check the reason for failure when validating
2559         varients
2560         
2561         * dbus/dbus-message.c (load_message): use 
2562         DBUS_VALIDITY_UNKNOWN_OOM_ERROR in places where we previously used 
2563         DBUS_VALID and a FALSE return value to indicate OOM
2564
2565         * doc/TODO: remove "- validate dict entry number of fields" as this
2566         patch fixes it
2567
2568 2005-06-14  David Zeuthen  <davidz@redhat.com>
2569
2570         * bus/bus.c (process_config_every_time): Drop existing conf-dir
2571         watches (if applicable) and add new watches
2572
2573         * bus/main.c (signal_handler): Handle SIGIO if using D_NOTIFY
2574         (main): Setup SIGIO signal handler if using D_NOTIFY
2575
2576         * bus/config-parser.h: Add prototype bus_config_parser_get_conf_dirs
2577
2578         * bus/config-parser.c (struct BusConfigParser): Add conf_dirs list
2579         (merge_included): Also merge conf_dirs list
2580         (bus_config_parser_unref): Clear conf_dirs list
2581         (include_dir): Add directory to conf_dirs list
2582         (bus_config_parser_get_conf_dirs): New function
2583
2584         * bus/dir-watch.[ch]: New files
2585
2586         * bus/Makefile.am (BUS_SOURCES): Add dir-watch.[ch]
2587
2588         * configure.in: Add checks for D_NOTIFY on Linux
2589
2590 2005-06-14  Colin Walters  <walters@verbum.org>
2591
2592         * glib/dbus-binding-tool-glib.c:
2593         * glib/dbus-gobject.c:
2594         * glib/dbus-gvalue.c: Fix indentation and brace style.
2595         
2596 2005-06-14  Ross Burton <ross@openedhand.com>.
2597
2598         * glib/dbus-glib.h: Make DBusGMethodInvocation
2599         a private structure.  Rearrange prototypes a bit.
2600         
2601         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): Add
2602         documentation for first_arg_type.
2603         
2604         * glib/dbus-gobject.c: Move DBusGMethodInvocation
2605         here, add documentation.  Move dbus_g_method_return
2606         and dbus_g_method_return_error into public API
2607         section.
2608
2609 2005-06-14  Colin Walters  <walters@verbum.org>
2610
2611         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller):
2612         Add missing return statements, noticed by Ross Burton.
2613         
2614 2005-06-13  Ross Burton <ross@openedhand.com>.
2615
2616         * glib/dbus-gobject.c: Handle errors on message
2617         demarshalling by sending error message back.
2618         * glib/dbus-gvalue.c: Initialize return variables.
2619
2620 2005-06-13  Colin Walters  <walters@verbum.org>
2621
2622         * glib/Makefile.am: Fix thinko in last patch.
2623
2624 2005-06-13  Colin Walters  <walters@verbum.org>
2625
2626         * glib/Makefile.am: Move dbus-gtype-specialized.c
2627         and dbus-gtype-specialized.h into a _HEADERS variable,
2628         install them.
2629
2630 2005-06-12  Colin Walters  <walters@verbum.org>
2631
2632         Async signals and various bugfixes and testing by
2633         Ross Burton <ross@openedhand.com>.
2634
2635         * glib/dbus-gvalue.h: (struct DBusBasicGValue): Delete.
2636         (dbus_gvalue_genmarshal_name_from_type)
2637         (dbus_gvalue_ctype_from_type): Moved to dbus-binding-tool-glib.c.
2638         (dbus_gtype_to_dbus_type): Renamed to dbus_gtype_from_signature.
2639         (dbus_g_value_types_init, dbus_gtype_from_signature)
2640         (dbus_gtype_from_signature_iter, dbus_gtype_to_signature)
2641         (dbus_gtypes_from_arg_signature): New function prototypes.
2642         (dbus_gvalue_demarshal): Take context and error arguments.
2643         (dbus_gvalue_demarshal_variant): New function.
2644         (dbus_gvalue_demarshal_message): New function.
2645         (dbus_gvalue_store): Delete.
2646
2647         * glib/dbus-gvalue.c:
2648
2649         File has been almost entirely rewritten; now we special-case
2650         more types such as DBUS_TYPE_SIGNATURE, handle arrays and
2651         hash tables correctly, etc.  Full support for recursive values
2652         is not yet complete.
2653
2654         * glib/dbus-gproxy.c (dbus_g_proxy_class_init): Change last
2655         argument of signal to G_TYPE_POINTER since we now pass a
2656         structure.
2657         (lookup_g_marshaller): Delete in favor of
2658         _dbus_gobject_lookup_marshaller.
2659         (marshal_dbus_message_to_g_marshaller): Use
2660         _dbus_gobject_lookup_marshaller and dbus_gvalue_demarshal_message
2661         to handle remote signal callbacks.
2662         (dbus_g_proxy_new_from_proxy): New function; creates a new
2663         DBusGProxy by copying an existing one.
2664         (dbus_g_proxy_get_interface, dbus_g_proxy_set_interface)
2665         (dbus_g_proxy_get_path): New functions.
2666         (dbus_g_proxy_marshal_args_to_message): New function;
2667         factored out of existing code.
2668         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Collect all arguments
2669         from a varargs array.
2670         (dbus_g_proxy_begin_call_internal): New function.
2671         (dbus_g_proxy_end_call_internal): New function.
2672         (dbus_g_proxy_begin_call): Take GTypes instead of DBus types
2673         as arguments; simply invoke dbus_g_proxy_begin_call_internal
2674         after collecting args into value array.
2675         (dbus_g_proxy_end_call): Take GTypes instead of DBus types;
2676         invoke dbus_g_proxy_end_call_internal.
2677         (dbus_g_proxy_invoke): Simply invoke begin_call_interanl and
2678         end_call_internal.
2679         (dbus_g_proxy_call_no_reply): Take GTypes instead of DBus
2680         types.
2681         (array_free_all): New function.
2682         (dbus_g_proxy_add_signal): Take GTypes.
2683
2684         * glib/dbus-gobject.h:
2685         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
2686         (_dbus_gobject_get_path, _dbus_gobject_lookup_marshaller):
2687         Prototype.
2688
2689         * glib/dbus-gobject.c: Add a global marshal_table hash which
2690         stores mappings from type signatures to marshallers.  Change lots
2691         of invocations of dbus_gtype_to_dbus_type to
2692         dbus_gtype_to_signature.
2693         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
2694         (introspect_signals): Fix test for query.return_type.
2695         (set_object_property): Update invocation of dbus_gvalue_demarshal.
2696         (invoke_object_method): Many changes.  Handle asynchronous
2697         invocations.  Convert arguments with
2698         dbus_gvalue_demarshal_message.  Handle errors.  Use
2699         DBusSignatureIter instead of strlen on args. Handle all arguments
2700         generically.  Special-case variants.
2701         (dbus_g_method_return, dbus_g_method_return_error): New function.
2702         (DBusGSignalClosure): New structure, closes over signal
2703         information.
2704         (dbus_g_signal_closure_new): New function.
2705         (dbus_g_signal_closure_finalize): New function.
2706         (signal_emitter_marshaller): New function; is special marshaller
2707         which emits signals on bus.
2708         (export_signals): New function; introspects object signals and
2709         connects to them.
2710         (dbus_g_object_type_install_info): Take GType instead of
2711         GObjectClass.
2712         (dbus_g_connection_register_g_object): Invoke export_signals.
2713         (dbus_g_connection_lookup_g_object): New function.
2714         (DBusGFuncSignature) New structure; used for mapping type
2715         signatures to marshallers.
2716         (funcsig_hash): New function; hashes DBusGFuncSignature.
2717         (funcsig_equal): New function; compares DBusGFuncSignature.
2718         (_dbus_gobject_lookup_marshaller): New function.
2719         (dbus_g_object_register_marshaller): New function; used to
2720         register a marshaller at runtime for a particular signature.
2721
2722         * glib/dbus-gmain.c (_dbus_gmain_test): Add various tests.
2723
2724         * glib/dbus-binding-tool-glib.h: Add DBUS_GLIB_ANNOTATION_ASYNC
2725         which notes a server method implementation should be
2726         asynchronous.
2727
2728         * glib/dbus-binding-tool-glib.c
2729         (dbus_binding_tool_output_glib_server): Call
2730         dbus_g_value_types_init.
2731         (write_formal_parameters): Use dbus_gtype_from_signature.  Handle
2732         variants specially.
2733         (dbus_g_type_get_lookup_function): Turn GType into an invocation
2734         of a lookup function.
2735         (write_args_for_direction): Use dbus_g_type_get_lookup_function.
2736         (write_untyped_out_args): New method; write output arguments.
2737         (write_formal_declarations_for_direction): Function for
2738         writing prototypes.
2739         (write_formal_parameters_for_direction): Function for
2740         writing implementations.
2741         (write_typed_args_for_direction): Function for writing
2742         arguments prefixed with GTypes.
2743         (write_async_method_client): Write out async version
2744         of method.
2745
2746         * glib/dbus-binding-tool-glib.c: Include dbus-gvalue-utils.h.
2747         (dbus_g_type_get_marshal_name): Move mapping from GType
2748         to marshal name into here.
2749         (dbus_g_type_get_c_name): Move into here.
2750         (compute_marshaller): Convert signature to type with
2751         dbus_gtype_from_signature, use dbus_g_type_get_marshal_name.
2752         (compute_marshaller_name): Ditto.
2753         (compute_marshaller): Handle async signal annotations.
2754         (gather_marshallers): Return if we don't have a known
2755         prefix.
2756         (generate_glue): Collect introspection blob here, and
2757         write all of the blob at the end.  This allows an object
2758         with multiple interfaces to work.
2759         Mark async methods in introspection blob.
2760
2761         * glib/Makefile.am (libdbus_glib_1_la_SOURCES): Add
2762         dbus-gtype-specialized.c, dbus-gtype-specialized.h,
2763         dbus-gvalue-utils.h, dbus-gvalue-utils.c.
2764
2765         * dbus/dbus-glib.h: Don't include dbus-protocol.h; this
2766         avoids people accidentally using DBUS_TYPE_* which should
2767         not be necessary anymore.
2768         Do include dbus-gtype-specialized.h, which are utilities
2769         for GLib container types.
2770         Add various #defines for types such as
2771         DBUS_TYPE_G_BOOLEAN_ARRAY.
2772         (DBusGValueIterator, DBusGValue): Define, not fully used
2773         yet.
2774         (dbus_g_value_get_g_type): Type for recursive value.
2775         (dbus_g_value_open, dbus_g_value_iterator_get_value)
2776         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
2777         (dbus_g_value_free): Prototypes.
2778         (dbus_g_object_register_marshaller, dbus_g_proxy_new_from_proxy): Prototype.
2779         (dbus_g_proxy_set_interface): Prototype.
2780         (dbus_g_proxy_begin_call, dbus_g_proxy_end_call)
2781         (dbus_g_proxy_call_no_reply): Take GLib types instead of DBus
2782         types.
2783         (dbus_g_proxy_get_path, dbus_g_proxy_get_interface):
2784         Accessors.
2785         (DBusGAsyncData, DBusGMethodInvocation): Structures for
2786         doing async invocations.
2787         (dbus_g_method_return, dbus_g_method_return_error):
2788         Prototypes.
2789         * doc/dbus-tutorial.xml: Update GLib section.
2790         
2791         * tools/dbus-viewer.c (load_child_nodes): Update
2792         for new invocation type of dbus_g_proxy_end_call.
2793         (load_from_service_thread_func): Ditto.
2794
2795         * tools/print-introspect.c (main): Ditto.
2796
2797         * tools/dbus-names-model.c (have_names_notify)
2798         (names_model_reload, names_model_set_connection)
2799         Use GTypes.
2800
2801         * python/Makefile.am (INCLUDES): Define DBUS_COMPILATION,
2802         needed since Python bindings use GLib bindings.
2803
2804         * test/glib/Makefile.am (INCLUDES): Define DBUS_COMPILATION.
2805         Add --prefix argument.
2806
2807         * tools/Makefile.am: Define DBUS_COMPILATION.  Remove
2808         unneeded --ignore-unsupported arg.
2809         
2810         * test/glib/test-service-glib.c: 
2811         * test/glib/test-service-glib.xml:
2812         * test/glib/test-dbus-glib.c: Add many more tests.
2813
2814 2005-06-06  David Zeuthen  <davidz@redhat.com>
2815
2816         * doc/TODO: Add item about need to remove deprecated functions.
2817
2818         * dbus/dbus-connection.h: Add prototype for dbus_connection_disconnect
2819
2820         * dbus/dbus-connection.c (dbus_connection_disconnect): New function
2821         to repair the ABI which was broken with the last commit.
2822
2823 2005-06-02  John (J5) Palmieri <johnp@redhat.com>
2824
2825         *  dbus/dbus-connection.c, dbus/dbus-connection.h 
2826         (dbus_connection_disconnect): renamed to dbus_connection_close 
2827         for API symmetry with dbus_connection_open
2828         (_dbus_connection_open_internal): 
2829         s/dbus_connection_disconnect/dbus_connection_close
2830
2831         * dbus/dbus-bus.c (dbus_bus_get):
2832         s/dbus_connection_disconnect/dbus_connection_close
2833
2834         * bus/connection.c (bus_connections_unref, 
2835         bus_connections_setup_connection, bus_connections_expire_incomplete):
2836         s/dbus_connection_disconnect/dbus_connection_close
2837
2838         * bus/dispatch.c (bus_dispatch, kill_client_connection, 
2839         kill_client_connection_unchecked, check_hello_connection):
2840         s/dbus_connection_disconnect/dbus_connection_close
2841
2842         * bus/bus.c (new_connection_callback):
2843         s/dbus_connection_disconnect/dbus_connection_close
2844
2845         * tools/dbus-send.c (main):
2846         s/dbus_connection_disconnect/dbus_connection_close
2847
2848         * test/glib/test-profile.c (no_bus_thread_func, with_bus_thread_func):
2849         s/dbus_connection_disconnect/dbus_connection_close
2850         
2851         * test/test-service.c (path_message_func, filter_func):
2852         s/dbus_connection_disconnect/dbus_connection_close
2853         
2854         * doc/TODO: remove connection_open/connection_disconnect lacks symmetry         item that was just fixed
2855         
2856 2005-05-25  Colin Walters  <walters@verbum.org>
2857
2858         * dbus/dbus-protocol.h: Move various bus service #defines such
2859           as DBUS_SERVICE_DBUS and DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT to
2860           dbus/dbus-shared.h.
2861         * dbus/dbus-shared.h: Various defines moved here.
2862         * dbus/dbus-marshal-header.c: Include dbus-shared.h.
2863
2864 2005-05-25  John (J5) Palmieri  <johnp@redhat.com>
2865
2866         * python/__init__.py: Python bindings deserve a minor version
2867         update.  Upped to (0, 40, 2)
2868
2869 2005-05-24  John (J5) Palmieri  <johnp@redhat.com>
2870
2871         * python/decorators.py: add explicitly_pass_message decorator
2872         for passing in the dbus message as keyword for edge case signal
2873         handling
2874
2875         * python/matchrules.py (SignalMatchRule.__repr__): fix output
2876         to conform with what dbus expects for match rules
2877         (SignalMatchRule.execute): add the dbus message as a keyword
2878         if the signal handler has requested it
2879
2880         * python/examples/example/signal-recipient.py: added some more
2881         examples on how to hook up to signals
2882
2883 2005-05-23  John (J5) Palmieri  <johnp@redhat.com>
2884
2885         * python/decorators.py: import dbus_bindings
2886
2887         * python/matchrules.py (SignalMatchRule, SignalMatchTree, 
2888         SignalMatchNode): new classes that implement wildcard signal
2889         callback matching using a tree lookup. Heavily modified from a
2890         patch sent by Celso Pinto (fd.o bug #3241)
2891
2892         * _dbus.py (add_signal_receiver, remove_signal_receiver, _signal_func):
2893         use new match classes to handle signals.
2894
2895 2005-05-19  John (J5) Palmieri  <johnp@redhat.com>
2896         
2897         * python/dbus_bindings.pyx.in: s/TYPE_PATH/TYPE_OBJECT_PATH
2898
2899 2005-05-18  Havoc Pennington  <hp@redhat.com>
2900
2901         * configure.in: use GLIB_GNU_GETTEXT to get INTLLIBS and require
2902         gettext. Not really worth requiring yet perhaps, but any
2903         production quality 1.0 would require it so we should go ahead and
2904         get things set up. We do have a couple token calls to
2905         bindtextdomain in the code already.
2906
2907 2005-05-16  John (J5) Palmieri  <johnp@redhat.com>
2908
2909         * glib/dbus-gmain.c (io_handler_dispatch): fix deadlock
2910         when using recursive g_main_loops
2911
2912         * python/_dbus.py (class Bus): add the ProxyObjectClass
2913         alias for ProxyObject to make it easier for the Twisted 
2914         networking framework to integrate dbus.
2915
2916         * python/proxies.py (class ProxyObject): add the ProxyMethodClass
2917         alias for ProxyMethod to make it easier for the Twisted 
2918         networking framework to integrate dbus. 
2919
2920 2005-05-11  Ross Burton  <ross@openedhand.com>
2921
2922         * glib/dbus-glib-tool.c: Add --prefix argument.
2923         * glib/dbus-binding-tool-glib.h: Add prefix argument.
2924         * glib/dbus-binding-tool-glib.c (compute_marshaller_name):
2925         Add prefix argument.
2926         (generate_glue): Pass prefix argument down.
2927         (dbus_binding_tool_output_glib_server): Pass prefix to
2928         glib-genmarshal.
2929         
2930 2005-05-11  Colin Walters  <walters@verbum.org>
2931
2932         * tools/dbus-send.c (append_array): New function.
2933         (append_arg): Broken out from main.
2934         (main): Add cheesy hack to send arrays and variants.
2935         (usage): Update.
2936         * tools/dbus-print-message.c (print_iter): Broken out
2937         from main.
2938
2939 2005-05-11  Colin Walters  <walters@verbum.org>
2940
2941         * dbus/dbus-signature.c (dbus_signature_iter_get_signature):
2942         New function, returns signature string for signature iter.
2943         * dbus/dbus-signature.h: Prototype it.
2944         * dbus/dbus-message.c (dbus_message_iter_get_signature):
2945         New function, returns signature string for message iter.
2946         (dbus_message_iter_get_array_len): New function, returns
2947         length of array.
2948         (dbus_message_iter_get_fixed_array): Fix assertion; this
2949         function should be used when the iter is pointing to the
2950         contents of an array
2951         * dbus/dbus-message.h: Prototypes.
2952         * dbus/dbus-marshal-recursive.c (_dbus_type_reader_get_array_length):
2953         New function; returns length of an array.
2954         * dbus/dbus-marshal-recursive.h: Prototype it.
2955         
2956 2005-05-11  Colin Walters  <walters@verbum.org>
2957
2958         * dbus/dbus-sysdeps-util.c <!HAVE_POSIX_GETPWNAM_R>: Fix
2959         compilation error.
2960         
2961 2005-05-08  Havoc Pennington  <hp@redhat.com>
2962
2963         * dbus/dbus-sysdeps-util.c (_dbus_become_daemon): write the
2964         daemon's pid, not the parent's pid, to the file descriptor.
2965         Reported by Taj Morton.
2966
2967 2005-05-05  Havoc Pennington  <hp@redhat.com>
2968
2969         * configure.in (LT_*): add notes on how the libtool versioning
2970         works to save thinking. Increment soname to indicate protocol
2971         breakage (though really the library interface hasn't changed I
2972         guess)
2973
2974         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
2975         verify the GUID received from server matches what we were
2976         expecting, if we had an expectation
2977
2978         * dbus/dbus-auth.c (send_ok): send GUID along with the OK command
2979         (_dbus_auth_get_guid_from_server): new function
2980         (send_begin): parse the OK args
2981
2982         * doc/dbus-specification.xml: add GUID to the auth protocol
2983
2984 2005-05-05  John (J5) Palmieri  <johnp@redhat.com>
2985
2986         * Fix my name in previous changelog ;)
2987
2988         * python/proxies.py (ProxyObject.__getattr__): add further patch
2989         from Anthony Baxter to throw an AttributeError when python 
2990         __special__ functions are called instead of marshling them over 
2991         the bus (Bug#1685 comment 3).
2992
2993 2005-05-04  John (J5) Palmieri  <johnp@redhat.com>
2994
2995         * python/Makefile.am: changed to use pyexecdir for the binding
2996         shared libraries (Bug#2494)
2997
2998         * python/exceptions.py: bring exceptions over from the bindings
2999         so they can be used in applications (Bug#2036)
3000         Make all exceptions derive from DBusException
3001
3002         * python/_dbus.py, python/proxies.py: implement __repr__ in a couple
3003         of classes so that print obj doesn't throw an exception (Bug #1685)
3004
3005 2005-05-03  Ross Burton  <ross@openedhand.com>
3006
3007         * glib/dbus-gobject.c (dbus_g_connection_register_g_object):
3008         Return if we get an error during registration.  Set up a
3009         weak reference on object to unregister if object is destroyed.
3010         (unregister_gobject): New function.
3011         
3012 2005-05-01  John (J5) Palmieri  <johnp@redhat.com>
3013
3014         * python/dbus_bindings.pyx.in: 
3015         - added new type classes for hinting to the marashaler what type 
3016         to send over the wire
3017         - added int16 and uint16 marshalers
3018         - Fixed a bug in the type constants that caused int32 to go out
3019         as uint16 over the wire
3020         * python/dbus.py: split up into different files and renamed _dbus.py
3021         * python/__init__.py, python/_util.py, python/decorators.py, 
3022         python/exceptions.py, python/proxies.py, python/services.py,
3023         python/types.py: new files split off from dbus.py
3024         * python/Makefile.am: Add new files, remove dbus.py and 
3025         install all python files to <python module dir>/dbus
3026         * python/examples/*: Added #!/usr/bin/env python to the top of
3027         every example.  Patch provided by Tatavarty Kalyan
3028
3029 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
3030
3031         * NEWS: Update to 0.33
3032
3033 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
3034
3035         * python/dbus_bindings.pyx.in (send_with_reply_handlers): New send
3036         method for doing async calls
3037         (_pending_call_notification): New C function for handling pendning call
3038         callbacks
3039         (set_notify): New method for setting pending call notification
3040         
3041         * python/dbus.py: new version tuple "version" is set at (0, 40, 0)
3042         Async capabilities added to remote method calls
3043         (Sender): class removed
3044         (RemoteService): class removed
3045         (ObjectTree): class removed for now
3046         (RemoteObject): Renamed to ProxyObject
3047         (RemoteMethod): Renamed to ProxyMethod
3048         (method): Decorator added for decorating python methods as dbus methods
3049         (signal): Decorator added for decorating python methods as signal emitters
3050         (ObjectType): Metaclass added for generating introspection data and the
3051         method callback vtable
3052         (Interface): Wrapper class added to wrap objects in a dbus interface
3053         (Object): Uses ObjectType as its metaclass and exports Introspect
3054         of the org.freedesktop.DBus.Introspectable interface
3055         (ValidationException, UnknownMethodException): new exceptions
3056
3057         * python/examples/*: Modified to fit with the new bindings
3058
3059 2005-04-23  Havoc Pennington  <hp@redhat.com>
3060
3061         * dbus/dbus-message.c (dbus_message_append_args): fix doc comment,
3062         reported by Tony Houghton
3063
3064         * test/test-service.c (main): test
3065         dbus_connection_get_object_path_data()
3066
3067         * dbus/dbus-object-tree.c (find_handler): be sure we always init
3068         the exact_match
3069         (_dbus_object_tree_get_user_data_unlocked): new function used by
3070         dbus_connection_get_object_path_data()
3071         (do_register): add assertion test for get_user_data_unlocked
3072         (object_tree_test_iteration): more tests
3073
3074         * dbus/dbus-connection.c (dbus_connection_get_object_path_data):
3075         new function from Dan Reed to let you get the user data from 
3076         dbus_connection_register_object_path()
3077
3078 2005-04-23  John (J5) Palmieri  <johnp@redhat.com>
3079
3080         * dbus/dbus-marshal-recursive-util.c: Fixed buffer overflow
3081         in numerous places that did not account for the NULL terminator
3082         (signature_from_seed): changed the manual string copy loop to 
3083         just use strcpy instead
3084         make check should now pass
3085
3086 2005-04-19  John (J5) Palmieri  <johnp@redhat.com>
3087
3088         * dbus/dbus-marshal-header.c (_dbus_header_create): Fix assert
3089         so that it allows messages that are not signals to pass in 
3090         NULL as the interface.
3091
3092 2005-04-18  David Zeuthen  <davidz@redhat.com>
3093
3094         * glib/dbus-gmain.c (io_handler_destroy_source): 
3095         (timeout_handler_destroy_source, connection_setup_free): 
3096         Also unref the source to avoid memory leaks.
3097
3098 2005-04-13  David Zeuthen  <davidz@redhat.com>
3099
3100         * bus/config-parser.c (bus_config_parser_new): Bump this to a
3101         more reasonable, yet still totally arbitrary, value :-). 
3102
3103 2005-04-13  David Zeuthen  <davidz@redhat.com>
3104
3105         * doc/TODO: Added an "important for 1.0" item about selinux
3106         allow/deny messages
3107
3108 2005-04-13  David Zeuthen  <davidz@redhat.com>
3109
3110         * bus/selinux.c: Add c-file-style to top of file
3111         (log_audit_callback): Don't free the data here anymore
3112         (bus_selinux_check): Don't take spid and tpid since appending
3113         that to auxdata may OOM.
3114         (bus_selinux_allows_acquire_service): Handle OOM and signal back
3115         to the caller if we are OOM by taking an error object.
3116         (bus_selinux_allows_send): -do-
3117
3118         * bus/selinux.h: Fix prototypes for bus_selinux_allows_acquire_service
3119         and bus_selinux_allows_send
3120
3121         * bus/bus.c (bus_context_check_security_policy): Pass error and
3122         pass on OOM thrown by bus_selinux_allows_send()
3123
3124         * bus/services.c (bus_registry_acquire_service): Pass error and
3125         pass on OOM thrown by bus_selinux_allows_acquire_service()
3126
3127 2005-04-13  Havoc Pennington  <hp@redhat.com>
3128
3129         * glib/dbus-gmain.c (message_queue_dispatch): only dispatch one
3130         message at a time to avoid monopolizing the main loop, bug 
3131         #2953 from Benjamin Otte
3132
3133 2005-04-09  Havoc Pennington  <hp@redhat.com>
3134
3135         * dbus/dbus-string.c (copy): change a memcpy to memmove due to
3136         possible overlap, fix from Daniel Reed
3137         (fixup_alignment): fix signedness warnings
3138         (_dbus_string_append_unichar): ditto
3139
3140 2005-04-09  Havoc Pennington  <hp@redhat.com>
3141
3142         * dbus/dbus-message-util.c (_dbus_message_test): fix signedness warning
3143
3144         * glib/dbus-glib-tool.c (main): fix warning
3145
3146         * glib/dbus-binding-tool-glib.c (generate_glue): fix warning
3147
3148         * dbus/dbus-connection.c (dbus_connection_read_write_dispatch):
3149         add a new function that can be used in simple applications that
3150         don't have a main loop and are willing to block
3151
3152 2005-04-05  David Zeuthen  <davidz@redhat.com>
3153
3154         Fix https://bugs.freedesktop.org/show_bug.cgi?id=2889
3155
3156         * glib/dbus-gmain.c:
3157         (io_handler_destroy_source): Remove from list of IO handlers
3158         of the ConnectionSetup object
3159         (timeout_handler_destroy_source): -do- for timeout handlers
3160         (io_handler_source_finalized): Don't remove from list since
3161         we now do that in io_handler_destroy_source(). Renamed from
3162         io_handler_source_destroyed
3163         (timeout_handler_source_destroyed): -do- for timeout handlers
3164         (connection_setup_free): It is now safe to iterate over all
3165         IO and timeout handlers as the _destroy_source removes them
3166         from the list synchronously
3167
3168 2005-03-30  Havoc Pennington  <hp@redhat.com>
3169
3170         * configure.in: change check to gtk 2.4
3171
3172         * tools/dbus-viewer.c (name_combo_changed_callback): remove
3173         gtk_combo_box_get_active_text() usage to decrement GTK requirement
3174         to 2.4
3175
3176 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
3177
3178         * News: Update 0.32
3179
3180         * HACKING: Fixed realease instructions.  configure.in should be updated to
3181           the next release by the person who made the last release.
3182
3183 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
3184
3185         * python/lvalue_cast_post_process.py - removed.  Patch has been
3186           submitted to Pyrex maintainers that fixes gcc4.0 errors
3187
3188         * python/Makefile.am: removed refrences to lvalue_cast_post_process.py
3189
3190 2005-03-24  Daniel Reed  <n@ml.org>
3191
3192         * tools/Makefile.am: Make print-introspect and
3193         dbus-bus-introspect.xml building conditional on HAVE_GLIB.
3194
3195 2005-03-22  John (J5) Palmieri  <johnp@redhat.com>
3196
3197         * tools/Makefile.am: Patch by Colin Walters that fixes distcheck
3198
3199         * dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have 
3200           had in Red Hat packages for a while but for some reason never 
3201           got merged upstream
3202           (_dbus_is_a_number): New checks if a string
3203           can be converted to a number and does the conversion if it can
3204           (_dbus_user_database_lookup): Add check to see if the given username
3205           is a udi.  This allows udi's to be used instead of usernames in the
3206           config file.
3207           (_dbus_user_database_lookup_group): Add check to see if the given groupname
3208           is a gdi.  This allows gdi's to be used instead of groupnames in the
3209           config file.
3210
3211 2005-03-21  John (J5) Palmieri  <johnp@redhat.com>
3212
3213         * python/lvalue_cast_post_process.py - added post processor to fix Pyrex
3214           code so that it compiles with gcc4.0
3215
3216         * python/Makefile.am: Added lvalue_cast_post_process.py to EXTRA_DIST
3217           run dbus_bindings.c through lvalue_cast_post_process.py and copy the
3218           results back to dbus_binding.c
3219
3220 2005-03-20  Colin Walters  <walters@verbum.org>
3221
3222         Patch suggested by Inguva Rajasekhar <ringuva@novell.com>.
3223
3224         * configure.in: Require GTK+ 2.6.
3225         
3226 2005-03-20  Colin Walters  <walters@verbum.org>
3227
3228         * Makefile.am (SUBDIRS, DIST_SUBDIRS): Build tools before test.
3229
3230 2005-03-17  Tom Parker  <palfrey@tevp.net>
3231
3232         * dbus/dbus-userdb.c (_dbus_user_database_lookup): Don't
3233         print DBUS_UID_UNSET; instead print passed username.  Also
3234         be sure to actually use gid looked up in cache.
3235         
3236         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group): Ditto
3237         for DBUS_GID_UNSET and groupname.
3238
3239 2005-03-17  Colin Walters  <walters@verbum.org>
3240
3241         * bus/print-introspect.c: Move to tools/.
3242         * bus/run-with-tmp-session-bus.sh: Ditto.
3243         
3244         * glib/Makefile.am (dbus-glib-bindings.h): Move
3245         generation to tools/Makefile.am.
3246
3247         * test/glib/run-test.sh: Update to handle move
3248         of run-with-tmp-session-bus.sh.
3249
3250         * test/glib/test-service-glib.c: Update to handle
3251         move of dbus-glib-bindings.h.
3252
3253         * tools/print-introspect.c: Moved here
3254         from bus/, and ported to GLib bindings.
3255
3256         * tools/run-with-tmp-session-bus.sh: Moved here
3257         from bus/.
3258
3259         * tools/Makefile.am: Generate dbus-glib-bindings.h
3260         and dbus-bus-introspect.xml here.
3261
3262         * tools/.cvsignore, glib/.cvsignore, bus/.cvsignore:
3263         Update.
3264
3265 2005-03-17  Colin Walters  <walters@verbum.org>
3266
3267         * bus/driver.c (write_args_for_direction): Use
3268         _dbus_string_get_const_data to retrieve string;
3269         _dbus_string_get_const_data_len doesn't actually return
3270         a NULL-terminated substring.
3271
3272         * test/glib/test-service-glib.c: Include dbus-glib-bindings.h.
3273         (main): Change to use org_freedesktop_DBus_request_name
3274         instead of using g_proxy_begin_call/end_call.
3275
3276 2005-03-15  Joe Shaw  <joeshaw@novell.com>
3277
3278         * mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when
3279         generating the finalizer.  Fixes from Ben Maurer.
3280
3281 2005-03-12  Joe Shaw  <joeshaw@novell.com>
3282
3283         * mono/BusDriver.cs: Update method names: ListServices
3284         becomes ListNames; GetOwner becomes GetNameOwner.
3285
3286         * mono/ProxyBuilder.cs (BuildFinalizer): Need to load arg 0
3287         onto the eval stack when removing the delegate.
3288
3289 2005-03-12  Joe Shaw  <joeshaw@novell.com>
3290
3291         * mono/dbus-sharp.dll.config.in: Don't hardcode 0 for
3292         LT_CURRENT.  Set it to the autoconf variable.
3293                                                                                 
3294         * mono/ProxyBuilder.cs: Add a finalizer to the generated proxy
3295         classes that disconnects the signal handler delegate from the
3296         service object.  Fixes a big leak of proxy objects on the
3297         client side of things.  Patch from Ben Maurer
3298         <bmaurer@ximian.com>
3299
3300 2005-03-12  Colin Walters  <walters@verbum.org>
3301
3302         * bus/driver.c (write_args_for_direction): New function,
3303         parses a type signature into arguments and outputs to
3304         XML.
3305         (bus_driver_handle_introspect): Use it instead of
3306         hardcoding XML for certain signatures.
3307         
3308         * bus/Makefile.am (dbus-bus-introspect.xml): Add
3309         dependency on dbus-daemon.
3310
3311         * glib/dbus-glib-tool.c (main): Parse ignore_unsupported
3312         argument, pass it to dbus_binding_tool_output_glib_client.
3313
3314         * glib/dbus-binding-tool-glib.c
3315         (generate_client_glue): Protect against multiple inclusion.
3316         (dbus_binding_tool_output_glib_client): Add
3317         G_BEGIN_DECLS/G_END_DECLS.
3318
3319         * glib/dbus-binding-tool-glib.c (compute_client_method_name):
3320         Change to just take iface prefix directly.
3321         (write_formal_parameters): Clarify error message.
3322         (check_supported_parameters): New function; checks to see type
3323         signatures of method parameters are supported.
3324         (generate_client_glue): Handle ignore_unsupported flag.
3325         (dbus_binding_tool_output_glib_client): Handle ignore_unsupported
3326         parameter.
3327
3328         * glib/Makefile.am (dbus-glib-bindings.h): Pass
3329         --ignore-unsupported by default until glib bindings
3330         support arrays.
3331
3332 2005-03-11  Colin Walters  <walters@verbum.org>
3333
3334         * glib/Makefile.am: Generate dbus-glib-bindings.h and
3335         install it.
3336
3337         * bus/print-introspect.c: New file; prints introspection
3338         data for a given name and object path.
3339
3340         * bus/run-with-tmp-session-bus.sh: New file, refactored
3341         from test/glib/run-test.sh.  Creates a temporary session
3342         bus and runs another program.
3343
3344         * test/glib/run-test.sh: Refactor to invoke
3345         run-with-tmp-session-bus.sh.
3346
3347         * bus/driver.c (bus_driver_handle_introspect): Fix to print new
3348         introspection format.  Also change to use DBUS_TYPE_x_AS_STRING
3349         macros instead of hardcoding.
3350
3351         * glib/.cvsignore, bus/.cvsignore, test/glib/.cvsignore: Update.
3352
3353 2005-03-11  Joe Shaw  <joeshaw@novell.com>
3354
3355         * dbus/dbus-connection.c (dbus_connection_send_with_reply): Remove
3356         this unref; it doesn't match up evenly in some codepaths.
3357         (_dbus_connection_block_pending_call): Unref at every exitpoint;
3358         this evenly matches with the ref near the top of this function.
3359
3360 2005-03-09  Joe Shaw  <joeshaw@novell.com>
3361
3362         * dbus/dbus-object-tree.c
3363         (_dbus_object_tree_unregister_and_unlock): If checks are enabled
3364         and we try to unregister a path that's not registered, still go
3365         through the process of unlocking and don't just return.
3366
3367 2005-03-09  Colin Walters  <walters@verbum.org>
3368
3369         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): New method; calls
3370         to this are generated for client-side wrappers.  Invokes a
3371         D-BUS method and returns reply values.  
3372
3373         * glib/dbus-binding-tool-glib.c (write_args_sig_for_direction): New
3374         function; writes signature string for argument direction.
3375         (write_args_for_direction): Change to pass input values directly
3376         instead of via address, and fix indentation.
3377         (generate_client_glue): Change to invoke dbus_g_proxy_invoke.  Also
3378         make generated wrappers inlineable.
3379
3380         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array): Add
3381         note about using dbus_type_is_fixed.
3382
3383         * dbus/dbus-marshal-basic.c (_dbus_type_is_fixed): Moved to
3384         dbus/dbus-signature.c as dbus_type_is_fixed.
3385
3386         All callers updated.
3387
3388         * dbus/dbus-signature.c (dbus_type_is_fixed): Moved here
3389         from dbus/dbus-marshal-basic.c:_dbus_type_is_fixed.
3390
3391         * dbus/dbus-signature.h: Prototype.
3392
3393         * glib/dbus-binding-tool-glib.c (compute_marshaller_name): Fix
3394         error printf code.
3395
3396         * test/glib/test-dbus-glib.c (main): Be sure to clear error as
3397         appropriate instead of just freeing it.
3398         (main): Free returned strings using g_free.
3399
3400         * test/glib/Makefile.am (test-service-glib-glue.h)
3401         (test-service-glib-bindings.h): Add dependency on dbus-binding-tool.
3402
3403         * glib/dbus-gvalue.c (MAP_BASIC): Refactored from MAP_BASIC_INIT;
3404         simply maps a simple D-BUS type to GType.
3405         (dbus_dbus_type_to_gtype): Function which maps D-BUS type to
3406         GType.
3407         (dbus_gvalue_init): Just invoke dbus_dbus_type_to_gtype and
3408         initialize the value with it.
3409         (dbus_gvalue_binding_type_from_type): Unused, delete.
3410         (dbus_gvalue_demarshal): Switch to hardcoding demarshalling for
3411         various types instead of unmarshalling to value data directly.
3412         Remove can_convert boolean.
3413         (dbus_gvalue_marshal): Remove duplicate initialization; switch to
3414         returning directly instead of using can_convert boolean.
3415         (dbus_gvalue_store): New function; not related to D-BUS per-se.
3416         Stores a GValue in a pointer to a value of its corresponding C
3417         type.
3418
3419         * glib/dbus-gvalue.h: Remove dbus_gvalue_binding_type_from_type,
3420         add dbus_gvalue_store.
3421
3422 2005-03-08  Joe Shaw  <joeshaw@novell.com>
3423
3424         Fix a bunch of lifecycle and memory management problems
3425         in the mono bindings.
3426
3427         * mono/Arguments.cs (Arguments): Implement IDisposable
3428
3429         * mono/Bus.cs (Bus): Don't allow public instantiation.  This is
3430         strictly a static class.
3431
3432         * mono/Connection.cs: Move the DBusObjectPathVTable and associated
3433         delegates into this file.
3434         (Connection): Implement IDisposable.
3435         (Dispose): Disconnect the connection and set the raw connection
3436         pointer to IntPtr.Zero.
3437         (~Connection): Call Dispose().
3438         (RegisterObjectPath): Added.  Manages the registration of object
3439         paths so we can cleanly disconnect them at dispose/finalize time.
3440         (UnregisterObjectPath): Ditto.
3441         (set_RawConnection): Unregister all of the object paths when
3442         changing the underlying DBusConnection.  Add them back onto the
3443         new connection, if any.
3444
3445         * mono/Handler.cs: Don't implement IDisposable; it doesn't use any
3446         more unmanaged resources anymore, so it's not necessary.  Move all
3447         the DBusObjectPathVTable stuff out of here.
3448         (Handler): Save references to our delegates so that they don't get
3449         finalized.  Call Connection.RegisterObjectPath() instead of
3450         dbus_connection_register_object_path() directly.
3451         (Message_Called): Dispose the message after we're finished with
3452         it.
3453
3454         * mono/Message.cs (Message): Implement IDisposable.
3455         (Dispose): Dispose the Arguments, and set the RawMessage to
3456         IntPtr.Zero.
3457         (SendWithReplyAndBlock): We own the ref to the reply that comes
3458         back from dbus_connection_send_with_reply_and_block() so add a
3459         comment about that and unref it after we've constructed a managed
3460         MethodReturn class around it.  Fixes a big, big leak.
3461
3462         * mono/ProxyBuilder.cs: Reflect into Message to get the Dispose
3463         method.
3464         (BuildSignalHandler): After we've sent the Signal message, dispose
3465         of it.
3466         (BuildMethod): Dispose of the method call and reply messages after
3467         we've sent the message and extracted the data we want from the
3468         reply.
3469
3470         * mono/Service.cs (UnregisterObject): Don't call handler.Dispose()
3471         anymore.
3472         (Service_FilterCalled): Dispose of the message after we're
3473         finished with it.
3474
3475 2005-03-08  Joe Shaw  <joeshaw@novell.com>
3476
3477         * dbus/dbus-connection.c (dbus_connection_send_with_reply):
3478         After we attach our pending call to the connection, unref
3479         it.  Fixes a leak.
3480  
3481         * mono/Connection.cs (set_RawConnection): Disconnect our
3482         filter and match callbacks from the old connection and
3483         reconnect them to the new connection, if any.
3484
3485         * mono/DBusType/Array.cs: "Code" is a static member, so
3486         don't use "this" to refer to it.  Fix for stricter checking
3487         in Mono 1.1.4.
3488  
3489         * mono/DBusType/ObjectPath.cs (Append): Don't leak the
3490         object path that we pass into unmanaged code.
3491  
3492         * mono/DBusType/String.cs (Append): Don't leak the string
3493         that we pass into unmanged code.
3494
3495 2005-03-07  John (J5) Palmieri  <johnp@redhat.com>
3496         * NEWS: Update for 0.31
3497
3498         * configure.in: Release 0.31
3499         add LT_CURRENT, LT_REVISION, LT_AGE for easy soname bumping
3500
3501         * qt/Makefile.am: fixed build
3502
3503         * dbus/Makefile.am: soname bump for libdbus
3504
3505         * glib/Makefile.am: soname bump for libdbus-glib
3506
3507 2005-03-05  Havoc Pennington  <hp@redhat.com>
3508
3509         * dbus/dbus-sysdeps.c:
3510         (pseudorandom_generate_random_bytes_buffer): fix to have no return
3511         value
3512         (_dbus_generate_random_bytes_buffer): fix return value
3513
3514         * dbus/dbus-sysdeps-util.c: s/GETPWNAME/GETPWNAM/ so configure
3515         checks actually work, from Tom Parker <fdo@tevp.net>
3516
3517 2005-03-01  Colin Walters  <walters@verbum.org>
3518
3519         * test/glib/test-dbus-glib.c (lose, lose_gerror): Utility
3520         functions copied from dbus-glib-tool.c.
3521         (main): Convert lots of error code to use them.
3522         Also add some testing for introspection bits.
3523
3524 2005-03-01  Colin Walters  <walters@verbum.org>
3525         
3526         * doc/TODO: Remove introspection signature TODO.
3527
3528 2005-02-27  Colin Walters  <walters@verbum.org>
3529
3530         * glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
3531         Change return value to const char * instead of int so we can do
3532         full signatures.
3533         (struct PropertyInfo, struct ArgInfo): Store char *.
3534         (property_info_new, arg_info_new): Update parameters, strdup.
3535         (property_info_unref, arg_info_unref): Free.
3536
3537         * glib/dbus-gidl.h: Update prototypes.
3538
3539         * glib/dbus-gparser.c (basic_type_from_string): Delete.
3540         (validate_signature): New function, just validates signature and
3541         sets GError.
3542         (parse_property, parse_arg): Invoke validate_signature.  Store
3543         signature instead of just type code.
3544
3545         * glib/dbus-gvalue.c (base_type_from_signature): New utility
3546         function to return a primary type for a signature, dropping
3547         information about types in container types.
3548         (dbus_gvalue_genmarshal_name_from_type)
3549         (dbus_gvalue_binding_type_from_type)
3550         (dbus_gvalue_ctype_from_type): Update to take full signature
3551          instead of type code.
3552         (dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.
3553
3554         * glib/dbus-gvalue.h: Update prototypes for above.
3555
3556         * glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
3557         glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
3558         (introspect_properties, introspect_signals, write_interface):
3559         Update to handle signatures, and remove usage of
3560         _dbus_gutils_type_to_string.
3561         (handle_introspect): Print out type codes instead of e.g. "string"
3562         in hardcoded introspection XML; also use x_AS_STRING constants
3563         instead of hardcoding in string.
3564
3565         * glib/dbus-glib-tool.c (pretty_print): Handle signature change
3566         to string.  Remove usage of _dbus_gutils_type_to_string.
3567
3568         * glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.
3569
3570         * glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
3571         deletion.
3572         
3573         * glib/dbus-binding-tool-glib.c (compute_marshaller)
3574         (compute_marshaller_name, generate_glue): Handle signature change
3575         to string.
3576         (write_formal_parameters, write_args_for_direction): Ditto, and
3577         remove FIXME.
3578
3579         * tools/dbus-tree-view.c (type_to_string): Delete.
3580         (info_set_func_text): Update to print full signatures.
3581
3582         * test/glib/test-service-glib.xml: Change types to new
3583         introspection format.
3584
3585 2005-02-26  Havoc Pennington  <hp@redhat.com>
3586
3587         * doc/TODO: remove the "guid" item
3588
3589         * test/glib/test-profile.c (no_bus_thread_func): use open_private
3590         (with_bus_thread_func): use open_private
3591
3592         * dbus/dbus-connection.c (dbus_connection_open_private): new
3593         function that works like the old dbus_connection_open()
3594         (dbus_connection_open): now returns an existing connection if
3595         possible
3596
3597         * dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
3598         through the GUID to the transport
3599
3600         * dbus/dbus-server.c (_dbus_server_init_base): keep around the
3601         GUID in hex-encoded form.
3602
3603         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
3604         pass GUID argument in to the transport
3605
3606         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
3607         guid argument
3608
3609         * dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument
3610
3611         * dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument
3612
3613 2005-02-25  Havoc Pennington  <hp@redhat.com>
3614
3615         * doc/dbus-specification.xml: document the GUID thing
3616
3617         * dbus/dbus-server.c (_dbus_server_init_base): initialize a
3618         globally unique ID for the server, and put a "guid=hexencoded"
3619         field in the address
3620
3621         * dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h
3622
3623         * dbus/dbus-message.c: ditto
3624
3625         * dbus/dbus-dataslot.c: ditto
3626
3627         * dbus/dbus-list.c: ditto
3628
3629         * dbus/dbus-internals.h: wait, just include
3630         dbus-threads-internal.h here
3631         
3632         * dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
3633         use in main library
3634
3635         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function
3636
3637 2005-02-24  Colin Walters  <walters@verbum.org>
3638
3639         * test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml
3640
3641 2005-02-24  John (J5) Palmieir  <johnp@redhat.com>
3642
3643         * glib/Makefile.am: added dbus-gobject.h to sources list
3644         so distcheck doesn't fail
3645         
3646 2005-02-24  Havoc Pennington  <hp@redhat.com>
3647
3648         * dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
3649         you must disconnect before unref, since locking and other things
3650         are screwed up otherwise. Fix assorted other locking stuff.
3651
3652         * dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
3653         fix compilation
3654
3655         * dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
3656         into a private header and don't export from the library
3657
3658         * throughout - call _dbus_thread_stuff vs. dbus_thread_stuff
3659
3660 2005-02-24  Colin Walters  <walters@verbum.org>
3661         
3662         * dbus/dbus-signature.c: New file; implements various functions
3663         related to type signatures.  Includes an interator for parsing,
3664         validation functions.
3665         (dbus_type_is_basic): Moved here from
3666         dbus-marshal-basic.c:_dbus_type_is_basic.
3667         (dbus_type_is_container): Moved here from
3668         dbus-marshal-basic.c:_dbus_type_is_container.
3669
3670         All callers of _dbus_type_is_container and _dbus_type_is_basic
3671         updated, and include dbus-signature.h.
3672
3673         * dbus/dbus-signature.h: New file; prototypes for the above.
3674
3675         * dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
3676         dbus-signature.h.
3677
3678         * dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
3679         function factored out of _dbus_first_type_in_signature.
3680         (_dbus_first_type_in_signature_c_str): New function; returns first
3681         type code for a type signature character.
3682
3683         * dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
3684         handle function moves.
3685
3686         * dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.
3687
3688         * dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
3689         function; skips to next complete type in type signature.
3690         Implemented using previous skip_one_complete_type.  Now
3691         skip_one_complete_type just delegates to
3692         _dbus_type_signature_next.
3693
3694         * dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
3695         to dbus-signature.c
3696         (_dbus_type_is_container): Ditto.
3697
3698         * doc/dbus-specification.xml: Update introspection sample to
3699         use real type signatures.
3700
3701         * dbus/dbus-test.h: Prototype signature test.
3702
3703         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
3704         signature tests.
3705
3706         * dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.
3707
3708 2005-02-23  John (J5) Palmieri  <johnp@redhat.com>
3709
3710         * python/dbus_bindings.pyx.in (PendingCall::get_reply):
3711         s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply
3712
3713 2005-02-21  Colin Walters  <walters@verbum.org>
3714
3715         * dbus/dbus-test-main.c (main): Take optional specific test
3716         argument.
3717
3718         * dbus/dbus-test.c (run_test): New function, runs a test function
3719         with no data directory.
3720         (run_data_test): Like above, but takes data directory.
3721         (dbus_internal_do_not_use_run_tests): Take
3722         specific test argument.  Replace lots of cut n' paste code
3723         with run_test and run_data_test.
3724
3725         * dbus/dbus-test.h: Update prototype for
3726         dbus_internal_do_not_use_run_tests.
3727
3728 2005-02-20  Havoc Pennington  <hp@redhat.com>
3729
3730         Fix bugs reported by Daniel P. Berrange
3731         
3732         * dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
3733         (protected_change_watch): new function
3734         (_dbus_server_toggle_watch, _dbus_server_remove_watch)
3735         (_dbus_server_add_watch): change to work like the
3736         dbus-connection.c equivalents; like those, probably kind of
3737         busted, but should at least mostly work for now
3738         (dbus_server_disconnect): drop the lock if we were already
3739         disconnected, patch from Daniel P. Berrange
3740
3741         * dbus/dbus-server.c (_dbus_server_toggle_timeout) 
3742         (_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
3743         same stuff
3744
3745         * doc/TODO: todo about unscrewing this mess
3746
3747 2005-02-19  Colin Walters  <walters@verbum.org>
3748
3749         * glib/dbus-binding-tool-glib.c
3750         (dbus_binding_tool_output_glib_server): Fix iochannel refcounting.
3751
3752         * glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
3753         as errno.h and sys/stat.h.
3754         (lose): New function, prints error with
3755         newline and exits.
3756         (lose_gerror): Similar, but takes GError for message.
3757         (main): Add --output argument to specify output file to write to,
3758         instead of always printing to stdout.  In this mode, determine
3759         timestamps on source files to see whether any are newer than the
3760         target file.  If not, exit.  Also convert a number of error
3761         messages to use lose (since it's shorter), and switch to using
3762         g_io_channel_shutdown.
3763
3764 2005-02-19  Havoc Pennington  <hp@redhat.com>
3765
3766         * glib/dbus-gobject.c
3767         (_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs
3768
3769         * glib/dbus-glib.c: fix doxygen warnings
3770
3771         * glib/dbus-gparser.c (parse_annotation): error if an annotation
3772         is found on an <arg>
3773
3774 2005-02-17  Colin Walters  <walters@verbum.org>
3775
3776         * glib/dbus-gobject.h: Don't export
3777         _dbus_glib_marshal_dbus_message_to_gvalue_array.
3778         
3779         * glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
3780         (invoke_object_method): Handle it.
3781
3782         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
3783         Handle rename.
3784         
3785 2005-02-17  Colin Walters  <walters@verbum.org>
3786
3787         * bus/.cvsignore, doc/.cvsignore
3788         * test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
3789         Update.
3790
3791 2005-02-17  Colin Walters  <walters@verbum.org>
3792         
3793         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
3794         Rename to DBUS_SERVICE_DBUS.
3795         (DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
3796         (DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
3797         Change the value from "org.freedesktop.Local"
3798         to "org.freedesktop.DBus.Local".
3799         (DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
3800         (DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
3801         DBUS_INTERFACE_INTROSPECTABLE.
3802         Change the value from "org.freedesktop.Introspectable"
3803         to "org.freedesktop.DBus.Introspectable".
3804         (DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
3805         DBUS_INTERFACE_PROPERTIES.
3806         Change the value from "org.freedesktop.Properties"
3807         to "org.freedesktop.DBus.Properties".
3808         (DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
3809         DBUS_INTERFACE_PEER.
3810         Change the value from "org.freedesktop.Peer"
3811         to "org.freedesktop.DBus.Peer".
3812         (DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL): 
3813         DBUS_INTERFACE_LOCAL.
3814         Change the value from "org.freedesktop.Local"
3815         to "org.freedesktop.DBus.Local".
3816
3817         All other users of those constants have been changed.
3818
3819         * bus/driver.c (bus_driver_handle_introspect): Use constants.
3820
3821         * glib/dbus-gobject.c (handle_introspect): Use constants.
3822
3823         * doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.
3824
3825 2005-02-17  Colin Walters  <walters@verbum.org>
3826
3827         * glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
3828         (parse_node, parse_interface, parse_method, parse_signal)
3829         (parse_property, parse_annotation): Lose if we're currently in an
3830         annotation.
3831         (parse_annotation): New function.
3832         (parser_start_element, parser_end_element): Handle annotation.
3833         (parse_method, parse_interface): Remove support for c_name attribute,
3834         switch to annotations.
3835
3836         * glib/dbus-gidl.h (interface_info_get_binding_names)
3837         (method_info_get_binding_names)
3838         (interface_info_get_binding_name, method_info_get_binding_name)
3839         (interface_info_set_binding_name, method_info_set_binding_name):
3840         Remove.
3841         (interface_info_get_annotations, method_info_get_annotations)
3842         (interface_info_get_annotation, method_info_get_annotation)
3843         (interface_info_add_annotation, method_info_add_annotation):
3844         Prototype.
3845
3846         * glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
3847         for "bindings".
3848         (struct MethodInfo): Ditto.
3849         Straightfoward conversion of binding methods into annotation methods
3850         as prototyped.
3851
3852         * glib/dbus-glib-tool.c (pretty_print): Print annotations.
3853
3854         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.
3855
3856         * glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
3857         Use new annotation API.
3858
3859         * doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
3860         annotation element.
3861         
3862         * doc/dbus-specification.xml: Discuss introspection annotations,
3863         include list of well-known annotations.
3864
3865         * test/glib/test-service-glib.xml: Make validate against new DTD.
3866
3867 2005-02-17  Colin Walters  <walters@verbum.org>
3868
3869         This patch is based on initial work from
3870         Paul Kuliniewicz <kuliniew@purdue.edu>.
3871
3872         * glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
3873         initialization of GValue from dbus type to here.
3874         (dbus_gvalue_genmarshal_name_from_type): New function; generates a string
3875         for the "glib-genmarshal" program from a DBus type.
3876         (dbus_gvalue_binding_type_from_type): New function; turns a DBus type
3877         into the C name for it we use in the glib bindings.
3878         (dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
3879         glib C type (not GValue).
3880         (dbus_gvalue_demarshal): invoke dbus_gvalue_init.
3881
3882         * glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
3883         from dbus-gobject.c.
3884
3885         * glib/dbus-gutils.h: Prototype it.
3886
3887         * glib/dbus-gproxy.c: Include new dbus-gobject.h.
3888         (marshal_dbus_message_to_g_marshaller): Use new shared function
3889         dbus_glib_marshal_dbus_message_to_gvalue_array.
3890
3891         * glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
3892         Will be changed once we have annotations.
3893
3894         * glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
3895         GStaticRWLock.  Callers updated.
3896         (wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
3897         (string_table_next): New function for iterating over zero-terminated
3898         string value array.
3899         (string_table_lookup): New function; retrieves specific entry in
3900         array.
3901         (get_method_data): New function; look up method data in object data chunk.
3902         (object_error_domain_prefix_from_object_info)
3903         (object_error_code_from_object_info): New functions, but not implemented yet.
3904         (method_interface_from_object_info): New function; retrieve interface name.
3905         (method_name_from_object_info): New function; retrieve method name.
3906         (method_arg_info_from_object_info): New function; retrieve argument data.
3907         (arg_iterate): New function; iterates over serialized argument data.
3908         (method_dir_signature_from_object_info): New function; returns a
3909         GString holding type signature for arguments for just one
3910         direction (input or output).
3911         (method_input_signature_from_object_info)
3912         (method_output_signature_from_object_info): New functions.
3913         (dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
3914         converts dbus message arguments into a GValue array.  Used for both
3915         signal handling and method invocation.
3916         (struct DBusGlibWriteIterfaceData): New utility structure.
3917         (write_interface): New function; generate introspection XML for
3918         an interface.
3919         (introspect_interfaces): New function; gathers all interface->methods,
3920         generates introspection XML for them.
3921         (handle_introspect): Invoke introspect_interfaces.
3922         (get_object_property): Be sure to zero-initalize stack-allocated GValue.
3923         (lookup_object_and_method): New function; examines an incoming message
3924         and attempts to match it up (via interface, method name, and argument
3925         signature) with a known object and method.
3926         (gerror_domaincode_to_dbus_error_name): New function; converts a
3927         GError domain and code into a DBus error name.  Needs GError data
3928         added to object introspection to work well.
3929         (gerror_to_dbus_error_message): Creates a DBusMessage error return from
3930         GError.
3931         (invoke_object_method): New function to invoke an object method
3932         looked up via lookup_object_and_method.  Parses the incoming
3933         message, turns it into a GValue array, then invokes the marshaller
3934         specified in the DBusGMethodInfo.  Creates a new message with
3935         either return values or error message as appropriate.
3936         (gobject_message_function): Invoke lookup_object_and_method and
3937         invoke_object_method.
3938
3939         * glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
3940         (enum DBusBindingOutputMode): New enum for binding output modes.
3941         (pretty_print): Print binding names.
3942         (dbus_binding_tool_error_quark): GError bits.
3943         (version): Fix typo.
3944         (main): Create GIOChannel for output.  Parse new --mode argument,
3945         possible values are "pretty-print", "glib-server", "glib-client".
3946         Use mode to invoke appropriate function.
3947         
3948         * glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.
3949
3950         * glib/dbus-glib-tool.h: New header, just includes GError bits
3951         for now.
3952
3953         * glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
3954         maps binding style to name.
3955         (struct MethodInfo): Ditto.
3956         (get_hash_keys, get_hash_key): Utility function, returns keys for
3957         a GHashTable.
3958         (interface_info_new, method_info_new): Initialize bindings.
3959         (interface_info_unref, method_info_unref): Destroy bindings.
3960         (method_info_get_binding_names, method_info_get_binding_name)
3961         (interface_info_get_binding_names, interface_info_get_binding_name):
3962         Functions for retrieving binding names.
3963         (method_info_set_binding_name, interface_info_set_binding_name):
3964         Functions for setting binding names.
3965
3966         * glib/dbus-binding-tool-glib.h: New file, has prototypes
3967         for glib binding generation.
3968
3969         * glib/dbus-binding-tool-glib.c: New file, implements server-side
3970         and client-side glib glue generation.
3971
3972         * glib/Makefile.am (dbus_binding_tool_SOURCES): Add
3973         dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
3974         dbus-glib-tool.h.
3975
3976         * dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
3977         of using GClosureMarshal directly.
3978         (struct DBusGObjectInfo): Add n_infos member.
3979
3980         * test/glib/test-service-glib.xml: New file; contains introspection data
3981         for MyTestObject used in test-service-glib.c.
3982
3983         * test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
3984         (my_object_do_nothing, my_object_increment, my_object_throw_error)
3985         (my_object_uppercase, my_object_many_args): New test methods.
3986         (main): Use dbus_g_object_class_install_info to include generated object
3987         info.
3988
3989         * test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
3990         as well as client-side bindings.
3991
3992         * test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
3993         (main): Activate TestSuiteGLibService; test invoke a bunch of its methods
3994         using both the dbus_gproxy stuff directly as well as the generated bindings.
3995
3996 2005-02-15  Havoc Pennington  <hp@redhat.com>
3997
3998         * dbus/dbus-connection.c (dbus_connection_dispatch): always
3999         complete a pending call, don't run filters first.
4000
4001         * glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
4002         dbus_pending_call_steal_reply
4003
4004         * dbus/dbus-pending-call.c (dbus_pending_call_block): just call
4005         _dbus_connection_block_pending_call
4006         (dbus_pending_call_get_reply): change to steal_reply and return a
4007         ref
4008
4009         * dbus/dbus-connection.c
4010         (dbus_connection_send_with_reply_and_block): port to work in terms
4011         of DBusPendingCall
4012         (_dbus_connection_block_pending_call): replace block_for_reply
4013         with this
4014
4015 2005-02-14  Havoc Pennington  <hp@redhat.com>
4016
4017         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
4018         properly handle looking up group information by name; fix 
4019         from j@bootlab.org
4020
4021 2005-02-13  Havoc Pennington  <hp@redhat.com>
4022
4023         * dbus/dbus-connection.c (dbus_connection_return_message) 
4024         (dbus_connection_borrow_message): hold dispatch lock while message
4025         is outstanding
4026         (_dbus_connection_block_for_reply): hold dispatch lock while we
4027         block for the reply, so nobody steals our reply
4028         (dbus_connection_pop_message): hold the dispatch lock while we
4029         pluck the message
4030
4031 2005-02-13  Havoc Pennington  <hp@redhat.com>
4032
4033         * dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
4034         (_dbus_connection_release_dispatch)
4035         (_dbus_connection_acquire_io_path)
4036         (_dbus_connection_release_io_path): make the mutex and condvar
4037         control access to the "acquired" flag. Drop the connection lock
4038         while waiting on the condvar. Hopefully these are baby steps in
4039         roughly the right direction.
4040
4041 2005-02-13  Havoc Pennington  <hp@redhat.com>
4042
4043         * dbus/dbus-connection.c: use separate mutexes for the condition
4044         variables; this is some kind of baseline for sanity, but the
4045         condition variables still aren't used correctly afaict
4046
4047 2005-02-13  Havoc Pennington  <hp@redhat.com>
4048
4049         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
4050         fix a double-unlock
4051
4052         * dbus/dbus-connection.c
4053         (_dbus_connection_detach_pending_call_unlocked): add this
4054
4055         Initial semi-correct pass through to fix thread locking; there are
4056         still some issues with the condition variable paths I'm pretty
4057         sure
4058         
4059         * dbus/dbus-server.c: add a mutex on DBusServer and appropriate
4060         lock/unlock calls
4061
4062         * dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
4063         rename to add _unlocked
4064         (struct DBusConnection): move "dispatch_acquired" and
4065         "io_path_acquired" to use only one bit each.
4066         (CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
4067         (dbus_connection_set_watch_functions): hacky fix to reentrancy
4068         (_dbus_connection_add_watch, _dbus_connection_remove_watch) 
4069         (_dbus_connection_toggle_watch, _dbus_connection_add_timeout) 
4070         (_dbus_connection_remove_timeout) 
4071         (_dbus_connection_toggle_timeout): drop lock when calling out to
4072         user functions; done in a hacky/bad way.
4073         (_dbus_connection_send_and_unlock): add a missing unlock
4074         (_dbus_connection_block_for_reply): add a missing unlock
4075
4076         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
4077         drop lock in a hacky probably unsafe way to call out to user
4078         function
4079
4080 2005-02-12  Havoc Pennington  <hp@redhat.com>
4081
4082         * tools/dbus-tree-view.c (info_set_func_text): display more
4083         details on args
4084
4085         * bus/driver.c (bus_driver_handle_list_services): list the bus
4086         driver
4087
4088         * glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied
4089
4090         * glib/dbus-gidl.c (signal_info_get_n_args): new function
4091         (method_info_get_n_args): new function
4092
4093 2005-02-12  Havoc Pennington  <hp@redhat.com>
4094
4095         * bus/driver.c (bus_driver_handle_introspect): add introspection
4096         for bus driver
4097
4098 2005-02-12  Havoc Pennington  <hp@redhat.com>
4099
4100         * bus/driver.c: put the signature of each bus driver method in the
4101         table of handlers and check it on incoming calls; this isn't
4102         really useful, but going to add introspect support in a minute.
4103
4104 2005-02-11  Joe Shaw  <joeshaw@novell.com>
4105
4106         * mono/Connection.cs: The unpredictability of finalizers in mono
4107         prevents us from deterministically disconnecting the filters from
4108         the Service class's finalizer, so move tracking of filters and
4109         matches here.  Add API for that.
4110
4111         * mono/Service.cs: Remove the code, add code which calls the
4112         methods now on the Connection class.
4113
4114 2005-02-11  John (J5) Palmieri  <johnp@redhat.com>
4115
4116         * python/dbus.py (class Sender): added to support dbus signals better
4117         (Bus::add_signal_receiver): added expand_args parameter which defaults
4118         to True.  When expand args is True the signal handler will pass the 
4119         message arguments as parameters to the signal handler.  If False
4120         revert to previous behavior where the signal handler must get the
4121         argument list from the message.  This is to help port applications
4122         like HAL that have a tendancy to send variable length argument lists.
4123         self._match_rule_to_receivers is now a dict of dicts.
4124         (Bus::remove_signal_receiver): pop handler off the dict intead of 
4125         removing it from a list
4126         (Bus::_signal_func): change signal handlers so that interface,
4127         signal_name, service, path and message are packed into a Sender
4128         object and that is passed to the handler.  If expand_args is True
4129         extract the args list from the message and append it to the parameter
4130         list
4131         
4132         * python/dbus_bindings.pyx.in (class Signature): added to support 
4133         signiature types
4134         (MessageIter::__init__): changed iteration limit to match D-BUS
4135         (MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY, 
4136         STRUCT and VARIENT type support
4137         (MessageIter::python_value_to_dbus_sig): made recursive to support
4138         recursive types
4139         (MessageIter::append*): added Signature, dict, tuple 
4140         support
4141
4142         * python/examples/example-client.py: added examples of getting tuples
4143         and dicts
4144
4145         * python/examples/example-service.py: added examples of sending tuples
4146         and dicts
4147
4148         * python/examples/example-signal-recipient.py: Fixed to handle new
4149         signal callback format
4150
4151 2005-02-10  Havoc Pennington  <hp@redhat.com>
4152
4153         * test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
4154         (call dbus_g_proxy_add_signal)
4155
4156         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
4157         escape the hostname
4158         (_dbus_server_new_for_domain_socket): escape the path
4159
4160         * dbus/dbus-address.c (dbus_address_escape_value): new
4161         (dbus_address_unescape_value): new
4162         (dbus_parse_address): unescape values
4163
4164         * dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function
4165
4166         * doc/dbus-specification.xml: explain how to escape values in
4167         addresses
4168
4169 2005-02-10  Havoc Pennington  <hp@redhat.com>
4170
4171         * dbus/dbus-message-factory.c (generate_special): modify test to
4172         avoid using a non-basic dict key
4173
4174         * dbus/dbus-marshal-validate-util.c: add test for the below
4175
4176         * doc/dbus-specification.xml: require that dict keys are a basic
4177         type
4178
4179         * dbus/dbus-marshal-validate.c
4180         (_dbus_validate_signature_with_reason): require that dict key is a
4181         basic type
4182
4183 2005-02-10  Havoc Pennington  <hp@redhat.com>
4184
4185         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
4186         change to be _and_unlock instead of _unlocked
4187
4188         * dbus/dbus-connection.c
4189         (_dbus_connection_send_preallocated_unlocked_no_update): rename to
4190         have no_update so we can find this bug quickly in future
4191
4192 2005-02-10  Havoc Pennington  <hp@redhat.com>
4193
4194         * dbus/dbus-message-util.c (verify_test_message): tests for string
4195         array
4196
4197         * dbus/dbus-message.c (dbus_message_append_args_valist): add
4198         support for arrays of string/signature/path
4199
4200 2005-02-10  Joe Shaw  <joeshaw@novell.com>
4201
4202         * dbus/dbus-connection.c
4203         (_dbus_connection_queue_received_message_link,
4204         _dbus_connection_message_sent): Add the path to
4205         the verbose output.
4206         (_dbus_connection_send_preallocated_and_unlock): Added.  Calls
4207         _dbus_connection_send_preallocated_unlocked(), updated the
4208         dispatch status, and unlocks.  Fixes a bug where certain
4209         situations (like a broken pipe) could cause a Disconnect message
4210         to not be sent, tricking the bus into thinking a service was still
4211         there when the process had quit.
4212         (_dbus_connection_send_preallocated): Call
4213         _dbus_connection_send_preallocated_and_unlock().
4214         (_dbus_connection_send_and_unlock): Added.  Calls
4215         _dbus_connection_send_preallocated_and_unlock().
4216         (dbus_connection_send): Call _dbus_connection_send_and_unlock().
4217         (dbus_connection_send_with_reply): Update the dispatch status and
4218         unlock.
4219
4220         * mono/Service.cs (~Service): Added.  Removes the filter so that
4221         we don't get unmanaged code calling back into a GCed delegate.
4222         (RemoveFilter); Added.
4223
4224 2005-02-09  John (J5) Palmieri  <johnp@redhat.com>
4225
4226         * dbus/dbus-message.c (dbus_message_iter_open_container):
4227         - Removed check for iterator type being an array because
4228         get_arg_type does not work with writer iterators
4229         - Pass NULL to _dbus_type_writer_recurse if signiture is NULL
4230
4231 2005-02-07  Havoc Pennington  <hp@redhat.com>
4232
4233         * doc/dbus-specification.xml: some more language cleanups; add
4234         stuff about how to deal with invalid protocol and extension
4235         points; add _ to allowed chars in auth commands; add EXTENSION_
4236         auth command prefix
4237
4238 2005-02-06  Havoc Pennington  <hp@redhat.com>
4239
4240         * s/expected/required/ in a couple places for clarity
4241
4242 2005-02-07  Colin Walters  <walters@verbum.org>
4243
4244         * bus/selinux.c (bus_selinux_allows_send): Handle NULL for
4245         sender or proposed_recipient.
4246
4247 2005-02-06  Havoc Pennington  <hp@redhat.com>
4248
4249         * dbus/dbus-message-factory.c (generate_special): more tests
4250
4251         * dbus/dbus-marshal-validate.c (validate_body_helper): detect
4252         array length that exceeds the maximum
4253
4254 2005-02-05  Havoc Pennington  <hp@redhat.com>
4255
4256         * dbus/dbus-message-factory.c (generate_special): more test cases,
4257         increasing coverage
4258
4259         * dbus/dbus-marshal-validate.c (validate_body_helper): return the
4260         reason why a signature was invalid
4261
4262         * dbus/dbus-marshal-header.c (load_and_validate_field): fix to
4263         skip the length of the string before we look at it in validation
4264
4265         * dbus/dbus-string-util.c (_dbus_string_test): add tests for
4266         equal_substring
4267
4268         * dbus/dbus-message.c (_dbus_message_loader_new): default
4269         max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH
4270
4271 2005-02-05  Havoc Pennington  <hp@redhat.com>
4272
4273         * dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
4274         if the signature of a variant was empty
4275         (_dbus_validate_signature_with_reason): catch "(a)" (array inside
4276         struct with no element type)
4277
4278         * dbus/dbus-message-factory.c (generate_uint32_changed): add more
4279         mangled messages to break things
4280
4281 2005-02-04  Havoc Pennington  <hp@redhat.com>
4282
4283         * glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
4284         g_quark_try_string() so it actually can return 0
4285         (dbus_g_proxy_connect_signal): ditto
4286
4287 2005-02-04  Havoc Pennington  <hp@redhat.com>
4288
4289         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
4290         bogus warning
4291         (tristring_from_message): assert cleanly on null path/interface
4292         (should not be possible though I decided later)
4293         (dbus_g_proxy_dispose): move proxy manager unregistration here
4294         (DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
4295         g_return_if_fail() checks
4296
4297 2005-02-04  Havoc Pennington  <hp@redhat.com>
4298
4299         * doc/Makefile.am (EXTRA_DIST): add DTDs to makefile
4300
4301         * doc/introspect.dtd: add introspect.dtd from David A. Wheeler
4302         (with some minor changes)
4303
4304         * doc/dbus-specification.xml: add deprecated attribute to
4305         introspection format
4306
4307 2005-01-31  Havoc Pennington  <hp@redhat.com>
4308
4309         * glib/dbus-gproxy.c: rewrite how signals work again, this time I
4310         think it's sort of right
4311
4312 2005-01-30  Havoc Pennington  <hp@redhat.com>
4313
4314         * tools/dbus-viewer.c: kind of half-ass hook up the option menu.
4315
4316 2005-01-30  Havoc Pennington  <hp@redhat.com>
4317
4318         * tools/dbus-names-model.c: dynamically watch NameOwnerChanged
4319
4320         * autogen.sh: change to autotools 1.9
4321
4322         * glib/dbus-gproxy.c: completely change how signals work
4323         (dbus_g_proxy_add_signal): new function to specify signature of a
4324         signal
4325         (dbus_g_proxy_emit_received): marshal the dbus message to GValues,
4326         and g_warning if the incoming message has the wrong signature.
4327
4328 2005-01-30  Havoc Pennington  <hp@redhat.com>
4329
4330         * tools/dbus-names-model.c (have_names_notify): fix this
4331
4332         * dbus/dbus-message.c (_dbus_message_iter_get_args_valist): clean
4333         up the string array handling a bit 
4334
4335 2005-01-30  Havoc Pennington  <hp@redhat.com>
4336
4337         * glib/dbus-glib.c (dbus_g_pending_call_set_notify): new function
4338         (dbus_g_pending_call_cancel): new function
4339
4340         * dbus/dbus-glib.h: move GType decls for connection/message here;
4341         * dbus/dbus-glib.c: move all the g_type and ref/unref stuff in
4342         here, just kind of rationalizing how we handle all that
4343
4344         * tools/dbus-names-model.c: new file for a tree model listing the
4345         services on a bus
4346
4347         * tools/dbus-tree-view.c (model_new): use proper typing on the
4348         model rows
4349
4350 2005-01-30  Havoc Pennington  <hp@redhat.com>
4351
4352         * glib/dbus-gmain.c: add a custom GSource back that just checks
4353         whether the message queue has anything in it; otherwise, there are 
4354         cases where we won't see messages in the queue since there was no 
4355         IO visible to the glib main loop
4356
4357         * dbus/dbus-connection-internal.h (_DBUS_DEFAULT_TIMEOUT_VALUE):
4358         increase default message timeout to 25 seconds
4359
4360 2005-01-30  Havoc Pennington  <hp@redhat.com>
4361
4362         * test/glib/test-profile.c (no_bus_stop_server): remove the
4363         warning about the g_warning that I just fixed
4364
4365         * glib/dbus-gmain.c: rewrite the main loop stuff to avoid the
4366         custom source, seems to be a lot easier to understand and work
4367         better.
4368
4369 2005-01-30  Havoc Pennington  <hp@redhat.com>
4370
4371         I think this main loop thing is conceptually broken, but here are 
4372         some band aids. I'll maybe rewrite it in a minute.
4373         
4374         * glib/dbus-gmain.c (add_timeout): timeout stuff doesn't use the
4375         custom GSource, so don't pass it in; confusing
4376         (gsource_server_finalize, gsource_connection_finalize): add
4377         finalize handlers that remove all the watches.  
4378
4379 2005-01-30  Havoc Pennington  <hp@redhat.com>
4380
4381         * glib/dbus-gobject.c (introspect_properties): fix the XML
4382         generated
4383
4384         * dbus/dbus-message.c (dbus_message_unref): add an in_cache flag
4385         which effectively detects the use of freed messages
4386
4387         * glib/dbus-gobject.c (handle_introspect): modify and return the
4388         reply message instead of the incoming message
4389
4390         * dbus/dbus-object-tree.c (handle_default_introspect_unlocked):
4391         gee, maybe it should SEND THE XML instead of just making a string
4392         and freeing it again ;-)
4393
4394         * tools/dbus-print-message.c (print_message): improve printing of
4395         messages
4396
4397         * configure.in: add debug-glib.service to the output
4398
4399 2005-01-30  Havoc Pennington  <hp@redhat.com>
4400
4401         dbus-viewer introspected and displayed the bus driver
4402         
4403         * dbus/dbus-object-tree.c 
4404         (object_tree_test_iteration): add tests for a handler registered on "/"
4405
4406         * dbus/dbus-object-tree.c
4407         (_dbus_decompose_path): fix to handle path "/" properly
4408         (run_decompose_tests): add tests for path decomposition
4409         
4410         * glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
4411         properly
4412
4413         * glib/dbus-gobject.c (handle_introspect): fix quotes
4414
4415         * test/glib/run-test.sh: support launching the bus, then running
4416         dbus-viewer
4417
4418         * test/glib/test-service-glib.c (main): put in a trivial gobject
4419         subclass and register it on the connection
4420
4421         * bus/driver.c (bus_driver_handle_introspect): implement
4422         introspection of the bus driver service
4423
4424         * dbus/dbus-protocol.h: add #defines for the XML namespace,
4425         identifiers, doctype decl
4426
4427         * bus/driver.c (bus_driver_handle_get_service_owner): handle
4428         attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by 
4429         returning the service unchanged.
4430         (bus_driver_handle_message): remove old check for reply_serial in
4431         method calls, now the message type deals with that
4432         (bus_driver_handle_message): handle NULL interface
4433
4434         * glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function
4435
4436         * glib/dbus-gloader-expat.c (description_load_from_string): allow
4437         -1 for len
4438
4439         * tools/dbus-viewer.c: add support for introspecting a service on
4440         a bus
4441
4442         * glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
4443         (dbus_g_pending_call_unref): add
4444
4445 2005-01-29  Havoc Pennington  <hp@redhat.com>
4446
4447         * tools/dbus-tree-view.c: add support for displaying properties.
4448         (run dbus-viewer with an introspect xml file as arg, then resize
4449         the window so the tree elements show up, not sure what that is)
4450
4451         * glib/dbus-gobject.c (handle_introspect): return
4452         org.freedesktop.Properties and org.freedesktop.Introspectable
4453         interfaces when we are introspected.
4454
4455         * doc/dbus-specification.xml: allow empty interface name when 
4456         Get/Set a property
4457
4458 2005-01-29  Havoc Pennington  <hp@redhat.com>
4459
4460         * glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
4461         though it uses glib, it could be extended for any binding in
4462         principle
4463
4464         * glib/dbus-gobject.c (gobject_message_function): change to the
4465         new way properties work
4466
4467         * dbus/dbus-protocol.h: add the new interfaces
4468
4469         * doc/dbus-specification.xml: document the introspection format,
4470         Introspectable interface, and add an org.freedesktop.Properties
4471         interface.
4472
4473         * glib/dbus-gparser.c: add support for a <property> element
4474
4475         * glib/dbus-gidl.c: add PropertyInfo
4476
4477         * glib/dbus-gobject.c (handle_introspect): put the outermost
4478         <node> outside the signal and property descriptions.
4479         (introspect_properties): export properties as <property> rather
4480         than as method calls
4481
4482 2005-01-28  Havoc Pennington  <hp@redhat.com>
4483
4484         * doc/TODO, doc/dbus-specification.xml: spec and TODO tweaks
4485         related to authentication protocol
4486
4487 2005-01-28  John (J5) Palmieri  <johnp@redhat.com>
4488
4489         * python/dbus_bindings.pyx.in: Updated to handle new D-BUS type system
4490                 - BUS_ACTIVATION -> BUS_STARTER
4491                 - DBUS_BUS_ACTIVATION -> DBUS_BUS_STARTER
4492                 - class MessageIter (__init__): Added recursion checking 
4493                 so we throw a nice error instead of just disconnecting from the
4494                 bus.
4495                 (get): Added arg_type parameter for recursion.
4496                 Removed the nil type
4497                 Added signiture type placeholder (not implemented)
4498                 Added struct type placeholder (not implemented)
4499                 Added varient type placeholder (not implemented)
4500                 Commented out dict type for now     
4501                 (get_element_type): renamed from get_array_type
4502                 (get_*): changed to use the dbus_message_iter_get_basic API
4503                 (get_*_array): removed in favor of recursive get_array method
4504                 (get_array): new recursive method which calls get to marshal
4505                 the elements of the array
4506                 (value_to_dbus_sig): New method returns the corrasponding
4507                 dbus signiture to a python value
4508                 (append): Comment out dict handling for now
4509                 Handle lists with the new recursive API
4510                 Comment out None handling for now
4511                 (append_nil): removed
4512                 (append_*): changed to use dbus_message_iter_append_basic API
4513                 (append_*_array): removed in favor of recursive append_array 
4514                 method
4515                 (__str__): Make it easier to print out recursive iterators
4516                 for debugging
4517                 - class Message (__str__): moved type inspection to the
4518                 MessageIter class' __str__ method
4519                 (get_iter): Added an append parameter wich defaults to False
4520                 If True use the new API's to create an append iterator
4521
4522         * python/dbus.py: Update to use new bindings API
4523                 - TYPE_ACTIVATION -> TYPE_STARTER
4524                 - class Bus (_get_match_rule): GetServiceOwner -> GetNameOwner
4525                 - class ActivationBus -> class StarterBus
4526                 - class RemoteObject (__call__): get an append iterator
4527                 - (_dispatch_dbus_method_call): get an append iterator
4528                 - class Object (emit_signal): get an append iterator
4529
4530         * python/examples/: Fixed up the examples to work with the new API
4531                 
4532 2005-01-28  Joe Shaw  <joeshaw@novell.com>
4533
4534         * configure.in: Bump version up to 0.30.
4535
4536         * HACKING: Add a release item to bump the version number up after 
4537         a release.
4538
4539 2005-01-28  Havoc Pennington  <hp@redhat.com>
4540
4541         * doc/dbus-specification.xml: update to describe 16-bit types and
4542         dict entries
4543
4544         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint16): fix broken
4545         assertion
4546
4547         * dbus/dbus-protocol.h (DBUS_TYPE_DICT_ENTRY): add DICT_ENTRY as a
4548         type
4549
4550         * dbus/dbus-marshal-recursive.c: implement
4551
4552 2005-01-27  Havoc Pennington  <hp@redhat.com>
4553
4554         * dbus/dbus-arch-deps.h.in: add 16/32-bit types
4555
4556         * configure.in: find the right type for 16 and 32 bit ints as well
4557         as 64
4558
4559         * dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add
4560         the 16-bit types so people don't have to stuff them in 32-bit or
4561         byte arrays.
4562
4563 2005-01-27  Havoc Pennington  <hp@redhat.com>
4564
4565         * dbus/dbus-message.c: byteswap the message if you init an
4566         iterator to read/write from it
4567         
4568         * dbus/dbus-marshal-byteswap.c: new file implementing 
4569         _dbus_marshal_byteswap()
4570
4571         * dbus/dbus-marshal-basic.c: add _dbus_swap_array()
4572
4573 2005-01-26  Havoc Pennington  <hp@redhat.com>
4574         
4575         * dbus/dbus-marshal-validate-util.c: break this out (and fix
4576         build, apparently - nobody noticed?)
4577         
4578 2005-01-26  Havoc Pennington  <hp@redhat.com>
4579
4580         * dbus/dbus-marshal-recursive.h: remove todo comment
4581
4582 2005-01-25  Joe Shaw  <joeshaw@novell.com>
4583
4584         * Land the mono binding changes to conform to the new APIs.
4585
4586         * mono/Makefile.am: Remove Custom.cs, DBusType/Custom.cs,
4587         DBusType/Dict.cs, and DBusType/Nil.cs from the build.
4588
4589         * mono/Arguments.cs (GetCodeAsString): Added.  Returns the dbus
4590         type code as a string.
4591         (InitAppending): Rename dbus_message_append_iter_init() to
4592         dbus_message_iter_init_append().
4593
4594         * mono/BusDriver.cs: Rename ServiceEventHandler to
4595         NameOwnerChangedHandler.  Rename GetServiceOwner to GetOwner.
4596         Rename ServiceOwnerChanged to NameOwnerChanged.
4597
4598         * mono/Connection.cs: Rename BaseService to UniqueName, and the
4599         underlying C call.
4600
4601         * mono/Custom.cs: Removed.  The CUSTOM type has been removed.
4602
4603         * mono/Service.cs: Rename Exists to HasOwner, internally rename
4604         dbus_bus_acquire_service() to dbus_bus_request_name().
4605
4606         * mono/DBusType/Array.cs (ctor): Use Type.GetElementType() instead
4607         of Type.UnderlyingSystemType to get the correct element type for
4608         the array.
4609         (ctor): Update code for new APIs: use dbus_message_iter_recurse(),
4610         dbus_message_get_{element|arg}_type() instead of
4611         dbus_message_iter_init_array_iterator().
4612         (Append): Replace dbus_message_iter_append_array() with
4613         dbus_message_iter_open_container() and
4614         dbus_message_iter_close_container().
4615
4616         * mono/DBusType/Custom.cs, mono/DBusType/Nil.cs: Removed.  These
4617         types have been removed.
4618         
4619         * mono/DBusType/*.cs: Replace calls of
4620         dbus_message_iter_get_[type]() to dbus_message_iter_get_basic(),
4621         but specify the type in the DllImport extern declaration.  Ditto
4622         for dbus_message_iter_append_[type]() ->
4623         dbus_message_iter_append_basic().
4624
4625         * mono/example/BusListener.cs: Update for ServiceEventHandler ->
4626         NameOwnerChangedHandler.
4627
4628 2005-01-25  John (J5) Palmieri  <johnp@redhat.com>
4629
4630         * python/dbus_bindings.pyx.in: Rename of methods and bindings
4631                 - get_base_service -> get_unique_name
4632                 - bus_get_base_service -> bus_get_unique_name
4633                 - dbus_bus_get_base_service -> dbus_bus_get_unique_name
4634                 - ACTIVATION_REPLY_ACTIVATED -> DBUS_START_REPLY_SUCCESS 
4635                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> DBUS_START_REPLY_ALREADY_RUNNING
4636                 - bus_activate_service -> bus_start_service_by_name
4637                 - dbus_bus_activate_service -> dbus_bus_start_service_by_name
4638                 - bus_acquire_service -> bus_request_name
4639                 - dbus_bus_acquire_service -> dbus_bus_request_name
4640                 - bus_service_exists -> bus_name_has_owner
4641                 - dbus_bus_service_exists -> dbus_bus_name_has_owner
4642
4643         * python/dbus.py: Rename of methods
4644                 - activate_service -> start_service_by_name
4645                 - bus_acquire_service -> bus_request_name
4646                 - ACTIVATION_REPLY_ACTIVATED -> START_REPLY_SUCCESS 
4647                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> START_REPLY_ALREADY_RUNNING
4648
4649         
4650 2005-01-24  Joe Shaw  <joeshaw@novell.com>
4651
4652         * dbus/dbus-connection.c (dbus_connection_dispatch): Print out the
4653         signature for the method that can't be found.
4654
4655         * dbus/dbus-message.c (dbus_message_iter_init): To check to see if
4656         the message has any arguments, we need to call
4657         _dbus_type_reader_get_current_type(), not
4658         _dbus_type_reader_has_next().
4659
4660 2005-01-24  Havoc Pennington  <hp@redhat.com>
4661
4662         * dbus/dbus-message-factory.c: more testing of message validation
4663
4664         * dbus/dbus-protocol.h (DBUS_MINIMUM_HEADER_SIZE): move to this
4665         header
4666
4667 2005-01-23  Havoc Pennington  <hp@redhat.com>
4668
4669         * dbus/dbus-message-factory.c, dbus/dbus-message-util.c: 
4670         get this all working, not many tests in the framework yet though
4671
4672 2005-01-22  Havoc Pennington  <hp@redhat.com>
4673
4674         * doc/dbus-faq.xml, doc/dbus-tutorial: add a FAQ and update
4675         tutorial, based on work from David Wheeler.
4676
4677 2005-01-21  Havoc Pennington  <hp@redhat.com>
4678
4679         * dbus/dbus-bus.c: add more return_if_fail checks
4680
4681         * dbus/dbus-message.c (load_message): have the "no validation"
4682         mode (have to edit the code to toggle the mode for now though)
4683
4684         * dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that
4685         skips all validation; I want to use this at least for benchmark
4686         baseline, I'm not sure if it should be a publicly-available switch.
4687
4688 2005-01-21  Havoc Pennington  <hp@redhat.com>
4689
4690         * glib/dbus-gmain.c: don't put the GLib bindings in the same
4691         toplevel doxygen group as the low-level API stuff
4692
4693         * dbus/dbus.h: note that libdbus is the low-level API
4694
4695 2005-01-20  Havoc Pennington  <hp@redhat.com>
4696
4697         * update-dbus-docs.sh: script to update docs on the web site, only
4698         works for me though. neener.
4699
4700 2005-01-20  Havoc Pennington  <hp@redhat.com>
4701
4702         * dbus/dbus-sysdeps.c (_dbus_poll): amazingly, trying to compile
4703         code can reveal bugs in it
4704
4705 2005-01-20  Havoc Pennington  <hp@redhat.com>
4706
4707         * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
4708         select() version, patches from Tor Lillqvist
4709
4710 2005-01-20  Havoc Pennington  <hp@redhat.com>
4711
4712         * doc/dbus-tutorial.xml: replace > with &gt;
4713
4714         * bus/services.c (bus_registry_acquire_service): validate the name
4715         and return a better error if it's no good.
4716
4717         * doc/dbus-specification.xml: note NO_AUTO_START change
4718
4719         * dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
4720         from AUTO_START, we're toggling the default
4721
4722         * bus/dispatch.c: adapt the tests to change of auto-start default
4723
4724 2005-01-18  Havoc Pennington  <hp@redhat.com>
4725
4726         * rename dbus-daemon-1 to dbus-daemon throughout
4727
4728 2005-01-18  Havoc Pennington  <hp@redhat.com>
4729
4730         * Throughout, grand renaming to strip out the use of "service",
4731         just say "name" instead (or "bus name" when ambiguous).  Did not
4732         change the internal code of the message bus itself, only the
4733         programmer-facing API and messages.
4734         
4735         * doc/dbus-specification.xml: further update the message bus section
4736         
4737         * bus/config-parser.c (all_are_equiv): fix bug using freed string
4738         in error case
4739
4740 2005-01-17  Havoc Pennington  <hp@redhat.com>
4741
4742         * dbus/dbus-types.h: remove 16-bit types since we don't use them
4743         ever
4744
4745         * dbus/dbus-marshal-validate.c (_dbus_validate_path): disallow any
4746         "invalid name character" not only non-ASCII
4747
4748         * doc/dbus-specification.xml: further update spec, message bus 
4749         parts are still out-of-date but the marshaling etc. stuff is now
4750         accurate-ish
4751
4752 2005-01-17  Havoc Pennington  <hp@redhat.com>
4753
4754         * doc/dbus-specification.xml: partially update spec
4755
4756 2005-01-17  Havoc Pennington  <hp@redhat.com>
4757
4758         * Throughout, align variant bodies according to the contained
4759         type, rather than always to 8. Should save a fair bit of space in
4760         message headers.
4761         
4762         * dbus/dbus-marshal-validate.c (_dbus_validate_body_with_reason):
4763         fix handling of case where p == end
4764
4765         * doc/TODO: remove the dbus_bool_t item and variant alignment items
4766
4767 2005-01-17  Havoc Pennington  <hp@redhat.com>
4768
4769         * dbus/dbus-types.h: hardcode dbus_bool_t to 32 bits
4770
4771         * Throughout: modify DBUS_TYPE_BOOLEAN to be a 32-bit type instead
4772         of an 8-bit type. Now dbus_bool_t is the type to use whenever you 
4773         are marshaling/unmarshaling a boolean.
4774
4775 2005-01-16  Havoc Pennington  <hp@redhat.com>
4776
4777         This is about it on what can be disabled/deleted from libdbus
4778         easily, back below 150K anyhow. Deeper cuts are more work than 
4779         just turning the code off as I've done here.
4780         
4781         * dbus/dbus-marshal-basic.c (_dbus_pack_int32): we don't need the
4782         signed int convenience funcs
4783
4784         * dbus/dbus-internals.c (_dbus_verbose_real): omit when not in
4785         verbose mode
4786
4787         * dbus/dbus-string-util.c, dbus/dbus-string.c: more breaking
4788         things out of libdbus
4789
4790         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-util.c: same
4791         
4792         * dbus/dbus-hash.c: purge the TWO_STRINGS crap (well, make it
4793         tests-enabled-only, though it should probably be deleted)
4794
4795         * dbus/dbus-message-util.c: same stuff
4796
4797         * dbus/dbus-auth-util.c: same stuff
4798
4799 2005-01-16  Havoc Pennington  <hp@redhat.com>
4800
4801         * dbus/dbus-userdb-util.c: split out part of dbus-userdb.c
4802
4803         * dbus/dbus-sysdeps.c (_dbus_uid_from_string): move here to pave
4804         way for stripping down dbus-userdb.c stuff included in libdbus.
4805         Rename _dbus_parse_uid for consistency.
4806
4807 2005-01-16  Havoc Pennington  <hp@redhat.com>
4808
4809         * dbus/dbus-internals.c (_dbus_real_assert): print the function
4810         name the assertion failed in
4811
4812         * dbus/dbus-internals.h (_dbus_return_if_fail) 
4813         (_dbus_return_val_if_fail): assert that the name of the function
4814         containing the check doesn't start with '_', since we only want to 
4815         use checks on public functions
4816         
4817         * dbus/dbus-connection.c (_dbus_connection_ref_unlocked): change
4818         checks to assertions
4819
4820         * dbus/dbus-marshal-header.c (_dbus_header_set_field_basic):
4821         change checks to asserts for private function
4822
4823         * dbus/dbus-message.c (_dbus_message_set_serial): checks
4824         to asserts for private function
4825
4826         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): remove
4827         broken assertion that was breaking make check
4828         (_dbus_type_reader_array_is_empty): remove this rather than fix
4829         it, was only used in assertions
4830
4831 2005-01-16  Havoc Pennington  <hp@redhat.com>
4832
4833         * test/unused-code-gc.py: hacky script to find code that's used
4834         only by the bus (not libdbus) or used only by tests or not used at
4835         all. It has some false alarms, but looks like we can clean up a
4836         lot of size from libdbus.
4837
4838         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
4839         dbus/Makefile.am: initially move 10K of binary size out of libdbus
4840         
4841 2005-01-16  Havoc Pennington  <hp@redhat.com>
4842
4843         * Add and fix docs according to Doxygen warnings throughout
4844         source.
4845         
4846         * dbus/dbus-marshal-recursive.c
4847         (_dbus_type_reader_array_is_empty): change this to just call
4848         array_reader_get_array_len() and make it static
4849
4850         * dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
4851         from get_array_type
4852         (dbus_message_iter_init_append): rename from append_iter_init
4853
4854         * dbus/dbus-marshal-recursive.c
4855         (_dbus_type_reader_get_element_type): rename from
4856         _dbus_type_reader_get_array_type
4857
4858 2005-01-15  Havoc Pennington  <hp@redhat.com>
4859
4860         * test/glib/test-profile.c (with_bus_server_filter): fix crash
4861
4862         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
4863         when DBUS_DISABLE_ASSERT
4864         (_dbus_marshal_set_basic): be sure we align for the string length
4865
4866         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
4867         this look faster
4868
4869         * dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
4870         inline macro version
4871         (_dbus_string_set_byte): provide inline macro version
4872
4873 2005-01-15  Havoc Pennington  <hp@redhat.com>
4874
4875         * Land the new message args API and type system.
4876
4877         This patch is huge, but the public API change is not 
4878         really large. The set of D-BUS types has changed somewhat, 
4879         and the arg "getters" are more geared toward language bindings;
4880         they don't make a copy, etc.
4881
4882         There are also some known issues. See these emails for details
4883         on this huge patch:
4884         http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
4885         http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
4886         
4887         * dbus/dbus-marshal-*: all the new stuff
4888
4889         * dbus/dbus-message.c: basically rewritten
4890
4891         * dbus/dbus-memory.c (check_guards): with "guards" enabled, init
4892         freed blocks to be all non-nul bytes so using freed memory is less
4893         likely to work right
4894
4895         * dbus/dbus-internals.c (_dbus_test_oom_handling): add
4896         DBUS_FAIL_MALLOC=N environment variable, so you can do
4897         DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
4898         DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
4899         thorough.
4900
4901         * qt/message.cpp: port to the new message args API
4902         (operator<<): use str.utf8() rather than str.unicode()
4903         (pretty sure this is right from the Qt docs?)
4904
4905         * glib/dbus-gvalue.c: port to the new message args API
4906
4907         * bus/dispatch.c, bus/driver.c: port to the new message args API
4908
4909         * dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
4910         "locked" flag to TRUE and align_offset to 0; I guess we never
4911         looked at these anyhow, but seems cleaner.
4912
4913         * dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
4914         move allocation padding macro to this header; use it to implement
4915         (_DBUS_STRING_STATIC): ability to declare a static string.
4916
4917         * dbus/dbus-message.c (_dbus_message_has_type_interface_member):
4918         change to return TRUE if the interface is not set.
4919
4920         * dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
4921         to dbus-marshal-validate.[hc]
4922
4923         * dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
4924         dbus-internals.c
4925
4926         * dbus/Makefile.am: cut over from dbus-marshal.[hc]
4927         to dbus-marshal-*.[hc]
4928
4929         * dbus/dbus-object-tree.c (_dbus_decompose_path): move this
4930         function here from dbus-marshal.c
4931
4932 2005-01-12  Joe Shaw  <joeshaw@novell.com>
4933
4934         * NEWS: Update for 0.23.
4935
4936         * configure.in: Release 0.23.
4937
4938 2005-01-12  Joe Shaw  <joeshaw@novell.com>
4939
4940         * mono/Makefile.am, mono/example/Makefile.am: Always build the 
4941         dbus DLL with --debug.  Clean up after the .mdb files this leaves
4942         behind.
4943
4944         * mono/doc/Makefile.am: Need to uninstall the docs on "make
4945         uninstall"
4946
4947         * mono/Arguments.cs (GetDBusTypeConstructor): If the type
4948         is an enum, get the enum's underlying type.  Another mono
4949         1.1.3 fix.
4950
4951 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4952
4953         Patch from Sjoerd Simons <sjoerd@luon.net>
4954
4955         * mono/Makefile.am, mono/example/Makefile.am: Don't redefine
4956         DESTDIR.  It breaks stuff.
4957
4958 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4959
4960         Patch from Tambet Ingo <tambet@ximian.com>
4961
4962         * mono/DBusType/Array.cs (Get): Get the underlying element type by
4963         calling type.GetElementType().  The code previously depended on
4964         broken Mono behavior, which was fixed in Mono 1.1.3.
4965
4966         * mono/DBusType/Dict.cs (constructor): Fix the parameters for
4967         Activator.CreateInstance() so that the class's constructor is
4968         called with the right parameters.
4969
4970 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4971
4972         Patch from Timo Teräs <ext-timo.teras@nokia.com>
4973
4974         * dbus/dbus-connection.c
4975         (_dbus_connection_queue_received_message_link): Call
4976         _dbus_connection_remove_timeout() instead of the _locked()
4977         variant, since it's always called from
4978         _dbus_connection_handle_watch(), which handles the locking.
4979         Removed the _locked() variant since it's no longer used.
4980
4981 2005-01-03  Havoc Pennington  <hp@redhat.com>
4982
4983         * dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
4984         return
4985         
4986 2004-12-26  Havoc Pennington  <hp@redhat.com>
4987
4988         * dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert
4989
4990 2005-01-03  Havoc Pennington  <hp@redhat.com>
4991
4992         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
4993         floating point
4994
4995         * dbus/dbus-string.c (_dbus_string_insert_alignment): new function
4996
4997 2005-01-02  Havoc Pennington  <hp@redhat.com>
4998
4999         * dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro
5000
5001 2005-01-01  Havoc Pennington  <hp@redhat.com>
5002
5003         * configure.in: add -Wfloat-equal
5004
5005 2005-01-01  Havoc Pennington  <hp@redhat.com>
5006
5007         * dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
5008         for a variety of reasons '==' doesn't do this.
5009
5010 2004-12-31  Havoc Pennington  <hp@redhat.com>
5011
5012         * dbus/dbus-string.c (_dbus_string_equal_substrings): new function
5013         I keep wishing I had
5014
5015 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
5016
5017         * python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED
5018
5019 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
5020
5021         * python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
5022         and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
5023         dbus-protocol.h.  Because they are defines and not enums they are not
5024         autogenerated.
5025
5026 2004-12-26  John (J5) Palmieri  <johnp@redhat.com>
5027
5028         * python/dbus_bindings.pyx.in (bus_activate_service): Bind
5029         dbus_bus_activate_service
5030
5031         * python/dbus.py (Bus.activate_service): activate a service on the
5032         bus.
5033
5034 2004-12-24  Havoc Pennington  <hp@redhat.com>
5035
5036         * test/decode-gcov.c: change to use .gcno and .gcda files, but the
5037         file format has also changed and I haven't adapted to that yet
5038         
5039         * Makefile.am: load .gcno files from latest gcc
5040
5041 2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
5042         * Patch from Rob Taylor <robtaylor@fastmail.fm>
5043
5044         * python/dbus_bindings.pyx.in (bus_get_unix_user): New
5045         lowlevel binding
5046
5047         * python/dbus.py (get_unix_user): Added binding to 
5048         call dbus_bindings.bus_get_unix_user
5049
5050         * python/extract.py: Modified the proto_pat regex to
5051         handle unsigned long
5052
5053 2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5054
5055         * dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
5056         better POSIX compliance.
5057
5058 2004-12-19  Havoc Pennington  <hp@redhat.com>
5059
5060         * dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
5061         (_dbus_string_insert_8_aligned): new functions
5062
5063         * dbus/dbus-string.c (_dbus_string_alloc_space): new function
5064
5065 2004-12-18  Havoc Pennington  <hp@redhat.com>
5066
5067         * dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
5068         macro
5069
5070         * dbus/dbus-message.c: fix a comment, and add a still-unused
5071         not-implemented function
5072
5073         * dbus/dbus-marshal.h: fix comment
5074
5075         * dbus/dbus-internals.h (_DBUS_ISASCII): new macro
5076
5077 2004-12-17  Joe Shaw  <joeshaw@novell.com>
5078
5079         * mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
5080         mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
5081         mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
5082         Type.UnderlyingSystemType to get the actual system type
5083         underneath.  This code previously depended on the broken Mono
5084         behavior, which was fixed in 1.1.3.
5085
5086 2004-11-27  Havoc Pennington  <hp@redhat.com>
5087
5088         * dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
5089         are disabled
5090         (_dbus_string_get_const_data): inline when asserts are disabled
5091
5092         * dbus/dbus-message.c: record the _dbus_current_generation of
5093         creation so we can complain if dbus_shutdown() is used improperly.
5094         Do this only if checks are enabled.
5095
5096         * dbus/dbus-connection.c: ditto
5097         
5098 2004-11-26  Havoc Pennington  <hp@redhat.com>
5099
5100         * test/glib/test-profile.c: add with_bus mode to profile echoes
5101         that go through the bus.
5102
5103         * test/glib/run-test.sh: add ability to run test-profile
5104
5105         * bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
5106         config file reload.
5107
5108 2004-11-26  Havoc Pennington  <hp@redhat.com>
5109
5110         * test/glib/test-profile.c: clean up how the fake_malloc_overhead
5111         thing was implemented
5112
5113 2004-11-26  Havoc Pennington  <hp@redhat.com>
5114
5115         * test/glib/test-profile.c: tweak a bit, add support for some
5116         made-up minimal malloc overhead with plain sockets, since in 
5117         real life some sort of buffers are unavoidable thus we could 
5118         count them in the theoretical best case
5119
5120 2004-11-26  Havoc Pennington  <hp@redhat.com>
5121
5122         * dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
5123         where I was trying to cache one too many messages
5124
5125 2004-11-26  Havoc Pennington  <hp@redhat.com>
5126
5127         * dbus/dbus-message.c: reimplement message cache as an array which 
5128         makes the cache about twice as fast and saves maybe 1.5% overall
5129
5130 2004-11-26  Havoc Pennington  <hp@redhat.com>
5131
5132         * dbus/dbus-threads.c (init_global_locks): forgot to put the
5133         message cache lock here
5134
5135 2004-11-26  Havoc Pennington  <hp@redhat.com>
5136
5137         * dbus/dbus-message.c (struct DBusMessage): put the locked bit and
5138         the "char byte_order" next to each other to save 4 bytes
5139         (dbus_message_new_empty_header): reduce preallocation, since the
5140         message cache should achieve a similar effect
5141         (dbus_message_cache_or_finalize, dbus_message_get_cached): add a
5142         message cache that keeps a few DBusMessage around in a pool,
5143         another 8% speedup or so.
5144
5145         * dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function
5146
5147 2004-11-25  Havoc Pennington  <hp@redhat.com>
5148
5149         * dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
5150         to write, without reading or blocking, try it before the poll()
5151         and skip the poll() if nothing remains to write. This is about a
5152         3% speedup in the echo client/server
5153
5154 2004-11-25  Havoc Pennington  <hp@redhat.com>
5155
5156         The primary change here is to always write() once before adding
5157         the write watch, which gives us about a 10% performance increase.
5158         
5159         * dbus/dbus-transport-unix.c: a number of modifications to cope
5160         with removing messages_pending
5161         (check_write_watch): properly handle
5162         DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
5163         messages_pending stuff
5164         (check_read_watch): properly handle WAITING_FOR_MEMORY and
5165         AUTHENTICATED cases
5166         (unix_handle_watch): after writing, see if the write watch can be
5167         removed
5168         (unix_do_iteration): assert that write_watch/read_watch are
5169         non-NULL rather than testing that they aren't, since they 
5170         aren't allowed to be NULL. check_write_watch() at the end so 
5171         we add the watch if we did not finish writing (e.g. got EAGAIN)
5172
5173         * dbus/dbus-transport-protected.h: remove messages_pending call,
5174         since it resulted in too much inefficient watch adding/removing; 
5175         instead we now require that the transport user does an iteration 
5176         after queueing outgoing messages, and after trying the first
5177         write() we add a write watch if we got EAGAIN or exceeded our 
5178         max bytes to write per iteration setting
5179
5180         * dbus/dbus-string.c (_dbus_string_validate_signature): add this
5181         function
5182
5183         * dbus/dbus-server-unix.c (unix_finalize): the socket name was
5184         freed and then accessed, valgrind flagged this bug, fix it
5185
5186         * dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
5187         as the last valid field plus 1, where really it is equal to the
5188         last valid field. Corrects some message corruption issues.
5189
5190         * dbus/dbus-mainloop.c: verbosity changes
5191
5192         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
5193         instead of aborting in one of the test codepaths
5194
5195         * dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
5196         caused not printing the pid ever again if a verbose was missing
5197         the newline at the end
5198         (_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE
5199
5200         * dbus/dbus-connection.c: verbosity changes; 
5201         (dbus_connection_has_messages_to_send): new function
5202         (_dbus_connection_message_sent): no longer call transport->messages_pending
5203         (_dbus_connection_send_preallocated_unlocked): do one iteration to
5204         try to write() immediately, so we can avoid the write watch. This
5205         is the core purpose of this patchset
5206         (_dbus_connection_get_dispatch_status_unlocked): if disconnected,
5207         dump the outgoing message queue, so nobody will get confused
5208         trying to send them or thinking stuff is pending to be sent
5209
5210         * bus/test.c: verbosity changes
5211
5212         * bus/driver.c: verbosity/assertion changes
5213
5214         * bus/dispatch.c: a bunch of little tweaks to get it working again
5215         because this patchset changes when/where you need to block.
5216
5217 2004-11-23  Havoc Pennington  <hp@redhat.com>
5218
5219         * test/glib/test-profile.c: modify to accept a plain_sockets
5220         argument in which case it will bench plain sockets instead of
5221         libdbus, for comparison purposes.
5222
5223 2004-11-22  Havoc Pennington  <hp@redhat.com>
5224
5225         * test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
5226         threads for more time, so sysprof can get a grip on it.
5227
5228         * dbus/dbus-string.c (_dbus_string_validate_utf8): remove
5229         pointless variable
5230
5231 2004-11-13  Havoc Pennington  <hp@redhat.com>
5232
5233         * test/glib/test-profile.c: fix this thing up a bit
5234
5235         * dbus/dbus-message.c (dbus_message_new_empty_header): increase
5236         preallocation sizes by a fair bit; not sure if this will be an
5237         overall performance win or not, but it does reduce reallocs.
5238
5239         * dbus/dbus-string.c (set_length, reallocate_for_length): ignore
5240         the test hack that forced constant realloc if asserts are
5241         disabled, so we can profile sanely. Sprinkle in some
5242         _DBUS_UNLIKELY() which are probably pointless, but before I
5243         noticed the real performance problem I put them in.
5244         (_dbus_string_validate_utf8): micro-optimize this thing a little
5245         bit, though callgrind says it didn't help; then special-case
5246         ascii, which did help a lot; then be sure we detect nul bytes as
5247         invalid, which is a bugfix.
5248         (align_length_then_lengthen): add some more _DBUS_UNLIKELY
5249         superstition; use memset to nul the padding instead of a manual
5250         loop.
5251         (_dbus_string_get_length): inline this as a
5252         macro; it showed up in the profile because it's used for loop
5253         tests and so forth
5254
5255 2004-11-10  Colin Walters  <walters@verbum.org>
5256
5257         * dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
5258         for extra paranoia.
5259
5260 2004-11-09  Colin Walters  <walters@verbum.org>
5261
5262         * dbus/dbus-string.c (_dbus_string_get_length): New
5263         function, writes DBusString to C buffer.
5264
5265         * dbus/dbus-string.h: Prototype it.
5266
5267         * dbus/dbus-message.c (dbus_message_type_to_string): New
5268         function, converts message type into C string.
5269
5270         * dbus/dbus-message.h: Prototype it.
5271
5272         * bus/selinux.c (bus_selinux_check): Take source pid,
5273         target pid, and audit data.  Pass audit data to
5274         avc_has_perm.
5275         (log_audit_callback): New function, appends extra
5276         audit information.
5277         (bus_selinux_allows_acquire_service): Also take
5278         service name, add it to audit data.
5279         (bus_selinux_allows_send): Also take message
5280         type, interface, method member, error name,
5281         and destination, and add them to audit data.
5282         (log_cb): Initialize func_audit.
5283         
5284         * bus/selinux.h (bus_selinux_allows_acquire_service)
5285         (bus_selinux_allows_send): Update prototypes 
5286
5287         * bus/services.c (bus_registry_acquire_service): Pass
5288         service name to bus_selinux_allows_acquire_service.
5289
5290         * bus/bus.c (bus_context_check_security_policy): Pass
5291         additional audit data.  Move assignment of dest
5292         to its own line.
5293
5294 2004-11-07  Colin Walters  <walters@verbum.org>
5295
5296         * dbus/dbus-transport-unix.c (do_authentication): Always
5297         initialize auth_completed.
5298         
5299 2004-11-07  Colin Walters  <walters@verbum.org>
5300
5301         * bus/bus.c (load_config): Break into three
5302         separate functions: process_config_first_time_only,
5303         process_config_every_time, and process_config_postinit.
5304         (process_config_every_time): Move call of
5305         bus_registry_set_service_context_table into
5306         process_config_postinit.
5307         (process_config_postinit): New function, does
5308         any processing that needs to happen late
5309         in initialization (and also on reload).
5310         (bus_context_new): Instead of calling load_config,
5311         open config parser here and call process_config_first_time_only
5312         and process_config_every_time directly.  Later, after
5313         we have forked but before changing UID,
5314         invoke bus_selinux_full_init, and then call
5315         process_config_postinit.
5316         (bus_context_reload_config): As in bus_context_new,
5317         load parse file inside here, and call process_config_every_time
5318         and process_config_postinit.
5319
5320         * bus/services.h, bus/services.c
5321         (bus_registry_set_service_context_table): Rename
5322         from bus_registry_set_sid_table.  Take string hash from config
5323         parser, and convert them here into SIDs.
5324
5325         * bus/config-parser.c (struct BusConfigParser): Have
5326         config parser only store a mapping of service->context
5327         string.
5328         (merge_service_context_hash): New function.
5329         (merge_included): Merge context string hashes instead
5330         of using bus_selinux_id_table_union.
5331         (bus_config_parser_new): Don't use bus_selinux_id_table_new;
5332         simply create a new string hash.
5333         (bus_config_parser_unref): Unref it.
5334         (start_selinux_child): Simply insert strings into hash,
5335         don't call bus_selinux_id_table_copy_over.
5336
5337         * bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
5338         (bus_selinux_id_table_copy_over): Delete.
5339
5340 2004-11-03  Colin Walters  <walters@verbum.org>
5341
5342         * bus/selinux.c (bus_selinux_pre_init): Kill some unused
5343         variables.
5344         
5345 2004-11-03  Colin Walters  <walters@verbum.org>
5346
5347         * bus/test-main.c (test_pre_hook): Fix test logic,
5348         thanks Joerg Barfurth <Joerg.Barfurth@Sun.COM>.
5349
5350 2004-11-02  Colin Walters  <walters@redhat.com>
5351
5352         * bus/selinux.c (bus_selinux_init): Split into two functions,
5353         bus_selinux_pre_init and bus_selinux_post_init.
5354         (bus_selinux_pre_init): Just determine whether SELinux is
5355         enabled.
5356         (bus_selinux_post_init): Do everything else.
5357
5358         * bus/main.c (main): Call bus_selinux_pre_init before parsing
5359         config file, and bus_selinux_post_init after.  This ensures that
5360         we don't lose the policyreload notification thread that
5361         bus_selinux_init created before forking previously.
5362         
5363         * bus/test-main.c (test_pre_hook): Update for split.
5364
5365 2004-10-31  Owen Fraser-Green  <owen@discobabe.net>
5366
5367         Patch from Johan Fischer <linux@fischaz.com>
5368         
5369         * mono/doc/Makefile.am (install-data-local): Added directory
5370         install for DESTDIR
5371
5372 2004-10-29  Colin Walters  <walters@redhat.com>
5373
5374         * dbus/dbus-sysdeps.h (_dbus_become_daemon): Also take
5375         parameter for fd to write pid to.       
5376
5377         * dbus/dbus-sysdeps.c (_dbus_become_daemon): Implement it.
5378         
5379         * bus/bus.c (bus_context_new): Pass print_pid_fd
5380         to _dbus_become_daemon (bug #1720)
5381
5382 2004-10-29  Colin Walters  <walters@redhat.com>
5383
5384         Patch from Ed Catmur <ed@catmur.co.uk>
5385
5386         * mono/doc/Makefile.am (install-data-local): Handle
5387         DESTDIR.
5388
5389 2004-10-29  Colin Walters  <walters@redhat.com>
5390
5391         * bus/.cvsignore, qt/.cvsignore: Update.
5392
5393 2004-10-29  Colin Walters  <walters@redhat.com>
5394
5395         Patch from Kristof Vansant <de_lupus@pandora.be>
5396
5397         * configure.in: Detect Slackware.
5398         * bus/Makefile.am (SCRIPT_IN_FILES): Add rc.messagebus.in.
5399         * bus/rc.messagebus.in: New file.
5400
5401 2004-10-29  Colin Walters  <walters@redhat.com>
5402
5403         * tools/dbus-monitor.c (filter_func): Return
5404         DBUS_HANDLER_RESULT_HANDLED in filter function
5405         for now.  See:
5406         http://freedesktop.org/pipermail/dbus/2004-August/001433.html
5407
5408 2004-10-29  Colin Walters  <walters@redhat.com>
5409
5410         Patch from Matthew Rickard <mjricka@epoch.ncsc.mil>
5411
5412         * bus/services.c (bus_registry_acquire_service): 
5413         Correctly retrieve service name from DBusString
5414         for printing.
5415
5416 2004-10-29  Colin Walters  <walters@redhat.com>
5417
5418         * dbus/dbus-glib.h: Update documentation to not
5419         refer to internal APIs.
5420
5421 2004-10-27  Joe Shaw  <joeshaw@novell.com>
5422
5423         * mono/Arguments.cs (GetDBusTypeConstructor):
5424         type.UnderlyingSystemType will return "System.Byte" if you do it
5425         on "byte[]", which is not what we want.  So check the type.IsArray
5426         property and use System.Array instead.
5427
5428 2004-10-25  John (J5) Palmieri  <johnp@redhat.com>
5429
5430         * dbus/dbus-sysdeps.c (fill_user_info): On errors do not free
5431         the DBusUserInfo structure since this is passed into the function.
5432         This would cause a double free when the function that allocated
5433         the structure would try to free it when an error occured.
5434
5435         * (bus/session.conf.in, bus/Makefile.am, dbus/configure.in):
5436         use /usr/share/dbus-1/services instead of /usr/lib/dbus-1.0/services
5437         for service activation to avoid 32bit/64bit parallel install issues
5438
5439 2004-10-21  Colin Walters  <walters@verbum.org>
5440
5441         * AUTHORS: Fix my email address, the @gnu.org one
5442         has been bouncing for some time.  Also add J5.
5443         
5444 2004-10-21  Colin Walters  <walters@verbum.org>
5445
5446         * dbus/dbus-transport-unix.c (do_authentication): Return
5447         authentication status to callers.
5448         (unix_handle_watch): If we completed authentication this round,
5449         don't do another read.  Instead wait until the next iteration,
5450         after we've read any pending data in the auth buffer.
5451         (unix_do_iteration): Ditto.
5452         (unix_handle_watch): Updated for new do_authentication prototype.
5453
5454 2004-10-18  Colin Walters  <walters@verbum.org>
5455
5456         * bus/selinux.c (bus_selinux_enabled): Handle
5457         --disable-selinux case.
5458         
5459 2004-10-18  Colin Walters  <walters@verbum.org>
5460
5461         * bus/selinux.h: Add bus_selinux_enabled.
5462         
5463         * bus/selinux.c (bus_selinux_enabled): Implement it.
5464         
5465         * bus/config-parser.c (struct include): Add
5466         if_selinux_enabled member.
5467         (start_busconfig_child): Parse if_selinux_enabled
5468         attribute for include.
5469         (bus_config_parser_content): Handle it.
5470
5471         * bus/session.conf.in, bus/system.conf.in: Add
5472         inclusion of context mapping to default config files;
5473         conditional on SELinux being enabled.
5474         
5475         * doc/busconfig.dtd: Add to if_selinux_enabled to default DTD.
5476         
5477         * test/data/invalid-config-files/badselinux-1.conf, 
5478         test/data/invalid-config-files/badselinux-2.conf:
5479         Test files for bad syntax.
5480         
5481 2004-10-17  Colin Walters  <walters@verbum.org>
5482
5483         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug, check_guards)
5484         (dbus_malloc, dbus_malloc0, dbus_realloc): Fix up printf
5485         format specifier mismatches.
5486
5487 2004-10-07  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5488
5489         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): fix an incorrect
5490         format string.
5491
5492         * glib/dbus-dbus-gmain.c (dbus_g_bus_get): do not mangle NULL
5493         pointer (bug #1540, Leonardo Boiko).
5494
5495 2004-09-28  Jon Trowbridge  <trow@ximian.com>
5496
5497         * mono/BusDriver.cs: Changed BusDriver struct to remove
5498         the ServiceCreated and ServiceDeleted events and replace them
5499         with the new ServiceOwnerChanged event.
5500
5501         * mono/example/BusListener.cs: Added a new example program,
5502         which listens for and reports any ServiceOwnerChanged events
5503         on the bus driver.
5504
5505         * mono/example/Makefile.am (DESTDIR): Build changes for the
5506         new BusListener.cs example.
5507
5508 2004-09-27  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5509
5510         * bus/signals.c (bus_match_rule_parse): validate the components of
5511         match rules (bug #1439).
5512
5513         * dbus/dbus-bus.c (dbus_bus_add_match): add a missing OOM test.
5514
5515 2004-09-24  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5516
5517         * doc/dbus-specification.xml: document ServiceOwnerChanged
5518         signal.
5519         
5520         * bus/driver.c, bus/driver.h, bus/services.c: Use
5521         ServiceOwnerChanged signal instead of ServiceCreated and
5522         ServiceDeleted.
5523         
5524         * bus/dispatch.c: update testcase for the new signal.
5525
5526 2004-09-20  Jon Trowbridge  <trow@ximian.com>
5527
5528         Patch from Nat Friedman <nat@novell.com>
5529
5530         * mono/Makefile.am: A number of small build fixes to allow "make
5531         distcheck" to succeed.
5532
5533         * mono/example/Makefile.am: "make distcheck" fixes.
5534
5535         * mono/AssemblyInfo.cs.in: When signing the assembly, look for the
5536         key in @srcdir@.
5537
5538         * test/Makefile.am: "make distcheck" fixes.
5539
5540 2004-09-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5541
5542         * dbus/dbus-sysdeps.c (_dbus_user_at_console): fix memleak in OOM.
5543
5544         * doc/busconfig.dtd: update the DTD for the at_console attribute.
5545
5546         * bus/driver.c (bus_driver_handle_hello): correctly handle Hello
5547         messages after the first one (bug #1389).
5548         
5549         * bus/dispatch.c (check_double_hello_message): add a test case for
5550         the double hello message bug.
5551         (check_existent_service_activation): fix check of spawning error.
5552         
5553 2004-09-16  David Zeuthen  <david@fubar.dk>
5554
5555         * python/dbus_bindings.pyx.in: Add support for int64 and uint64
5556
5557 2004-09-12  David Zeuthen  <david@fubar.dk>
5558
5559         Patch from Kay Sievers <kay.sievers@vrfy.org>
5560
5561         * bus/bus.c (bus_context_new):
5562         * bus/bus.h:
5563         * bus/main.c (usage)
5564         (main):
5565         Add commandline option --nofork to override configuration file
5566         setting.
5567
5568 2004-09-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5569
5570         * dbus/dbus-*.h: remove the ; after DBUS_(BEGIN|END)_DECLS. Some C
5571         compilers don't like it (bug #974).
5572
5573 2004-09-04  Harald Fernengel  <harry@kdevelop.org>
5574
5575         * qt/connection.*: Applied patch by Jérôme Lodewyck
5576         <lodewyck@clipper.ens.fr> to integrate an existing
5577         connection into the Qt eventloop
5578
5579 2004-08-30  Jon Trowbridge  <trow@ximian.com>
5580
5581         * mono/BusDriver.cs: Added.  This is a class for interacting with
5582         the org.freedesktop.DBus service.
5583
5584         * mono/Message.cs: Added a mechanism to expose the message that is
5585         currently being dispatched via the static Message.Current
5586         property.  Added Message.Sender and Message.Destination
5587         properties.
5588
5589         * mono/Handler.cs: Expose the dispatched message via
5590         Message.Current when handling method calls.
5591
5592         * mono/Service.cs: Expose the dispatched message via
5593         Message.Current when handling signal emissions.
5594         
5595         * mono/Connection.cs: Bind dbus_bus_get_base_service via the
5596         Connection.BaseService property.
5597
5598 2004-08-28  Havoc Pennington  <hp@redhat.com>
5599
5600         * dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable
5601
5602         More fixes from Steve Grubb
5603         
5604         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix fd leak
5605         (_dbus_listen_tcp_socket): fix fd leak
5606
5607         * dbus/dbus-spawn.c (read_pid, read_ints): move the "again:" for
5608         EINTR to a bit lower in the code
5609
5610 2004-08-26  Jon Trowbridge  <trow@ximian.com>
5611
5612         * bus/driver.c (bus_driver_handle_service_exists): Respond with
5613         TRUE if we are inquiring about the existence of the built-in
5614         org.freedesktop.DBus service.
5615
5616 2004-08-25  John Palmieri  <johnp@redhat.com>
5617         * bus/config-parser.c:
5618         (struct PolicyType): Add POLICY_CONSOLE
5619         (struct Element.d.policy): s/gid_or_uid/gid_uid_or_at_console
5620         (start_busconfig_child): Sets up console element when
5621         <policy at_console=""> is encountered in a policy file
5622         (append_rule_from_element): Convert console elements to console
5623         rules.
5624
5625         * bus/policy.c: 
5626         (bus_policy_create_client_policy): Add console rules to the client
5627         policy based on if the client is at the console
5628         (bus_policy_append_console_rule): New function for adding a
5629         console rule to a policy
5630         (bus_policy_merge): Handle console rule merging
5631
5632         * dbus/dbus-sysdeps.h: Added the DBUS_CONSOLE_DIR constant
5633         where we check for console user files
5634         
5635         * dbus/dbus-sysdeps.c:
5636         (_dbus_file_exists): New function which checks if the given
5637         file exists
5638         (_dbus_user_at_console): New function which does the system
5639         specific process of checking if the user is at the console
5640
5641         * dbus/dbus-userdb.c:
5642         (_dbus_is_console_user): New function converts a UID to user name
5643         and then calls the system specific _dbus_user_at_console to 
5644         see if the user is at the console and therefor a console user
5645
5646 2004-08-25  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5647
5648         * bus/config-parser.c (set_limit):
5649         * bus/dbus-daemon-1.1.in:
5650         * test/data/valid-config-files/many-rules.conf: set the
5651         max_match_rules_per_connection limt from the config file. 
5652
5653         * doc/busconfig.dtd: update the DTD.
5654
5655         * bus/driver.c: remove some unused variables.
5656
5657 2004-08-24  Mikael Hallendal  <micke@imendio.com>
5658
5659         * dbus/dbus-glib-lowlevel.h: Removed dbus_bus_get_with_g_main since 
5660         it's been replaced by dbus_g_bus_get
5661
5662 2004-08-23  Colin Walters  <walters@redhat.com>
5663
5664         Updated SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
5665
5666         * bus/selinux.h: Prototype bus_selinux_get_policy_root.
5667
5668         * bus/selinux.c: Create a thread for policy reload notification.
5669         (bus_selinux_get_policy_root): Implement.
5670
5671         * bus/config-parser.c (start_busconfig_child)
5672         (bus_config_parser_content): Support SELinux-root relative
5673         inclusion.
5674
5675         * configure.in <HAVE_SELINUX>: Add -lpthread.
5676         
5677         * bus/test-main.c (test_pre_hook, test_post_hook): New.
5678         (test_post_hook): Move memory checking into here.
5679         (test_pre_hook, test_post_hook): Move SELinux checks in
5680         here, but conditional on a DBUS_TEST_SELINUX environment
5681         variable.  Unfortunately we can't run the SELinux checks
5682         as a normal user, since they won't have any permissions
5683         for /selinux.  So this will have to be tested manually
5684         for now, until we have virtualization for most of
5685         libselinux.
5686         
5687 2004-08-23  Havoc Pennington  <hp@redhat.com>
5688
5689         * dbus/dbus-sysdeps.c (_dbus_change_identity): add setgroups() to
5690         drop supplementary groups, suggested by Steve Grubb
5691
5692 2004-08-20  Colin Walters  <walters@redhat.com>
5693
5694         * bus/config-parser.c (start_busconfig_child): Remove some unused
5695         variables.
5696         
5697         * bus/selinux.c (bus_selinux_id_table_insert): Avoid compiler
5698         warning.
5699
5700 2004-08-17  Joe Shaw  <joeshaw@novell.com>
5701
5702         * configure.in: If --enable-mono is passed in, if we can't find
5703         mono error out.
5704
5705         * mono/Makefile.am: Use /gacutil to install assemblies into the
5706         GAC and not /root.
5707
5708 2004-08-12  Havoc Pennington  <hp@redhat.com>
5709
5710         * NEWS: update for 0.22
5711
5712         * configure.in: release 0.22
5713
5714 2004-08-11  Colin Walters  <walters@redhat.com>
5715
5716         * tools/dbus-send.c (main, usage): Add --reply-timeout
5717         argument.
5718
5719 2004-08-10  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5720
5721         * bus/bus.c (process_config_first_time_only): get rid of an unused
5722         DBusError that was causing a memoy leak (bug #989).
5723
5724         * dbus/dbus-keyring.c, dbus/dbus-message.c:
5725         fix compilation on Solaris/Forte C (bug #974)
5726
5727         * bus/main.c (main): plug two minuscule memleaks.
5728
5729 2004-08-10  Havoc Pennington  <hp@redhat.com>
5730
5731         * doc/dbus-tutorial.xml: add some more info on GLib bindings
5732
5733 2004-08-09  Havoc Pennington  <hp@redhat.com>
5734
5735         * COPYING: switch to Academic Free License version 2.1 instead of
5736         2.0, to resolve complaints about patent termination clause.
5737
5738 2004-07-31  John (J5) Palmieri  <johnp@redhat.com>
5739
5740         * README: added documentation for the --enable-python 
5741         configure switch.
5742
5743 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5744
5745         * bus/config-parser.c (bus_config_parser_new): fix an invalid
5746         _unref in the SELinux support.
5747
5748         * doc/busconfig.dtd: update DTD for SELinux support.
5749
5750         * bus/config-loader-libxml.c: fix error handler and parser
5751         initialisation/cleanup. OOM test now works with libxml2 HEAD.
5752
5753         * configure.in: remove the warning about libxml2.
5754
5755         * dbus/dbus-bus.c: silence doxygen warning.
5756
5757 2004-07-31  Colin Walters  <walters@redhat.com>
5758
5759         * configure.in: Move #error in SELinux check to its own line.
5760
5761 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5762
5763         * dbus/dbus-internals.h (_DBUS_SET_OOM):
5764         * bus/utils.h (BUS_SET_OOM): use dbus_error_set_const instead of
5765         dbus_error_set.
5766
5767         * bus/dispatch.c (check_send_exit_to_service): fix the test case,
5768         broken by the change in the _SET_OOM macros.
5769
5770 2004-07-31  Colin Walters  <walters@redhat.com>
5771
5772         * bus/selinux.c <HAVE_SELINUX>: Include utils.h to get
5773         BUS_SET_OOM.
5774
5775 2004-07-31  Colin Walters  <walters@redhat.com>
5776
5777         * configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER
5778         to correctly detect DBUS__ACQUIRE_SVC.  Also add an
5779         AC_MSG_CHECKING.
5780
5781 2004-07-24  Havoc Pennington  <hp@redhat.com>
5782
5783         SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
5784
5785         * bus/selinux.c, bus/selinux.h: new file encapsulating selinux
5786         functionality
5787
5788         * configure.in: add --enable-selinux
5789         
5790         * bus/policy.c (bus_policy_merge): add FIXME to a comment
5791
5792         * bus/main.c (main): initialize and shut down selinux
5793
5794         * bus/connection.c: store SELinux ID on each connection, to avoid 
5795         repeated getting of the string context and converting it into 
5796         an ID
5797
5798         * bus/bus.c (bus_context_get_policy): new accessor, though it
5799         isn't used
5800         (bus_context_check_security_policy): check whether the security
5801         context of sender connection can send to the security context of
5802         recipient connection
5803
5804         * bus/config-parser.c: add parsing for <selinux> and <associate>
5805         
5806         * dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
5807         implement dbus_connection_get_unix_fd()
5808
5809         * dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
5810         function, used by the selinux stuff
5811         
5812 2004-07-29  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5813
5814         * bus/config-loader-libxml.c: complete the implementation of
5815         libxml backend for config file loader. Doesn't work with full OOM
5816         test yet. 
5817         
5818         * configure.in: change error when selecting libxml into a warning.
5819         
5820         * test/data/invalid-config-files: add two non-well-formed XML
5821         files. 
5822         
5823         * glib/Makefile.am: libdbus_gtool always uses expat, not libxml.
5824         
5825         * dbus/dbus-transport-unix.c (unix_handle_watch): do not
5826         disconnect in case of DBUS_WATCH_HANGUP, several do_reading() may
5827         be necessary to read all the buffer. (bug #894)
5828
5829         * bus/activation.c (bus_activation_activate_service): fix a
5830         potential assertion failure (bug #896). Small optimization in the
5831         case of auto-activation messages.
5832
5833         * dbus/dbus-message.c (verify_test_message, _dbus_message_test):
5834         add test case for byte-through-vararg bug (#901). patch by Kimmo
5835         Hämäläinen. 
5836
5837 2004-07-28  Anders Carlsson  <andersca@gnome.org>
5838
5839         * python/dbus.py:
5840         * python/dbus_bindings.pyx.in:
5841         Add dbus.init_gthreads (), allow emit_signal to pass
5842         arguments to the signal.
5843         
5844 2004-07-24  Havoc Pennington  <hp@redhat.com>
5845
5846         * AUTHORS: add some people, not really comprehensively, let me
5847         know if I missed you
5848
5849 2004-07-24  Havoc Pennington  <hp@redhat.com>
5850
5851         * Makefile.am (DIST_SUBDIRS): add DIST_SUBDIRS, problem solved by
5852         Owen
5853
5854         * test/Makefile.am (DIST_SUBDIRS): here also
5855
5856 2004-07-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5857
5858         * dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
5859         breaking build on Solaris, reported by Farhad Saberi on the ML.
5860
5861         * dbus/dbus-message.c (dbus_message_append_args_valist): fix the
5862         va_arg invocation to account for integer promotion in the case of
5863         DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)
5864
5865         * bus/services.c (bus_service_remove_owner): fix bug #902, use
5866         _dbus_list_get_first_link, not _dbus_list_get_first.
5867
5868         * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.
5869
5870         * dbus/dbus-object-tree.c (free_subtree_recurse): always null
5871         handler functions so that the asserts in _dbus_object_subtree_unref
5872         do not fail.
5873
5874         * dbus/dbus-transport-unix.c (do_reading):
5875         _dbus_transport_queue_messages return value is of type
5876         dbus_bool_t, not DBusDispatchStatus.
5877         
5878 2004-07-19  David Zeuthen  <david@fubar.dk>
5879
5880         * dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
5881
5882         * bus/dispatch.c:
5883         (check_get_connection_unix_user): Debug says GetProperty; but the
5884         method is called GetConnectionUnixUser
5885         (check_get_connection_unix_process_id): New function
5886         (bus_dispatch_test): Actually call check_get_connection_unix_user();
5887         also call check_get_connection_unix_process_id()
5888         
5889         * bus/driver.c:
5890         (bus_driver_handle_get_connection_unix_process_id): New function,
5891         handles GetConnectionUnixProcessID on the org.freedesktop.DBus
5892         interface
5893         
5894         * dbus/dbus-auth.c:
5895         (handle_server_data_external_mech): Set pid from the credentials
5896         obtained from the socket
5897         
5898         * dbus/dbus-connection.c:
5899         (dbus_connection_get_unix_process_id): New function
5900         
5901         * dbus/dbus-connection.h: 
5902         Add prototype for dbus_connection_get_unix_process_id
5903         
5904         * dbus/dbus-transport.c:
5905         (_dbus_transport_get_unix_process_id): New function
5906         
5907         * dbus/dbus-transport.h:
5908         Add prototype for _dbus_transport_get_unix_process_id
5909         
5910 2004-07-19  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5911
5912         * dbus/dbus-message.c: Message counter fix, patch by Christian
5913         Hammond <chipx86@gnupdate.org>
5914
5915 2004-07-18  Seth Nickell  <seth@gnome.org>
5916
5917         * python/dbus.py:
5918         * python/dbus_bindings.pyx.in:
5919         * python/tests/test-client.py:
5920
5921         Add dbus.ByteArray and dbus_bindings.ByteArray
5922         types so that byte streams can be passed back.
5923
5924         Give jdahlin the heaps of credit that are so
5925         rightfully his.
5926         
5927 2004-07-12  Seth Nickell  <seth@gnome.org>
5928
5929         * python/dbus.py:
5930
5931         Add message argument to the default object_method_handler
5932         function.
5933         
5934         * python/dbus_bindings.pyx.in:
5935
5936         Automatically return NIL when passed an empty list
5937         (we can't pass back a list since lists are typed
5938         and we don't have any idea what type the the client
5939         intended the list to be... :-( )
5940         
5941 2004-07-10  Seth Nickell  <seth@gnome.org>
5942
5943         * python/examples/Makefile.am:
5944
5945         Fix distcheck breakage caused by new examples.
5946
5947 2004-07-10  Seth Nickell  <seth@gnome.org>
5948
5949         * python/dbus.py:
5950
5951         Add "message" argument to service-side dbus.Object
5952         methods. This will break existing services written
5953         using the python bindings, but will allow extraction
5954         of all the message information (e.g. who its from).
5955
5956         Add improved "object oriented" signal handling/emission.
5957         
5958         * python/examples/example-service.py:
5959
5960         Nix this example.
5961         
5962         * python/examples/example-signal-emitter.py:
5963         * python/examples/example-signal-recipient.py:
5964
5965         Two new examples that show how to emit and receive
5966         signals using the new APIs.
5967         
5968         * python/examples/example-signals.py:
5969         * python/examples/gconf-proxy-service.py:
5970         * python/examples/gconf-proxy-service2.py:
5971
5972         Add "message" argument to service methods.
5973
5974 2004-06-28  Kay Sievers <kay.sievers@vrfy.org>
5975
5976         * bus/driver.c (bus_driver_handle_get_connection_unix_user)
5977         * dbus/bus.c (dbus_bus_get_unix_user)
5978         * doc/dbus-specification.xml: implement GetConnectionUnixUser
5979         method of org.freedesktop.DBus interface.
5980
5981         * bus/dispatch.c: test case
5982
5983 2004-06-23  John (J5) Palmieri  <johnp@redhat.com>
5984
5985         * python/Makefile.am: switched include directory from glib/ to dbus/
5986         since dbus-glib.h moved
5987  
5988 2004-06-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5989
5990         * configure.in: prevent building the gcj stuff and libxml loader
5991         since they are broken.
5992
5993 2004-06-20  Havoc Pennington  <hp@redhat.com>
5994
5995         * dbus/dbus-glib-error-enum.h: autogenerate the GError enum 
5996         codes from the dbus error names
5997         
5998         * glib/dbus-glib.h: move to subdir dbus/ since it's included 
5999         as dbus/dbus-glib.h and that breakage is now visible due to 
6000         including dbus/dbus-glib.h in dbus-glib-lowlevel.h
6001         
6002         * glib/dbus-glib.h: s/gproxy/g_proxy/
6003
6004         * dbus/dbus-shared.h: new header to hold stuff shared with
6005         binding APIs
6006         
6007         * dbus/dbus-protocol.h (DBUS_ERROR_*): move errors here rather
6008         than dbus-errors.h
6009
6010         * glib/dbus-glib.h (dbus_set_g_error): move to
6011         dbus-glib-lowlevel.h
6012
6013         * glib/dbus-glib.h: remove dbus/dbus.h from here; change a bunch
6014         of stuff to enable this
6015
6016         * dbus/dbus-glib-lowlevel.h: put dbus/dbus.h here
6017
6018         * a bunch of other changes with the same basic "separate glib 
6019         bindings from dbus.h" theme
6020         
6021 2004-06-10  Owen Fraser-Green  <owen@discobabe.net>
6022
6023         * dbus-sharp.pc.in: Removed glib-sharp inclusion in Libs.
6024
6025         * python/examples/Makefile.am: Fixed typo in EXTRA_DIST.
6026
6027 2004-06-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6028
6029         * bus/driver.c, dbus/dbus-bus.c: use BOOLEAN instead of UINT32 for
6030         the reply value of the ServiceExists message.
6031
6032 2004-06-07  John (J5) Palmieri  <johnp@redhat.com>
6033
6034         * python/dbus_bindings.pyx.in: No longer need to parse path
6035         elements and pass them as arrays of strings.  The C API now
6036         accepts plain path strings.
6037         (_build_parsed_path): removed 
6038
6039 2004-06-07  Havoc Pennington  <hp@redhat.com>
6040
6041         * doc/TODO: remove auto-activation item since it's done; sort
6042         items by importance/milestone
6043
6044 2004-06-07  Havoc Pennington  <hp@redhat.com>
6045
6046         * dbus/dbus-message-builder.c (_dbus_message_data_load): append
6047         random signature when using REQUIRED_FIELDS (this hack won't work
6048         in the long term)
6049
6050         * dbus/dbus-message.c: change the signature to be a header field,
6051         instead of message->signature special-case string. Incremental
6052         step forward. Then we can fix up code to send the signature in the
6053         message, then fix up code to validate said signature, then fix up
6054         code to not put the typecodes inline, etc.
6055         (load_one_message): don't make up the signature after the fact
6056         (decode_header_data): require signature field for the known
6057         message types
6058
6059         * dbus/dbus-marshal.c (_dbus_marshal_string_len): new
6060
6061         * dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE
6062
6063 2004-06-07  Owen Fraser-Green  <owen@discobabe.net>
6064
6065         * mono/DBusType/ObjectPath.cs: Renamed PathName argument to Path
6066
6067         * mono/Handler.cs: Updated to follow new path argument for
6068         (un-)registering objects.
6069
6070         * mono/example/Makefile.am:
6071         * mono/Makefile.am:
6072         * configure.in: Bumped required version for mono and use new -pkg
6073         syntax for deps
6074
6075 2004-06-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6076
6077         * dbus/dbus-connection.h, dbus/dbus-connection.c: have object path
6078         registration functions take the path argument as char* instead of
6079         char**.
6080
6081         * dbus/dbus-marshal.h, dbus/dbus-marshal.c (_dbus_decompose_path):
6082         split off the path decompostion part of
6083         _dbus_demarshal_object_path. Some misc. fixes to silence compiler
6084         warnings. 
6085
6086         * glib/dbus-gobject.c, test/test-service.c: update accordingly.
6087         
6088 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
6089  
6090         * dbus/dbus-auth.c: Rewrite auth protocol handling to use a state
6091         machine approach.  A state is implemented as a function that
6092         handles incoming events as specified for that state.
6093         
6094         * doc/dbus-specification.xml: Update auth protocol state machine
6095         specification to match implementation.  Remove some leftover
6096         base64 examples.
6097
6098 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
6099
6100         * glib/dbus-gproxy.c, glib/dbus-gmain.c, dbus/dbus-string.c,
6101         dbus/dbus-object-tree.c, dbus/dbus-message.c: add comments to
6102         quiet doxygen.
6103
6104         * Doxyfile.in: remove deprecated options.
6105
6106         * dbus/dbus-message-handler.c, dbus/dbus-message-handler.h,
6107         glib/test-thread.h, glib/test-thread-client.c,
6108         glib/test-thread-server.c, glib/test-profile.c,
6109         glib/test-dbus-glib.c: remove these unused files.
6110
6111 2004-06-01  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6112
6113         * dbus/dbus-object-tree.c
6114         (_dbus_object_tree_dispatch_and_unlock): fix dispatch for
6115         non-fallback handlers (bug #684).
6116         (_dbus_object_subtree_new): initialize invoke_as_fallback field.
6117         (find_subtree_recurse): report wether the returned subtree is an
6118         exact match or a "fallback" match higher up in the tree.
6119         (object_tree_test_iteration): update test case.
6120
6121 2004-06-01  Seth Nickell  <seth@gnome.org>
6122
6123         * python/dbus_bindings.pyx.in:
6124         * python/tests/test-client.py:
6125
6126         Round off basic type support. Add dicts (yay!), and 
6127         remaining array types.
6128
6129         Make MessageIter more general so it works for dicts too.
6130
6131         Mark all loop variables as C integers.
6132         
6133 2004-05-31  Havoc Pennington  <hp@redhat.com>
6134
6135         * glib/dbus-gidl.c (method_info_add_arg): keep args sorted with
6136         "in" before "out"
6137
6138         * glib/dbus-gobject.c (dbus_type_to_string): move to dbus-gutils.c
6139
6140         * glib/dbus-glib-tool.c (main): set up to have a --self-test
6141         option that runs the tests, and start filling in some code
6142         including for starters just dumping the interfaces to stdout
6143
6144         * glib/Makefile.am (INCLUDES): define DBUS_LOCALEDIR
6145
6146         * test/data/valid-introspection-files/lots-of-types.xml: test of
6147         an example introspection file
6148
6149         * glib/dbus-gparser.c (parser_check_doctype): doctype should be
6150         "node" (I think...)
6151
6152 2004-05-31  Seth Nickell  <seth@gnome.org>
6153
6154         * python/dbus_bindings.pyx.in:
6155         * python/tests/test-client.py:
6156
6157         Test Suite: 1
6158         Python Bindings: 0
6159
6160         Fix string array memory trashing bug... oops...
6161
6162 2004-05-30  Seth Nickell  <seth@gnome.org>
6163
6164         * python/dbus.py:
6165
6166         Add a nicer-but-less-flexible alternate API for handling 
6167         calls to virtual objects in dbus.ObjectTree.
6168
6169         Screw up the argument order to the dbus.Object constructor
6170         for consistency with dbus.ObjectTree (and to make dbus_methods
6171         optional for future extension)
6172         
6173         * python/examples/Makefile.am:
6174         * python/examples/gconf-proxy-service.py:
6175         * python/examples/gconf-proxy-service2.py:
6176
6177         Alternate implementation of gconf-proxy-service using the
6178         nicer dbus.ObjectTree API.
6179         
6180         * python/examples/example-service.py:
6181         * python/tests/test-server.py
6182
6183         Reverse the argument order to deal with dbus.Object constructor
6184         changes.
6185         
6186 2004-05-30  Seth Nickell  <seth@gnome.org>
6187
6188         * python/examples/example-client.py:
6189         * python/examples/example-service.py:
6190
6191         Take it back. Lists seem to work but they're broken
6192         in the test suite. Make the base examples use
6193         lists (works fine).
6194
6195 2004-05-30  Seth Nickell  <seth@gnome.org>
6196
6197         * python/dbus_bindings.pyx.in:
6198         * python/tests/test-client.py:
6199
6200         Add some more tests and fix errors that crop up.
6201         Unfortunately, currently it seems like marshalling
6202         and unmarshalling of lists is completely broken :-(
6203
6204 2004-05-30  Seth Nickell  <seth@gnome.org>
6205
6206         * python/dbus_bindings.pyx.in:
6207
6208         Add support for ObjectPath type.
6209
6210         * python/dbus.py:
6211
6212         Refactor message handling code to a common function.
6213         
6214         * python/tests/test-client.py:
6215         * python/tests/test-server.py:
6216
6217         Add tests that check to make sure values of all types
6218         can be echoed from a service w/o mangling.
6219         
6220 2004-05-29  Seth Nickell  <seth@gnome.org>
6221
6222         * python/dbus.py:
6223
6224         Add ObjectTree class which allows implementation
6225         of trees of "virtual" objects. Basically the python
6226         wrapper for "register_fallback".
6227         
6228         * python/examples/Makefile.am
6229         * python/examples/gconf-proxy-client.py:
6230         * python/examples/gconf-proxy-service.py:
6231
6232         Implement a simple GConf proxy service that supports
6233         get/set on string and int GConf keys using the ObjectTree.
6234         
6235 2004-05-29  Seth Nickell  <seth@gnome.org>
6236
6237         * python/dbus.py:
6238         * python/examples/example-client.py:
6239         * python/examples/example-service.py:
6240         * python/examples/list-system-services.py:
6241
6242         Add SessionBus, SystemBus and ActivationBus classes
6243         so you don't need to know the special little BUS_TYPE
6244         flag.
6245         
6246 2004-05-29  Havoc Pennington  <hp@redhat.com>
6247
6248         * bus/config-parser.c (process_test_valid_subdir): temporarily
6249         stop testing config parser OOM handling, since expat has issues
6250         http://freedesktop.org/pipermail/dbus/2004-May/001153.html
6251
6252         * bus/dbus-daemon-1.1.in: change requested_reply to
6253         send_requested_reply/receive_requested_reply so we can send the
6254         replies, not just receive them.
6255
6256         * bus/config-parser.c: parse the new
6257         send_requested_reply/receive_requested_reply
6258
6259         * bus/policy.c (bus_client_policy_check_can_send): add
6260         requested_reply argument and use it
6261
6262         * bus/bus.c (bus_context_check_security_policy): pass through
6263         requested_reply status to message send check
6264
6265         * bus/system.conf.in: adapt to requested_reply change
6266         
6267 2004-05-28  Havoc Pennington  <hp@redhat.com>
6268
6269         * test/glib/test-service-glib.c (main): remove unused variable
6270
6271         * glib/dbus-gidl.c (base_info_ref): fix a silly compiler warning
6272
6273         * dbus/dbus-auth.h (enum): remove AUTHENTICATED_WITH_UNUSED_BYTES
6274         from the enum, no longer in use.
6275
6276         * dbus/dbus-sysdeps.h: include config.h so DBUS_VA_COPY actually
6277         works right.
6278
6279         * dbus/dbus-message.c: add various _dbus_return_val_if_fail for
6280         whether error_name passed in is a valid error name.
6281
6282 2004-05-28  John (J5) Palmieri  <johnp@redhat.com>
6283
6284         * dbus/dbus-message.c (dbus_message_get_args): Added support for
6285         OBJECT_PATH and OBJECT_PATH_ARRAY
6286
6287 2004-05-28  Seth Nickell  <seth@gnome.org>
6288
6289         * python/examples/Makefile.am:
6290
6291         Forget to add Makefile.am. Do not pass go.
6292
6293 2004-05-28  Michael Meeks  <michael@ximian.com>
6294
6295         * glib/dbus-gvalue.c (dbus_gvalue_marshal, dbus_gvalue_demarshal): 
6296         fix no int64 case.
6297
6298         * dbus/dbus-string.c (_dbus_string_parse_basic_type): impl.
6299
6300         * dbus/dbus-message.c (_dbus_message_iter_get_basic_type),
6301         (_dbus_message_iter_get_basic_type_array): impl.
6302         drastically simplify ~all relevant _get methods to use these.
6303         (_dbus_message_iter_append_basic_array),
6304         (dbus_message_iter_append_basic): impl
6305         drastically simplify ~all relevant _append methods to use these.
6306
6307         * dbus/dbus-message-builder.c (parse_basic_type) 
6308         (parse_basic_array, lookup_basic_type): impl.
6309         (_dbus_message_data_load): prune scads of duplicate /
6310         cut & paste coding.
6311
6312         * dbus/dbus-marshal.c (_dbus_demarshal_basic_type_array) 
6313         (_dbus_demarshal_basic_type): implement,
6314         (demarshal_and_validate_len/arg): beef up debug.
6315         (_dbus_marshal_basic_type, _dbus_marshal_basic_type_array): impl.
6316
6317 2004-05-27  Seth Nickell  <seth@gnome.org>
6318
6319         * configure.in:
6320         * python/Makefile.am:
6321
6322         Include the example python apps in the tarball.
6323         
6324         * python/examples/list-system-services.py
6325
6326         Add a python new example that fetches the list of services
6327         from the system bus.
6328         
6329 2004-05-27  Seth Nickell  <seth@gnome.org>
6330
6331         * python/dbus.py:
6332         * python/dbus_bindings.pyx.in:
6333
6334         Fix failure to notify that a signal was not handled,
6335         resulted in hung functions.
6336         
6337 2004-05-25  Colin Walters  <walters@redhat.com>
6338
6339         * tools/dbus-monitor.c (main): Monitor all types of messages.
6340
6341 2004-05-23  Owen Fraser-Green  <owen@discobabe.net>
6342
6343         * mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
6344         which unregisters the object path and disposes the handler.
6345
6346 2004-05-23  Kristian Høgsberg  <krh@redhat.com>
6347  
6348         Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
6349          
6350         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): Swap
6351         operands to && so we call dbus_message_iter_next () for the last
6352         argument also.
6353
6354 2004-05-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6355
6356         * dbus/dbus-object-tree.c
6357         (_dbus_object_tree_list_registered_unlock, lookup_subtree): return
6358         children even if the requested path isn't registered.
6359         (object_tree_test_iteration): test object_tree_list_registered.
6360
6361         * configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
6362         it to 0.
6363         
6364 2004-05-20  Kristian Høgsberg  <krh@redhat.com>
6365
6366         * doc/TODO: Remove resolved items.
6367
6368         * bus/expirelist.h (struct BusExpireList): remove unused n_items
6369         field.
6370         
6371         * bus/connection.c (bus_connections_expect_reply): Enforce the
6372         per-connection limit on pending replies.
6373         
6374         Patch from Jon Trowbridge <trow@ximian.com>:
6375  
6376         * bus/main.c (setup_reload_pipe): Added.  Creates a pipe and sets
6377         up a watch that triggers a config reload when one end of the pipe
6378         becomes readable.
6379         (signal_handler): Instead of doing the config reload in our SIGHUP
6380         handler, just write to the reload pipe and let the associated
6381         watch handle the reload when control returns to the main loop.
6382  
6383         * bus/driver.c (bus_driver_handle_reload_config): Added.
6384         Implements a ReloadConfig method for requesting a configuration
6385         file reload via the bus driver.
6386  
6387 2004-05-19  Owen Fraser-Green  <owen@discobabe.net>
6388
6389         * HACKING: Updated release instructions concerning the wiki page.
6390
6391 2004-05-18  Kristian Høgsberg  <krh@redhat.com>
6392
6393         * dbus/dbus-auth.c (client_try_next_mechanism): Remove logic to
6394         filter against auth->allowed_mechs; we only add allowed mechs in
6395         record_mechanisms().
6396  
6397         * dbus/dbus-auth-script.c (_dbus_auth_script_run): Add an
6398         ALLOWED_MECHS to auth-script format so we can set the list of
6399         allowed mechanisms.
6400  
6401         * data/auth/client-out-of-mechanisms.auth-script: New test to
6402         check client disconnects when it is out of mechanisms to try.
6403  
6404         * dbus/dbus-auth.c (process_command): Remove check for lines
6405         longer that 1 MB; we only buffer up maximum 16 kB.
6406  
6407         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
6408         dbus/dbus-auth-script.c, dbus/dbus-auth.c, dbus/dbus-auth.h:
6409         Remove auth state AUTHENTICATED_WITH_UNUSED_BYTES, instead always
6410         assume there might be unused bytes.
6411  
6412         * dbus/dbus-auth.c (_dbus_auth_do_work): Remove check for
6413         client-out-of-mechs, it is handled in process_reject(). Move check
6414         for max failures to send_rejected(), as it's a server-only thing.
6415
6416         * dbus/dbus-auth.c: Factor out protocol reply code into functions
6417         send_auth(), send_data(), send_rejected(), send_error(),
6418         send_ok(), send_begin() and send_cancel().
6419
6420 2004-05-17  Kristian Høgsberg  <krh@redhat.com>
6421
6422         Remove base64 encoding, replace with hex encoding. Original patch
6423         from trow@ximian.com, added error handling.
6424
6425         * dbus/dbus-string.c (_dbus_string_base64_encode)
6426         (_dbus_string_base64_decode): Remove.
6427         (_dbus_string_hex_decode): Add end_return argument so we can
6428         distinguish between OOM and invalid hex encoding.
6429         (_dbus_string_test): Remove base64 tests and add test case for
6430         invalid hex.
6431
6432         * dbus/dbus-keyring.c, dbus/dbus-auth-script.c, dbus/dbus-auth.c:
6433         Replace base64 with hex.
6434
6435         * test/data/auth/invalid-hex-encoding.auth-script: New test case
6436         for invalid hex encoded data in auth protocol.
6437
6438 2004-05-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6439
6440         * dbus/dbus-connection.c (check_for_reply_unlocked): plug a memory
6441         leak.
6442
6443 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
6444
6445         * mono/dbus-sharp.dll.config.in: Added for GAC
6446         * mono/dbus-sharp.snk: Added for GAC
6447         * mono/Assembly.cs.in: Added for GAC
6448         * mono/Makefile.am: Changes for GAC installation        
6449         * configure.in: Added refs for dbus-sharp.dll.config.in and
6450         Assembly.cs.in. More fixes for mono testing
6451         * mono/example/Makefile.am: Changed var to CSC
6452         * Makefile.am: Changed flag name to DBUS_USE_CSC
6453
6454 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
6455
6456         * mono/Makefile.am: Added SUBDIRS for docs. Changed SUBDIRS order
6457         * mono/doc/*: Added documentation framework
6458         * configure.in: Added monodoc check
6459         * README: Added description of mono configure flags
6460
6461 2004-05-11  John (J5) Palmieri  <johnp@redhat.com>:
6462
6463         * doc/dbus-specification.xml: Added a "Required" column to the 
6464         header fields table and changed the "zero or more" verbage in
6465         the above paragraph to read "The header must contain the required 
6466         named header fields and zero or more of the optional named header 
6467         fields".
6468         * test/data/invalid-messages/*.message: Added the required PATH 
6469         named header field to the tests so that they don't fail on 
6470         'Missing path field'
6471
6472 2004-05-07  John (J5) Palmieri  <johnp@redhat.com>
6473
6474         * python/dbus-bindings.pyx.in: Stopped the bindings from trashing
6475         the stack by implicitly defining variable and parameter types and
6476         removing the hack of defining C pointers as python objects and later
6477         casting them.
6478
6479 2004-05-02  Owen Fraser-Green  <owen@discobabe.net>
6480
6481         * mono/Makefile.am: Removed test-dbus-sharp.exe from all target
6482
6483 2004-05-01  Owen Fraser-Green  <owen@discobabe.net>
6484
6485         * mono/DBusType/Dict.cs: Handle empty dicts
6486         * mono/DBusType/Array.cs: Handle empty arrays
6487         * mono/Arguments.cs: Handle empty arguments
6488
6489 2004-04-30  Owen Fraser-Green  <owen@discobabe.net>
6490
6491         * dbus-sharp.pc.in: Modified to include include Libs and Requires
6492         field
6493
6494 2004-04-25  Kristian Høgsberg  <krh@redhat.com>
6495
6496         * test/data/valid-messages/standard-*.message: Update message
6497         test scripts to new header field names.
6498
6499 2004-04-22  John (J5) Palmieri  <johnp@redhat.com>
6500
6501         * test/break-loader.c (randomly_do_n_things): tracked down buffer
6502         overflow to times_we_did_each_thing array which would chop off the
6503         first character of the failure_dir string. Increased the size of
6504         the array to 7 to reflect the number of random mutation functions
6505         we have.
6506
6507 2004-04-21  Kristian Høgsberg  <krh@redhat.com>
6508
6509         * dbus/dbus-server-unix.c (unix_finalize): Don't unref
6510         unix_server->watch here, it is unreffed in disconnect.
6511         (_dbus_server_new_for_tcp_socket): convert NULL host to
6512         "localhost" here so we don't append NULL to address.
6513         
6514         * dbus/dbus-server.c (_dbus_server_test): Add test case for
6515         various addresses, including tcp with no explicit host.
6516
6517 2004-04-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6518
6519         * dbus/dbus-message.c (decode_header_data, decode_string_field):
6520         fix incorrect setting of .name_offset in the HeaderField (it was
6521         off by two bytes, positioned right after the name and typecode)
6522
6523         * bus/bus.c (bus_context_new, bus_context_unref): test before
6524         calling dbus_server_free_data_slot and _dbus_user_database_unref
6525         in case of an error.
6526
6527         * tools/Makefile.am: add $(DBUS_GLIB_TOOL_LIBS), xml libs needed
6528         by libdbus-gtool.
6529
6530 2004-04-19  Kristian Høgsberg  <krh@redhat.com>
6531
6532         * dbus/dbus-transport-unix.c (unix_do_iteration): Rewrite to use
6533         _dbus_poll() instead of select().
6534
6535 2004-04-15  Jon Trowbridge  <trow@ximian.com>
6536
6537         * bus/main.c (signal_handler): Reload the configuration files
6538         on SIGHUP.
6539         (main): Set up our SIGHUP handler.
6540
6541         * bus/bus.c (struct BusContext): Store the config file, user and
6542         fork flag in the BusContext.
6543         (process_config_first_time_only): Added.  Contains the code
6544         (previously in bus_context_new) for setting up the BusContext from
6545         the BusConfigParser that should only be run the first time the
6546         config files are read.
6547         (process_config_every_time): Added.  Contains the code (previously
6548         in bus_context_new) for setting up the BusContext from the
6549         BusConfigParser that should be run every time the config files are
6550         read.
6551         (load_config): Added.  Builds a BusConfigParser from the config
6552         files and passes the resulting structure off to
6553         process_config_first_time_only (assuming this is the first time)
6554         and process_config_every_time.
6555         (bus_context_new): All of the config-related code has been moved
6556         to process_config_first_time_only and process_config_every_time.
6557         Now this function just does the non-config-related initializations
6558         and calls load_config.
6559         (bus_context_reload_config): Added.
6560
6561 2004-04-15  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6562
6563         * bus/driver.c (bus_driver_handle_get_service_owner):
6564         implement a GetServiceOwner method.
6565         * doc/dbus-specification.xml: document it.
6566         * dbus/dbus-errors.h: add a 'ServiceHasNoOwner' error.
6567         
6568         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service_owner):
6569         implement, using the bus GetServiceOwner method.
6570
6571         * test/glib/test-dbus-glib.c:
6572         use dbus_gproxy_new_for_service_owner so that we can receive the
6573         signal. 
6574
6575 2004-04-15  John (J5) Palmieri  <johnp@redhat.com>
6576
6577         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
6578         dbus/dbus-message.c, dbus/dbus-protocol.h
6579         (DBUS_HEADER_FIELD_SERVICE): renamed DBUS_HEADER_FIELD_DESTINATION
6580
6581         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
6582         dbus/dbus-message.c, dbus/dbus-protocol.h
6583         (DBUS_HEADER_FIELD_SENDER_SERVICE): renamed DBUS_HEADER_FIELD_SENDER
6584
6585         * dbus/dbus-internals.c (_dbus_header_field_to_string):
6586         DBUS_HEADER_FIELD_DESTINATION resolves to "destination"
6587         DBUS_HEADER_FIELD_SENDER resolves to "sender"
6588
6589         * doc/dbus-specification.xml (Header Fields Table):
6590         s/SERVICE/DESTINATION
6591         s/SENDER_SERVICE/SENDER
6592
6593
6594 2004-04-14  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6595
6596         * test/glib/test-dbus-glib.c (timed_exit): fail the test after
6597         a few seconds.
6598
6599 2004-04-13  Michael Meeks  <michael@ximian.com>
6600
6601         * glib/dbus-gobject.c (handle_introspect): split out
6602         (introspect_properties): this.
6603         (handle_introspect): implement this.
6604
6605         * test/glib/Makefile.am: use the absolute path so the bus
6606         daemon's chdir ("/") doesn't kill us dead.
6607
6608         * configure.in: subst ABSOLUTE_TOP_BUILDDIR
6609
6610 2004-04-12  Jon Trowbridge  <trow@ximian.com>
6611
6612         * bus/config-parser.c (struct BusConfigParser): Added
6613         included_files field.
6614         (seen_include): Added.  Checks whether or not a file has already
6615         been included by any parent BusConfigParser.
6616         (bus_config_parser_new): Copy the parent's included_files.
6617         (include_file): Track which files have been included, and fail on
6618         circular inclusions.
6619         (process_test_valid_subdir): Changed printf to report if we are
6620         testing valid or invalid conf files.
6621         (all_are_equiv): Changed printf to be a bit clearer about
6622         what we are actually doing.
6623         (bus_config_parser_test): Test invalid configuration files.
6624
6625 2004-04-09  Jon Trowbridge  <trow@ximian.com>
6626
6627         * bus/config-parser.c (bus_config_parser_new): Added a 'parent'
6628         argument.  If non-null, the newly-constructed BusConfigParser will
6629         be initialized with the parent's BusLimits instead of the default
6630         values.
6631         (include_file): When including a config file, pass in
6632         the current parser as the parent and then copy the BusLimits
6633         from the included BusConfigParser pack to the current parser.
6634         (process_test_valid_subdir): Renamed from process_test_subdir.
6635         (process_test_equiv_subdir): Added.  Walks through a directory,
6636         descending into each subdirectory and loading the config files
6637         it finds there.  If any subdirectory contains two config files
6638         that don't produce identical BusConfigParser structs, fail.
6639         For now, the BusConfigParser's BusPolicies are not compared.
6640         (bus_config_parser_test): Call both process_test_valid_subdir and
6641         process_test_equiv_subdir.
6642
6643         * bus/config-loader-libxml.c (bus_config_load): Take a parent
6644         argument and pass it along to the call to bus_config_parser_new.
6645         Also made a few small changes to allow this code to compile.
6646
6647         * bus/config-loader-expat.c (bus_config_load): Take a parent
6648         argument and pass it along to the call to bus_config_parser_new.
6649
6650         * bus/bus.c (bus_context_new): Load the config file
6651         with a NULL parent argument.
6652
6653 2004-03-29  Michael Meeks  <michael@ximian.com>
6654
6655         * glib/dbus-gobject.c (introspect_properties): split
6656         out, fix mangled 'while' flow control.
6657         (introspect_signals): implement.
6658         (handle_introspect): update.
6659
6660 2004-03-29  Michael Meeks  <michael@ximian.com>
6661
6662         * glib/dbus-gobject.c (set_object_property): split out / 
6663         re-work, use the property type, and not the message type(!)
6664         (get_object_property): ditto.
6665
6666         * glib/dbus-gvalue.c (dbus_gvalue_demarshal),
6667         (dbus_gvalue_marshal): make this code re-usable, needed
6668         for signals too, also on both proxy and server side.
6669         Re-write for more efficiency / readability.
6670
6671 2004-03-29  Michael Meeks  <michael@ximian.com>
6672
6673         * dbus/dbus-message.c
6674         (dbus_message_new_error_printf): impl.
6675
6676         * dbus/dbus-connection.c
6677         (dbus_connection_unregister_object_path): fix warning.
6678
6679         * configure.in: fix no-mono-installed situation.
6680
6681 2004-03-27  Havoc Pennington  <hp@redhat.com>
6682
6683         Patch from Timo Teräs:
6684         
6685         * tools/dbus-send.c (main): if --print-reply, assume type is
6686         method call; support boolean type args
6687         
6688         * dbus/dbus-connection.c (dbus_connection_send_with_reply): fix a
6689         bunch of memleak and logic bugs
6690         
6691 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
6692
6693         * mono/Arguments.cs:
6694         * mono/Introspector.cs:
6695         * mono/Handler.cs:
6696         * mono/InterfaceProxy.cs:
6697         * mono/Message.cs
6698         * mono/ProxyBuilder.cs:
6699         * mono/Service.cs:
6700         Added InterfaceProxy class to avoid building proxies for every
6701         object.
6702
6703         * dbus-message.h:
6704         * dbus-message.c (dbus_message_append_args_valist)
6705         (dbus_message_iter_get_object_path)
6706         (dbus_message_iter_get_object_path_array)
6707         (dbus_message_iter_append_object_path)
6708         (dbus_message_iter_append_object_path_array):
6709         Added object_path iter functions to handle OBJECT_PATH arguments
6710         
6711 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
6712
6713         First checkin of mono bindings.
6714         * configure.in:
6715         * Makefile.am:
6716         Build stuff for the bindings
6717         * dbus-sharp.pc.in: Added for pkgconfig
6718         
6719 2004-03-21  Havoc Pennington  <hp@redhat.com>
6720
6721         * test/test-service.c (main): remove debug spew
6722
6723 2004-03-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6724
6725         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): accept empty
6726         arrays
6727
6728         * dbus/dbus-message.h, bus/dbus-message.c (dbus_message_iter_init)
6729         (dbus_message_iter_init_array_iterator)
6730         (dbus_message_iter_init_dict_iterator): return a dbus_bool_t to
6731         indicate whether the iterator is empty
6732
6733         * dbus/dbus-pending-call.c, dbus/dbus-server.c: silence compiler
6734         warnings
6735
6736 2004-03-19  Havoc Pennington  <hp@redhat.com>
6737
6738         * NEWS: 0.21 updates
6739
6740         * configure.in: 0.21
6741
6742         * doc/Makefile.am: add all XMLTO usage to DBUS_XML_DOCS_ENABLED
6743         
6744         * python/Makefile.am: change to avoid dist of dbus_bindings.c so
6745         you don't need pyrex to make dist
6746
6747         * qt/Makefile.am (libdbus_qt_1_la_SOURCES): add integrator.h to
6748         sources; run moc
6749         
6750 2004-03-18  Richard Hult  <richard@imendio.com>
6751
6752         * dbus/dbus-message.c (dbus_message_get_auto_activation) 
6753         (dbus_message_set_auto_activation): Add doxygen docs.
6754
6755 2004-03-16  Richard Hult  <richard@imendio.com>
6756
6757         * bus/activation.c: (bus_activation_service_created),
6758         (bus_activation_send_pending_auto_activation_messages),
6759         (bus_activation_activate_service):
6760         * bus/activation.h:
6761         * bus/dispatch.c: (bus_dispatch),
6762         (check_nonexistent_service_auto_activation),
6763         (check_service_auto_activated),
6764         (check_segfault_service_auto_activation),
6765         (check_existent_service_auto_activation), (bus_dispatch_test):
6766         * bus/driver.c: (bus_driver_handle_activate_service):
6767         * bus/services.c: (bus_registry_acquire_service):
6768         * dbus/dbus-message.c: (dbus_message_set_auto_activation),
6769         (dbus_message_get_auto_activation):
6770         * dbus/dbus-message.h:
6771         * dbus/dbus-protocol.h: Implement auto-activation.
6772         
6773         * doc/dbus-specification.xml: Add auto-activation to the spec.
6774
6775 2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6776
6777         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos):
6778         fix a bug with CUSTOM types.
6779
6780         * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add
6781         a unit test for this bug (used to fail).
6782
6783 2004-03-12  Mikael Hallendal  <micke@imendio.com>
6784
6785         * bus/activation.c:
6786         (babysitter_watch_callback): notify all pending activations waiting for
6787           the same exec that the activation failed.
6788         (bus_activation_activate_service): shortcut the activation if we 
6789           already waiting for the same executable to start up.
6790
6791 2004-03-12  Mikael Hallendal  <micke@imendio.com>
6792
6793         * bus/activation.c: 
6794         - Added service file reloading. 
6795           Each service files directory is kept in an hash table in 
6796           BusActivation and each BusActivationEntry knows what .service-file it
6797           was read from. So when you try to activate a service the bus will 
6798           check if it's been updated, removed or if new .service-files has 
6799           been installed.
6800         - Test code at the bottom for the service file reloading.
6801         * bus/test-main.c: (main):
6802         * bus/test.h:
6803         - added service reloading test.
6804         * dbus/dbus-sysdeps.c: 
6805         * dbus/dbus-sysdeps.h: (_dbus_delete_directory): Added.
6806
6807 2004-03-08  Michael Meeks  <michael@ximian.com>
6808
6809         * dbus/dbus-connection.c (_dbus_connection_block_for_reply): 
6810         bail immediately if disconnected, to avoid busy loop.
6811
6812         * dbus/dbus-message.c (dbus_message_iter_get_args_valist):
6813         cleanup cut/paste/inefficiency.
6814
6815 2004-03-01  David Zeuthen  <david@fubar.dk>
6816
6817         * dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
6818         bug where args were used twice. This bug resulted in a segfault
6819         on a Debian/PPC system when starting the messagebus daemon. Include
6820         dbus-sysdeps.h for DBUS_VA_COPY
6821
6822         * dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib
6823
6824         * configure.in: Check for va_copy; define DBUS_VA_COPY to the
6825         appropriate va_copy implementation. From GLib
6826         
6827 2004-02-24  Joe Shaw  <joe@ximian.com>
6828
6829         * bus/services.c (bus_registry_acquire_service): We need to pass
6830         in the service name to dbus_set_error() to prevent a crash.
6831
6832 2003-12-26  Anders Carlsson  <andersca@gnome.org>
6833
6834         * AUTHORS: Reveal my True identity.
6835
6836 2003-12-17  Mikael Hallendal  <micke@imendio.com>
6837
6838         * dbus/dbus-message.c: (dbus_message_append_args_valist): 
6839         - Added case for DBUS_TYPE_BYTE, patch from Johan Hedberg.
6840
6841 2003-12-13  Mikael Hallendal  <micke@imendio.com>
6842
6843         * doc/TODO: Added not about better error check of configuration files.
6844
6845 2003-12-02  Richard Hult  <richard@imendio.com>
6846
6847         * Update AFL version to 2.0 throughout the source files to reflect
6848         the update that was done a while ago.
6849
6850 2003-12-02  Richard Hult  <richard@imendio.com>
6851
6852         * dbus/dbus-message.c (dbus_message_iter_append_dict): Set
6853         wrote_dict_key to FALSE on the iter that the dict is appended to,
6854         just like when appending other types. Fixes a bug where a dict
6855         couldn't be put inside a dict.
6856         (dbus_message_iter_append_dict_key): Fix typo in warning message.
6857         (message_iter_test, _dbus_message_test): Add test case for dict
6858         inside dict.
6859
6860 2003-12-01  David Zeuthen  <david@fubar.dk>
6861
6862         * python/dbus.py: Add the actual message when calling the reciever
6863         of a signal such that parameters can be inspected. Add the method
6864         remove_signal_receiver
6865         
6866 2003-11-26  Mikael Hallendal  <micke@imendio.com>
6867
6868         * bus/*.[ch]:
6869         * dbus/*.[ch]:
6870         * glib/*.[ch]: Made ref functions return the pointer
6871
6872 2003-11-25  Zack Rusin  <zack@kde.org>
6873
6874         * qt/integrator.h, qt/integrator.cpp: Adding handling of DBusServer,
6875
6876         * qt/server.h, qt/server.cpp, qt/Makefile.am: Adding DBusServer 
6877         wrappers,
6878
6879         * qt/connection.h, qt/connection.cpp: Adjusting to changes in 
6880         the Integrator and to better fit with the server,
6881
6882 2003-11-24  Zack Rusin  <zack@kde.org>
6883
6884         * qt/connection.h, qt/connection.cpp: removing initDbus method since
6885         the integrator handles it now
6886
6887         * qt/integrator.h, qt/integrator.cpp: reworking handling of timeouts,
6888         since QTimer wasn't really meant to be used the way DBusTimeout is
6889
6890 2003-11-24  Zack Rusin  <zack@kde.org>
6891
6892         * qt/integrator.h, qt/integrator.cpp, Makefile.am: Adding 
6893         Integrator class which integrates D-BUS with the Qt event loop,
6894
6895         * qt/connection.h, qt/connection.cpp: Move all the code which
6896         was dealing with D-BUS integration to the Integrator class,
6897         and start using Integrator,
6898
6899 2003-11-23  Zack Rusin  <zack@kde.org>
6900
6901         * qt/connection.h, qt/connection.cpp: Adding the DBusConnection 
6902         wrapper
6903
6904         * qt/message.h, qt/message.cpp: updating to the current D-BUS api,
6905         switching namespaces to DBusQt, reworking the class,
6906
6907         * Makefile.cvs: switching dependencies so that it matches KDE 
6908         schematics,
6909         
6910         * qt/Makefile.am: adding connection.{h,cpp} and message.{h,cpp} to 
6911         the library
6912
6913 2003-11-19  Havoc Pennington  <hp@redhat.com>
6914
6915         * NEWS: update
6916
6917         * configure.in: bump version to 0.20
6918
6919         * configure.in (have_qt): add yet another place to look for qt
6920         (someone hand trolltech a .pc file...)
6921
6922 2003-11-01  Havoc Pennington  <hp@redhat.com>
6923
6924         * doc/dbus-specification.xml: add state machine docs on the auth
6925         protocol; just a first draft, I'm sure it's wrong.      
6926
6927 2003-10-28  David Zeuthen  <david@fubar.dk>
6928
6929         * python/dbus_bindings.pyx.in: add get_dict to handle dictionaries
6930         return types. Fixup TYPE_* to reflect changes in dbus/dbus-protocol.h
6931         
6932 2003-10-28  Havoc Pennington  <hp@redhat.com>
6933
6934         * dbus/dbus-message.c (get_next_field): delete unused function
6935
6936 2003-10-28  Havoc Pennington  <hp@redhat.com>
6937
6938         * bus/expirelist.c (do_expiration_with_current_time): detect
6939         failure of the expire_func due to OOM
6940
6941         * bus/connection.c (bus_pending_reply_expired): return FALSE on OOM
6942
6943         * bus/dispatch.c (check_send_exit_to_service): fix to handle the
6944         NoReply error that's now created by the bus when the service exits
6945
6946 2003-10-28  Havoc Pennington  <hp@redhat.com>
6947
6948         * dbus/dbus-message.c (_dbus_message_test): enable and fix the
6949         tests for set_path, set_interface, set_member, etc.
6950
6951         * dbus/dbus-string.c (_dbus_string_insert_bytes): allow 0 bytes
6952
6953         * dbus/dbus-message.c (set_string_field): always just delete and
6954         re-append the field; accept NULL for deletion
6955         (re_align_fields_recurse): reimplement
6956         
6957 2003-10-26  Havoc Pennington  <hp@redhat.com>
6958
6959         * dbus/dbus-connection.c: fix docs to properly describe the
6960         disconnected message
6961         (_dbus_connection_notify_disconnected): remove this function; 
6962         we can't synchronously add the disconnected message, we have to 
6963         do it after we've queued any remaining real messages
6964         (_dbus_connection_get_dispatch_status_unlocked): queue the
6965         disconnect message only if the transport has finished queueing all
6966         its real messages and is disconnected.
6967         (dbus_connection_disconnect): update the dispatch status here
6968
6969 2003-10-22  Havoc Pennington  <hp@redhat.com>
6970
6971         * bus/bus.c (bus_context_check_security_policy): fix up assertion
6972
6973         * bus/connection.c (bus_transaction_send_from_driver): set the
6974         destination to the connection's base service
6975
6976 2003-10-20  Havoc Pennington  <hp@redhat.com>
6977
6978         hmm, make check is currently not passing.
6979         
6980         * doc/dbus-specification.xml: add requirement that custom type
6981         names follow the same rules as interface names.
6982
6983         * dbus/dbus-protocol.h: change some of the byte codes, to avoid
6984         duplication and allow 'c' to be 'custom'; dict is now 'm' for
6985         'map'
6986
6987         * doc/dbus-specification.xml: update type codes to match
6988         dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
6989         CUSTOM. Add type OBJECT_PATH to the spec.
6990
6991 2003-10-17  Havoc Pennington  <hp@redhat.com>
6992
6993         * bus/driver.c (create_unique_client_name): use "." as separator
6994         in base service names instead of '-'
6995
6996         * dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
6997         byte at the end of the string
6998
6999         * dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
7000         optimization macros since string validation seems to be a slow
7001         point.
7002         
7003         * doc/dbus-specification.xml: restrict valid
7004         service/interface/member/error names. Add test suite code for the
7005         name validation.
7006
7007         * dbus/dbus-string.c: limit service/interface/member/error names 
7008         to [0-9][A-Z][a-z]_
7009
7010         * dbus/dbus-connection.c (dbus_connection_dispatch): add missing
7011         format arg to verbose spew
7012
7013         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
7014         memory, return instead of g_error
7015
7016         * test/test-service.c (path_message_func): support emitting a
7017         signal on request
7018
7019         * dbus/dbus-bus.c (init_connections_unlocked): only fill in
7020         activation bus type if DBUS_BUS_ACTIVATION was set; default to
7021         assuming the activation bus was the session bus so that services
7022         started manually will still register.
7023         (init_connections_unlocked): fix so that in OOM situation we get
7024         the same semantics when retrying the function
7025         
7026         * test/test-service.c (main): change to use path registration, to
7027         test those codepaths; register with DBUS_BUS_ACTIVATION rather
7028         than DBUS_BUS_SESSION
7029
7030 2003-10-16  Havoc Pennington  <hp@redhat.com>
7031
7032         * glib/dbus-gtest-main.c: bracket with #ifdef DBUS_BUILD_TESTS
7033
7034         * Makefile.am (GCOV_DIRS): remove "test", we don't care about test
7035         coverage of the tests
7036         (coverage-report.txt): don't move the .da and .bbg files around
7037
7038 2003-10-16  Havoc Pennington  <hp@redhat.com>
7039
7040         * bus/bus.c (struct BusContext): remove struct field I didn't mean
7041         to put there
7042
7043 2003-10-16  Havoc Pennington  <hp@redhat.com>
7044
7045         * bus/connection.c (bus_pending_reply_expired): either cancel or
7046         execute, not both
7047         (bus_connections_check_reply): use unlink, not remove_link, as we
7048         don't want to free the link; fixes double free mess
7049
7050         * dbus/dbus-pending-call.c (dbus_pending_call_block): fix in case
7051         where no reply was received
7052
7053         * dbus/dbus-connection.c (_dbus_pending_call_complete_and_unlock):
7054         fix a refcount leak
7055
7056         * bus/signals.c (match_rule_matches): add special cases for the
7057         bus driver, so you can match on sender/destination for it.
7058
7059         * dbus/dbus-sysdeps.c (_dbus_abort): print backtrace if
7060         DBUS_PRINT_BACKTRACE is set
7061
7062         * dbus/dbus-internals.c: add pid to assertion failure messages
7063
7064         * dbus/dbus-connection.c: add message type code to the debug spew
7065
7066         * glib/dbus-gproxy.c (gproxy_get_match_rule): match rules want
7067         sender=foo not service=foo
7068
7069         * dbus/dbus-bus.c (dbus_bus_get): if the activation bus is the
7070         session bus but DBUS_SESSION_BUS_ADDRESS isn't set, use 
7071         DBUS_ACTIVATION_ADDRESS instead
7072
7073         * bus/activation.c: set DBUS_SESSION_BUS_ADDRESS,
7074         DBUS_SYSTEM_BUS_ADDRESS if appropriate
7075
7076         * bus/bus.c (bus_context_new): handle OOM copying bus type into
7077         context struct
7078
7079         * dbus/dbus-message.c (dbus_message_iter_get_object_path): new function
7080         (dbus_message_iter_get_object_path_array): new function (half
7081         finished, disabled for the moment)
7082         
7083         * glib/dbus-gproxy.c (dbus_gproxy_end_call): properly handle
7084         DBUS_MESSAGE_TYPE_ERROR
7085
7086         * tools/dbus-launch.c (babysit): support DBUS_DEBUG_OUTPUT to
7087         avoid redirecting stderr to /dev/null
7088         (babysit): close stdin if not doing the "exit_with_session" thing
7089
7090         * dbus/dbus-sysdeps.c (_dbus_become_daemon): delete some leftover
7091         debug code; change DBUS_DEBUG_OUTPUT to only enable stderr, not
7092         stdout/stdin, so things don't get confused
7093         
7094         * bus/system.conf.in: fix to allow replies, I modified .conf
7095         instead of .conf.in again.
7096
7097 2003-10-14  David Zeuthen  <david@fubar.dk>
7098
7099         * python/dbus_bindings.pyx.in (MessageIter.get): fixed typo in
7100         argtype to arg_type when raising unknown arg type exception.
7101         Changed type list to reflect the changes in dbus-protocol.h so 
7102         the bindings actually work.
7103
7104 2003-10-14  Havoc Pennington  <hp@redhat.com>
7105
7106         * test/decode-gcov.c: support gcc 3.3 also, though gcc 3.3 seems
7107         to have a bug keeping it from outputting the .da files sometimes
7108         (string_get_string): don't append garbage nul bytes to the string.
7109
7110 2003-10-15  Seth Nickell  <seth@gnome.org>
7111
7112         * python/Makefile.am:
7113
7114         Include dbus_h_wrapper.h in the dist tarball.
7115
7116 2003-10-14  Havoc Pennington  <hp@redhat.com>
7117
7118         * bus/bus.c (bus_context_check_security_policy): revamp this to
7119         work more sanely with new policy-based requested reply setup
7120
7121         * bus/connection.c (bus_transaction_send_from_driver): set bus
7122         driver messages as no reply
7123
7124         * bus/policy.c (bus_client_policy_check_can_receive): handle a
7125         requested_reply attribute on allow/deny rules
7126
7127         * bus/system.conf: add <allow requested_reply="true"/>
7128
7129         * bus/driver.c (bus_driver_handle_message): fix check for replies
7130         sent to the bus driver, which was backward. How did this ever work
7131         at all though? I think I'm missing something.
7132
7133         * dbus/dbus-message.c (decode_header_data): require error and
7134         method return messages to have a reply serial field to be valid
7135         (_dbus_message_loader_queue_messages): break up this function;
7136         validate that reply serial and plain serial are nonzero; 
7137         clean up the OOM/error handling.
7138         (get_uint_field): don't return -1 from this
7139         (dbus_message_create_header): fix signed/unsigned bug
7140
7141         * bus/connection.c (bus_connections_expect_reply): save serial of
7142         the incoming message, not reply serial
7143
7144 2003-10-14  Havoc Pennington  <hp@redhat.com>
7145
7146         * bus/connection.c: implement pending reply tracking using
7147         BusExpireList
7148
7149         * bus/bus.c (bus_context_check_security_policy): verify that a
7150         reply is pending in order to allow a reply to be sent. Deny 
7151         messages of unknown type.
7152
7153         * bus/dbus-daemon-1.1.in: update to mention new resource limits
7154
7155         * bus/bus.c (bus_context_get_max_replies_per_connection): new
7156         (bus_context_get_reply_timeout): new
7157
7158 2003-10-13  Seth Nickell  <seth@gnome.org>
7159
7160         * python/Makefile.am:
7161
7162         Pass "make distcheck": remove a couple files from DIST_FILES
7163         that weren't included in the final version.
7164
7165 2003-10-12  Havoc Pennington  <hp@pobox.com>
7166
7167         Added test code that 1) starts an actual bus daemon and 2) uses
7168         DBusGProxy; fixed bugs that were revealed by the test. Lots 
7169         more testing possible, but this is the basic framework.
7170         
7171         * glib/dbus-gproxy.c (dbus_gproxy_manager_unregister): remove
7172         empty proxy lists from the proxy list hash
7173
7174         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): add a
7175         couple of return_if_fail checks
7176
7177         * dbus/dbus-pending-call.c (_dbus_pending_call_new): use dbus_new0
7178         to allocate, so everything is cleared to NULL as it should be.
7179
7180         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): pass
7181         source as data to dbus_connection_set_timeout_functions() as the 
7182         timeout functions expected
7183
7184         * test/glib/run-test.sh: add a little script to start up a message
7185         bus and run tests using it
7186
7187         * tools/dbus-launch.1: updates
7188
7189         * tools/dbus-launch.c (main): add --config-file option
7190
7191         * tools/dbus-launch.c (main): remove confusing else if (runprog)
7192         that could never be reached.
7193
7194         * dbus/dbus-message.c (dbus_message_new_method_return) 
7195         (dbus_message_new_error, dbus_message_new_signal): set the
7196         no-reply-expected flag on all these. Redundant, but may
7197         as well be consistent.
7198
7199 2003-10-11  Havoc Pennington  <hp@pobox.com>
7200
7201         * test/decode-gcov.c (function_solve_graph): make broken block
7202         graph a nonfatal error since it seems to be broken. Need to debug
7203         this.
7204
7205         * dbus/dbus-marshal.c (_dbus_type_is_valid): new function since we
7206         can't just check type > INVALID < LAST anymore
7207
7208         * dbus/dbus-message.c (dbus_message_get_signature): new function
7209         (dbus_message_has_signature): new function
7210         (struct DBusMessage): add signature field (right now it isn't sent
7211         over the wire, just generated on the fly)
7212         (dbus_message_copy): copy the signature, and init strings to
7213         proper length to avoid some reallocs
7214         (dbus_message_iter_init_array_iterator): return void, since it
7215         can't fail
7216         (dbus_message_iter_init_dict_iterator): return void since it can't fail
7217         (_dbus_message_loader_queue_messages): add silly temporary hack to
7218         fill in message->signature on load
7219
7220         * dbus/dbus-protocol.h: change DBUS_TYPE_* values to be ASCII
7221         characters, so they are relatively human-readable.
7222
7223 2003-10-11  Havoc Pennington  <hp@pobox.com>
7224
7225         * dbus/dbus-message.c (_dbus_message_test): add more test
7226         coverage, but #if 0 for now since they uncover a bug 
7227         not fixed yet; I think in re_align_field_recurse()
7228         (re_align_field_recurse): add FIXME about broken assertion
7229
7230         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage
7231
7232         * bus/connection.c: share a couple code bits with expirelist.c
7233
7234         * bus/expirelist.h, bus/expirelist.c: implement a generic
7235         expire-items-after-N-seconds facility, was going to share between
7236         expiring connections and replies, decided not to use for expiring
7237         connections for now.
7238
7239         * COPYING: include AFL 2.0 (still need to change all the file headers)
7240
7241 2003-10-09  Havoc Pennington  <hp@redhat.com>
7242
7243         * configure.in: define DBUS_HAVE_GCC33_GCOV if we have
7244         gcc 3.3. Not that we do anything about it yet.
7245
7246         * bus/signals.c (bus_match_rule_parse): impose max length on the
7247         match rule text
7248
7249         * dbus/dbus-protocol.h: add DBUS_MAXIMUM_MATCH_RULE_LENGTH
7250
7251 2003-10-09  Havoc Pennington  <hp@redhat.com>
7252
7253         Make matching rules theoretically work (add parser).
7254         
7255         * bus/bus.c (bus_context_check_security_policy): fix up to handle
7256         the case where destination is explicitly specified as bus driver
7257         and someone else is eavesdropping.
7258         
7259         * bus/policy.c (bus_client_policy_check_can_receive): fix up
7260         definition of eavesdropping and assertion
7261
7262         * tools/dbus-send.c (main): use dbus_message_type_from_string
7263
7264         * bus/signals.c (bus_match_rule_parse): implement
7265
7266         * dbus/dbus-message.c (dbus_message_type_from_string): new
7267
7268         * dbus/dbus-errors.h (DBUS_ERROR_MATCH_RULE_INVALID): add
7269
7270 2003-10-02  Havoc Pennington  <hp@pobox.com>
7271
7272         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): rename from
7273         dbus_gproxy_oneway_call
7274
7275         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main) 
7276         (dbus_server_setup_with_g_main): fix to allow calling them more
7277         than once on the same args
7278         (dbus_bus_get_with_g_main): new function
7279
7280 2003-10-02  Havoc Pennington  <hp@redhat.com>
7281
7282         * doc/dbus-tutorial.xml: write some stuff
7283
7284 2003-09-29  Havoc Pennington  <hp@pobox.com>
7285
7286         * configure.in: split checks for Doxygen from XML docs, check for
7287         xmlto
7288
7289         * doc/Makefile.am: XML-ify all the docs, and add a blank
7290         dbus-tutorial.xml
7291
7292 2003-09-29  Havoc Pennington  <hp@pobox.com>
7293
7294         * Merge dbus-object-names branch. To see the entire patch 
7295         do cvs diff -r DBUS_OBJECT_NAMES_BRANCHPOINT -r dbus-object-names,
7296         it's huuuuge though.
7297         To revert, I tagged DBUS_BEFORE_OBJECT_NAMES_MERGE.
7298         
7299 2003-09-28  Havoc Pennington  <hp@pobox.com>
7300
7301         * HACKING: update to reflect new server
7302
7303 2003-09-26  Seth Nickell  <seth@gnome.org>
7304
7305         * python/dbus.py:
7306         * python/examples/example-signals.py:
7307
7308         Start implementing some notions of signals. The API
7309         is really terrible, but they sort of work (with the
7310         exception of being able to filter by service, and to
7311         transmit signals *as* a particular service). Need to
7312         figure out how to make messages come from the service
7313         we registered :-(
7314         
7315         * python/dbus_bindings.pyx.in:
7316
7317         Removed duplicate message_handler callbacks.
7318         
7319 2003-09-25  Havoc Pennington  <hp@redhat.com>
7320
7321         * bus/session.conf.in: fix my mess
7322
7323 2003-09-25  Havoc Pennington  <hp@pobox.com>
7324
7325         * bus/session.conf.in: fix security policy, reported by Seth Nickell
7326
7327 2003-09-25  Seth Nickell  <seth@gnome.org>
7328
7329         * python/examples/example-service.py:
7330
7331         Johan notices complete wrong code in example-service, but
7332         completely wrong in a way that works exactly the same (!).
7333         Johan is confused, how could this possibly work? Example
7334         code fails to serve purpose of making things clear.
7335         Seth fixes.
7336
7337 2003-09-25  Mark McLoughlin  <mark@skynet.ie>
7338
7339         * doc/dbus-specification.sgml: don't require header fields
7340         to be 4-byte aligned and specify that fields should be
7341         distinguished from padding by the fact that zero is not
7342         a valid field name.
7343         
7344         * doc/TODO: remove re-alignment item and add item to doc
7345         the OBJECT_PATH type.
7346         
7347         * dbus/dbus-message.c:
7348         (HeaderField): rename the original member to value_offset
7349         and introduce a name_offset member to keep track of where
7350         the field actually begins.
7351         (adjust_field_offsets): remove.
7352         (append_int_field), (append_uint_field),
7353         (append_string_field): don't align the start of the header
7354         field to a 4-byte boundary.
7355         (get_next_field): impl finding the next marhsalled field
7356         after a given field.
7357         (re_align_field_recurse): impl re-aligning a number of
7358         already marshalled fields.
7359         (delete_field): impl deleting a field of any type and
7360         re-aligning any following fields.
7361         (delete_int_or_uint_field), (delete_string_field): remove.
7362         (set_int_field), (set_uint_field): no need to re-check
7363         that we have the correct type for the field.
7364         (set_string_field): ditto and impl re-aligning any
7365         following fields.
7366         (decode_header_data): update to take into account that
7367         the fields aren't 4-byte aligned any more and the new
7368         way to distinguish padding from header fields. Also,
7369         don't exit when there is too much header padding.
7370         (process_test_subdir): print the directory.
7371         (_dbus_message_test): add test to make sure a following
7372         field is re-aligned correctly after field deletion.
7373         
7374         * dbus/dbus-string.[ch]:
7375         (_dbus_string_insert_bytes): rename from insert_byte and
7376         allow the insert of multiple bytes.
7377         (_dbus_string_test): test inserting multiple bytes.
7378
7379         * dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
7380         warning note to docs about having to re-align any
7381         marshalled values following the string.
7382         
7383         * dbus/dbus-message-builder.c:
7384         (append_string_field), (_dbus_message_data_load):
7385         don't align the header field.
7386         
7387         * dbus/dbus-auth.c: (process_test_subdir): print the
7388         directory.
7389         
7390         * test/break-loader.c: (randomly_add_one_byte): upd. for
7391         insert_byte change.
7392         
7393         * test/data/invalid-messages/bad-header-field-alignment.message:
7394         new test case.
7395         
7396         * test/data/valid-messages/unknown-header-field.message: shove
7397         a dict in the unknown field.
7398
7399 2003-09-25  Seth Nickell  <seth@gnome.org>
7400
7401         * python/dbus.py:
7402         * python/dbus_bindings.pyx.in:
7403
7404         Handle return values.
7405         
7406         * python/examples/example-client.py:
7407         * python/examples/example-service.py:
7408
7409         Pass back return values from the service to the client.
7410         
7411 2003-09-24  Seth Nickell  <seth@gnome.org>
7412
7413         * python/dbus.py:
7414
7415         Connect Object methods (when you are sharing an object) up... pass
7416         in a list of methods to be shared. Sharing all the methods just
7417         worked out too weird. You can now create nice Services over the
7418         DBus in Python. :-)
7419         
7420         * python/dbus_bindings.pyx.in:
7421
7422         Keep references to user_data tuples passed into C functions so 
7423         Python doesn't garbage collect on us.
7424
7425         Implement MethodReturn and Error subclasses of Message for creating
7426         DBusMessage's of those types.
7427         
7428         * python/examples/example-client.py:
7429         * python/examples/example-service.py:
7430
7431         Simple example code showing both how create DBus services and objects,
7432         and how to use them.
7433
7434 2003-09-23  Havoc Pennington  <hp@pobox.com>
7435
7436         * glib/dbus-gproxy.c (dbus_gproxy_manager_filter): implement
7437
7438 2003-09-23  Havoc Pennington  <hp@redhat.com>
7439
7440         * glib/dbus-gproxy.c (dbus_gproxy_connect_signal): implement
7441         (dbus_gproxy_disconnect_signal): implement
7442         (dbus_gproxy_manager_remove_signal_match): implement
7443         (dbus_gproxy_manager_add_signal_match): implement
7444         (dbus_gproxy_oneway_call): implement
7445
7446 2003-09-23  Havoc Pennington  <hp@pobox.com>
7447
7448         * glib/dbus-gproxy.c (struct DBusGProxy): convert to a GObject
7449         subclass. This means dropping the transparent thread safety of the
7450         proxy; you now need a separate proxy per-thread, or your own
7451         locking on the proxy. Probably right anyway.
7452         (dbus_gproxy_ref, dbus_gproxy_unref): nuke, just use g_object_ref
7453
7454 2003-09-22  Havoc Pennington  <hp@redhat.com>
7455
7456         * glib/dbus-gproxy.c (dbus_gproxy_manager_get): implement
7457
7458 2003-09-21  Seth Nickell  <seth@gnome.org>
7459
7460         First checkin of the Python bindings.
7461         
7462         * python/.cvsignore:
7463         * python/Makefile.am:
7464         * python/dbus_bindings.pyx.in:
7465         * python/dbus_h_wrapper.h:
7466
7467         Pieces for Pyrex to operate on, building a dbus_bindings.so
7468         python module for low-level access to the DBus APIs.
7469         
7470         * python/dbus.py:
7471
7472         High-level Python module for accessing DBus objects.
7473
7474         * configure.in:
7475         * Makefile.am:
7476
7477         Build stuff for the python bindings.
7478
7479         * acinclude.m4:
7480
7481         Extra macro needed for finding the Python C header files.
7482
7483 2003-09-21  Havoc Pennington  <hp@pobox.com>
7484
7485         * glib/dbus-gproxy.c (dbus_gproxy_manager_new): start
7486         implementing the proxy manager, didn't get very far.
7487
7488         * dbus/dbus-bus.c (dbus_bus_add_match): new
7489         (dbus_bus_remove_match): new
7490
7491         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service): add a
7492         path_name argument; adjust the other not-yet-implemented 
7493         gproxy constructors to be what I think they should be.
7494
7495 2003-09-21  Havoc Pennington  <hp@pobox.com>
7496
7497         * dbus/dbus-bus.c (dbus_bus_get): set exit_on_disconnect to TRUE
7498         by default for message bus connections.
7499
7500         * dbus/dbus-connection.c (dbus_connection_dispatch): exit if
7501         exit_on_disconnect flag is set and we process the disconnected
7502         signal.
7503         (dbus_connection_set_exit_on_disconnect): new function
7504
7505 2003-09-21  Havoc Pennington  <hp@pobox.com>
7506
7507         Get matching rules mostly working in the bus; only actually
7508         parsing the rule text remains. However, the client side of
7509         "signal connections" hasn't been started, this patch is only the
7510         bus side.
7511         
7512         * dbus/dispatch.c: fix for the matching rules changes
7513         
7514         * bus/driver.c (bus_driver_handle_remove_match)
7515         (bus_driver_handle_add_match): send an ack reply from these
7516         method calls
7517
7518         * glib/dbus-gproxy.c (dbus_gproxy_begin_call): fix order of
7519         arguments, reported by Seth Nickell
7520
7521         * bus/config-parser.c (append_rule_from_element): support
7522         eavesdrop=true|false attribute on policies so match rules 
7523         can be prevented from snooping on the system bus.
7524
7525         * bus/dbus-daemon-1.1.in: consistently use terminology "sender"
7526         and "destination" in attribute names; fix some docs bugs; 
7527         add eavesdrop=true|false attribute
7528
7529         * bus/driver.c (bus_driver_handle_add_match)
7530         (bus_driver_handle_remove_match): handle AddMatch, RemoveMatch
7531         messages
7532
7533         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST): get
7534         rid of broadcast service concept, signals are just always broadcast
7535
7536         * bus/signals.c, bus/dispatch.c, bus/connection.c, bus/bus.c:
7537         mostly implement matching rules stuff (currently only exposed as signal
7538         connections)
7539
7540 2003-09-21  Mark McLoughlin  <mark@skynet.ie>
7541
7542         * doc/dbus-specification.sgml: Change the header field name
7543         to be an enum and update the rest of the spec to reference
7544         the fields using the conventinal name.
7545
7546         * dbus/dbus-protocol.h: update to reflect the spec.
7547
7548         * doc/TODO: add item to remove the 4 byte alignment requirement.
7549         
7550         * dbus/dbus-message.c: Remove the code to generalise the
7551         header/body length and serial number header fields as named
7552         header fields so we can reference field names using the 
7553         protocol values.
7554         (append_int_field), (append_uint_field), (append_string_field):
7555         Append the field name as a byte rather than four chars.
7556         (delete_int_or_uint_field), (delete_string_field): reflect the
7557         fact that the field name and typecode now occupy 4 bytes instead
7558         of 8.
7559         (decode_string_field), (decode_header_data): update to reflect
7560         protocol changes and move the field specific encoding from
7561         decode_string_field() back into decode_header_data().
7562         
7563         * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
7564         Add utility to aid debugging.
7565         
7566         * dbus/dbus-message-builder.c:
7567         (append_string_field), (_dbus_message_data_load): Update to
7568         reflect protocol changes; Change the FIELD_NAME directive
7569         to HEADER_FIELD and allow it to take the field's conventional
7570         name rather than the actual value.
7571         
7572         * test/data/*/*.message: Update to use HEADER_FIELD instead
7573         of FIELD_NAME; Always align the header on an 8 byte boundary
7574         *before* updating the header length.
7575
7576 2003-09-15  Havoc Pennington  <hp@pobox.com>
7577
7578         * dbus/dbus-pending-call.c: add the get/set object data
7579         boilerplate as for DBusConnection, etc. Use generic object data
7580         for the notify callback.
7581
7582         * glib/dbus-gparser.c (parse_node): parse child nodes
7583
7584         * tools/dbus-viewer.c: more hacking on the dbus-viewer
7585         
7586         * glib/dbus-gutils.c (_dbus_gutils_split_path): add a file to
7587         contain functions shared between the convenience lib and the
7588         installed lib
7589
7590         * glib/Makefile.am (libdbus_glib_1_la_LDFLAGS): add
7591         -export-symbols-regex to the GLib library
7592
7593         * dbus/dbus-object-tree.c (_dbus_object_tree_dispatch_and_unlock):
7594         fix the locking in here, and add a default handler for
7595         Introspect() that just returns sub-nodes.
7596
7597 2003-09-14  Havoc Pennington  <hp@pobox.com>
7598
7599         * glib/dbus-gthread.c (dbus_g_thread_init): rename to make g_foo
7600         rather than gfoo consistent
7601
7602         * glib/dbus-gproxy.h: delete for now, move contents to
7603         dbus-glib.h, because the include files don't work right since we
7604         aren't in the dbus/ subdir.
7605         
7606         * glib/dbus-gproxy.c (dbus_gproxy_send): finish implementing
7607         (dbus_gproxy_end_call): finish
7608         (dbus_gproxy_begin_call): finish
7609
7610         * glib/dbus-gmain.c (dbus_set_g_error): new
7611
7612         * glib/dbus-gobject.c (handle_introspect): include information
7613         about child nodes in the introspection
7614
7615         * dbus/dbus-connection.c (dbus_connection_list_registered): new
7616         function to help in implementation of introspection
7617
7618         * dbus/dbus-object-tree.c
7619         (_dbus_object_tree_list_registered_and_unlock): new function
7620
7621 2003-09-12  Havoc Pennington  <hp@pobox.com>
7622
7623         * glib/dbus-gidl.h: add common base class for all the foo_info
7624         types
7625
7626         * tools/dbus-viewer.c: add GTK-based introspection UI thingy
7627         similar to kdcop
7628
7629         * test/Makefile.am: try test srcdir -ef . in addition to test
7630         srcdir = ., one of them should work (yeah lame)
7631         
7632         * glib/Makefile.am: build the "idl" parser stuff as a convenience
7633         library
7634         
7635         * glib/dbus-gparser.h: make description_load routines return
7636         NodeInfo* not Parser*
7637
7638         * Makefile.am (SUBDIRS): build test dir after all library dirs
7639
7640         * configure.in: add GTK+ detection
7641
7642 2003-09-07  Havoc Pennington  <hp@pobox.com>
7643
7644         * Make Doxygen contented.
7645
7646 2003-09-07  Havoc Pennington  <hp@pobox.com>
7647
7648         * doc/dbus-specification.sgml: more updates
7649
7650 2003-09-06  Havoc Pennington  <hp@pobox.com>
7651
7652         * doc/dbus-specification.sgml: partial updates
7653
7654         * bus/dbus-daemon-1.1.in: fix the config file docs for the
7655         zillionth time; hopefully I edited the right file this time.
7656
7657         * bus/config-parser.c (append_rule_from_element): support
7658         send_type, send_path, receive_type, receive_path
7659
7660         * bus/policy.c: add message type and path to the list of things
7661         that can be "firewalled"
7662
7663 2003-09-06  Havoc Pennington  <hp@pobox.com>
7664
7665         * dbus/dbus-connection.c (dbus_connection_register_fallback): add this
7666         (dbus_connection_register_object_path): make this not handle
7667         messages to paths below the given path
7668
7669 2003-09-03  Havoc Pennington  <hp@pobox.com>
7670
7671         * test/glib/Makefile.am: add this with random glib-linked test
7672         programs
7673
7674         * glib/Makefile.am: remove the random test programs from here,
7675         leave only the unit tests
7676
7677         * glib/dbus-gobject.c (_dbus_gobject_test): add test for 
7678         uscore/javacaps conversion, and fix     
7679         (get_object_property, set_object_property): change to .NET
7680         convention for mapping props to methods, set_FooBar/get_FooBar, 
7681         since one language has such a convention we may as well copy it. 
7682         Plus real methods in either getFooBar or get_foo_bar style won't 
7683         collide with this convention.
7684
7685 2003-09-01  Havoc Pennington  <hp@pobox.com>
7686
7687         * glib/dbus-gparser.c: implement
7688
7689         * glib/dbus-gobject.c: start implementing skeletons support
7690
7691         * configure.in: when disabling checks/assert, also define
7692         G_DISABLE_ASSERT and G_DISABLE_CHECKS
7693
7694 2003-09-01  Havoc Pennington  <hp@pobox.com>
7695
7696         * glib/Makefile.am: rearrange a bunch of files and get "make
7697         check" framework set up
7698
7699 2003-08-31  Havoc Pennington  <hp@pobox.com>
7700
7701         * fix build with --disable-tests
7702
7703 2003-08-30  Havoc Pennington  <hp@pobox.com>
7704
7705         * dbus/dbus-connection.c: purge DBusMessageHandler
7706
7707         * dbus/dbus-message-handler.c: remove DBusMessageHandler, just 
7708         use callbacks everywhere
7709
7710 2003-08-30  Havoc Pennington  <hp@pobox.com>
7711
7712         * test/data/valid-config-files/system.d/test.conf: change to 
7713         root for the user so warnings don't get printed
7714
7715         * dbus/dbus-message.c: add dbus_message_get_path,
7716         dbus_message_set_path
7717         
7718         * dbus/dbus-object-tree.c (do_test_dispatch): add test of
7719         dispatching to a path
7720
7721         * dbus/dbus-string.c (_dbus_string_validate_path): add
7722
7723         * dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
7724         (_dbus_marshal_object_path): implement
7725
7726         * dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
7727         to contain the path to the target object
7728         (DBUS_HEADER_FIELD_SENDER_SERVICE): rename
7729         DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
7730
7731 2003-08-30  Havoc Pennington  <hp@pobox.com>
7732
7733         * dbus/dbus-object-tree.c: write tests and fix the discovered bugs
7734
7735 2003-08-29  Havoc Pennington  <hp@pobox.com>
7736
7737         * dbus/dbus-object-tree.c: modify to allow overlapping paths to be
7738         registered
7739         (struct DBusObjectSubtree): shrink this
7740         a lot, since we may have a lot of them
7741         (_dbus_object_tree_free_all_unlocked): implement
7742         (_dbus_object_tree_dispatch_and_unlock): implement
7743
7744 2003-08-29  Havoc Pennington  <hp@pobox.com>
7745
7746         * dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS
7747
7748 2003-08-28  Havoc Pennington  <hp@pobox.com>
7749
7750         purge DBusObjectID
7751         
7752         * dbus/dbus-connection.c: port to no ObjectID, create a
7753         DBusObjectTree, rename ObjectTree to ObjectPath in public API
7754
7755         * dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
7756         everything except UnregisterFunction and MessageFunction
7757         
7758         * dbus/dbus-marshal.c: port away from DBusObjectID, 
7759         add DBUS_TYPE_OBJECT_PATH
7760         
7761         * dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
7762         dbus/dbus-objectid.[hc]: remove these, we are moving to 
7763         path-based object IDs
7764
7765 2003-08-25  Havoc Pennington  <hp@pobox.com>
7766
7767         Just noticed that dbus_message_test is hosed, I wonder when I
7768         broke that. I thought make check was passing earlier...
7769         
7770         * dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
7771         container tree, will replace most of dbus-object-registry
7772
7773         * dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
7774         screwup
7775
7776 2003-08-19  Havoc Pennington  <hp@pobox.com>
7777
7778         * dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
7779         (dbus_message_is_error): fix this function
7780
7781         * bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
7782         match
7783
7784         * bus/policy.c (bus_client_policy_check_can_receive): fix code to
7785         reflect clarified man page
7786         (bus_client_policy_check_can_send): ditto
7787         
7788         * bus/session.conf.in: fixup
7789
7790         * bus/system.conf.in: fixup
7791
7792 2003-08-18  Havoc Pennington  <hp@redhat.com>
7793
7794         * dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix
7795
7796         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
7797         dumb bug created earlier (wrong order of args to
7798         decode_header_data())
7799         
7800         * tools/dbus-send.c: port
7801
7802         * tools/dbus-print-message.c (print_message): port
7803
7804         * test/data/*messages: port all messages over
7805         
7806         * dbus/dbus-message-builder.c: support including 
7807         message type
7808         
7809         * bus/driver.c: port over
7810         
7811         * bus/dispatch.c: port over to new stuff
7812
7813         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
7814         rename disconnect signal to "Disconnected"
7815
7816 2003-08-17  Havoc Pennington  <hp@pobox.com>
7817
7818         This doesn't compile yet, but syncing up so I can hack on it from
7819         work. What are branches for if not broken code? ;-)
7820         
7821         * dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
7822         DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
7823         DBUS_HEADER_FIELD_ERROR_NAME
7824         
7825         * dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
7826         for the interface+member pairs
7827         (string_hash): change to use g_str_hash algorithm
7828         (find_direct_function, find_string_function): refactor these to
7829         share most code.
7830         
7831         * dbus/dbus-message.c: port all of this over to support 
7832         interface/member fields instead of name field
7833
7834         * dbus/dbus-object-registry.c: port over
7835         
7836         * dbus/dbus-string.c (_dbus_string_validate_interface): rename
7837         from _dbus_string_validate_name
7838
7839         * bus/dbus-daemon-1.1: change file format for the 
7840         <deny>/<allow> stuff to match new message naming scheme
7841
7842         * bus/policy.c: port over
7843
7844         * bus/config-parser.c: parse new format
7845         
7846 2003-08-16  Havoc Pennington  <hp@pobox.com>
7847
7848         * dbus/dbus-object-registry.c (add_and_remove_objects): remove
7849         broken assertion
7850
7851         * glib/dbus-gproxy.c: some hacking
7852
7853 2003-08-15  Havoc Pennington  <hp@redhat.com>
7854
7855         * dbus/dbus-pending-call.c (dbus_pending_call_block): implement
7856
7857         * dbus/dbus-connection.c
7858         (dbus_connection_send_with_reply_and_block): factor out internals;
7859         change to convert any error replies to DBusError instead of 
7860         returning them as a message
7861
7862 2003-08-15  Havoc Pennington  <hp@pobox.com>
7863
7864         * dbus/dbus-connection.c, 
7865         dbus/dbus-pending-call.c: Finish the pending call stuff
7866
7867 2003-08-14  Havoc Pennington  <hp@redhat.com>
7868
7869         * dbus/dbus-pending-call.c: start on new object that will replace
7870         DBusMessageHandler and ReplyHandlerData for tracking outstanding
7871         replies
7872
7873         * dbus/dbus-gproxy.c: start on proxy object used to communicate
7874         with remote interfaces
7875
7876         * dbus/dbus-gidl.c: do the boring boilerplate in here
7877         
7878 2003-08-12  Havoc Pennington  <hp@pobox.com>
7879
7880         * bus/dispatch.c (bus_dispatch): make this return proper 
7881         DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD
7882
7883         * dbus/dbus-errors.c (dbus_set_error): use
7884         _dbus_string_append_printf_valist
7885
7886         * dbus/dbus-string.c (_dbus_string_append_printf_valist)
7887         (_dbus_string_append_printf): new
7888
7889         * dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
7890         UNKNOWN_METHOD
7891
7892         * dbus/dbus-connection.c (dbus_connection_dispatch): handle
7893         DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
7894         message is unhandled.
7895
7896 2003-08-11  Havoc Pennington  <hp@pobox.com>
7897
7898         * bus/test.c (client_disconnect_handler): change to return
7899         HANDLED (would have been REMOVE_MESSAGE)
7900
7901         * dbus/dbus-object.h (enum DBusHandlerResult): rename to
7902         HANDLED/NOT_YET_HANDLED instead of
7903         REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
7904         should be used.
7905
7906 2003-08-10  Havoc Pennington  <hp@pobox.com>
7907
7908         * tools/dbus-send.c (main): add --type argument, for now
7909         supporting only method_call and signal types.
7910
7911         * tools/dbus-print-message.c: print message type
7912
7913         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
7914         init connection->objects
7915
7916         * doc/dbus-specification.sgml: fix sgml
7917
7918         * bus/*.c: port over to object-instance API changes
7919
7920         * test/test-service.c: ditto
7921         
7922         * dbus/dbus-message.c (dbus_message_create_header): allow #NULL
7923         name, we will have to fix up the rest of the code to also handle
7924         this
7925         (dbus_message_new): generic message-creation call
7926         (set_string_field): allow appending name field
7927
7928 2003-08-06  Havoc Pennington  <hp@pobox.com>
7929
7930         * dbus/dbus-object-registry.c: implement signal connection 
7931         and dispatch
7932
7933         * dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new
7934
7935         * dbus/dbus-internals.c (_dbus_memdup): new function
7936
7937 2003-08-02  Havoc Pennington  <hp@pobox.com>
7938
7939         * dbus/dbus-message.c (dbus_message_get_no_reply)
7940         (dbus_message_set_no_reply): add these and remove
7941         set_is_error/get_is_error
7942
7943         * dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
7944         remove the ERROR flag, since there's now an ERROR type
7945
7946 2003-08-01  Havoc Pennington  <hp@pobox.com>
7947
7948         * dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
7949         implement
7950
7951         * dbus/dbus-message.c (dbus_message_get_type): new function
7952
7953         * doc/dbus-specification.sgml: add "type" byte to messages
7954
7955 2003-08-01  Havoc Pennington  <hp@pobox.com>
7956
7957         * dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
7958         a message type enum to distinguish kinds of message
7959         (DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
7960         that need not be replied to
7961
7962 2003-08-01  Havoc Pennington  <hp@pobox.com>
7963
7964         * dbus/dbus-marshal.c: adapt to DBusObjectID changes
7965         (unpack_8_octets): fix no-64-bit-int bug
7966
7967         * dbus/dbus-object-registry.c (validate_id): validate the 
7968         connection ID bits, not just the instance ID.
7969
7970         * dbus/dbus-connection.c (_dbus_connection_init_id): initialize
7971         the connection-global 33 bits of the object ID
7972
7973         * dbus/dbus-object-registry.c (info_from_entry): fill in 
7974         object ID in the new way
7975
7976         * dbus/dbus-objectid.h: rather than high/low bits, specifically 
7977         define server/client/instance bits.
7978
7979 2003-07-30  Havoc Pennington  <hp@pobox.com>
7980
7981         * dbus/dbus-connection.c (dbus_connection_register_object): fix
7982         build
7983
7984 2003-07-13  Havoc Pennington  <hp@pobox.com>
7985
7986         * dbus/dbus-object.h (struct DBusObjectVTable): add padding
7987         fields to DBusObjectVTable and DBusObjectInfo
7988
7989 2003-07-12  Havoc Pennington  <hp@pobox.com>
7990
7991         * dbus/dbus-object-registry.c: implement unit test,
7992         fix bugs discovered in process
7993
7994         * dbus/dbus-connection.c: remove handler_table and
7995         register_handler(), add DBusObjectRegistry usage
7996
7997         * dbus/dbus-objectid.c (dbus_object_id_is_null)
7998         (dbus_object_id_set_null): new functions
7999
8000 2003-07-08  Havoc Pennington  <hp@pobox.com>
8001
8002         * dbus/dbus-object.c: implement some of this
8003
8004         * dbus/dbus-object-registry.c
8005         (_dbus_object_registry_add_and_unlock): fill in the object_id out
8006         param
8007         (_dbus_object_registry_new): handle OOM
8008
8009 2003-07-08  Havoc Pennington  <hp@pobox.com>
8010
8011         * dbus/dbus-object.h: sketch out an API for registering objects
8012         with a connection, that allows us to use as little as 24 bytes
8013         per object and lets application code represent an object in 
8014         any conceivable way.
8015
8016         * dbus/dbus-object-registry.c: implement the hard bits of the
8017         DBusConnection aspect of object API. Not yet wired up.
8018         
8019 2003-07-06  Havoc Pennington  <hp@pobox.com>
8020
8021         * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function
8022         (_dbus_marshal_object_id): new
8023         (_dbus_demarshal_object_id): new
8024         (_dbus_marshal_get_arg_end_pos): support object ID type, and
8025         consolidate identical switch cases. Don't conditionalize handling
8026         of DBUS_TYPE_UINT64, need to handle the type always.
8027         (_dbus_marshal_validate_arg): consolidate identical cases, and
8028         handle DBUS_TYPE_OBJECT_ID
8029
8030         * dbus/dbus-objectid.c: new file with DBusObjectID data type.
8031
8032         * dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID
8033
8034 2003-09-28  Havoc Pennington  <hp@pobox.com>
8035
8036         * real 0.13 release
8037
8038 2003-09-28  Havoc Pennington  <hp@pobox.com>
8039
8040         * doc/Makefile.am (dbus-specification.html): testing a funky hack
8041         to work with Debian db2html
8042
8043 2003-09-28  Havoc Pennington  <hp@pobox.com>
8044
8045         * configure.in: 0.13
8046
8047         * doc/Makefile.am (dbus-test-plan.html): accept nonexistence of
8048         stylesheet-images for benefit of Debian
8049         
8050         Change back to using filesystem-linked sockets for the system
8051         bus, so only root can create the default system bus address.
8052         
8053         * bus/system.conf.in: change to use
8054         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
8055
8056         * dbus/Makefile.am (INCLUDES): remove DBUS_SYSTEM_BUS_PATH define
8057         from here.
8058
8059         * configure.in: define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
8060         here, and AC_DEFINE DBUS_SYSTEM_PATH
8061
8062 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
8063
8064         * doc/TODO:
8065         * doc/busconfig.dtd:
8066         Add busconfig DTD.
8067         
8068 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
8069
8070         * doc/dbus-specification.sgml:
8071         Add activation reply values.
8072         
8073 2003-08-05  Havoc Pennington  <hp@redhat.com>
8074
8075         * configure.in: 0.12
8076
8077 2003-08-05  Anders Carlsson  <andersca@codefactory.se>
8078
8079         * glib/dbus-gmain.c: (watch_fd_new), (watch_fd_ref),
8080         (watch_fd_unref), (dbus_gsource_check), (dbus_gsource_dispatch),
8081         (add_watch), (remove_watch), (create_source):
8082         Refcount fds, fixes some reentrancy issues.
8083         
8084 2003-07-30  Havoc Pennington  <hp@redhat.com>
8085
8086         * dbus/dbus-bus.c (init_connections_unlocked): fix default system
8087         bus address to be abstract if we have abstract sockets
8088
8089         * NEWS: update
8090
8091 2003-07-28  Havoc Pennington  <hp@redhat.com>
8092
8093         * bus/messagebus.in: fix to avoid processname/servicename 
8094         confusion, from Michael Kearey
8095         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100965
8096         
8097 2003-07-23  Havoc Pennington  <hp@pobox.com>
8098
8099         * dbus/dbus-message.c (dbus_message_iter_get_named): 
8100         fix from Andy Hanton to remove broken "+1"
8101
8102 2003-07-16  Havoc Pennington  <hp@pobox.com>
8103
8104         * tools/dbus-launch.c (babysit): close stdout/stderr in the
8105         babysitter process, as suggested by Thomas Leonard, so 
8106         an "eval `dbus-launch --exit-with-session`" will actually 
8107         return
8108
8109 2003-07-16  Havoc Pennington  <hp@pobox.com>
8110
8111         * configure.in: print out EXPANDED_* variables in the summary at
8112         the end; clean up the code that computes EXPANDED_ variables and
8113         get the ones using exec_prefix right. Should make things work
8114         when you build without --prefix
8115
8116 2003-06-29  Havoc Pennington  <hp@pobox.com>
8117
8118         * mono/Test.cs (class Test): fire up a main loop and run it
8119
8120         * mono/DBus.cs (DBus): don't g_thread_init since it can only be
8121         done once, the app has to do it
8122
8123 2003-06-26  Havoc Pennington  <hp@pobox.com>
8124
8125         * mono/Connection.cs: set up connection with the glib main loop
8126
8127 2003-07-01  Havoc Pennington  <hp@redhat.com>
8128
8129         * doc/dbus-specification.sgml: clarify the format of a type code,
8130         change suggested by Jim Blandy
8131
8132 2003-06-29  Miloslav Trmac  <mitr@volny.cz>
8133
8134         * doc/Makefile.am:
8135         * tools/Makefile.am: Don't assume srcdir == builddir.
8136
8137         * dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
8138         the allocated block.
8139         (_dbus_memory_test): New function.
8140         * dbus/dbus-test.h: Add _dbus_memory_test ().
8141         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.
8142
8143         * dbus/dbus-message.c (decode_header_data): Use %.4s instead
8144         of %c%c%c%c.
8145         (dbus_message_new): Remove obsolete @todo.
8146
8147         * dbus/dbus-marshal.c (_dbus_marshal_set_int64)
8148         (_dbus_marshal_set_uint64): Fix comment.
8149
8150         * dbus/dbus-message.c (append_int_field, append_uint_field): Don't
8151         hardcode FIELD_REPLY_SERIAL.
8152
8153         * dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
8154         (_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p
8155
8156         * configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
8157         and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used
8158
8159 2003-06-24  Havoc Pennington  <hp@pobox.com>
8160
8161         * mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)
8162
8163 2003-06-23  Anders Carlsson  <andersca@codefactory.se>
8164
8165         * configure.in:
8166         * gcj/.cvsignore:
8167         * gcj/Hello.java:
8168         * gcj/Makefile.am:
8169         * gcj/TestMessage.java: (TestMessage), (TestMessage.main):
8170         * gcj/org/.cvsignore:
8171         * gcj/org/Makefile.am:
8172         * gcj/org/freedesktop/.cvsignore:
8173         * gcj/org/freedesktop/Makefile.am:
8174         * gcj/org/freedesktop/dbus/.cvsignore:
8175         * gcj/org/freedesktop/dbus/Makefile.am:
8176         * gcj/org/freedesktop/dbus/Message.java: (Message),
8177         (Message.Message):
8178         * gcj/org/freedesktop/dbus/natMessage.cc:
8179         Fix the build system.
8180
8181 2003-06-22  Havoc Pennington  <hp@pobox.com>
8182
8183         * mono/Connection.cs: add more bindings
8184
8185         * dbus/dbus-threads.c (dbus_threads_init): allow calling this
8186         more than once.
8187
8188 2003-06-22  Havoc Pennington  <hp@pobox.com>
8189
8190         * mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
8191         Start wrapping more stuff.
8192
8193 2003-06-22  Havoc Pennington  <hp@pobox.com>
8194
8195         * mono/Message.cs: implement Message.Wrap() that ensures we only
8196         have a single C# wrapper per DBusMessage, assuming it works which
8197         it probably doesn't.
8198
8199         * dbus/dbus-message.c (dbus_message_allocate_data_slot): new
8200         (dbus_message_free_data_slot): new
8201         (dbus_message_set_data): new
8202         (dbus_message_get_data): new
8203
8204 2003-06-22  Havoc Pennington  <hp@pobox.com>
8205
8206         * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
8207         (_dbus_data_slot_allocator_alloc): rework these to keep a
8208         reference count on each slot and automatically manage a global
8209         slot ID variable passed in by address
8210
8211         * bus/bus.c: convert to new dataslot API
8212
8213         * dbus/dbus-bus.c: convert to new dataslot API
8214
8215         * dbus/dbus-connection.c: convert to new dataslot API
8216
8217         * dbus/dbus-server.c: convert to new dataslot API
8218
8219         * glib/dbus-gmain.c: ditto
8220
8221         * bus/test.c: ditto
8222
8223         * bus/connection.c: ditto
8224
8225 2003-06-22  Anders Carlsson  <andersca@codefactory.se>
8226
8227         * configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
8228         after the gcj checks so that the correct configuration tags
8229         will be added to libtool.
8230
8231         * dbus-glib-1.pc.in: No need to specify any includes since
8232         dbus-1.pc.in has those.
8233
8234 2003-06-22  Havoc Pennington  <hp@pobox.com>
8235
8236         * mono/*, gcj/*, configure.in, Makefile.am:
8237         Check in makefiles and subdirs for mono and gcj bindings.
8238         Neither binding actually exists, just trying to get through
8239         all the build and other boring bits.
8240
8241 2003-06-21  Philip Blundell  <philb@gnu.org>
8242
8243         * tools/dbus-monitor.1: Updated.
8244
8245         * tools/dbus-send.1: Likewise.
8246
8247 2003-06-20  Anders Carlsson  <andersca@codefactory.se>
8248
8249         * dbus/dbus-transport-unix.c (unix_handle_watch): Check
8250         for hangup and error after checking read so we won't discard
8251         pending data if both hangup and read are set.
8252
8253 2003-06-19  Philip Blundell  <philb@gnu.org>
8254
8255         * tools/dbus-print-message.c (print_message): Handle BOOLEAN.
8256
8257         * tools/dbus-send.c: Accept both --system and --session.
8258
8259         * tools/dbus-monitor.c: Same here.
8260
8261 2003-06-19  Anders Carlsson  <andersca@codefactory.se>
8262
8263         * glib/dbus-glib.h: Fix so that dbus-glib.h can be used
8264         from C++ (Patch by Miloslav Trmac).
8265
8266 2003-06-15  Joe Shaw  <joe@assbarn.com>
8267
8268         * configure.in: Check for socklen_t.
8269
8270         * dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.
8271
8272         * test/test-segfault.c: Add #include <sys/time.h>
8273
8274         * tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
8275         dbus-launch needs it.
8276
8277 2003-06-09  Havoc Pennington  <hp@redhat.com>
8278
8279         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
8280         SUN_LEN, it breaks abstract socket usage
8281
8282         * dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
8283         starts of lines.
8284
8285 2003-06-04  Havoc Pennington  <hp@pobox.com>
8286
8287         * dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
8288         using unix:abstract=/foo, and when listening in a tmpdir
8289         i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.
8290
8291         * dbus/dbus-transport.c (_dbus_transport_open): support
8292         unix:abstract=/foo
8293
8294         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
8295         support abstract sockets
8296
8297         * dbus/dbus-transport-unix.c
8298         (_dbus_transport_new_for_domain_socket): support abstract sockets
8299
8300         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
8301         toggle as an argument, implement abstract namespace support
8302         (_dbus_listen_unix_socket): ditto
8303
8304         * configure.in: add --enable-abstract-sockets and implement
8305         a configure check for autodetection of the right value.
8306
8307 2003-06-01  Havoc Pennington  <hp@pobox.com>
8308
8309         * tools/dbus-cleanup-sockets.c: add utility to clean up sockets
8310         in /tmp (though on Linux this will end up being useless,
8311         when we add abstract namespace support)
8312
8313         * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to
8314         subst'ing it
8315
8316 2003-05-28  Colin Walters  <walters@verbum.org>
8317
8318         * tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).
8319
8320 2003-05-18  Anders Carlsson  <andersca@codefactory.se>
8321
8322         * dbus/dbus-message.c (dbus_message_new): Remove @todo.
8323
8324 2003-05-17  Colin Walters  <walters@gnu.org>
8325
8326         * tools/dbus-send.c: Don't exit with an error code if --help was
8327         passed.  Default to using the session bus instead of the system
8328         one.
8329
8330         * tools/dbus-launch.c: Ditto.
8331
8332         * tools/dbus-monitor.c: Ditto.
8333
8334         * tools/dbus-send.1: Update with new arguments.
8335
8336         * tools/dbus-launch.c: Emit code to export variables.  New
8337         arguments -s and -c to specify shell syntax, and a bit of code to
8338         autodetect syntax.  Also, allow specifying a program to run.
8339
8340         * tools/dbus-launch.1: Update with new arguments.
8341
8342         * tools/dbus-send.1: Ditto.
8343
8344         * tools/dbus-monitor.1: Ditto.
8345
8346 2003-05-17  Havoc Pennington  <hp@pobox.com>
8347
8348         * bus/config-parser.c (merge_included): merge in policies from
8349         child configuration file.
8350
8351         * bus/policy.c (bus_policy_merge): function to merge two policies
8352         together
8353
8354 2003-05-16  Havoc Pennington  <hp@redhat.com>
8355
8356         * dbus/dbus-connection.c: disable verbose lock spew
8357
8358         * tools/dbus-send.c: add --print-reply command line option
8359
8360         * tools/dbus-print-message.h (print_message): new util function
8361         shared by dbus-send and dbus-monitor
8362
8363         * tools/dbus-monitor.c (handler_func): exit on disconnect
8364
8365         * dbus/dbus-transport-unix.c (do_reading): if the transport is
8366         disconnected, don't try to use the read_watch
8367
8368         * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
8369         so we can find this bug more easily
8370
8371 2003-05-16  Havoc Pennington  <hp@redhat.com>
8372
8373         * bus/policy.c (free_rule_list_func): avoid a crash when passed
8374         NULL as DBusHashTable is annoyingly likely to do.
8375
8376 2003-05-16  Colin Walters  <walters@verbum.org>
8377
8378         * tools/dbus-monitor.c: Add --session argument and usage()
8379         function.
8380
8381         * tools/dbus-monitor.1: Update with new --session arg.
8382
8383         * bus/Makefile.am (install-data-hook): Create
8384         $(libdir)/dbus-1.0/services so that the session bus is happy.
8385
8386 2003-05-15  Havoc Pennington  <hp@redhat.com>
8387
8388         * dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
8389         on non-x86. ifdef's are evil.
8390
8391 2003-05-15  Havoc Pennington  <hp@redhat.com>
8392
8393         * configure.in: 0.11
8394
8395         * NEWS: update
8396
8397         * bus/Makefile.am (initddir): apparently we are supposed to put
8398         init scripts in /etc/rc.d/init.d not /etc/init.d
8399
8400         * bus/Makefile.am: remove the "you must --enable-tests to make
8401         check" as it broke distcheck
8402
8403         * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d
8404
8405 2003-05-13  James Willcox  <jwillcox@gnome.org>
8406
8407         * configure.in:
8408         * bus/activation.c: (bus_activation_service_created),
8409         (bus_activation_activate_service):
8410         * bus/driver.c: (bus_driver_send_service_deleted),
8411         (bus_driver_send_service_created), (bus_driver_send_service_lost),
8412         (bus_driver_send_service_acquired),
8413         (bus_driver_send_welcome_message),
8414         (bus_driver_handle_list_services):
8415         * bus/session.conf.in:
8416         * dbus/dbus-bus.c: (dbus_bus_acquire_service),
8417         (dbus_bus_service_exists), (dbus_bus_activate_service):
8418         * dbus/dbus-bus.h:
8419
8420         Add some convenience API which lets you activate a service, and did a
8421         bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
8422         and dbus_message_get_args()
8423
8424 2003-05-11  Havoc Pennington  <hp@pobox.com>
8425
8426         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid
8427         calling _dbus_marshal_validate_arg() for every byte in a byte
8428         array, etc.
8429
8430         * dbus/dbus-message-handler.c: use atomic reference counting to
8431         reduce number of locks slightly; the global lock in here sucks
8432
8433         * dbus/dbus-connection.c
8434         (_dbus_connection_update_dispatch_status_and_unlock): variant of
8435         update_dispatch_status that can be called with lock held; then use
8436         in a couple places to reduce locking/unlocking
8437         (dbus_connection_send): hold the lock over the whole function
8438         instead of acquiring it twice.
8439
8440         * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM
8441
8442         * bus/connection.c (bus_connections_setup_connection): fix access
8443         to already-freed memory.
8444
8445         * dbus/dbus-connection.c: keep a little cache of linked list
8446         nodes, to avoid using the global linked list alloc lock in the
8447         normal send-message case. Instead we just use the connection lock
8448         that we already have to take.
8449
8450         * dbus/dbus-list.c (_dbus_list_find_last): new function
8451
8452         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec):
8453         change to use a struct for the atomic type; fix docs,
8454         they return value before increment, not after increment.
8455
8456         * dbus/dbus-string.c (_dbus_string_append_4_aligned)
8457         (_dbus_string_append_8_aligned): new functions to try to
8458         microoptimize this operation.
8459         (reallocate_for_length): break this out of set_length(), to
8460         improve profile info, and also so we can consider inlining the
8461         set_length() part.
8462
8463         * dbus/dbus-message.c (dbus_message_new_empty_header): init data
8464         strings with some preallocation, cuts down on our calls to realloc
8465         a fair bit. Though if we can get the "move entire string to empty
8466         string" optimization below to kick in here, it would be better.
8467
8468         * dbus/dbus-string.c (_dbus_string_move): just call
8469         _dbus_string_move_len
8470         (_dbus_string_move_len): add a special case for moving
8471         an entire string into an empty string; we can just
8472         swap the string data instead of doing any reallocs.
8473         (_dbus_string_init_preallocated): new function
8474
8475 2003-05-11  Havoc Pennington  <hp@pobox.com>
8476
8477         Write a "test-profile" that does echo client-server with threads;
8478         profile reveals lock contention, memcpy/realloc of buffers, and
8479         UTF-8 validation as hot spots. 20% of lock contention eliminated
8480         with dbus_atomic_inc/dec implementation on x86.  Much remaining
8481         contention is global mempool locks for GList and DBusList.
8482
8483         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add
8484         x86 implementation
8485
8486         * dbus/dbus-connection.c (struct DBusConnection): use
8487         dbus_atomic_t for the reference count
8488
8489         * dbus/dbus-message.c (struct DBusMessage): declare
8490         dbus_atomic_t values as volatile
8491
8492         * configure.in: code to detect ability to use atomic integer
8493         operations in assembly, from GLib patch
8494
8495         * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every
8496         time, tired of it being wrong in threads and forked processes
8497
8498         * glib/test-profile.c: a little program to bounce messages back
8499         and forth between threads and eat CPU
8500
8501         * dbus/dbus-connection.c: add debug spew macros for debugging
8502         thread locks; include config.h at top; fix deadlock in
8503         dbus_connection_flush()
8504
8505 2003-05-08  Havoc Pennington  <hp@pobox.com>
8506
8507         * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
8508         data from getting written, and there wasn't a good reason to
8509         use _exit really.
8510
8511         * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
8512         dbus_verbose lines in test coverage
8513         (main): add list of functions sorted by # of untested blocks
8514         to the coverage report
8515
8516         * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS
8517
8518         * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage
8519
8520         * dbus/dbus-message-handler.c (_dbus_message_handler_test):
8521         extend test coverage
8522
8523         * test/data/auth/cancel.auth-script: test canceling an
8524         authentication
8525
8526         * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
8527         aren't used. in CVS history if we end up needing them.
8528
8529 2003-05-04  Havoc Pennington  <hp@pobox.com>
8530
8531         * dbus/dbus-message-handler.c (_dbus_message_handler_test): add
8532         unit test
8533
8534         * dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
8535         function, which assumed length was in # of strings, not bytes
8536
8537         * dbus/dbus-message.c (_dbus_message_test): add tests for some
8538         missing coverage
8539
8540         * dbus/dbus-connection.c
8541         (_dbus_connection_queue_received_message): disable function for
8542         now, we are only using it in test mode
8543
8544         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
8545         remove a mistaken FIXME
8546
8547 2003-05-04  Havoc Pennington  <hp@pobox.com>
8548
8549         * dbus/dbus-connection.c (dbus_connection_preallocate_send):
8550         unlock mutex on successful return, patch from Anders Gustafsson
8551
8552 2003-05-04  Havoc Pennington  <hp@pobox.com>
8553
8554         * dbus-glib-1.pc.in (Requires): fix dependencies, from
8555         Anders Gustafsson
8556
8557 2003-05-04  Havoc Pennington  <hp@pobox.com>
8558
8559         * tools/dbus-launch.c: implement
8560
8561         * bus/main.c (main), bus/bus.c (bus_context_new):
8562         implement --print-pid and --fork
8563
8564 2003-05-03  Havoc Pennington  <hp@redhat.com>
8565
8566         * dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
8567         the address had no value, and add to test suite. Fix and
8568         regression test from Miloslav Trmac
8569
8570 2003-05-03  Havoc Pennington  <hp@pobox.com>
8571
8572         * dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
8573         watch is invalid when handled
8574
8575         * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add
8576         dbus-launch utility to launch the bus from a shell script.  Didn't
8577         actually implement dbus-launch yet, it's just a placeholder still.
8578
8579 2003-05-03  Havoc Pennington  <hp@pobox.com>
8580
8581         * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
8582         daemon; also documents daemon config file, so replaces
8583         doc/config-file.txt. Corrected some stuff from config-file.txt in
8584         the process of moving it.
8585
8586 2003-05-03  Havoc Pennington  <hp@pobox.com>
8587
8588         * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
8589         add some man pages
8590
8591 2003-05-03  Colin Walters  <walters@verbum.org>
8592
8593         * dbus/dbus-sysdeps.c (fill_user_info): Test against
8594         DBUS_UID_UNSET to determine whether to do a uid lookup or not.
8595
8596         * Makefile.am: Update to use new .pc versioning scheme.
8597
8598 2003-05-02  Havoc Pennington  <hp@redhat.com>
8599
8600         * bus/system.conf.in: allow send/receive to/from message bus
8601         service
8602
8603 2003-04-30  Havoc Pennington  <hp@redhat.com>
8604
8605         * configure.in: print a note when building with unit tests and
8606         without assertions
8607
8608 2003-04-30  Havoc Pennington  <hp@redhat.com>
8609
8610         * Makefile.am: add a check-local that complains if you didn't
8611         configure with --enable-tests
8612
8613 2003-04-29  Havoc Pennington  <hp@redhat.com>
8614
8615         * glib/dbus-gmain.c: docs cleanups
8616
8617         * dbus/dbus-types.h: add docs on int64 types
8618
8619         * dbus/dbus-memory.c: fix docs to avoid putting private API in
8620         public API docs section
8621
8622 2003-04-29  Havoc Pennington  <hp@redhat.com>
8623
8624         * dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
8625         dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
8626         parallel install API version, not with the D-BUS package version.
8627
8628         * HACKING: move some of README over here
8629
8630         * README: updates, and document API/ABI policy
8631
8632         * configure.in: reindentation
8633
8634 2003-04-29  Havoc Pennington  <hp@redhat.com>
8635
8636         * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE
8637         to use this library" to be sure people have the right
8638         expectations.
8639
8640 2003-04-28  Havoc Pennington  <hp@redhat.com>
8641
8642         * configure.in: add --enable-docs which by default is auto yes if
8643         doxygen and db2html found, no otherwise; but can be forced on/off
8644
8645         * doc/Makefile.am: conditionalize whether to build docs on
8646         --enable-docs
8647
8648 2003-04-28  Havoc Pennington  <hp@redhat.com>
8649
8650         * configure.in: 0.10
8651
8652         * NEWS: update
8653
8654         * bus/system.conf.in: add <includedir>system.d</includedir>
8655
8656         * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when
8657         username was provided but not uid
8658
8659         * bus/config-parser.c (struct BusConfigParser): keep track of
8660         whether the parser is toplevel or was included; change some
8661         of the error handling if it's included.
8662
8663 2003-04-27  Havoc Pennington  <hp@pobox.com>
8664
8665         Unbreak my code...
8666
8667         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
8668         report correct status if we finish processing authentication
8669         inside this function.
8670
8671         * bus/activation.c (try_send_activation_failure): use
8672         bus_transaction_send_error_reply
8673
8674         * bus/connection.c (bus_connection_get_groups): return an error
8675         explaining the problem
8676
8677         * bus/bus.c (bus_context_check_security_policy): implement
8678         restriction here that inactive connections can only send the
8679         hello message. Also, allow bus driver to send anything to
8680         any recipient.
8681
8682         * bus/connection.c (bus_connection_complete): create the
8683         BusClientPolicy here instead of on-demand.
8684         (bus_connection_get_policy): don't return an error
8685
8686         * dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
8687         sender field in message being replied to
8688
8689         * bus/bus.c (bus_context_check_security_policy): fix silly typo
8690         causing it to return FALSE always
8691
8692         * bus/policy.c (bus_client_policy_check_can_send): fix bug where
8693         we checked sender rather than destination
8694
8695 2003-04-25  Havoc Pennington  <hp@redhat.com>
8696
8697         test suite is slightly hosed at the moment, will fix soon
8698
8699         * bus/connection.c (bus_connections_expire_incomplete): fix to
8700         properly disable the timeout when required
8701         (bus_connection_set_name): check whether we can remove incomplete
8702         connections timeout after we complete each connection.
8703
8704         * dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
8705         probably still broken.
8706
8707         * bus/services.c (bus_registry_acquire_service): implement max
8708         number of services owned, and honor allow/deny rules on which
8709         services a connection can own.
8710
8711         * bus/connection.c (bus_connection_get_policy): report errors here
8712
8713         * bus/activation.c: implement limit on number of pending
8714         activations
8715
8716 2003-04-25  Havoc Pennington  <hp@redhat.com>
8717
8718         * dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
8719         where we used >= 0 instead of != DBUS_UID_UNSET.
8720
8721 2003-04-25  Havoc Pennington  <hp@redhat.com>
8722
8723         * glib/dbus-gmain.c (remove_watch): fix for a crash when watches
8724         were toggled without add/remove, fix from Anders Gustafsson
8725
8726 2003-04-24  Havoc Pennington  <hp@redhat.com>
8727
8728         * test/data/valid-config-files/basic.conf: add <limit> tags to
8729         this test
8730
8731         * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
8732         <limit> tag in configuration file.
8733
8734 2003-04-24  Havoc Pennington  <hp@redhat.com>
8735
8736         * bus/dispatch.c: somehow missed some name_is
8737
8738         * dbus/dbus-timeout.c (_dbus_timeout_set_enabled)
8739         (_dbus_timeout_set_interval): new
8740
8741         * bus/connection.c (bus_connections_setup_connection): record time
8742         when each connection is first set up, and expire them after the
8743         auth timeout passes.
8744
8745 2003-04-24  Havoc Pennington  <hp@redhat.com>
8746
8747         * dbus/dbus-message.c (dbus_message_name_is): rename
8748         (dbus_message_service_is): rename
8749         (dbus_message_sender_is): rename
8750         (dbus_message_get_service): rename
8751
8752 2003-04-24  Havoc Pennington  <hp@redhat.com>
8753
8754         * configure.in: add --enable-checks
8755
8756         * dbus/dbus-message.c (dbus_message_new): reverse name/service arguments
8757
8758         * dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
8759         to use thread locks.
8760         (_dbus_connection_handler_destroyed_locked): move some private
8761         functions into proper docs group
8762
8763         * dbus/dbus-internals.h: add _dbus_return_if_fail,
8764         _dbus_return_val_if_fail
8765
8766         Throughout: use dbus_return_if_fail
8767
8768 2003-04-23  James Willcox  <jwillcox@gnome.org>
8769
8770         * glib/dbus-glib.h:
8771         * glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
8772         (dbus_connection_setup_with_g_main),
8773         (dbus_server_setup_with_g_main):
8774         * glib/test-dbus-glib.c: (main):
8775         * glib/test-thread-client.c: (main):
8776         * glib/test-thread-server.c: (new_connection_callback), (main):
8777         * tools/dbus-monitor.c: (main):
8778
8779         Added a GMainContext argument to dbus_connection_setup_with_g_main()
8780         and dbus_server_setup_with_g_main().
8781
8782 2003-04-20  Havoc Pennington  <hp@pobox.com>
8783
8784         * doc/dbus-specification.sgml: document the restrictions on
8785         message and service names
8786
8787 2003-04-22  Havoc Pennington  <hp@redhat.com>
8788
8789         * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
8790         support, and do some code cleanups to share more code and
8791         speed up array marshal/demarshal.
8792
8793         * dbus-1.0.pc.in (Cflags): put libdir include file in cflags
8794
8795         * configure.in: generate dbus-arch-deps.h
8796
8797         * dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
8798         64-bit typecodes
8799
8800 2003-04-22  Havoc Pennington  <hp@redhat.com>
8801
8802         * test/data/valid-messages/opposite-endian.message: fix test
8803         to use proper type for rply field
8804
8805         * test/data/invalid-messages: add tests for below validation
8806
8807         * dbus/dbus-message.c (decode_header_data): validate field types,
8808         and validate that named fields are valid names
8809         (decode_name_field): consider messages in the
8810         org.freedesktop.Local. namespace to be invalid.
8811
8812         * dbus/dbus-string.c (_dbus_string_validate_name): new
8813
8814 2003-04-19  Havoc Pennington  <hp@pobox.com>
8815
8816         * bus/driver.c (bus_driver_handle_hello): check limits and
8817         return an error if they are exceeded.
8818
8819         * bus/connection.c: maintain separate lists of active and inactive
8820         connections, and a count of each. Maintain count of completed
8821         connections per user. Implement code to check connection limits.
8822
8823         * dbus/dbus-list.c (_dbus_list_unlink): export
8824
8825         * bus/bus.c (bus_context_check_security_policy): enforce a maximum
8826         number of bytes in the message queue for a connection
8827
8828 2003-04-18  Havoc Pennington  <hp@pobox.com>
8829
8830         * dbus/dbus-auth.c (record_mechanisms): memleak fixes
8831
8832         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
8833         memleaks
8834
8835         * dbus/dbus-keyring.c (add_new_key): fix a memleak, and
8836         on realloc be sure to update the pointer in the keyring
8837
8838         * dbus/dbus-string.c (_dbus_string_zero): compensate for align
8839         offset to avoid writing to unallocated memory
8840
8841         * dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
8842         try the next mechanism, so we properly handle OOM
8843
8844         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
8845         on OOM.
8846         (_dbus_keyring_new): fix OOM bug
8847         (_dbus_keyring_new_homedir): always set error; impose a maximum
8848         number of keys we'll load from the file, mostly to speed up the
8849         test suite and make its OOM checks more useful, but also for
8850         general sanity.
8851
8852         * dbus/dbus-auth.c (process_error_server): reject authentication
8853         if we get an error from the client
8854         (process_cancel): on cancel, send REJECTED, per the spec
8855         (process_error_client): send CANCEL if we get an error from the
8856         server.
8857
8858 2003-04-18  Havoc Pennington  <hp@pobox.com>
8859
8860         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
8861         debug spew
8862
8863         * dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
8864         handling problem
8865
8866         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
8867         about DBUS_TEST_HOMEDIR once
8868
8869         * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in
8870         the environment
8871
8872         * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1
8873         config file so we test the right thing
8874
8875         Throughout: assorted docs improvements
8876
8877 2003-04-18  Havoc Pennington  <hp@pobox.com>
8878
8879         * glib/dbus-gmain.c: adapt to watch changes
8880
8881         * bus/bus.c, bus/activation.c, etc.: adjust to watch changes
8882
8883         * dbus/dbus-server.h: remove dbus_server_handle_watch
8884
8885         * dbus/dbus-connection.h: remove dbus_connection_handle_watch
8886
8887         * dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
8888         like DBusTimeout, so we don't need dbus_connection_handle_watch
8889         etc.
8890
8891 2003-04-17  Havoc Pennington  <hp@redhat.com>
8892
8893         * dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
8894         database usage so it all goes via the DBusUserDatabase cache.
8895
8896 2003-04-17  Havoc Pennington  <hp@redhat.com>
8897
8898         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
8899         there was an OOM watch we skipped, we always return TRUE so we
8900         iterate again to have a look at it again. Fixes test suite hang.
8901         Code rearrangement also lets us lose some memset and only iterate
8902         over callbacks once.
8903
8904         * bus/driver.c (bus_driver_handle_message): sense of test for
8905         reply was backward
8906
8907 2003-04-16  Havoc Pennington  <hp@pobox.com>
8908
8909         * doc/dbus-specification.sgml: make spec say serials are unsigned
8910
8911         * dbus/dbus-message.h: change message serials to unsigned
8912
8913         * dbus/dbus-connection.c: adapt to message serials being unsigned
8914
8915 2003-04-15  Havoc Pennington  <hp@pobox.com>
8916
8917         * bus/bus.c: create and keep around a shared DBusUserDatabase
8918         object.
8919
8920         * bus/connection.c (bus_connection_get_groups): don't cache
8921         groups for user in the connection object, since user database
8922         object now does that.
8923
8924 2003-04-16  Havoc Pennington  <hp@redhat.com>
8925
8926         * dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
8927         list of size counters
8928         (_dbus_message_loader_putback_message_link): put back a popped link
8929
8930         * dbus/dbus-connection.c
8931         (dbus_connection_set_max_live_messages_size): rename
8932         max_received_size
8933         (dbus_connection_get_outgoing_size): get size of outgoing
8934         queue
8935         (_dbus_connection_set_connection_counter): remove this cruft
8936
8937 2003-04-14  Havoc Pennington  <hp@redhat.com>
8938
8939         * dbus/dbus-userdb.c: user database abstraction, mostly to get
8940         caching, but at some point we might want to be able to use a
8941         different database.
8942
8943         * bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
8944         SHA1 conf file to test the sha1 auth mechanism, since the regular
8945         test always uses EXTERNAL when available.
8946
8947         * configure.in,
8948         test/data/valid-config-files/debug-allow-all-sha1.conf.in:
8949         add conf file that requires use of sha1 auth
8950
8951 2003-04-13  Havoc Pennington  <hp@pobox.com>
8952
8953         * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs
8954         from Philip Blundell to send messages and monitor them.
8955
8956 2003-04-13  Havoc Pennington  <hp@pobox.com>
8957
8958         * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
8959         callbacks
8960
8961         * test/data/valid-config-files/debug-allow-all.conf.in: allow all
8962         users
8963
8964         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
8965         fix to only recover unused bytes if we're already authenticated
8966         (_dbus_transport_get_is_authenticated): fix to still mark us
8967         authenticated if there are unused bytes.
8968
8969         * bus/dispatch.c: implement security policy checking
8970
8971         * bus/connection.c (bus_transaction_send_from_driver): new
8972
8973         * bus/bus.c (bus_context_check_security_policy): new
8974
8975         * bus/dispatch.c (send_service_nonexistent_error): delete this,
8976         now we just set the DBusError and it gets converted to an error
8977         reply.
8978
8979         * bus/connection.c (allow_user_function): enable code using actual
8980         data from the config file
8981
8982         * bus/policy.c (list_allows_user): handle wildcard rules for
8983         user/group connection perms
8984
8985 2003-04-13  Havoc Pennington  <hp@pobox.com>
8986
8987         * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules
8988
8989         * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function
8990
8991         * bus/policy.c (bus_policy_append_mandatory_rule)
8992         (bus_policy_append_default_rule, bus_policy_append_user_rule)
8993         (bus_policy_append_group_rule): new functions
8994
8995 2003-04-12  Havoc Pennington  <hp@pobox.com>
8996
8997         * bus/config-parser.c (bus_config_parser_new): fix a memleak
8998
8999         * dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
9000         the pid/gid/uid, just for paranoia.
9001
9002         * test/break-loader.c (randomly_do_n_things): find a byte
9003         containing a type code, and randomly change it to a different
9004         type code.
9005
9006 2003-04-12  Havoc Pennington  <hp@pobox.com>
9007
9008         * bus/policy.h: change BusPolicy to be the thing from the config
9009         file, and rename old BusPolicy to BusClientPolicy
9010
9011         * bus/bus.c, bus/connection.c, bus/config-parser.c: change to
9012         match change in how policy works
9013
9014         * dbus/dbus-internals.h: mark assert_not_reached as
9015         __attribute((noreturn))__
9016
9017 2003-04-11  Havoc Pennington  <hp@redhat.com>
9018
9019         * doc/dbus-specification.sgml: fix a spot with the wrong name for
9020         the broadcast service. Use boolean return for ServiceExists.
9021
9022 2003-04-11  Havoc Pennington  <hp@redhat.com>
9023
9024         * configure.in: add another directory to look for qt in.
9025
9026 2003-04-11  Havoc Pennington  <hp@redhat.com>
9027
9028         * AUTHORS: add Colin Walters
9029
9030 2003-04-11  Havoc Pennington  <hp@redhat.com>
9031
9032         * NEWS: update
9033
9034         * configure.in: 0.9
9035
9036 2003-04-11  Havoc Pennington  <hp@redhat.com>
9037
9038         * bus/messagebus.in: remove pid file when stopping the
9039         message bus, since the bus won't have privileges to remove it
9040         itself.
9041
9042 2003-04-11  Havoc Pennington  <hp@redhat.com>
9043
9044         * bus/bus.c (bus_context_new): move credentials change after
9045         creating pidfile
9046
9047 2003-04-11  Havoc Pennington  <hp@pobox.com>
9048
9049         * test/decode-gcov.c: add "below average functions" to the
9050         coverage report, and change how some of the code works.
9051
9052         * bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
9053         not in the coverage stats.
9054
9055         * test/test-service.c (main): use _dbus_verbose not fprintf in a
9056         couple places so running the test suite doesn't result in megaspam.
9057
9058 2003-04-11  Havoc Pennington  <hp@pobox.com>
9059
9060         * bus/dispatch.c (check_existent_service_activation): accept a no
9061         memory error in a place we didn't before
9062
9063         * bus/test.c (bus_test_run_everything): remove hacky "do it twice
9064         in case the first one failed," since the test suite is less
9065         broken now.
9066
9067 2003-04-10  Havoc Pennington  <hp@pobox.com>
9068
9069         * bus/dispatch.c (check_segfault_service_activation): add test
9070         for launching an executable that just crashes.
9071
9072         * test/test-segfault.c (main): try setting coredumpsize to 0 so we
9073         don't leave a million cores. We'll see how portable this is.
9074
9075 2003-04-10  Havoc Pennington  <hp@pobox.com>
9076
9077         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
9078         the possible parent failures before we fork, so that we don't
9079         fail to create a babysitter after creating the child.
9080
9081         * bus/activation.c (bus_activation_activate_service): kill child
9082         if we don't successfully complete the activation.
9083
9084 2003-04-10  Havoc Pennington  <hp@redhat.com>
9085
9086         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
9087         the connection if it's disconnected
9088
9089         * bus/activation.c (bus_activation_service_created): use new
9090         transaction features to roll back removal of pending activation if
9091         we don't successfully create the service after all. Don't remove
9092         pending activation if the function fails.
9093
9094         * dbus/dbus-list.c (_dbus_list_insert_before_link)
9095         (_dbus_list_insert_after_link): new code to facilitate
9096         services.c fixes
9097
9098         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
9099         new functionality, so we can preallocate the ability to insert
9100         into a hash table.
9101
9102         * bus/connection.c (bus_transaction_add_cancel_hook): new function
9103         allowing us to put custom hooks in a transaction to be used for
9104         cancelling said transaction
9105
9106         * doc/dbus-specification.sgml: add some discussion of secondary
9107         service owners, and disallow zero-length service names
9108
9109         * bus/services.c (bus_registry_acquire_service): new function,
9110         splits out part of bus_driver_handle_acquire_service() and fixes
9111         a bug where we didn't remove the service doing the acquiring
9112         from the secondary queue if we failed to remove the current owner
9113         from the front of the queue.
9114
9115 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9116
9117         * doc/dbus-specification.sgml:
9118         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
9119
9120 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9121
9122         * bus/.cvsignore:
9123         * glib/.cvsignore:
9124         * test/.cvsignore:
9125         Added files to cvsignore
9126
9127         * dbus/dbus-message.h:
9128         * dbus/dbus-message.c: (dbus_message_iter_get_named):
9129         Make get_named() take two out argument and return a boolean.
9130         (dbus_message_iter_get_args_valist):
9131         Update usage of get_named().
9132         (dbus_message_iter_append_byte):
9133         Fix typo
9134         (dbus_message_iter_append_named)
9135         Fix typo
9136         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
9137         More tests.
9138
9139 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9140
9141         * dbus/dbus-marshal.[ch]:
9142         Add array_type_pos argument to _dbus_marshal_validate_arg.
9143         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
9144
9145         * dbus/dbus-message.[ch]:
9146         Multi-dimensional arrays have full type specification in the
9147         outermost array. Iter code re-arranged to handle this.
9148         Added some more iter tests.
9149
9150         * doc/dbus-specification.sgml:
9151         Add me to authors.
9152         Remove old FIXME.
9153         Update new array encoding description.
9154         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
9155
9156         * test/data/invalid-messages/array-with-mixed-types.message:
9157         * test/data/valid-messages/array-of-array-of-uint32.message:
9158         Change to the new array format.
9159
9160         * test/data/invalid-messages/too-short-dict.message:
9161         Fix bug in test.
9162
9163         * test/data/valid-messages/recursive-types.message:
9164         Fix up and extend test.
9165
9166 2003-04-10  Havoc Pennington  <hp@pobox.com>
9167
9168         * bus/dispatch.c: lots of fixes
9169
9170         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
9171         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
9172         that was crack, broke the test service.
9173
9174         * dbus/dbus-transport.c (_dbus_transport_open): fix error
9175         handling to avoid piling up errors if we get a failure on the
9176         first address.
9177
9178         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
9179         pid in assertion failures.
9180
9181         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
9182         to some fixed size of file descriptor array. Don't return TRUE
9183         anytime a timeout exists, that led to lots of busy loop silliness
9184         in the tests.
9185
9186 2003-04-09  Havoc Pennington  <hp@redhat.com>
9187
9188         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
9189         I'd checked this in earlier but hadn't.
9190
9191 2003-04-09  Havoc Pennington  <hp@redhat.com>
9192
9193         * bus/dispatch.c (bus_dispatch_test): get a bit further through
9194         the activation test (man this is getting old!)
9195
9196 2003-04-09  Havoc Pennington  <hp@redhat.com>
9197
9198         * test/test-utils.c: use dispatch status function to fix this up
9199
9200         * bus/connection.c (connection_watch_callback): don't dispatch
9201         from here
9202         (connection_timeout_callback): don't dispatch from here
9203         (bus_connections_setup_connection): set the dispatch status function
9204         (bus_connection_disconnected): unset it
9205
9206         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
9207         used to add a connection to be dispatched
9208         (_dbus_loop_iterate): do the dispatching at the end of each
9209         iteration
9210
9211         * dbus/dbus-connection.c
9212         (dbus_connection_set_dispatch_status_function): new function
9213         allowing us to fix up main loop usage
9214         (_dbus_connection_last_unref): free all the various function
9215         user data
9216         (dbus_connection_dispatch): call the DispatchStatusFunction
9217         whenever this function returns
9218         (dbus_connection_handle_watch): call DispatchStatusFunction
9219         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
9220         (reply_handler_timeout): call DispatchStatusFunction
9221         (dbus_connection_flush): call DispatchStatusFunction
9222
9223 2003-04-09  Havoc Pennington  <hp@redhat.com>
9224
9225         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
9226         a memory leak
9227
9228         * bus/dispatch.c (check_service_activated): fix bug in test
9229
9230         * dbus/dbus-mainloop.c (check_timeout): fix this up
9231
9232         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
9233         verbose output so we can sort out output from different processes,
9234         e.g. in the activation case.
9235
9236 2003-04-08  Colin Walters  <walters@gnu.org>
9237
9238         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
9239         the pid file.
9240         (bus_context_new): Set it.
9241         (bus_context_unref): Use it to delete the pid file.
9242
9243 2003-04-08  Havoc Pennington  <hp@redhat.com>
9244
9245         * test/data/invalid-messages/array-with-mixed-types.message:
9246         regression test that fails for the moment
9247
9248         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
9249         tests for convenience
9250
9251         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
9252         array of nil, it broke things.
9253
9254         * test/data/invalid-messages/array-of-nil.message: regression test
9255
9256         * test/data/valid-messages/array-of-array-of-uint32.message:
9257         happened to write this so added it to suite
9258
9259 2003-04-08  Havoc Pennington  <hp@redhat.com>
9260
9261         * bus/driver.c (bus_driver_handle_acquire_service): init
9262         retval/reply before checking name
9263
9264         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
9265         recursion depth argument
9266
9267         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
9268         in the public struct for future extension
9269
9270         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
9271         typo
9272
9273         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
9274         message
9275
9276         * doc/dbus-specification.sgml: fix typo
9277
9278 2003-04-08  Alexander Larsson  <alexl@redhat.com>
9279
9280         Implemented recursive types, named types and new-style iters
9281
9282         * bus/driver.c:
9283         * glib/test-thread-client.c: (thread_func):
9284         * glib/test-thread-server.c: (handle_test_message):
9285         * test/test-service.c: (handle_echo):
9286         Update to new api
9287
9288         * dbus/Makefile.am:
9289         * dbus/dbus-dict.c:
9290         * dbus/dbus-dict.h:
9291         * dbus/dbus.h
9292         Remove DBusDict
9293
9294         * dbus/dbus-internals.c: (_dbus_type_to_string):
9295         Update for new types.
9296
9297         * dbus/dbus-marshal.[ch]:
9298         Implement recursive types and the new marshalling format.
9299         Remove hardcoded dict marshalling.
9300         Marshal named types.
9301
9302         * dbus/dbus-message-builder.c:
9303         Add BYTE_ARRAY.
9304         Remove references to old types
9305
9306         * dbus/dbus-message.[ch]:
9307         New non-refcounted iter API that supports recursive iters.
9308         Use iters for appending, including support for recursive
9309         iters.
9310         Add byte and named type support.
9311         Update everything to new marshalling formats.
9312         Add tests for new API.
9313
9314         * dbus/dbus-protocol.h:
9315         Remove old array types.
9316         Add types: BYTE, ARRAY, DICT, NAMED
9317
9318         * dbus/dbus-string.c:
9319         * dbus/dbus-sysdeps.c:
9320         Make parse_double locale safe.
9321
9322         * dbus/dbus-test-main.c:
9323         Call setlocale.
9324
9325         * dbus/dbus-test.c:
9326         Kill dict test
9327
9328         * doc/dbus-specification.sgml:
9329         Update spec
9330
9331         * test/data/incomplete-messages/missing-body.message:
9332         * test/data/invalid-messages/bad-boolean.message:
9333         * test/data/invalid-messages/bad-boolean-array.message:
9334         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
9335         * test/data/invalid-messages/boolean-has-no-value.message-raw:
9336         * test/data/invalid-messages/too-short-dict.message:
9337         * test/data/valid-messages/dict-simple.message:
9338         * test/data/valid-messages/dict.message:
9339         * test/data/valid-messages/emptiness.message:
9340         * test/data/valid-messages/lots-of-arguments.message:
9341         * test/data/valid-messages/no-padding.message:
9342         * test/data/valid-messages/recursive-types.message:
9343         Add missing NAME fields
9344         Fix up dicts & arrays
9345
9346         * test/data/invalid-messages/dict-with-nil-value.message:
9347         Removed, this is not invalid anymore.
9348
9349         * test/data/valid-messages/recursive-types.message:
9350         Add new test for deeply recursive types.
9351
9352 2003-04-07  Havoc Pennington  <hp@pobox.com>
9353
9354         * bus/driver.c (bus_driver_handle_acquire_service): return an
9355         error if you try to acquire a service that starts with ':'
9356
9357 2003-04-07  Havoc Pennington  <hp@redhat.com>
9358
9359         * doc/dbus-specification.sgml: require that base service names
9360         start with ':' and that the base service is created/deleted
9361         as first and last things a connection does on the bus
9362
9363         * bus/dispatch.c (check_existent_service_activation): lots more
9364         work on the activation test; it doesn't fully pass yet...
9365
9366         * test/test-service.c (main): fix so we don't memleak the
9367         connection to the message bus
9368         (filter_func): accept a message asking us to exit
9369
9370 2003-04-06  Havoc Pennington  <hp@pobox.com>
9371
9372         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
9373         from Colin Walters
9374
9375         * configure.in: fixes to Qt detection from Colin Walters
9376
9377         * doc/Makefile.am: Only remove generated docbook dirs if they
9378         exist, from Colin Walters
9379
9380         * dbus/dbus-bus.c: change how we set well-known connections to
9381         NULL, so that it works if a single connection is stored in
9382         two well-known array slots.
9383
9384         * test/Makefile.am: remove a lot of stuff that isn't immediately
9385         useful, it's in CVS history if we want it.
9386
9387         * test/test-service.c: use dbus-mainloop instead of that
9388         watch.[hc] crack
9389
9390 2003-04-06  Havoc Pennington  <hp@pobox.com>
9391
9392         * dbus/Makefile.am: split lists of sources into stuff that goes in
9393         the library, util functions that go in the lib and are also used
9394         elsewhere, and util functions that are used in tests/daemon but
9395         don't go in the lib.
9396
9397         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc]
9398         here so it can be used in test binaries also
9399
9400 2003-04-06  Havoc Pennington  <hp@pobox.com>
9401
9402         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
9403         here in the parent process, so we can return an error if it
9404         fails. Also, move some of the code into the child so the parent
9405         is less hosed if we fail midway through.
9406
9407         * bus/bus.c (bus_context_new): move pidfile detection further up
9408         in the function, before we start overwriting sockets and such.
9409
9410         * bus/messagebus.in: adjust this a bit, not sure if it will work.
9411
9412         * configure.in: add --with-system-pid-file and --with-system-socket
9413
9414 2003-04-06  Colin Walters  <walters@verbum.org>
9415
9416         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
9417
9418         * bus/system.conf.in: Declare a pidfile.
9419
9420         * bus/bus.c (bus_context_new): Test for an existing pid file, and
9421         create one (if appropriate).
9422
9423         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
9424         (struct BusConfigParser) [pidfile]: New.
9425         (element_type_to_name, merge_included, start_busconfig_child)
9426         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
9427         (bus_config_parser_unref): Free it.
9428         (bus_config_parser_get_pidfile): New function.
9429
9430         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
9431
9432         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
9433
9434         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
9435
9436         * dbus/dbus-sysdeps.h: Prototype it.
9437
9438 2003-04-06  Havoc Pennington  <hp@pobox.com>
9439
9440         * bus/bus.c (bus_context_new): print the address in here, rather
9441         than in main(), because we need to do it before forking the daemon
9442
9443         * bus/dispatch.c (send_service_nonexistent_error): set the sender
9444         on the service nonexistent error
9445
9446         * bus/driver.c (bus_driver_handle_acquire_service): set the
9447         sender on the AcquireService reply
9448
9449         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
9450         server also listen on a UNIX socket so services can connect to it.
9451
9452 2003-04-06  Havoc Pennington  <hp@pobox.com>
9453
9454         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done
9455         so it detects deadlocks and also we actually init threads when
9456         debugging.
9457
9458 2003-04-06  Havoc Pennington  <hp@pobox.com>
9459
9460         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
9461         save the domain socket name, and unlink it when we disconnect the
9462         server. Means that at least when we exit normally, we won't leave
9463         a bunch of junk in /tmp
9464
9465         * dbus/dbus-transport-unix.c
9466         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
9467         memory management). (I was making a real change here but then
9468         didn't)
9469
9470 2003-04-06  Havoc Pennington  <hp@pobox.com>
9471
9472         * bus/bus.c (bus_context_new): fix wrong handling of
9473         server_data_slot_unref() in the error case.
9474
9475         * dbus/dbus-internals.h (_dbus_assert): change so it passes
9476         "(condition) != 0" to _dbus_real_assert so that
9477         "_dbus_assert (pointer)" doesn't cause a warning
9478
9479         * bus/main.c (main): accept --print-address option to print out
9480         the message bus address
9481
9482         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
9483
9484         * dbus/dbus-transport.c (_dbus_transport_open): special error for
9485         "tmpdir" option to unix: address on client side
9486
9487         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option
9488         to unix: address
9489
9490         * configure.in (TEST_SOCKET_DIR): locate a temporary directory
9491         we can use to create sockets in the test suite.
9492
9493         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
9494         cleanly. To be used for testing.
9495
9496         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
9497
9498         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
9499
9500         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
9501         handle trying to call this when there's no servers active
9502
9503 2003-04-05  Havoc Pennington  <hp@pobox.com>
9504
9505         * NEWS: update
9506
9507         * configure.in: 0.8
9508
9509 2003-04-05  Havoc Pennington  <hp@pobox.com>
9510
9511         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't
9512         crash on startup. Need to get "try starting the daemon"
9513         in the test suite I guess. ;-)
9514
9515         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
9516         tracked the number of open connections; it's better done in
9517         application-specific code as you want it to span all servers etc.
9518
9519 2003-04-05  Havoc Pennington  <hp@pobox.com>
9520
9521         * bus/Makefile.am (install-data-hook): add missing DESTDIR,
9522         patch from Colin Walters
9523
9524 2003-04-05  Havoc Pennington  <hp@pobox.com>
9525
9526         * doc/config-file.txt (Elements): fix docs of <auth> to reflect
9527         reality; in fact multiple mechanisms are allowed.
9528
9529         * dbus/dbus-internals.c (_dbus_real_assert)
9530         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
9531         _dbus_assert_not_reached() into functions, so that they don't show
9532         up in basic block counts for test coverage, and don't use up as
9533         much disk space. Does mean slower execution speed though, so
9534         assumes --disable-asserts is the normal production case.
9535
9536 2003-04-05  Havoc Pennington  <hp@pobox.com>
9537
9538         * test/Makefile.am (dist-hook): also dist *.in files
9539
9540         * NEWS: update
9541
9542         * configure.in: 0.7
9543
9544 2003-04-05  Havoc Pennington  <hp@pobox.com>
9545
9546         * dbus/dbus-string.c: docs warning
9547
9548         * dbus/dbus-spawn.c: missing docs
9549
9550         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
9551
9552 2003-04-05  Havoc Pennington  <hp@pobox.com>
9553
9554         * bus/loop.c (bus_loop_iterate): fix the timeout code, using
9555         magic from GLib
9556
9557         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
9558         to -1 once we've reaped the babysitter
9559         (_dbus_babysitter_handle_watch): do as much work as we can, not
9560         just one go of it
9561
9562         * bus/activation.c: add code using DBusBabysitter so that we
9563         handle it when a service fails to start up properly.
9564         (bus_activation_service_created): don't remove the activation
9565         entries as we go, just let them get removed when we free the pending
9566         activation. Unref reply messages after sending them.
9567
9568 2003-04-05  Havoc Pennington  <hp@pobox.com>
9569
9570         * test/decode-gcov.c (main): print per-directory stats in the report
9571
9572         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
9573
9574 2003-04-05  Havoc Pennington  <hp@pobox.com>
9575
9576         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
9577
9578         * test/decode-gcov.c: hack up a little program to suck data
9579         out of gcov files. Yes this is sort of silly.
9580
9581         * configure.in: define something in config.h and do an
9582         AM_CONDITIONAL when gcov is enabled
9583
9584 2003-04-04  Havoc Pennington  <hp@redhat.com>
9585
9586         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
9587         return a "babysitter" object that is used to monitor the status of
9588         the spawned process and reap it when required.
9589
9590         * test/test-segfault.c, test/test-exit.c,
9591         test/test-sleep-forever.c: binaries that do various lame things,
9592         used in the test suite.
9593
9594         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
9595
9596 2003-04-03  Havoc Pennington  <hp@pobox.com>
9597
9598         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file
9599         in preparation for modifying it, dbus-sysdeps is getting
9600         a bit unmanageable.
9601
9602 2003-04-03  Havoc Pennington  <hp@redhat.com>
9603
9604         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
9605         have multiple ones
9606
9607         * bus/*.[hc]: adapt to mainloop change
9608
9609 2003-04-03  Havoc Pennington  <hp@redhat.com>
9610
9611         * bus/activation.c (load_directory): fix up memleaks
9612         (bus_activation_entry_free): free the entry
9613
9614         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
9615         we get one from the message bus; fix memleaks.
9616
9617         * dbus/dbus-message.c (dbus_set_error_from_message): new function
9618
9619 2003-04-03  Havoc Pennington  <hp@pobox.com>
9620
9621         * bus/config-parser.c (bus_config_parser_unref): free
9622         list of mechanisms, bug discovered by test suite enhancements
9623         (putting system.conf and session.conf into suite)
9624
9625         * test/Makefile.am, test/test-service.c: add placeholder for a
9626         test service that we'll activate as part of test suite. Doesn't
9627         do anything yet.
9628
9629         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by
9630         setting NULL value, and use system malloc not dbus_malloc()
9631         when we have unavoidable memleakage.
9632
9633         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
9634         didn't work, and support DBUS_BUS_ACTIVATION.
9635
9636         * bus/activation.c (child_setup): pass our well-known bus type to
9637         the child
9638
9639         * bus/config-parser.c: support <type> to specify well-known type
9640
9641         * doc/dbus-specification.sgml: document the env variables to
9642         locate well-known buses and find service activator
9643
9644 2003-04-02  Havoc Pennington  <hp@redhat.com>
9645
9646         * test/Makefile.am (all-local): add a rule to copy tests to
9647         builddir, so we can have generated tests. Use this to remove the
9648         silly hack for testing system.conf and session.conf. Will use this
9649         shortly to generate .service files pointing to test binaries.
9650
9651 2003-04-02  Havoc Pennington  <hp@redhat.com>
9652
9653         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
9654         current alloc and needed new length, not max of the doubled
9655         allocation and needed new length. Also, when building tests,
9656         don't do the double-allocation stuff, just realloc every time.
9657
9658 2003-04-02  Havoc Pennington  <hp@redhat.com>
9659
9660         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
9661         in error messages
9662         (_dbus_string_get_dirname): new
9663         (_dbus_sysdeps_test): new
9664         (_dbus_directory_open): include dirnames in error messages
9665
9666         * bus/config-parser.c: interpret <include> and <includedir> and
9667         <servicedir> relative to config file location if the given
9668         filename is not absolute.
9669
9670         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
9671
9672 2003-04-02  Havoc Pennington  <hp@redhat.com>
9673
9674         * bus/connection.c (bus_transaction_send_error_reply): set sender
9675         service for the error, and unref the reply on success
9676
9677         * bus/activation.c: convert to use BusTransaction so OOM can be
9678         handled correctly
9679         (bus_activation_service_created): set sender of the message
9680
9681 2003-04-01  Havoc Pennington  <hp@redhat.com>
9682
9683         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
9684         <includedir> (at least mostly)
9685
9686         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
9687         first, then the user ID
9688
9689 2003-04-01  Havoc Pennington  <hp@pobox.com>
9690
9691         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
9692         function
9693
9694         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
9695
9696         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
9697
9698         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
9699         socket 0777, and unlink any existing socket.
9700
9701         * bus/bus.c (bus_context_new): change our UID/GID and fork if
9702         the configuration file so specifies; set up auth mechanism
9703         restrictions
9704
9705         * bus/config-parser.c (bus_config_parser_content): add support
9706         for <fork> option and fill in code for <auth>
9707
9708         * bus/system.conf.in: add <fork/> to default configuration,
9709         and limit auth mechanisms to EXTERNAL
9710
9711         * doc/config-file.txt (Elements): add <fork>
9712
9713         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
9714         (_dbus_change_identity): new function
9715
9716 2003-03-31  Havoc Pennington  <hp@redhat.com>
9717
9718         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
9719         (_dbus_listen_unix_socket): fix off-by-one error in null
9720         termination spotted by Nalin
9721
9722 2003-03-31  Havoc Pennington  <hp@redhat.com>
9723
9724         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
9725         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
9726         having a real home directory available.
9727
9728 2003-03-31  Havoc Pennington  <hp@redhat.com>
9729
9730         * bus/Makefile.am (install-data-hook): create /var/run/dbus
9731
9732         * bus/messagebus.in: add init script for Red Hat /etc/init.d
9733
9734         * configure.in: add support for specifying a style of init script
9735         to install
9736
9737 2003-03-31  Havoc Pennington  <hp@redhat.com>
9738
9739         Fix some annoying DBusString API and fix all affected code.
9740
9741         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
9742         max_length argument
9743         (_dbus_string_get_data): change to return string instead of using
9744         an out param
9745         (_dbus_string_get_const_data): ditto
9746         (_dbus_string_get_data_len): ditto
9747         (_dbus_string_get_const_data_len): ditto
9748
9749 2003-03-31  Havoc Pennington  <hp@redhat.com>
9750
9751         * bus/main.c (main): fix up the command line arguments to be nicer
9752
9753 2003-03-31  Havoc Pennington  <hp@redhat.com>
9754
9755         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
9756         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same
9757         final location that lands in the config file
9758
9759         * bus/config-loader-expat.c (bus_config_load): fix type of
9760         XML_Parser variable
9761
9762         * doc/TODO: remove TODO item for dbus_bus_get()
9763
9764         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
9765
9766 2003-03-31  Havoc Pennington  <hp@pobox.com>
9767
9768         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
9769         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
9770         argument since they are always client side
9771
9772         * dbus/dbus-server.c (dbus_server_get_address): new function
9773
9774         * bus/main.c (main): take the configuration file as an argument.
9775
9776         * test/data/valid-config-files/debug-allow-all.conf: new file to
9777         use with dispatch.c tests for example
9778
9779         * bus/test-main.c (main): require test data dir
9780
9781         * bus/bus.c (bus_context_new): change this to take a
9782         configuration file name as argument
9783
9784         * doc/config-file.txt (Elements): add <servicedir>
9785
9786         * bus/system.conf, bus/session.conf: new files
9787
9788         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
9789         well-known socket if none set
9790
9791         * configure.in: create system.conf and session.conf
9792
9793 2003-03-30  Havoc Pennington  <hp@pobox.com>
9794
9795         * bus/config-parser.c: hacking
9796
9797         * dbus/dbus-memory.c: don't use DBusList for the list of stuff
9798         to shut down, since it could cause weirdness with the DBusList
9799         lock
9800
9801         * dbus/dbus-list.c (_dbus_list_test): add tests for the
9802         link-oriented stack routines
9803         (alloc_link): free the mempool if the first alloc from it fails
9804
9805         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
9806
9807         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
9808         from GLib
9809         (_dbus_string_skip_white): new
9810
9811         * doc/config-file.txt (Elements): add <includedir>
9812
9813 2003-03-28  Havoc Pennington  <hp@pobox.com>
9814
9815         * dbus/dbus-string.c (_dbus_string_copy_data_len)
9816         (_dbus_string_copy_data): new functions
9817
9818 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
9819
9820         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
9821         * dbus/dbus-bus.h:
9822         Add dbus_bus_get.
9823
9824         * dbus/dbus-memory.c:
9825         Fix a doc comment.
9826
9827 2003-03-28  Havoc Pennington  <hp@pobox.com>
9828
9829         * bus/test.c (bus_test_flush_bus): remove the sleep from here,
9830         I think it may have just been superstition. Not sure.
9831
9832         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
9833         failures that were not being handled.
9834
9835         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
9836
9837         * dbus/dbus-memory.c: add ability to set number of mallocs in a
9838         row that will fail on out-of-memory.
9839
9840         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
9841         function for testing out-of-memory handling.
9842
9843         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
9844         allocation functions, they do map exactly to the expat ones.
9845
9846 2003-03-27  Havoc Pennington  <hp@redhat.com>
9847
9848         * bus/config-loader-libxml.c (bus_config_load): add another error
9849         check
9850
9851 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
9852
9853         * doc/TODO:
9854         Add note about automatic service activation.
9855
9856         * doc/dbus-specification.sgml:
9857         Rename the specification and clarify a few things.
9858
9859 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
9860
9861         * Doxyfile.in:
9862         * dbus/dbus-address.c:
9863         * dbus/dbus-dict.c:
9864         * dbus/dbus-marshal.c:
9865         * dbus/dbus-server-debug-pipe.c:
9866         * dbus/dbus-transport-unix.c:
9867         Fix documentation warnings.
9868
9869 2003-03-26  Havoc Pennington  <hp@pobox.com>
9870
9871         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
9872         after every test so it's quick and easy to see which leaked, and
9873         so we test multiple dbus_shutdown() calls
9874
9875         * configure.in: change configure.in XML stuff to also support
9876         expat
9877
9878         * config-loader-libxml.c: some hacking
9879
9880         * config-loader-expat.c: some hacking
9881
9882         * config-parser.c: some hacking, plus tests
9883
9884 2003-03-25  Havoc Pennington  <hp@redhat.com>
9885
9886         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
9887
9888         * configure.in: add --with-xml option to specify XML library,
9889         right now only libxml is supported.
9890
9891         * bus/config-loader-libxml.c, config-parser.c: sync some minor
9892         nonworking code between home and work, still just stubs
9893
9894 2003-03-24  Havoc Pennington  <hp@redhat.com>
9895
9896         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
9897         file
9898
9899         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow
9900         NULL argument for "message" if the error is a well-known one,
9901         fill in a generic message in this case.
9902
9903         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
9904         favor of DBusError
9905
9906         * bus/test.c (bus_test_flush_bus): add
9907
9908         * bus/policy.c (bus_policy_test): test code stub
9909
9910 2003-03-24  Havoc Pennington  <hp@pobox.com>
9911
9912         * bus/connection.c (bus_connections_setup_connection): set up
9913         the "can this user connect" function, but it always returns
9914         TRUE until we have a config file parser so we can have a config
9915         file that allows connections.
9916
9917 2003-03-23  Havoc Pennington  <hp@pobox.com>
9918
9919         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with
9920         DBUS_BUILD_TESTS, actually alloc/free a block of memory for
9921         the mutex, so we can check for proper memory management
9922         and OOM handling.
9923
9924         * dbus/dbus-dataslot.c: remove the mutex from
9925         DBusDataSlotAllocator and lock it manually when using it,
9926         to simplify fitting it into the global slots framework.
9927
9928         * dbus/dbus-threads.c (init_static_locks): rework how we're
9929         handling global locks so they are easily shut down.
9930
9931         * bus/policy.c (bus_policy_append_rule): fix
9932
9933         * bus/test-main.c (main): check for memleaks
9934
9935         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make
9936         test suite check for memleaks
9937
9938         * dbus/dbus-memory.c: add support in test mode for tracking
9939         number of outstanding blocks
9940
9941 2003-03-23  Havoc Pennington  <hp@pobox.com>
9942
9943         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
9944         policies code
9945
9946         * dbus/dbus-hash.h: add ULONG hash keys
9947
9948         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
9949         (_dbus_get_group_id): new function
9950
9951 2003-03-20  Havoc Pennington  <hp@redhat.com>
9952
9953         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
9954         new function
9955         (dbus_connection_get_unix_user): new function
9956
9957 2003-03-20  Havoc Pennington  <hp@pobox.com>
9958
9959         * bus/connection.c (bus_connection_send_oom_error): assert that
9960         message has a sender
9961         (connection_execute_transaction): ditto
9962         (bus_connection_preallocate_oom_error): fix to set the sender, and
9963         set recipient to the destination service, not the bus driver
9964
9965         * bus/policy.c: hacking
9966
9967         * dbus/dbus-message.c (dbus_message_service_is): new function
9968         (dbus_message_sender_is): new
9969
9970 2003-03-19  Havoc Pennington  <hp@redhat.com>
9971
9972         * bus/policy.c: start sketching code for policy restrictions on
9973         what connections can do.
9974
9975 2003-03-18  Havoc Pennington  <hp@redhat.com>
9976
9977         * doc/TODO: some notes on high-level todo items. Little nitpick
9978         stuff is all in @todo, so no need to add it here.
9979
9980         * doc/config-file.txt: some notes on how config file might look
9981
9982 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
9983
9984         * configure.in: 0.6
9985
9986         * NEWS: Update.
9987
9988 2003-03-17  Havoc Pennington  <hp@redhat.com>
9989
9990         * dbus/dbus-internals.h: add gcc attributes so that
9991         our printf-style functions warn on bad arguments to
9992         format
9993
9994         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf
9995         format bug
9996
9997         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
9998         printf format bug
9999
10000 2003-03-17  Havoc Pennington  <hp@redhat.com>
10001
10002         * bus/test-main.c (main): make it print something as it runs
10003         so make check doesn't look stuck
10004
10005         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove
10006         from CVS, now obsolete
10007
10008 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
10009
10010         * bus/dispatch.c: (bus_dispatch):
10011         Refetch the service name since it may have been reallocated
10012         when dbus_message_set_sender was called.
10013
10014         * dbus/dbus-sysdeps.c: (_dbus_accept):
10015         Add address and address length variables and use them to stop
10016         valgrind from complaining.
10017
10018 2003-03-17  Havoc Pennington  <hp@pobox.com>
10019
10020         All tests pass, no memleaks, no valgrind complaints.
10021
10022         * bus/test.c: refcount handler_slot
10023
10024         * bus/connection.c (bus_connections_new): refcount
10025         connection_data_slot
10026
10027         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
10028         bytes so that auth scripts pass.
10029
10030         * bus/dispatch.c: init message_handler_slot so it gets allocated
10031         properly
10032
10033         * bus/dispatch.c (message_handler_slot_ref): fix memleak
10034
10035         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
10036         dealloc server_pipe_hash when no longer used for benefit of
10037         leak checking
10038
10039         * dbus/dbus-auth.c (process_command): memleak fix
10040
10041         * bus/dispatch.c (check_hello_message): memleak fix
10042
10043 2003-03-16  Havoc Pennington  <hp@pobox.com>
10044
10045         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
10046
10047 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
10048
10049         * bus/activation.c (bus_activation_activate_service): Append
10050         the pending activation entry to the list of pending activations.
10051
10052 2003-03-16  Havoc Pennington  <hp@pobox.com>
10053
10054         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
10055         connections
10056
10057         * dbus/dbus-address.c (create_entry): fix OOM handling when
10058         failing to alloc entry->method
10059
10060 2003-03-16  Havoc Pennington  <hp@pobox.com>
10061
10062         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
10063         the watch
10064
10065         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
10066         add some missing dbus_set_result
10067
10068         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to
10069         alloc the DBusMessageHandler
10070
10071         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
10072         the transport here, since we call this from the finalizer; it
10073         resulted in a double-finalize.
10074
10075         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
10076         where we tried to use transport->connection that was NULL,
10077         happened when transport was disconnected early on due to OOM
10078
10079         * bus/*.c: adapt to handle OOM for watches/timeouts
10080
10081         * dbus/dbus-transport-unix.c: port to handle OOM during
10082         watch handling
10083
10084         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
10085         reference to unused bytes instead of a copy
10086
10087         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
10088         out of memory
10089
10090         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
10091         FALSE on OOM
10092
10093         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
10094         of memory
10095
10096 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10097
10098         * doc/dbus-specification.sgml:
10099         Document reply message for ActivateService.
10100
10101 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10102
10103         * bus/activation.c: (bus_pending_activation_entry_free),
10104         (bus_pending_activation_free), (bus_activation_new),
10105         (bus_activation_unref), (bus_activation_service_created),
10106         (bus_activation_activate_service):
10107         * bus/activation.h:
10108         * bus/bus.c: (bus_context_new):
10109         * bus/desktop-file.c: (new_section):
10110         * bus/driver.c: (bus_driver_send_service_deleted),
10111         (bus_driver_handle_activate_service):
10112         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
10113         * bus/services.h:
10114         * dbus/dbus-connection.c:
10115         (dbus_connection_send_with_reply_and_block):
10116         * dbus/dbus-message.c: (dbus_message_append_args_valist):
10117         * dbus/dbus-protocol.h:
10118         Make activation work better. Now pending activations will be queued
10119         and the daemon won't try to activate services that are already registered.
10120
10121 2003-03-16  Havoc Pennington  <hp@pobox.com>
10122
10123         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
10124         connection data
10125
10126         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
10127         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
10128
10129 2003-03-16  Havoc Pennington  <hp@pobox.com>
10130
10131         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
10132         this. always run the test suite before commit...
10133
10134         * bus/*: adapt to DBusConnection API changes
10135
10136         * glib/dbus-gmain.c: adapt to DBusConnection API changes,
10137         requires renaming stuff to avoid dbus_connection_dispatch name
10138         conflict.
10139
10140         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
10141         function
10142
10143         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
10144         separate from _dbus_message_loader_return_buffer()
10145
10146         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
10147         this, because it's now always broken to use; the number of
10148         messages in queue vs. the number still buffered by the message
10149         loader is undefined/meaningless. Should use
10150         dbus_connection_get_dispatch_state().
10151         (dbus_connection_dispatch): rename from
10152         dbus_connection_dispatch_message
10153
10154 2003-03-16  Havoc Pennington  <hp@pobox.com>
10155
10156         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
10157         implementation
10158
10159 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10160
10161         * dbus/dbus-connection.c:
10162         (dbus_connection_send_with_reply_and_block):
10163         Decrease connection->n_incoming when removing an entry
10164         from the list.
10165         * dbus/dbus-dict.c: (dbus_dict_entry_free),
10166         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
10167         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
10168         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
10169         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
10170         (dbus_dict_get_byte_array):
10171         Handle NULL arrays and strings. Also add support for byte arrays.
10172
10173         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
10174         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
10175         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
10176         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
10177         (_dbus_demarshal_dict), (demarshal_and_validate_len),
10178         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
10179         * dbus/dbus-marshal.h:
10180         Add support for marshalling and demarshalling empty arrays and strings.
10181
10182         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10183         (dbus_message_append_string_array),
10184         (dbus_message_iter_get_boolean),
10185         (dbus_message_iter_get_boolean_array),
10186         (dbus_message_iter_get_int32_array),
10187         (dbus_message_iter_get_uint32_array),
10188         (dbus_message_iter_get_double_array),
10189         (dbus_message_iter_get_byte_array),
10190         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
10191         (check_message_handling):
10192         Add support for getting empty arrays and dicts.
10193
10194         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
10195         Don't do any validation at all for now, that's better than just checking
10196         for ASCII.
10197
10198         * test/data/valid-messages/emptiness.message:
10199         New test message with lots of empty arrays.
10200
10201 2003-03-16  Havoc Pennington  <hp@pobox.com>
10202
10203         * dbus/dbus-connection.c
10204         (_dbus_connection_queue_received_message_link): new function that
10205         can't fail due to OOM
10206
10207         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
10208         new function pops a message together with a list link
10209         containing it.
10210
10211         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
10212         message queuing functions to avoid needing to alloc memory
10213
10214 2003-03-16  Havoc Pennington  <hp@pobox.com>
10215
10216         Oops - test code was only testing failure of around 30 of the
10217         mallocs in the test path, but it turns out there are 500+
10218         mallocs. I believe this was due to misguided linking setup such
10219         that there was one copy of dbus_malloc etc. in the daemon and one
10220         in the shared lib, and only daemon mallocs were tested. In any
10221         case, the test case now tests all 500+ mallocs, and doesn't pass
10222         yet, though there are lots of fixes in this patch.
10223
10224         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
10225         this so that it doesn't need to allocate memory, since it
10226         has no way of indicating failure due to OOM (and would be
10227         annoying if it did).
10228
10229         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
10230
10231         * bus/Makefile.am: rearrange to create two self-contained
10232         libraries, to avoid having libraries with overlapping symbols.
10233         that was resulting in weirdness, e.g. I'm pretty sure there
10234         were two copies of global static variables.
10235
10236         * dbus/dbus-internals.c: move the malloc debug stuff to
10237         dbus-memory.c
10238
10239         * dbus/dbus-list.c (free_link): free list mempool if it becomes
10240         empty.
10241
10242         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
10243
10244         * dbus/dbus-address.c (dbus_parse_address): free list nodes
10245         on failure.
10246
10247         * bus/dispatch.c (bus_dispatch_add_connection): free
10248         message_handler_slot when no longer using it, so
10249         memory leak checkers are happy for the test suite.
10250
10251         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
10252
10253         * bus/bus.c (new_connection_callback): disconnect in here if
10254         bus_connections_setup_connection fails.
10255
10256         * bus/connection.c (bus_connections_unref): fix to free the
10257         connections
10258         (bus_connections_setup_connection): if this fails, don't
10259         disconnect the connection, just be sure there are no side
10260         effects.
10261
10262         * dbus/dbus-string.c (undo_alignment): unbreak this
10263
10264         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
10265         leaking
10266         (_dbus_auth_new): fix the order in which we free strings
10267         on OOM failure
10268
10269         * bus/connection.c (bus_connection_disconnected): fix to
10270         not send ServiceDeleted multiple times in case of memory
10271         allocation failure
10272
10273         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
10274         get the base service name
10275         (dbus_bus_register_client): don't return base service name,
10276         instead store it on the DBusConnection and have an accessor
10277         function for it.
10278         (dbus_bus_register_client): rename dbus_bus_register()
10279
10280         * bus/dispatch.c (check_hello_message): verify that other
10281         connections on the bus also got the correct results, not
10282         just the one sending hello
10283
10284 2003-03-15  Havoc Pennington  <hp@pobox.com>
10285
10286         Make it pass the Hello handling test including all OOM codepaths.
10287         Now to do other messages...
10288
10289         * bus/services.c (bus_service_remove_owner): fix crash when
10290         removing owner from an empty list of owners
10291         (bus_registry_ensure): don't leave service in the list of
10292         a connection's owned services if we fail to put the service
10293         in the hash table.
10294
10295         * bus/connection.c (bus_connection_preallocate_oom_error): set
10296         error flag on the OOM error.
10297
10298         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
10299         handle _dbus_transport_set_connection failure
10300
10301         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
10302         to create watches up front and simply enable/disable them as
10303         needed.
10304         (unix_connection_set): this can now fail on OOM
10305
10306         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
10307         of enabling/disabling a watch or timeout.
10308
10309         * bus/loop.c (bus_loop_iterate): don't touch disabled
10310         watches/timeouts
10311
10312         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
10313
10314 2003-03-15  Havoc Pennington  <hp@pobox.com>
10315
10316         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
10317         write useful test code, after all that futzing around ;-)
10318
10319         Test does not yet pass because we can't handle OOM in
10320         _dbus_transport_messages_pending (basically,
10321         dbus_connection_preallocate_send() does not prealloc the write
10322         watch). To fix this, I think we need to add new stuff to
10323         set_watch_functions, namely a SetEnabled function so we can alloc
10324         the watch earlier, then enable it later.
10325
10326         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
10327         dbus-memory.c to the convenience lib
10328
10329         * bus/test.c: rename some static functions to keep them clearly
10330         distinct from stuff in connection.c. Handle client disconnection.
10331
10332 2003-03-14  Havoc Pennington  <hp@pobox.com>
10333
10334         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
10335         transport, tests more of the real codepath. Set up clients
10336         with bus_setup_debug_client.
10337
10338         * bus/test.c (bus_setup_debug_client): function to set up debug
10339         "clients" on the main loop
10340
10341         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
10342         support
10343
10344         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe
10345         server type
10346
10347         * dbus/dbus-server-debug.c: support a debug server based on pipes
10348
10349         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
10350         (_dbus_close): new function
10351
10352         * configure.in: check for socketpair
10353
10354 2003-03-14  Havoc Pennington  <hp@redhat.com>
10355
10356         * dbus/dbus-memory.c: add a "detect buffer overwrites on free"
10357         cheesy hack
10358
10359         * dbus/dbus-transport-debug.c: rework this a good bit to be
10360         less complicated. hopefully still works.
10361
10362         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
10363         manually
10364
10365         * glib/dbus-gmain.c (timeout_handler): don't remove timeout
10366         after running it
10367
10368         * dbus/dbus-message.c (dbus_message_copy): rename from
10369         dbus_message_new_from_message, fix it up to copy
10370         all the message fields, add test case
10371
10372         * bus/dispatch.c (bus_dispatch_test): add some more test code,
10373         not quite passing yet
10374
10375 2003-03-14  Havoc Pennington  <hp@pobox.com>
10376
10377         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
10378         until no work remains" in test code. (the large diff here
10379         is just code movement, no actual changes)
10380
10381         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
10382         1, no point waiting around for test code.
10383         (_dbus_server_debug_accept_transport): unref the timeout
10384         after adding it (right?)
10385
10386         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
10387
10388 2003-03-13  Havoc Pennington  <hp@redhat.com>
10389
10390         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
10391         out of memory
10392
10393         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
10394         of memory
10395
10396         * dbus/dbus-connection.h: Make AddWatchFunction and
10397         AddTimeoutFunction return a bool so they can fail on out-of-memory
10398
10399         * bus/bus.c (bus_context_new): set up timeout handlers
10400
10401         * bus/connection.c (bus_connections_setup_connection): set up
10402         timeout handlers
10403
10404         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
10405         can fail
10406
10407         * bus/bus.c (bus_context_new): adapt to changes
10408
10409         * bus/connection.c: adapt to changes
10410
10411         * test/watch.c: adapt to DBusWatch changes
10412
10413         * bus/dispatch.c (bus_dispatch_test): started adding this but
10414         didn't finish
10415
10416 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
10417
10418         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
10419
10420 2003-03-13  Havoc Pennington  <hp@pobox.com>
10421
10422         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
10423         set up a test framework as for the library
10424
10425 2003-03-12  Havoc Pennington  <hp@pobox.com>
10426
10427         Throughout: purge global variables, introduce BusActivation,
10428         BusConnections, BusRegistry, etc. objects instead.
10429
10430         * bus/bus.h, bus/bus.c: introduce BusContext as a global
10431         message bus object
10432
10433         * test/Makefile.am (TEST_BINARIES): disable bus-test for now,
10434         going to redo this a bit differently I think
10435
10436 2003-03-12  Havoc Pennington  <hp@redhat.com>
10437
10438         Mega-patch that gets the message bus daemon initially handling
10439         out-of-memory. Work still needed. Also lots of random
10440         moving stuff to DBusError instead of ResultCode.
10441
10442         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
10443
10444         * dbus/dbus-connection.c
10445         (dbus_connection_send_with_reply_and_block): use DBusError
10446
10447         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
10448         DBusResultCode
10449
10450         * dbus/dbus-connection.c (dbus_connection_send): drop the result
10451         code here, as the only failure possible is OOM.
10452
10453         * bus/connection.c (bus_connection_disconnect):
10454         rename bus_connection_disconnected as it's a notification only
10455
10456         * bus/driver.c (bus_driver_handle_acquire_service): don't free
10457         "name" on get_args failure, should be done by get_args;
10458         don't disconnect client for bad args, just return an error.
10459         (bus_driver_handle_service_exists): ditto
10460
10461         * bus/services.c (bus_services_list): NULL-terminate returned array
10462
10463         * bus/driver.c (bus_driver_send_service_lost)
10464         (bus_driver_send_service_acquired): send messages from driver to a
10465         specific client to the client's unique name, not to the broadcast
10466         service.
10467
10468         * dbus/dbus-message.c (decode_header_data): reject messages that
10469         contain no name field
10470         (_dbus_message_get_client_serial): rename to
10471         dbus_message_get_serial and make public
10472         (_dbus_message_set_serial): rename from set_client_serial
10473         (_dbus_message_set_reply_serial): make public
10474         (_dbus_message_get_reply_serial): make public
10475
10476         * bus/connection.c (bus_connection_foreach): allow stopping
10477         iteration by returning FALSE from foreach function.
10478
10479         * dbus/dbus-connection.c (dbus_connection_send_preallocated)
10480         (dbus_connection_free_preallocated_send)
10481         (dbus_connection_preallocate_send): new API for sending a message
10482         without possibility of malloc failure.
10483         (dbus_connection_send_message): rename to just
10484         dbus_connection_send (and same for whole function family)
10485
10486         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
10487
10488         * dbus/dbus-sysdeps.c (_dbus_exit): new function
10489
10490         * bus/activation.c: handle/return errors
10491
10492         * dbus/dbus-errors.h: add more DBUS_ERROR #define
10493
10494         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
10495         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
10496         (_dbus_result_from_errno): move to this file
10497
10498 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
10499
10500         * dbus/dbus-marshal.c:
10501         (_dbus_marshal_set_string):
10502         Take a length argument so we can marshal the correct string
10503         length.
10504
10505         (_dbus_marshal_dict), (_dbus_demarshal_dict),
10506         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
10507         (_dbus_marshal_test):
10508         * dbus/dbus-marshal.h:
10509         Add support for marshalling and demarshalling dicts.
10510
10511         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10512         Add support for TYPE DICT.
10513
10514         * dbus/dbus-message.c: (set_string_field):
10515         Adjust header padding.
10516
10517         (dbus_message_append_args_valist), (dbus_message_append_dict),
10518         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
10519         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
10520         (check_message_handling), (check_have_valid_message):
10521         * dbus/dbus-message.h:
10522         Add functions for setting and getting dicts.
10523
10524         * dbus/dbus-protocol.h:
10525         Add DBUS_TYPE_DICT.
10526
10527         * dbus/dbus.h:
10528         Add dbus-dict.h
10529
10530         * doc/dbus-specification.sgml:
10531         Add information about how dicts are marshalled.
10532
10533         * test/data/invalid-messages/dict-with-nil-value.message:
10534         * test/data/invalid-messages/too-short-dict.message:
10535         * test/data/valid-messages/dict-simple.message:
10536         * test/data/valid-messages/dict.message:
10537         Add sample messages containing dicts.
10538
10539 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
10540
10541         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
10542
10543 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
10544
10545         * dbus/Makefile.am:
10546         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
10547         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
10548         (dbus_dict_set_int32), (dbus_dict_set_uint32),
10549         (dbus_dict_set_double), (dbus_dict_set_string),
10550         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
10551         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
10552         (dbus_dict_set_string_array), (_dbus_dict_test):
10553         * dbus/dbus-dict.h:
10554         Fix according to comments from Havoc.
10555
10556 2003-03-06  Michael Meeks  <michael@server.home>
10557
10558         * configure.in: if we don't have kde-config, disable have_qt.
10559
10560 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
10561
10562         * dbus/Makefile.am:
10563         Add dbus-dict.[ch]
10564
10565         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
10566         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
10567         (dbus_dict_remove), (dbus_dict_get_value_type),
10568         (dbus_dict_get_keys), (dbus_dict_put_boolean),
10569         (dbus_dict_put_int32), (dbus_dict_put_uint32),
10570         (dbus_dict_put_double), (dbus_dict_put_string),
10571         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
10572         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
10573         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
10574         (dbus_dict_get_int32), (dbus_dict_get_uint32),
10575         (dbus_dict_get_double), (dbus_dict_get_string),
10576         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
10577         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
10578         (dbus_dict_get_string_array), (_dbus_dict_test):
10579         * dbus/dbus-dict.h:
10580         Add DBusDict implementation
10581
10582         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
10583         * dbus/dbus-test.h:
10584         Add _dbus_dict_test
10585
10586 2003-03-04  Havoc Pennington  <hp@pobox.com>
10587
10588         * test/data/auth/*: adapt to changes
10589
10590         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
10591         USERID_BASE64 and change USERNAME_BASE64 to put in username not
10592         userid
10593
10594         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
10595         more stuff from being in a context name, to make the protocol
10596         simpler to deal with
10597
10598         * dbus/dbus-errors.c (dbus_error_has_name): new function
10599         (dbus_error_is_set): new function
10600
10601         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
10602         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
10603
10604         * dbus/dbus-connection.c (dbus_connection_flush): also read
10605         messages during a flush operation
10606
10607         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
10608
10609 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10610
10611         * configure.in: Check for gethostbyname on Solaris.
10612
10613         * dbus/dbus-transport.c: (_dbus_transport_open):
10614         Remove duplicate "tcp" entry.
10615
10616         * doc/dbus-specification.sgml:
10617         Clarify some things.
10618
10619 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10620
10621         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
10622         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
10623         (_dbus_keyring_test):
10624         * dbus/dbus-md5.c: (_dbus_md5_compute):
10625         * dbus/dbus-sha.c: (_dbus_sha_compute):
10626         Plug memory leaks.
10627
10628 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10629
10630         * README: Add some things.
10631
10632 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
10633
10634         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
10635         after case DBUS_TYPE_BOOELAN.
10636
10637 2003-03-02  Havoc Pennington  <hp@pobox.com>
10638
10639         * test/break-loader.c (randomly_set_extreme_ints): add test that
10640         sets really huge and small integers
10641
10642         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
10643         that length of boolean array fits in the string, and that
10644         string has room for boolean value in single-bool case.
10645
10646         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
10647         optional value to "ALIGN" command which is what to fill the
10648         alignment with.
10649
10650         * test/data/valid-messages/no-padding.message: add regression
10651         test for the message padding problem
10652
10653 2003-03-02  Havoc Pennington  <hp@pobox.com>
10654
10655         * dbus/dbus-message.c (decode_header_data): fix to always init
10656         message_padding, from Benjamin Dauvergne
10657
10658 2003-03-02  Havoc Pennington  <hp@pobox.com>
10659
10660         * configure.in: 0.5
10661
10662         * NEWS: Update.
10663
10664 2003-03-01  Joe Shaw  <joe@assbarn.com>
10665
10666         * configure.in: Check for "struct cmsgcred" and try to access its
10667         members for BSD-like unices.
10668
10669         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
10670         _dbus_read_credentials_unix_socket().
10671         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
10672         read() for reading the credential byte off the unix socket.  Use
10673         struct cmsgcred on systems that support it.
10674
10675 2003-02-27  Alexander Larsson  <alexl@redhat.com>
10676
10677         * glib/Makefile.am:
10678         * configure.in:
10679         Make gthreads-2.0 dependency optional. Don't build thread test if
10680         its not found.
10681
10682 2003-02-27  Havoc Pennington  <hp@pobox.com>
10683
10684         * dbus/dbus-connection.c
10685         (dbus_connection_send_message_with_reply_and_block): fix doh!
10686         doh! doh! bug that resulted in never removing a reply from the
10687         queue, no wonder we called get_reply_serial so much ;-)
10688
10689         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
10690         and client serial instead of demarshaling them every time
10691
10692 2003-02-27  Havoc Pennington  <hp@pobox.com>
10693
10694         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
10695         more inlined, using dbus-string-private.h, speeds things up
10696         substantially
10697
10698         * dbus/dbus-string.c (_dbus_string_free): apply align offset
10699         when freeing the string
10700         (_dbus_string_steal_data): fix for align offset
10701         (undo_alignment): new function
10702
10703 2003-02-26  Havoc Pennington  <hp@redhat.com>
10704
10705         All kinds of audit fixes from Owen, plus initial attempt to
10706         handle unaligned memory returned from malloc.
10707
10708         * dbus/dbus-string.c (_dbus_string_init): clamp max length to
10709         leave room for align_offset and nul byte
10710         (fixup_alignment): function to track an align_offset and
10711         ensure real->str is aligned
10712         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
10713         to allow a nul byte plus align offset
10714         (_dbus_string_lock): fix overflow issue
10715         (_dbus_string_init_const_len): add assertions on sanity of len,
10716         assign allocated to be ALLOCATION_PADDING larger than len
10717         (set_length): fixup the overflow handling
10718         (_dbus_string_get_data_len): fix overflow in assertion
10719         (open_gap): detect overflow in size of gap to be opened
10720         (_dbus_string_lengthen): add overflow check
10721         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
10722         (_dbus_string_append): add overflow check
10723         (_dbus_string_append_unichar): overflow
10724         (_dbus_string_delete): fix overflow in assertion
10725         (_dbus_string_copy_len): overflow in assertion
10726         (_dbus_string_replace_len): overflows in assertions
10727         (_dbus_string_find): change to implement in terms of
10728         _dbus_string_find_to
10729         (_dbus_string_find_to): assorted fixage
10730         (_dbus_string_equal_c_str): assert c_str != NULL,
10731         fix logic so the function works
10732         (_dbus_string_ends_with_c_str): fix overflow thingy
10733         (_dbus_string_base64_encode): overflow fix
10734         (_dbus_string_validate_ascii): overflow
10735         (_dbus_string_validate_nul): overflow
10736
10737 2003-02-26  Havoc Pennington  <hp@redhat.com>
10738
10739         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
10740
10741 2003-02-26  Alexander Larsson  <alexl@redhat.com>
10742
10743         * configure.in:
10744         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
10745
10746         * dbus/dbus-connection.c:
10747         * dbus/dbus-connection.h:
10748         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
10749         Add dbus_connection_set_wakeup_main_function and use it when queueing
10750         incoming and outgoing messages.
10751
10752
10753         * dbus/dbus-dataslot.c:
10754         Threadsafe usage of DBusDataSlotAllocator
10755
10756         * dbus/dbus-message.c: (dbus_message_get_args_iter):
10757         dbus_new can fail.
10758
10759         * dbus/dbus-server-unix.c:
10760         Add todo comment
10761
10762         * glib/dbus-gmain.c:
10763         Implement the new wakeup functions for glib.
10764
10765         * glib/Makefile.am:
10766         * glib/test-thread-client.c:
10767         * glib/test-thread-server.c:
10768         * glib/test-thread.h:
10769         Initial cut at some thread test code. Not really done yet.
10770
10771 2003-02-26  Havoc Pennington  <hp@pobox.com>
10772
10773         * dbus/dbus-connection.c
10774         (dbus_connection_send_message_with_reply_and_block): fix crash
10775         where we ref'd the outgoing message instead of the returned reply
10776
10777         * dbus/dbus-transport-unix.c (do_authentication): check read watch
10778         at the end of this function, so if we didn't need to read for
10779         authentication, we reinstall it for receiving messages
10780
10781         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to
10782         a NULL sender for peer-to-peer case
10783
10784         * dbus/dbus-transport-unix.c (check_read_watch): handle
10785         !authenticated case correctly
10786
10787         * glib/dbus-gmain.c: add support for DBusServer
10788
10789         * dbus/dbus-server.c: add data slot support
10790
10791         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
10792         return values and handle errors
10793
10794         * dbus/dbus-dataslot.c: factor out the data slot stuff from
10795         DBusConnection
10796
10797         * Doxyfile.in (INPUT): add glib subdir
10798
10799         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
10800         setup_with_g_main instead of hookup_with_g_main; write docs
10801
10802 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
10803
10804         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
10805         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10806         * dbus/dbus-message.c: (dbus_message_append_boolean),
10807         (dbus_message_append_boolean_array),
10808         (dbus_message_get_args_valist), (_dbus_message_test):
10809         * dbus/dbus-message.h:
10810         * doc/dbus-specification.sgml:
10811         Various fixes as pointed out by Havoc.
10812
10813         * test/data/invalid-messages/bad-boolean-array.message:
10814         * test/data/invalid-messages/bad-boolean.message:
10815         Add invalid boolean value test cases.
10816
10817 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
10818
10819         * dbus/dbus-internals.c: (_dbus_type_to_string):
10820         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
10821         (_dbus_marshal_validate_arg):
10822         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10823         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10824         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
10825         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
10826         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
10827         (dbus_message_iter_get_double),
10828         (dbus_message_iter_get_boolean_array), (message_iter_test):
10829         * dbus/dbus-message.h:
10830         * dbus/dbus-protocol.h:
10831         * doc/dbus-specification.sgml:
10832         * test/data/valid-messages/lots-of-arguments.message:
10833         Add support for boolean and boolean array types.
10834
10835 2003-02-23  Havoc Pennington  <hp@pobox.com>
10836
10837         * dbus/dbus-keyring.c: finish most of this implementation and
10838         simple unit test
10839
10840         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
10841         these barf if the error isn't cleared to NULL
10842
10843         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
10844         (_dbus_create_directory): new function
10845
10846         * dbus/dbus-errors.c (dbus_set_error): fix warning
10847
10848         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
10849         (_dbus_string_hex_decode): new function
10850         (test_hex_roundtrip): test code
10851
10852         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
10853
10854         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
10855
10856         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
10857         the save-to-temp/rename trick to atomically write the new file
10858         (_dbus_string_parse_uint): new function
10859
10860 2003-02-22  Havoc Pennington  <hp@pobox.com>
10861
10862         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
10863
10864 2003-02-22  Havoc Pennington  <hp@pobox.com>
10865
10866         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
10867         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
10868
10869         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
10870
10871         * dbus/test/data/sha-1: add US government test suite for SHA-1
10872
10873 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10874
10875         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
10876         Make string arrays NULL-terminated.
10877
10878         * dbus/dbus-memory.c: (dbus_free_string_array):
10879         * dbus/dbus-memory.h:
10880         New function for freeing NULL-terminated string arrays.
10881
10882         * dbus/dbus-message-builder.c: (append_quoted_string),
10883         (_dbus_message_data_load):
10884         Add support for array types.
10885
10886         * dbus/dbus-message.c: (check_message_handling):
10887         Add more types as test cases.
10888
10889         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
10890         (_dbus_string_parse_double):
10891         Add the start offset to the end offset.
10892
10893         * test/data/valid-messages/lots-of-arguments.message:
10894         New test message with lots of arguments.
10895
10896 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10897
10898         * dbus/dbus-message.c: (dbus_message_append_nil),
10899         (dbus_message_append_int32), (dbus_message_append_uint32),
10900         (dbus_message_append_double), (dbus_message_append_string),
10901         (dbus_message_append_int32_array),
10902         (dbus_message_append_uint32_array),
10903         (dbus_message_append_double_array),
10904         (dbus_message_append_byte_array),
10905         (dbus_message_append_string_array):
10906         Fix all out-of-memory handling in these functions.
10907
10908 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10909
10910         * dbus/dbus-message.c: (dbus_message_append_nil):
10911         Fix a silly.
10912
10913 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10914
10915         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10916         (dbus_message_append_nil), (dbus_message_append_int32_array),
10917         (dbus_message_append_uint32_array),
10918         (dbus_message_append_double_array),
10919         (dbus_message_append_byte_array),
10920         (dbus_message_append_string_array), (dbus_message_get_args_valist),
10921         (dbus_message_iter_get_int32_array),
10922         (dbus_message_iter_get_uint32_array),
10923         (dbus_message_iter_get_double_array),
10924         (dbus_message_iter_get_byte_array),
10925         (dbus_message_iter_get_string_array):
10926
10927         * dbus/dbus-message.h:
10928         Add functions for appending and getting arrays.
10929
10930 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10931
10932         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
10933         element size at least 8 bytes, fixes mempool tests on
10934         64-bit machines.
10935
10936 2003-02-20  Alexander Larsson  <alexl@redhat.com>
10937
10938         * dbus/dbus-transport-unix.c (unix_do_iteration):
10939         Unlock the connection mutex during a blocking select call.
10940         Add todo about how we need a way to wake up the select.
10941
10942         * dbus/dbus-connection-internal.h:
10943         * dbus/dbus-connection.c:
10944         Add _dbus_connection_lock and _dbus_connection_unlock.
10945
10946 2003-02-19  Havoc Pennington  <hp@pobox.com>
10947
10948         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
10949         Doxyfile.in, not Doxyfile
10950
10951         * dbus/dbus-keyring.c: do some hacking on this
10952
10953         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
10954
10955         * dbus/dbus-errors.c (dbus_set_error_const): do not call
10956         dbus_error_init
10957         (dbus_set_error): remove dbus_error_init, check for message ==
10958         NULL *before* we sprintf into it, and add @todo about including
10959         system headers in this file
10960
10961         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
10962
10963         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
10964
10965         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
10966         get various bits of user information based on either username
10967         or user ID
10968         (_dbus_homedir_from_username): new function
10969
10970 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
10971
10972         * configure.in:
10973         Add check for nonposix getpwnam_r
10974
10975         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
10976         Align the pool element size to a sizeof (void *) boundary.
10977
10978         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
10979         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
10980         General Solaris fixes.
10981
10982         * test/data/valid-messages/simplest-manual.message:
10983         Explicitly state that we want little-endian packing.
10984
10985 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
10986
10987         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
10988
10989         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
10990         Added to create a transport connecting using a tcp/ip socket.
10991
10992         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
10993         to a tcp socket at given host and port.
10994         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
10995         hostname and port.
10996
10997         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
10998
10999         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
11000         Added to create a server listening on a TCP/IP socket.
11001
11002 2003-02-19  Havoc Pennington  <hp@pobox.com>
11003
11004         Throughout: mop up all the Doxygen warnings and undocumented
11005         stuff.
11006
11007         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
11008         to search any paths.
11009
11010         * dbus/dbus-threads.c: move global mutex initializers to
11011         dbus-internals.h, multiple prototypes was confusing doxygen
11012         besides being kind of ugly
11013
11014         * Doxyfile (PREDEFINED): have Doxygen define
11015         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from
11016         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
11017         (do not abuse the feature! it's for stuff like the autogenerated
11018         macros in dbus-md5.c, not just for things you don't feel like
11019         documenting...)
11020
11021 2003-02-18  Havoc Pennington  <hp@pobox.com>
11022
11023         * dbus/dbus-string.c (_dbus_string_zero): new function
11024
11025         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
11026         wrap it in some dbus-friendly API
11027
11028         * dbus/dbus-types.h: add 16-bit types
11029
11030 2003-02-18  Joe Shaw  <joe@assbarn.com>
11031
11032         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
11033         credentials from our currently running process.
11034         (get_word): Fix a buglet where we were copying the entire length
11035         instead of relative to our position.
11036
11037         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
11038         keys on the stack... it's 640k of data.
11039
11040         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
11041         read the credentials byte off the socket, even if we don't have
11042         SO_PEERCRED.
11043         (_dbus_poll): Implement poll() using select() for systems which
11044         don't have it.
11045
11046         * glib/test-dbus-glib.c (main): Print out an error if no
11047         parameters are given.
11048
11049         * test/data/auth/fallback.auth-script: Added.  Tests that a client
11050         can fallback to a secondary auth mechanism if the first fails.
11051
11052 2003-02-18  Havoc Pennington  <hp@pobox.com>
11053
11054         * AUTHORS: add Alex
11055
11056 2003-02-17  Havoc Pennington  <hp@pobox.com>
11057
11058         * doc/dbus-specification.sgml: lots of cosmetic
11059         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
11060         env variable to DBUS_BUS_ADDRESS, s/client/application/,
11061         s/server/bus/ (except in authentication section). Add a section
11062         "Message Bus Message Routing"
11063
11064 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
11065
11066         Release 0.4
11067
11068         * NEWS: Update
11069
11070 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11071
11072         * doc/dbus-specification.sgml:
11073         Specification updates.
11074
11075 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11076
11077         * bus/activation.c: (bus_activation_init), (child_setup),
11078         (bus_activation_activate_service):
11079         * bus/activation.h:
11080         * bus/main.c: (main):
11081         Set DBUS_ADDRESS environment variable.
11082
11083         * dbus/dbus-errors.c: (dbus_set_error):
11084         Don't use va_copy since that's a C99 feature.
11085
11086         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
11087         (_dbus_spawn_async):
11088         * dbus/dbus-sysdeps.h:
11089         Add child_setup_func to _dbus_spawn_async.
11090
11091         * doc/dbus-specification.sgml:
11092         Update specification.
11093
11094         * test/spawn-test.c: (setup_func), (main):
11095         Fix test.
11096
11097 2003-02-17  Alexander Larsson  <alexl@redhat.com>
11098
11099         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
11100         Added todo.
11101
11102 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11103
11104         * doc/.cvsignore:
11105         * doc/Makefile.am:
11106         * doc/dbus-test-plan.sgml:
11107         Add test plan document.
11108
11109         * test/Makefile.am:
11110         Fix distcheck.
11111
11112 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11113
11114         * dbus/dbus-message.c: (decode_header_data),
11115         (_dbus_message_loader_return_buffer):
11116         Set the header padding amount when loading a message.
11117
11118 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11119
11120         * bus/dispatch.c: (send_one_message):
11121         Only send broadcast messages to registered connections.
11122
11123         * dbus/dbus-message.c: (dbus_message_name_is):
11124         * dbus/dbus-message.h:
11125         New convenience function.
11126
11127         * dbus/dbus-transport-debug.c: (do_reading):
11128         Only dispatch one message per run.
11129
11130         * test/Makefile.am:
11131         * test/bus-test.c: (new_connection_callback), (die),
11132         (test_hello_client1_handler), (test_hello_client2_handler),
11133         (test_hello_replies), (main):
11134
11135         * test/bus-test-loop.[ch]:
11136         Add these.
11137
11138 2003-02-16  Havoc Pennington  <hp@pobox.com>
11139
11140         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
11141         backward conditional
11142
11143 2003-02-16  Alexander Larsson  <alexl@redhat.com>
11144
11145         * dbus/dbus-connection.c:
11146         Implement sent_message_with_reply. (with_reply_and block is still
11147         busted).
11148         Made dispatch_message not lose message if OOM.
11149
11150         * dbus/dbus-errors.h:
11151         Add NoReply error (for reply timeouts).
11152
11153 2003-02-16  Alexander Larsson  <alexl@redhat.com>
11154
11155         * dbus/dbus-hash.c (_dbus_hash_table_unref):
11156         Actually free keys and values when destroying hashtable.
11157
11158 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11159
11160         * dbus/dbus-auth.c: (client_try_next_mechanism):
11161         Plug a leak.
11162
11163         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
11164         Return TRUE if there's no thread implementation around.
11165
11166         * glib/dbus-gmain.c: (free_source),
11167         (dbus_connection_hookup_with_g_main):
11168         Make sure to remove the GSource when the connection is finalized.
11169
11170 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11171
11172         * bus/dispatch.c: (bus_dispatch_message_handler):
11173         * dbus/dbus-errors.h:
11174         Return an error if someone tries to send a message to a service
11175         that doesn't exist.
11176
11177 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11178
11179         * bus/activation.c: (load_directory), (bus_activation_init),
11180         (bus_activation_activate_service):
11181         * bus/activation.h:
11182         * bus/driver.c:
11183         (bus_driver_handle_activate_service), (bus_driver_handle_message):
11184         More work on the activation handling.
11185
11186         * dbus/dbus-errors.h:
11187         Add some error messages
11188
11189         * dbus/dbus-message.c: (dbus_message_new_error_reply):
11190         * dbus/dbus-message.h:
11191         New function that creates an error message.
11192
11193         * dbus/dbus-protocol.h:
11194         Add ACTIVATE_SERVER message.
11195
11196         * dbus/dbus-server-unix.c: (unix_handle_watch),
11197         (_dbus_server_new_for_domain_socket):
11198         Call _dbus_fd_set_close_on_exec.
11199
11200         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
11201         (_dbus_spawn_async), (_dbus_disable_sigpipe),
11202         (_dbus_fd_set_close_on_exec):
11203         * dbus/dbus-sysdeps.h:
11204         Add _dbus_fd_set_close_on exec function. Also add function that checks
11205         that all open fds are set to close-on-exec and warns otherwise.
11206
11207         * dbus/dbus-transport-unix.c:
11208         (_dbus_transport_new_for_domain_socket):
11209         Call _dbus_fd_set_close_on_exec.
11210
11211 2003-02-16  Havoc Pennington  <hp@pobox.com>
11212
11213         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
11214         allow people to avoid setting SIGPIPE to SIG_IGN
11215         (_dbus_connection_new_for_transport): disable SIGPIPE unless
11216         we've been asked not to
11217
11218 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11219
11220         * dbus/dbus-list.c: (_dbus_list_append_link),
11221         (_dbus_list_prepend_link):
11222         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
11223         (dbus_realloc):
11224         Warning fixes.
11225
11226 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11227
11228         * bus/Makefile.am:
11229         * bus/activation.c: (bus_activation_entry_free),
11230         (add_desktop_file_entry), (load_directory), (bus_activation_init):
11231         * bus/activation.h:
11232         * bus/main.c: (main):
11233         Add simple activation support, doesn't work yet though.
11234
11235 2003-02-15   Zack Rusin  <zack@kde.org>
11236
11237         * qt/dbus-qthread.cpp:  small casting fix
11238
11239 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11240
11241         * dbus/dbus-errors.c: (dbus_set_error):
11242         * dbus/dbus-errors.h:
11243         Add a few errors and make dbus_set_error void.
11244
11245         * dbus/dbus-sysdeps.c:
11246         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
11247         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
11248         * dbus/dbus-sysdeps.h:
11249         Add _dbus_spawn_async.
11250
11251         * test/spawn-test.c: (main):
11252         Test for _dbus_spawn_async.
11253
11254 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11255
11256         * dbus/dbus-internals.h:
11257         Fix build without tests.
11258
11259         * dbus/dbus-list.c: (alloc_link):
11260         Fix a segfault when a malloc fails.
11261
11262         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
11263         (dbus_malloc0), (dbus_realloc):
11264         Add support for malloc debugging.
11265
11266 2003-02-15  Alexander Larsson  <alexl@redhat.com>
11267
11268         * dbus/dbus-threads.c:
11269         * dbus/dbus-threads.h:
11270         Add condvars. Remove static mutext from API.
11271         Implement static mutexes by initializing them from threads_init.
11272
11273         * glib/dbus-gthread.c:
11274         * qt/dbus-qthread.cpp:
11275         Update with the thread api changes.
11276
11277
11278         * dbus/dbus-list.c:
11279         * dbus/dbus-list.h:
11280         Turn StaticMutex into normal mutex + init function.
11281         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
11282         _dbus_list_append_link, _dbus_list_prepend_link
11283
11284
11285         * dbus/dbus-sysdeps.c:
11286         * dbus/dbus-sysdeps.h:
11287         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
11288         _dbus_atomic_dec. Only slow fallback implementation at the moment.
11289
11290         * dbus/dbus-protocol.h:
11291         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
11292
11293         * dbus/dbus-message.c:
11294         Make ref/unref atomic.
11295         Fix some docs.
11296
11297         * dbus/dbus-connection-internal.h:
11298         * dbus/dbus-connection.c:
11299         * dbus/dbus-connection.h:
11300         Make threadsafe.
11301         Change _peek to _borrow,_return & _steal_borrowed.
11302         Change disconnect callback to event.
11303         Make dbus_connection_dispatch_messages reentrant.
11304
11305         * dbus/dbus-transport.c:
11306         Don't ref the connection on calls to the transport
11307         implementation.
11308
11309         * dbus/dbus-message-handler.c:
11310         Make threadsafe.
11311
11312         * glib/dbus-gmain.c:
11313         Don't use peek_message anymore
11314
11315         * test/Makefile.am:
11316         * test/debug-thread.c:
11317         * test/debug-thread.h:
11318         Simple thread implementation that asserts() on deadlocks in
11319         single-threaded code.
11320
11321         * test/bus-test.c:
11322         (main) Call debug_threads_init.
11323
11324         * test/watch.c:
11325         Use disconnect message instead of disconnect callback.
11326
11327         * bus/connection.c:
11328         * bus/connection.h:
11329         Don't call dbus_connection_set_disconnect_function. Instead export
11330         bus_connection_disconnect.
11331
11332         * bus/dispatch.c:
11333         Call bus_connection_disconnect when we get a disconnected message.
11334
11335 2003-02-15  Havoc Pennington  <hp@pobox.com>
11336
11337         * dbus/dbus-message.c (dbus_message_new): fool around with the
11338         docs
11339
11340 2003-02-14  Havoc Pennington  <hp@pobox.com>
11341
11342         * dbus/dbus-mempool.c: fail if the debug functions so indicate
11343
11344         * dbus/dbus-memory.c: fail if the debug functions indicate we
11345         should
11346
11347         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
11348         (_dbus_decrement_fail_alloc_counter): debug functions to
11349         simulate memory allocation failures
11350
11351 2003-02-14  Havoc Pennington  <hp@pobox.com>
11352
11353         * dbus/dbus-errors.h (struct DBusError): add a word of padding
11354         to DBusError
11355
11356 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11357
11358         * bus/driver.c: (bus_driver_handle_hello):
11359         * bus/driver.h:
11360         * bus/services.c: (bus_service_lookup):
11361         Reorder message sending so we get a more sane order.
11362
11363         * test/bus-test.c: (message_handler):
11364         Fix tyop.
11365
11366 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11367
11368         * bus/driver.c: (bus_driver_send_service_deleted),
11369         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11370         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
11371         (bus_driver_send_welcome_message),
11372         (bus_driver_handle_list_services),
11373         (bus_driver_handle_acquire_service),
11374         (bus_driver_handle_service_exists):
11375         * dbus/dbus-bus.c: (dbus_bus_register_client),
11376         (dbus_bus_acquire_service), (dbus_bus_service_exists):
11377         * dbus/dbus-errors.c: (dbus_result_to_string):
11378         * dbus/dbus-errors.h:
11379         * dbus/dbus-message.c: (dbus_message_append_args),
11380         (dbus_message_append_args_valist), (dbus_message_get_args),
11381         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
11382         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
11383         (dbus_message_iter_get_byte_array),
11384         (dbus_message_iter_get_string_array), (message_iter_test),
11385         (check_message_handling), (_dbus_message_test):
11386         * dbus/dbus-message.h:
11387         * test/bus-test.c: (main):
11388         Change fields to arguments in messages, so that they won't be
11389         confused with header fields.
11390
11391         * glib/test-dbus-glib.c: (main):
11392         Remove append_fields from hello message.
11393
11394 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11395
11396         * dbus/dbus-errors.c:
11397         * dbus/dbus-message.c:
11398         * dbus/dbus-string.c:
11399         Documentation fixes.
11400
11401 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11402
11403         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
11404         (remove_timeout):
11405         Implement support for timeouts in dbus-glib.
11406
11407 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11408
11409         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
11410         * dbus/dbus-message.c: (process_test_subdir):
11411         * test/break-loader.c: (find_breaks_based_on):
11412         Plug some memory leaks.
11413
11414 2003-02-13  Richard Hult  <rhult@codefactory.se>
11415
11416         * bus/main.c: Fix build.
11417
11418         * dbus/dbus-errors.h:
11419         * dbus/dbus-errors.c: Fix copyright for Anders.
11420
11421 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11422
11423         * bus/Makefile.am:
11424         Add utils.[ch]
11425
11426         * bus/connection.c: (bus_connection_foreach):
11427         Fix a warning.
11428
11429         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
11430         (unescape_string), (new_section), (parse_section_start),
11431         (parse_key_value), (report_error), (bus_desktop_file_load),
11432         (bus_desktop_file_get_string):
11433         * bus/desktop-file.h:
11434         Use DBusError for error reporting.
11435
11436         * bus/dispatch.c: (send_one_message),
11437         (bus_dispatch_message_handler):
11438         * bus/driver.c: (bus_driver_send_service_deleted),
11439         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11440         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
11441         (bus_driver_send_welcome_message),
11442         (bus_driver_handle_list_services),
11443         (bus_driver_handle_acquire_service),
11444         (bus_driver_handle_service_exists):
11445         * bus/loop.c: (bus_loop_run):
11446         * bus/main.c:
11447         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
11448
11449         * bus/utils.c: (bus_wait_for_memory):
11450         * bus/utils.h:
11451         New files with general utility functions.
11452
11453         * dbus/dbus-internals.h:
11454         Remove _DBUS_HANDLE_OOM.
11455
11456 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11457
11458         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
11459         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
11460         * dbus/dbus-errors.h:
11461         Add DBusError structure.
11462
11463 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11464
11465         * test/data/valid-messages/standard-acquire-service.message:
11466         * test/data/valid-messages/standard-hello.message:
11467         * test/data/valid-messages/standard-list-services.message:
11468         * test/data/valid-messages/standard-service-exists.message:
11469         Add some standard messages.
11470
11471 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11472
11473         * bus/driver.c: (bus_driver_send_welcome_message),
11474         (bus_driver_handle_list_services),
11475         (bus_driver_handle_acquire_service),
11476         (bus_driver_handle_service_exists), (bus_driver_handle_message):
11477         Update for API changes in libdbus.
11478
11479         * dbus/dbus-message.c: (dbus_message_new_reply):
11480         * dbus/dbus-message.h:
11481         Remove the name argument. The spec states that replies shouldn't
11482         have a name.
11483
11484 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11485
11486         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
11487         (report_error), (bus_desktop_file_load), (lookup_section),
11488         (lookup_line), (bus_desktop_file_get_raw),
11489         (bus_desktop_file_get_string):
11490         * bus/desktop-file.h:
11491         Some fixes, and new functions for getting a key value from a section.
11492
11493 2003-02-13  Havoc Pennington  <hp@pobox.com>
11494
11495         * test/data/auth/fail-after-n-attempts.auth-script: new test
11496
11497         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
11498         reject the client.
11499
11500 2003-02-13  Havoc Pennington  <hp@pobox.com>
11501
11502         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
11503         dbus_credentials_match were backward
11504
11505         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
11506         NO_CREDENTIALS and ROOT_CREDENTIALS
11507
11508         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine
11509         into here. Never process more commands after we've reached an
11510         end state; store further data as unused bytes.
11511
11512         * test/data/auth/*: add more auth tests
11513
11514         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
11515         command to match exact string and EXPECT_UNUSED to match unused
11516         bytes
11517
11518         * test/Makefile.am (dist-hook): fix to dist all the test stuff
11519
11520 2003-02-12  Havoc Pennington  <hp@pobox.com>
11521
11522         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
11523         \r off of popped lines
11524
11525         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
11526         scripts
11527
11528         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
11529         SEND, append \r\n
11530
11531 2003-02-12  Havoc Pennington  <hp@pobox.com>
11532
11533         * dbus/Makefile.am: remove break-loader from the build, since it
11534         moved.
11535
11536         * configure.in: add --enable-gcov to turn on coverage profiling
11537         flags and disable optimization
11538
11539 2003-02-10  Havoc Pennington  <hp@pobox.com>
11540
11541         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync
11542         initial cut at test framework for DBusAuth from laptop.
11543         Doesn't quite work yet but it compiles and I need to get
11544         it off the 266mhz laptop. ;-)
11545
11546         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
11547         fix a memleak in error case
11548
11549 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
11550
11551         * bus/Makefile.am:
11552         * bus/desktop-file.c:
11553         * bus/desktop-file.h:
11554         Add a desktop file parser.
11555
11556 2003-02-11  Zack Rusin  <zack@kde.org>
11557
11558         * qt/message.[h|cpp]: sample implementation
11559         of the KDE wrapper for DBusMessage
11560
11561 2003-02-09  Zack Rusin  <zack@kde.org>
11562
11563         * test/bus-test.c: make_it_compile
11564         * doc/dbus-specification.sgml: minimal semantic fix
11565
11566 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
11567
11568         Release 0.3
11569
11570         * NEWS: Update
11571
11572 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
11573
11574         * dbus/Makefile.am:
11575         * dbus/dbus-break-loader.c:
11576         * test/Makefile.am:
11577         * test/break-loader.c:
11578         Move dbus-break-loader to test/ and rename it to break-loader.
11579
11580 2003-02-02  Havoc Pennington  <hp@pobox.com>
11581
11582         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files
11583         for code to manage cookies in your home directory
11584
11585         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
11586
11587         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
11588         to authenticate, then disconnect the client.
11589
11590 2003-02-03  Alexander Larsson  <alexl@redhat.com>
11591
11592         * dbus/dbus-message.c (dbus_message_append_fields):
11593         Correct docs.
11594
11595 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11596
11597         * doc/dbus-specification.sgml:
11598         Update address format section.
11599
11600 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11601
11602         * test/Makefile.am:
11603         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
11604         (message_handler), (new_connection_callback), (loop_quit),
11605         (loop_run), (main):
11606         Add bus test.
11607
11608 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11609
11610         * bus/driver.c: (bus_driver_handle_service_exists):
11611         Simplify the code a bit.
11612
11613         * dbus/dbus-bus.c: (dbus_bus_service_exists):
11614         Fix a silly.
11615
11616 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11617
11618         * bus/Makefile.am:
11619         Add libdbus-daemon.la and link to it.
11620
11621 2003-02-01  James Willcox  <jwillcox@gnome.org>
11622
11623         * bus/driver.c: (bus_driver_handle_own_service):
11624         Actually include the service reply code in the message.
11625
11626 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11627
11628         * bus/driver.c: (bus_driver_handle_service_exists):
11629         Don't unref the incoming message.
11630
11631 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11632
11633         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
11634
11635 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11636
11637         * dbus/dbus-server.c: (dbus_server_listen):
11638         * dbus/dbus-transport.c: (_dbus_transport_open):
11639         ifdef out the calls to the debug transport and server.
11640
11641 2003-02-02  Alexander Larsson  <alexl@redhat.com>
11642
11643         * dbus/dbus-watch.c (dbus_watch_get_flags):
11644         Add note in the docs that ERROR or HANGUP won't be returned
11645         and are assumed always on.
11646
11647         * glib/dbus-gmain.c (add_watch):
11648         Always add IO_ERR | IO_HUP
11649
11650         * dbus/dbus-message.h:
11651         Add semicolon after dbus_message_iter_get_string_array().
11652         Makes qt code build again
11653
11654 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
11655
11656         * bus/driver.c: (create_unique_client_name),
11657         (bus_driver_handle_hello):
11658         Don't take a name, just use a numeric id to identify
11659         each client.
11660
11661         * dbus/Makefile.am:
11662         * dbus/dbus-bus.c: (dbus_bus_register_client),
11663         (dbus_bus_acquire_service), (dbus_bus_service_exists):
11664         * dbus/dbus-bus.h:
11665         Add new convenience functions for communicating with the bus.
11666
11667         * dbus/dbus-message.h:
11668
11669         * dbus/dbus-protocol.h:
11670         Fix a typo.
11671
11672 2003-02-01  Alexander Larsson  <alexl@redhat.com>
11673
11674         * dbus/dbus-message.c (dbus_message_append_fields):
11675         Add some more doc comments.
11676
11677 2003-02-01  Havoc Pennington  <hp@pobox.com>
11678
11679         * dbus/dbus-break-loader.c (randomly_modify_length): change
11680         a 4-byte value in the message as if it were a length
11681
11682         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
11683         execute bit on saved files
11684
11685 2003-02-01  Havoc Pennington  <hp@pobox.com>
11686
11687         * dbus/dbus-break-loader.c (main): new program to find messages
11688         that break the loader.
11689
11690         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
11691         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
11692
11693         * dbus/dbus-string.c (_dbus_string_set_byte): new
11694
11695 2003-01-31  Havoc Pennington  <hp@pobox.com>
11696
11697         * dbus/dbus-message.c: refactor the test code to be more general,
11698         in preparation for writing a "randomly permute test cases to
11699         try to break the loader" program.
11700
11701 2003-01-31  Havoc Pennington  <hp@pobox.com>
11702
11703         * doc/dbus-specification.sgml: work on the specification
11704
11705         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check
11706         the protocol version of the message.
11707
11708         * dbus/dbus-protocol.h: drop special _REPLY names, the spec
11709         no longer specifies that.
11710         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not
11711         1/2/3/4)
11712
11713         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
11714         "break" for DBUS_TYPE_NIL, remove @todo
11715
11716 2003-01-31  Havoc Pennington  <hp@pobox.com>
11717
11718         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename
11719         just set_is_error/get_is_error as this is a commonly-used
11720         function, and write docs.
11721
11722 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
11723
11724         * dbus/dbus-address.c: (dbus_address_entry_free):
11725         Free key and value lists.
11726
11727         * dbus/dbus-internals.c: (_dbus_type_to_string):
11728         Add the types we didn't have.
11729
11730         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
11731         (_dbus_marshal_validate_arg):
11732         Add NIL types.
11733
11734         * dbus/dbus-message.c: (dbus_message_set_sender):
11735         Remove todo about being able to set sender to NULL.
11736
11737         (dbus_message_set_is_error_reply),
11738         (dbus_message_get_is_error_reply):
11739         * dbus/dbus-message.h:
11740         New functions.
11741
11742         * dbus/dbus-protocol.h:
11743         Add error reply flag.
11744
11745         * test/data/valid-messages/opposite-endian.message:
11746         Add NIL type to test.
11747
11748 2003-01-31  Havoc Pennington  <hp@pobox.com>
11749
11750         * doc/dbus-specification.sgml: fully specify the header.  Add
11751         flags and major protocol version, and change header/body len to
11752         unsigned.
11753
11754         * dbus/dbus-message-builder.c (append_saved_length): append length
11755         as uint32
11756
11757         * dbus/dbus-message.c (dbus_message_create_header): change header
11758         length and body length to unsigned. Add the new fields from the
11759         spec
11760         (_dbus_message_loader_return_buffer): unsigned header/body len
11761
11762 2003-01-30  Havoc Pennington  <hp@pobox.com>
11763
11764         * dbus/dbus-auth.c: rework to use only REJECTED, no
11765         MECHANISMS
11766
11767         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just
11768         use REJECTED, suggested by Mark McLoughlin
11769
11770 2003-01-30  Havoc Pennington  <hp@pobox.com>
11771
11772         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
11773         a better way to report errors here. e.g.  "unix address lacks
11774         path" or something. also "no such file" when the path doesn't
11775         exist, etc.
11776
11777         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
11778         leaking list nodes
11779         (dbus_parse_address): add @todo about documenting address format,
11780         and allowing , and ; to be escaped
11781
11782 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
11783
11784         * dbus/Makefile.am:
11785         Add dbus-address.[ch]
11786
11787         * dbus/dbus-address.c: (dbus_address_entry_free),
11788         (dbus_address_entries_free), (create_entry),
11789         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
11790         (dbus_parse_address), (_dbus_address_test):
11791         * dbus/dbus-address.h:
11792         New files for dealing with address parsing.
11793
11794         * dbus/dbus-connection.c:
11795         Document timeout functions.
11796
11797         * dbus/dbus-message.c:
11798         Document dbus_message_new_from_message.
11799
11800         * dbus/dbus-server-debug.c:
11801         Document.
11802
11803         * dbus/dbus-server.c: (dbus_server_listen):
11804         Parse address and use correct server implementation.
11805
11806         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
11807         * dbus/dbus-string.h:
11808         New function with test.
11809
11810         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
11811         * dbus/dbus-test.h:
11812         Add address tests.
11813
11814         * dbus/dbus-transport-debug.c:
11815         Document.
11816
11817         * dbus/dbus-transport.c: (_dbus_transport_open):
11818         Parse address and use correct transport implementation.
11819
11820 2003-01-30  Havoc Pennington  <hp@pobox.com>
11821
11822         * dbus/dbus-message.c: use message->byte_order instead of
11823         DBUS_COMPILER_BYTE_ORDER throughout.
11824         (dbus_message_create_header): pad header to align the
11825         start of the body of the message to 8-byte boundary
11826
11827         * dbus/dbus-marshal.h: make all the demarshalers take const
11828         DBusString arguments.
11829
11830         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
11831         validate message args here, so we don't have to do slow validation
11832         later, and so we catch bad messages as they are incoming. Also add
11833         better checks on header_len and body_len. Also fill in
11834         message->byte_order
11835
11836         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
11837         implemented properly)
11838         (_dbus_string_validate_nul): new function to check all-nul
11839
11840         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
11841         get_arg_end_pos and remove all validation
11842         (_dbus_marshal_validate_arg): actually do validation here.
11843
11844 2003-01-29  Havoc Pennington  <hp@pobox.com>
11845
11846         * dbus/dbus-message.c (check_message_handling): fix assertion
11847         failure on set_client_serial
11848
11849 2003-01-28  Havoc Pennington  <hp@pobox.com>
11850
11851         * dbus/dbus-server-debug.c: Add doc section comments
11852
11853         * dbus/dbus-transport-debug.c: add doc section comments
11854
11855 2003-01-28  Havoc Pennington  <hp@redhat.com>
11856
11857         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
11858         the reverse order from how I had it
11859         (_dbus_string_base64_encode): reverse encoding order. I was
11860         basically byteswapping everything during encoding.
11861
11862 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
11863
11864         * dbus/dbus-connection-internal.h:
11865         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
11866         (_dbus_connection_remove_timeout):
11867         Add functions for adding and removing timeouts.
11868
11869         * dbus/dbus-message.c: (dbus_message_new_from_message):
11870         Add new function that takes a message and creates an exact
11871         copy of it, but with the refcount set to 1.
11872         (check_message_handling):
11873         Fix build error.
11874
11875         * dbus/dbus-server-protected.h:
11876         * dbus/dbus-server.c: (_dbus_server_init_base),
11877         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
11878         (dbus_server_set_timeout_functions):
11879         (_dbus_server_remove_timeout):
11880         New functions so that a server can add and remove timeouts.
11881
11882         (dbus_server_listen):
11883         Add commented out call to dbus_server_debug_new.
11884
11885         * dbus/dbus-timeout.c: (_dbus_timeout_new):
11886         Actually set the handler, doh.
11887
11888         * dbus/dbus-transport.c: (_dbus_transport_open):
11889         Add commented out call to dbus_transport_debug_client_new.
11890
11891         * dbus/Makefile.am:
11892         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
11893
11894 2003-01-28  Havoc Pennington  <hp@pobox.com>
11895
11896         * dbus/dbus-message.c (check_message_handling): function to check
11897         on the loaded message, iterates over it etc.
11898
11899 2003-01-28  Havoc Pennington  <hp@pobox.com>
11900
11901         * test/Makefile.am (dist-hook): fix make distdir
11902
11903         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
11904
11905 2003-01-27  Havoc Pennington  <hp@pobox.com>
11906
11907         * dbus/dbus-mempool.c (time_for_size): replace printf with
11908         _dbus_verbose
11909
11910         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
11911         empty lines; fix the SAVE_LENGTH stuff to be
11912         START_LENGTH/END_LENGTH so it actually works; couple other
11913         bugfixes
11914
11915         * test/Makefile.am (dist-hook): add dist-hook for .message files
11916
11917         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
11918         can be constant or locked.
11919         (_dbus_string_free): allow freeing a const string as
11920         documented/intended
11921
11922         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
11923
11924         * dbus/dbus-test-main.c (main): take an argument which is the
11925         directory containing test data
11926
11927         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
11928         argument to this and load all the messages in test/data/
11929         checking that they can be loaded or not loaded as appropriate.
11930
11931 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
11932
11933         * bus/dispatch.c: (bus_dispatch_message_handler):
11934         Dispatch messages sent to services.
11935
11936         * bus/driver.c: (bus_driver_send_service_deleted),
11937         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11938         (bus_driver_send_service_acquired):
11939         Add helper functions for sending service related messages.
11940
11941         (bus_driver_send_welcome_message):
11942         Send HELLO_REPLY instead of WELCOME.
11943
11944         (bus_driver_handle_list_services):
11945         Send LIST_SERVICES_REPLY instead of SERVICES.
11946
11947         (bus_driver_handle_own_service),
11948         (bus_driver_handle_service_exists):
11949         New message handlers.
11950
11951         (bus_driver_handle_message):
11952         Invoke new message handlers.
11953
11954         (bus_driver_remove_connection):
11955         Don't remove any services here since that's done automatically
11956         by bus_service_remove_owner now.
11957
11958         * bus/driver.h:
11959         New function signatures.
11960
11961         * bus/services.c: (bus_service_add_owner):
11962         Send ServiceAcquired message if we're the only primary owner.
11963
11964         (bus_service_remove_owner):
11965         Send ServiceAcquired/ServiceLost messages.
11966
11967         (bus_service_set_prohibit_replacement),
11968         (bus_service_get_prohibit_replacement):
11969         Functions for setting prohibit replacement.
11970
11971         (bus_service_has_owner):
11972         New function that checks if a connection is in the owner queue of
11973         a certain service.
11974
11975         * bus/services.h:
11976         Add new function signatures.
11977
11978         * dbus/dbus-list.c: (_dbus_list_test):
11979         Add tests for _dbus_list_remove_last and traversing the list backwards.
11980
11981         * dbus/dbus-list.h:
11982         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
11983         go any further, so return NULL then.
11984
11985         * dbus/dbus-protocol.h:
11986         Add new messages, service flags and service replies.
11987
11988 2003-01-26  Havoc Pennington  <hp@pobox.com>
11989
11990         * dbus/dbus-message-builder.c: implement, completely untested.
11991
11992         * test/data/*: add data to be used in testing.
11993         ".message" files are our simple loadable text format.
11994         ".message-raw" will be binary dumps of messages.
11995
11996         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
11997
11998 2003-01-26  Havoc Pennington  <hp@pobox.com>
11999
12000         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
12001
12002         * dbus/dbus-errors.c (dbus_result_to_string): add
12003         file errors
12004
12005         * dbus/dbus-message-builder.c: new file, will contain code to load
12006         up messages from files. Not implemented yet.
12007
12008 2003-01-26  Havoc Pennington  <hp@pobox.com>
12009
12010         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
12011         the sender by setting to NULL
12012
12013 2003-01-26  Havoc Pennington  <hp@pobox.com>
12014
12015         The unit tests pass, but otherwise untested.  If it breaks, the
12016         tests should have been better. ;-)
12017
12018         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
12019         the connection.
12020
12021         * dbus/dbus-message.c: redo everything so we maintain
12022         message->header as the only copy of the various fields.
12023         This avoids the possibility of out-of-memory in some cases,
12024         for example dbus_message_lock() can't run out of memory anymore,
12025         and avoids extra copying. Figured I may as well go ahead and do
12026         this since it was busted for dbus_message_lock to not return
12027         failure on OOM, and dbus_message_write_header was totally
12028         unchecked for OOM. Also fixed some random other bugs.
12029
12030         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
12031         that strings are nul-terminated. Also, end_pos can be equal
12032         to string length just not greater than, I think.
12033         (_dbus_marshal_set_int32): new function
12034         (_dbus_marshal_set_uint32): new function
12035         (_dbus_marshal_set_string): new function
12036
12037         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
12038         a warning, init timeout_list to NULL
12039         (dbus_connection_send_message): don't use uninitialized variable
12040         "serial"
12041
12042         * dbus/dbus-string.c (_dbus_string_replace_len): new function
12043
12044 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
12045
12046         * bus/driver.c: (bus_driver_handle_hello),
12047         (bus_driver_send_welcome_message):
12048         Plug leaks
12049
12050 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
12051
12052         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
12053         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
12054         (dbus_connection_unref):
12055         * dbus/dbus-marshal.c: (_dbus_marshal_test):
12056         * dbus/dbus-message.c: (dbus_message_unref),
12057         Plug memory leaks.
12058
12059         (dbus_message_get_fields):
12060         Remove debugging printout.
12061
12062         (_dbus_message_loader_return_buffer):
12063         Don't store the header string.
12064
12065         (_dbus_message_test):
12066         Plug leaks.
12067
12068 2003-01-26  Richard Hult  <rhult@codefactory.se>
12069
12070         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
12071         the file descriptor list, since it can change under us.
12072
12073 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12074
12075         * glib/dbus-gmain.c: (dbus_connection_prepare),
12076         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
12077         (remove_watch), (dbus_connection_hookup_with_g_main):
12078         Rewrite the glib handling to use its own GSource instead of a
12079         GIOChannel so we can catch messages put in the queue while waiting
12080         for a reply.
12081
12082 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12083
12084         * bus/Makefile.am:
12085         * bus/connection.c: (connection_disconnect_handler),
12086         (connection_watch_callback), (bus_connection_setup):
12087         * bus/dispatch.c: (send_one_message),
12088         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
12089         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
12090         * bus/dispatch.h:
12091         * bus/driver.c: (bus_driver_send_service_deleted),
12092         (bus_driver_send_service_created), (bus_driver_handle_hello),
12093         (bus_driver_send_welcome_message),
12094         (bus_driver_handle_list_services), (bus_driver_remove_connection),
12095         (bus_driver_handle_message):
12096         * bus/driver.h:
12097         Refactor code, put the message dispatching in its own file. Use
12098         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
12099         is disconnected.
12100
12101 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12102
12103         * dbus/dbus-internals.h:
12104         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
12105
12106         * dbus/dbus-message.c: (dbus_message_get_sender):
12107         * dbus/dbus-message.h:
12108         Implement dbus_message_get_sender.
12109
12110         * dbus/dbus-protocol.h:
12111         Add message and service defines.
12112
12113 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12114
12115         * dbus/dbus-connection.c: (dbus_connection_send_message):
12116         * dbus/dbus-message-internal.h:
12117         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
12118         (dbus_message_write_header):
12119         Remove _dbus_messag_unlock and don't set the client serial on a
12120         message if one already exists.
12121
12122 2003-01-24  Havoc Pennington  <hp@pobox.com>
12123
12124         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
12125         list_pool
12126
12127         * bus/driver.c (bus_driver_handle_list_services): fix a leak
12128         on OOM
12129
12130 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12131
12132         * dbus/dbus-list.c: (alloc_link), (free_link):
12133         Use a memory pool for the links.
12134
12135 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12136
12137         * bus/connection.c: (bus_connection_foreach):
12138         * bus/connection.h:
12139         Add new bus_connection_foreach function.
12140
12141         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
12142         Add function that broadcasts a message to all clients.
12143
12144         (bus_driver_send_service_created), (bus_driver_handle_hello),
12145         (bus_driver_send_welcome_message),
12146         (bus_driver_handle_list_services), (bus_driver_message_handler):
12147         Implement functions that take care of listing services, and notifying
12148         clients when new services are created.
12149
12150         * bus/services.c: (bus_services_list):
12151         * bus/services.h:
12152         Add new function that returns an array of strings with the currently
12153         registered services.
12154
12155         * glib/dbus-glib.h:
12156         * glib/dbus-gmain.c:
12157         Update copyright year.
12158
12159 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12160
12161         * dbus/dbus-connection.c: (dbus_connection_send_message):
12162         Unlock the message in case it was sent earlier.
12163
12164         (dbus_connection_send_message_with_reply_and_block):
12165         Remove the reply message from the list.
12166
12167         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
12168         Set array_len and new_pos correctly.
12169
12170         (_dbus_marshal_test):
12171         Remove debug output.
12172
12173         * dbus/dbus-message-internal.h:
12174         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
12175         New function that returns the reply serial.
12176
12177         (_dbus_message_unlock):
12178         New function that unlocks a message and resets its header.
12179
12180         (dbus_message_append_string_array),
12181         (dbus_message_get_fields_valist),
12182         (dbus_message_iter_get_field_type),
12183         (dbus_message_iter_get_string_array),
12184         (dbus_message_get_fields),
12185         (dbus_message_append_fields_valist):
12186         Handle string arrays.
12187
12188         (dbus_message_set_sender):
12189         Make this function public since the bus daemon needs it.
12190
12191         (decode_header_data):
12192         Set the reply serial to -1 initially.
12193
12194         * dbus/dbus-message.h:
12195         Add dbus_message_set_sender.
12196
12197 2003-01-24  Havoc Pennington  <hp@pobox.com>
12198
12199         * doc/dbus-specification.sgml: add some stuff
12200
12201 2003-01-22  Havoc Pennington  <hp@pobox.com>
12202
12203         * doc/dbus-specification.sgml: Start to document the protocol.
12204
12205 2003-01-22  Havoc Pennington  <hp@pobox.com>
12206
12207         * dbus/dbus-connection.c
12208         (dbus_connection_send_message_with_reply_and_block): add some @todo
12209
12210         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
12211
12212 2003-01-21  Havoc Pennington  <hp@pobox.com>
12213
12214         (patch untested because can't compile)
12215
12216         * bus/driver.c (create_unique_client_name): make this function
12217         never recycle client names. Also, caller should initialize
12218         the DBusString.
12219
12220         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
12221
12222 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12223
12224         * dbus/dbus-marshal.c: (_dbus_marshal_double),
12225         (_dbus_marshal_int32), (_dbus_marshal_uint32),
12226         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
12227         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
12228         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
12229         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
12230         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
12231         * dbus/dbus-marshal.h:
12232         * dbus/dbus-protocol.h:
12233         Add support for marshalling and demarshalling integer, double
12234         and string arrays.
12235
12236 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12237
12238         * bus/Makefile.am:
12239         Add driver.[ch]
12240
12241         * bus/connection.c: (connection_disconnect_handler):
12242         Remove the connection from the bus driver's list.
12243
12244         (connection_watch_callback): Dispatch messages.
12245
12246         (free_connection_data): Free connection name.
12247
12248         (bus_connection_setup): Add connection to the bus driver's list.
12249         (bus_connection_remove_owned_service):
12250         (bus_connection_set_name), (bus_connection_get_name):
12251         Add functions for setting and getting the connection's name.
12252
12253         * bus/connection.h:
12254         Add function headers.
12255
12256         * bus/driver.c: (create_unique_client_name),
12257         (bus_driver_handle_hello_message),
12258         (bus_driver_send_welcome_message), (bus_driver_message_handler),
12259         (bus_driver_add_connection), (bus_driver_remove_connection):
12260         * bus/driver.h:
12261         * bus/main.c:
12262         * bus/services.c: (bus_service_free):
12263         * bus/services.h:
12264         New file that handles communication and registreation with the bus
12265         itself.
12266
12267 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12268
12269         * dbus/dbus-connection.c: (dbus_connection_send_message):
12270         Add a new client_serial parameter.
12271
12272         (dbus_connection_send_message_with_reply):
12273         Remove a @todo since we've implemented the blocking function.
12274
12275         (dbus_connection_send_message_with_reply_and_block):
12276         New function that sends a message and waits for a reply and
12277         then returns the reply.
12278
12279         * dbus/dbus-connection.h:
12280         Add new functions.
12281
12282         * dbus/dbus-errors.c: (dbus_result_to_string):
12283         * dbus/dbus-errors.h:
12284         Add new DBUS_RESULT.
12285
12286         * dbus/dbus-message-internal.h:
12287         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
12288         (_dbus_message_set_sender), (dbus_message_write_header),
12289         (dbus_message_new_reply), (decode_header_data),
12290         (_dbus_message_loader_return_buffer), (_dbus_message_test):
12291         * dbus/dbus-message.h:
12292         Add new functions that set the reply serial and sender.
12293         Also marshal and demarshal them correctly and add test.
12294
12295         * dbus/dbus-protocol.h:
12296         Add new DBUS_MESSAGE_TYPE_SENDER.
12297
12298         * glib/dbus-glib.h:
12299         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
12300         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
12301         (dbus_connection_hookup_with_g_main):
12302         * glib/test-dbus-glib.c: (main):
12303         Rewrite to use GIOChannel and remove the GSource crack.
12304
12305         * test/echo-client.c: (main):
12306         * test/watch.c: (check_messages):
12307         Update for changed APIs
12308
12309 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
12310
12311         * dbus/Makefile.am: Add dbus-timeout.[cħ]
12312
12313         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
12314         Create a DBusTimeoutList.
12315         (dbus_connection_set_timeout_functions): Add new function to
12316         set timeout callbacks
12317
12318         * dbus/dbus-connection.h: Add public DBusTimeout API.
12319
12320         * dbus/dbus-message.c: (dbus_message_get_service):
12321         * dbus/dbus-message.h:  New function.
12322
12323         * dbus/dbus-server.c: Fix small doc typo.
12324
12325         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
12326
12327 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
12328
12329         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
12330         of the string, just as long as specified.
12331
12332 2003-01-19  Havoc Pennington  <hp@pobox.com>
12333
12334         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
12335         new function
12336
12337         * dbus/dbus-server.c (dbus_server_set_max_connections)
12338         (dbus_server_get_max_connections, dbus_server_get_n_connections):
12339         keep track of current number of connections, and add API for
12340         setting a max (but haven't implemented enforcing the max yet)
12341
12342 2003-01-18  Havoc Pennington  <hp@pobox.com>
12343
12344         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
12345         reading/writing if read_watch != NULL or write_watch != NULL.
12346
12347         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
12348         the message loader code to actually load message->header and
12349         message->body into the newly-created message.
12350
12351         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
12352         in OOM case
12353
12354         * dbus/dbus-connection.c (dbus_connection_set_max_message_size)
12355         (dbus_connection_get_max_message_size)
12356         (dbus_connection_set_max_live_messages_size)
12357         (dbus_connection_get_max_live_messages_size): implement some
12358         resource limitation functions
12359
12360         * dbus/dbus-resources.c: new file implementing some of the
12361         resource limits stuff
12362
12363         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
12364         missing docs, add @todo to handle OOM etc.
12365
12366         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
12367         docs
12368
12369 2003-01-18  Havoc Pennington  <hp@pobox.com>
12370
12371         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the
12372         connection if it hasn't been already.
12373
12374         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
12375         replace with DisconnectFunction.
12376
12377 2003-01-18  Havoc Pennington  <hp@pobox.com>
12378
12379         Building --disable-verbose-mode --disable-asserts --disable-tests
12380         cuts the library from 112K to 45K or so
12381
12382         * configure.in: check for varargs macro support,
12383         add --enable-verbose-mode, --enable-asserts.
12384
12385         * dbus/dbus-internals.h (_dbus_assert): support
12386         DBUS_DISABLE_ASSERT
12387         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
12388
12389 2003-01-18  Havoc Pennington  <hp@pobox.com>
12390
12391         * dbus/dbus-test.c: include config.h so that tests actually run
12392
12393         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
12394         so the failure mode when that assumption fails will be plenty
12395         obvious.
12396
12397 2003-01-18  Havoc Pennington  <hp@pobox.com>
12398
12399         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
12400
12401         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
12402         the distribution
12403
12404         * test/Makefile.am: don't use special variable "TESTS" for echo-*
12405         since we don't want to use those in make check
12406
12407 2003-01-15  Havoc Pennington  <hp@redhat.com>
12408
12409         Release 0.2
12410
12411         * NEWS: update
12412
12413 2003-01-15  Havoc Pennington  <hp@redhat.com>
12414
12415         * test/Makefile.am: fix so that test source code ends up in the
12416         distribution on make distcheck
12417
12418 2003-01-15  Havoc Pennington  <hp@redhat.com>
12419
12420         Release 0.1.
12421
12422         * NEWS: update
12423
12424 2003-01-15  Havoc Pennington  <hp@redhat.com>
12425
12426         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
12427         fix build when --disable-tests
12428
12429         * Makefile.am (EXTRA_DIST): put HACKING in here
12430
12431         * HACKING: document procedure for making a tarball release.
12432
12433 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
12434
12435         * bus/connection.c: (connection_error_handler),
12436         (bus_connection_setup):
12437         * bus/main.c: (main):
12438         Make sure that the DBusConnectionData struct is NULLed
12439         out to prevent a segfault.
12440
12441         * dbus/dbus-errors.c: (dbus_result_to_string):
12442         * dbus/dbus-errors.h:
12443         * dbus/dbus-message.c: (dbus_message_get_fields),
12444         (dbus_message_get_fields_valist), (_dbus_message_test):
12445         * dbus/dbus-message.h:
12446         Make dbus_message_get_fields return a result code so we can
12447         track invalid fields as well as oom.
12448
12449 2003-01-11  Havoc Pennington  <hp@pobox.com>
12450
12451         * configure.in: change --enable-test/--enable-ansi action-if-given
12452         to enable_foo=$enableval instead of enable_foo=yes
12453
12454 2003-01-08  Havoc Pennington  <hp@pobox.com>
12455
12456         * dbus/dbus-string.c (_dbus_string_align_length): new function
12457
12458         * dbus/dbus-test-main.c: move main() for test app here
12459         * dbus/dbus-test.c
12460         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
12461         symbol to run tests, because dbus-test isn't in the main
12462         library
12463
12464         Code review nitpicks.
12465
12466         * dbus/dbus-message.c (dbus_message_write_header): add newlines
12467         for people with narrow emacs ;-). Assert client_serial was filled
12468         in. Assert message->name != NULL.
12469         (dbus_message_append_fields): have "first_field_type" arg separate
12470         from va list, needed for C++ binding that also uses varargs IIRC
12471         and helps with type safety
12472         (dbus_message_new): add @todo about using DBusString to store
12473         service/name internally
12474         (dbus_message_new): don't leak ->service and ->name on OOM later
12475         in the function
12476         (dbus_message_unref): free the service name
12477         (dbus_message_get_fields): same change to varargs
12478         i.e. first_field_type
12479         (_dbus_message_loader_return_buffer): assert that the message data
12480         is aligned (if not it's a bug in our code). Put in verbose griping
12481         about why we set corrupted = TRUE.
12482         (decode_header_data): add FIXME that char* is evil.  Was going to
12483         add FIXME about evil locale-specific string.h strncmp, but just
12484         switched to wacky string-as-uint32 optimization. Move check for
12485         "no room for field name" above get_const_data_len() to avoid
12486         assertion failure in get_const_data_len if we have trailing 2
12487         bytes or the like. Check for service and name fields being
12488         provided twice. Don't leak service/name on error. Require field
12489         names to be aligned to 4 bytes.
12490
12491         * dbus/dbus-marshal.c: move byte swap stuff to header
12492         (_dbus_pack_int32): uscore-prefix
12493         (_dbus_unpack_int32): uscore-prefix
12494         (_dbus_unpack_uint32): export
12495         (_dbus_demarshal_string): add @todo complaining about use of
12496         memcpy()
12497         (_dbus_marshal_get_field_end_pos): add @todo about bad error
12498         handling allowing corrupt data to go unchecked
12499
12500 2003-01-08  Havoc Pennington  <hp@redhat.com>
12501
12502         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write
12503         to the select() as needed for authentication. (should be using
12504         _dbus_poll() not select, but for another day)
12505
12506         * dbus/dbus.h: include dbus/dbus-protocol.h
12507
12508 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
12509
12510         * dbus/Makefile.am (dbusinclude_HEADERS): Install
12511         dbus-connection.h
12512
12513 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
12514
12515         * dbus/dbus-internals.c: (_dbus_type_to_string):
12516         New function that returns a string describing a type.
12517
12518         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
12519         * dbus/dbus-marshal.h:
12520         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
12521         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
12522         (dbus_message_iter_get_byte_array):
12523         * dbus/dbus-message.h:
12524         Add new convenience functions for appending and getting message fields.
12525         Also add demarshalling routines for byte arrays.
12526
12527 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12528
12529         * dbus/dbus-connection-internal.h:
12530         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
12531         (_dbus_connection_get_next_client_serial),
12532         (dbus_connection_send_message):
12533         * dbus/dbus-internals.h:
12534         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
12535         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
12536         (_dbus_marshal_uint32), (_dbus_demarshal_double),
12537         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
12538         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
12539         (_dbus_verbose_bytes), (_dbus_marshal_test):
12540         * dbus/dbus-marshal.h:
12541         * dbus/dbus-message-internal.h:
12542         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
12543         (dbus_message_write_header), (_dbus_message_lock),
12544         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
12545         (dbus_message_get_name), (dbus_message_append_int32),
12546         (dbus_message_append_uint32), (dbus_message_append_double),
12547         (dbus_message_append_string), (dbus_message_append_byte_array),
12548         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
12549         (dbus_message_iter_unref), (dbus_message_iter_has_next),
12550         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
12551         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
12552         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
12553         (decode_header_data), (_dbus_message_loader_return_buffer),
12554         (message_iter_test), (_dbus_message_test):
12555         * dbus/dbus-message.h:
12556         * dbus/dbus-protocol.h:
12557         * dbus/dbus-test.c: (main):
12558         * dbus/dbus-test.h:
12559         * glib/test-dbus-glib.c: (message_handler), (main):
12560         * test/echo-client.c: (main):
12561         * test/watch.c: (check_messages):
12562         Make messages sendable and receivable for real.
12563
12564 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12565
12566         * dbus/dbus-marshal.c: (_dbus_marshal_double),
12567         (_dbus_marshal_string), (_dbus_marshal_byte_array):
12568         * dbus/dbus-message.c: (dbus_message_append_int32),
12569         (dbus_message_append_uint32), (dbus_message_append_double),
12570         (dbus_message_append_string), (dbus_message_append_byte_array):
12571         Handle OOM restoration.
12572
12573 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12574
12575         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12576         (_dbus_demarshal_string), (_dbus_marshal_test):
12577         * dbus/dbus-marshal.h:
12578         * dbus/dbus-message.c: (dbus_message_get_name),
12579         Document these functions.
12580
12581         (dbus_message_append_int32), (dbus_message_append_uint32),
12582         (dbus_message_append_double), (dbus_message_append_string),
12583         (dbus_message_append_byte_array):
12584         * dbus/dbus-message.h:
12585         Add functions for adding message fields of different types.
12586
12587         * dbus/dbus-protocol.h:
12588         Add the different types.
12589
12590 2003-01-05  Havoc Pennington  <hp@pobox.com>
12591
12592         * bus/connection.c: implement routines for handling connections,
12593         first thing is keeping a list of owned services on each connection
12594         and setting up watches etc.
12595
12596         * bus/services.c: implement a mapping from service names to lists
12597         of connections
12598
12599         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
12600
12601         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
12602         to use static mutexes for global data
12603
12604         * dbus/dbus-connection.c (dbus_connection_set_data): add new
12605         collection of functions to set/get application-specific data
12606         on the DBusConnection.
12607
12608 2003-01-04  Havoc Pennington  <hp@pobox.com>
12609
12610         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
12611         (_dbus_poll): new function
12612
12613         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
12614         copied from GLib
12615
12616         * bus/loop.c: initial code for the daemon main loop
12617
12618 2003-01-04  Havoc Pennington  <hp@pobox.com>
12619
12620         * test/watch.c (error_handler): make it safe if the error handler
12621         is called multiple times (if we s/error handler/disconnect
12622         handler/ we should just guarantee it's called only once)
12623
12624         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
12625         error handler on disconnect (it's quite possible we should
12626         just change the error handler to a "disconnect handler," I'm
12627         not sure we have any other meaningful errors)
12628
12629         * configure.in: check for getpwnam_r
12630
12631         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
12632         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
12633         mechanism as in SASL spec, using socket credentials
12634
12635         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
12636         (_dbus_send_credentials_unix_socket): new function
12637
12638         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
12639         dbus_accept()
12640         (_dbus_write): only check errno if <0 returned
12641         (_dbus_write_two): ditto
12642
12643 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
12644
12645         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
12646         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
12647         (_dbus_marshal_test):
12648         * dbus/dbus-marshal.h:
12649         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
12650         to _dbus_marshal_utf8_string. Also fix some tests.
12651
12652 2002-12-28  Harri Porten  <porten@kde.org>
12653
12654         * configure.in: added check for C++ compiler and a very cheesy
12655         check for the Qt integration
12656
12657         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
12658
12659         * qt/Makefile.am: added
12660
12661         * qt/.cvsignore: added
12662
12663         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
12664         latter, added #ifdef QT_THREAD_SUPPORT guard.
12665
12666         * dbus/Makefile.am: added missing headers for make dist
12667
12668 2002-12-28  Kristian Rietveld  <kris@gtk.org>
12669
12670         * dbus/Makefile.am: fixup export-symbols-regex.
12671
12672 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
12673
12674         * acinclude.m4: Add this file and put the
12675         PKG_CHECK_MODULE macro in it.
12676
12677 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
12678
12679         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12680         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12681         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
12682         (_dbus_marshal_test):
12683         Make the demarshalling routines align the pos argument.
12684         Add string marshalling tests and fix the obvious bugs
12685         discovered.
12686
12687 2002-12-26  Havoc Pennington  <hp@pobox.com>
12688
12689         * dbus/dbus-auth.c: fixes fixes fixes
12690
12691         * dbus/dbus-transport-unix.c: wire up support for
12692         encoding/decoding data on the wire
12693
12694         * dbus/dbus-auth.c (_dbus_auth_encode_data)
12695         (_dbus_auth_decode_data): append to target string
12696         instead of nuking it.
12697
12698 2002-12-26  Havoc Pennington  <hp@pobox.com>
12699
12700         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
12701         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
12702         doh
12703
12704         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
12705         avoid swap_bytes() overhead (ignoring possible assembly stuff for
12706         now). Main point is because I wanted unpack_uint32 to implement
12707         _dbus_verbose_bytes
12708         (_dbus_verbose_bytes): new function
12709
12710         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
12711
12712         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
12713         mechanism to handle a corrupt message stream
12714         (_dbus_message_loader_new): fix preallocation to only prealloc,
12715         not prelengthen
12716
12717         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
12718         (_dbus_string_test): enhance tests for copy/move and fix the
12719         functions
12720
12721         * dbus/dbus-transport-unix.c: Hold references in more places to
12722         avoid reentrancy problems
12723
12724         * dbus/dbus-transport.c: ditto
12725
12726         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
12727         leak reference count in no-message case
12728
12729         * test/watch.c (do_mainloop): handle adding/removing watches
12730         during iteration over the watches. Also, ref the connection/server
12731         stored on a watch, so we don't try to mangle a destroyed one.
12732
12733         * dbus/dbus-transport-unix.c (do_authentication): perform
12734         authentication
12735
12736         * dbus/dbus-auth.c (get_state): add a state
12737         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
12738         (_dbus_auth_get_unused_bytes): append the unused bytes
12739         to the passed in string, rather than prepend
12740
12741         * dbus/dbus-transport.c (_dbus_transport_init_base): create
12742         the auth conversation DBusAuth
12743
12744         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
12745         (_dbus_transport_new_for_domain_socket): when creating a
12746         transport, pass in whether it's a client-side or server-side
12747         transport so we know which DBusAuth to create
12748
12749 2002-12-03  Havoc Pennington  <hp@pobox.com>
12750
12751         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
12752         _after_ finalizing the derived members
12753         (unix_connection_set): unref watch if we fail to add it
12754
12755         * dbus/dbus-connection.c (dbus_connection_unref): delete the
12756         transport first, so that the connection owned by the
12757         transport will be valid as the transport finalizes.
12758
12759         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
12760         if necessary, and remove watches from the connection.
12761
12762         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
12763
12764 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
12765
12766         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12767         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12768         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
12769         (_dbus_marshal_test):
12770         * dbus/dbus-marshal.h:
12771         Add string marshal functions and have the demarshal functions
12772         return the new position.
12773
12774 2002-12-25  Havoc Pennington  <hp@pobox.com>
12775
12776         * doc/dbus-sasl-profile.txt: docs on the authentication protocol,
12777         it is a simple protocol that just maps directly to SASL.
12778
12779         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
12780         initial implementation, not actually used yet.
12781
12782         * dbus/dbus-string.c (_dbus_string_find): new function
12783         (_dbus_string_equal): new function
12784         (_dbus_string_base64_encode): new function
12785         (_dbus_string_base64_decode): new function
12786
12787 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
12788
12789         * dbus/Makefile.am:
12790         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
12791         (_dbus_marshal_int32), (_dbus_marshal_uint32),
12792         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12793         (_dbus_demarshal_uint32), (_dbus_marshal_test):
12794         * dbus/dbus-marshal.h:
12795         * dbus/dbus-protocol.h:
12796         * dbus/dbus-test.c: (main):
12797         * dbus/dbus-test.h:
12798         Add un-optimized marshalling/demarshalling routines.
12799
12800 2002-12-25  Harri Porten  <porten@kde.org>
12801
12802         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
12803
12804 2002-12-24  Zack Rusin  <zack@kde.org>
12805
12806         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
12807         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
12808         main loop stuff
12809
12810 2002-12-24  Havoc Pennington  <hp@pobox.com>
12811
12812         * glib/dbus-gthread.c: fix include
12813
12814         * glib/dbus-glib.h: rename DBusMessageHandler for now.
12815         I think glib API needs to change, though, as you don't
12816         want to use DBusMessageFunction, you want to use the
12817         DBusMessageHandler object. Probably
12818         dbus_connection_open_with_g_main_loop()
12819         and dbus_connection_setup_g_main_loop() or something like that
12820         (but think of better names...) that just create a connection
12821         that has watch/timeout functions etc. already set up.
12822
12823         * dbus/dbus-connection.c
12824         (dbus_connection_send_message_with_reply): new function just to
12825         show how the message handler helps us deal with replies.
12826
12827         * dbus/dbus-list.c (_dbus_list_remove_last): new function
12828
12829         * dbus/dbus-string.c (_dbus_string_test): free a string that
12830         wasn't
12831
12832         * dbus/dbus-hash.c: use memory pools for the hash entries
12833         (rebuild_table): be more paranoid about overflow, and
12834         shrink table when we can
12835         (_dbus_hash_test): reduce number of sprintfs and write
12836         valid C89. Add tests for case where we grow and then
12837         shrink the hash table.
12838
12839         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
12840
12841         * dbus/dbus-connection.c (dbus_connection_register_handler)
12842         (dbus_connection_unregister_handler): new functions
12843
12844         * dbus/dbus-message.c (dbus_message_get_name): new
12845
12846         * dbus/dbus-list.c: fix docs typo
12847
12848         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
12849         an object representing a handler for messages.
12850
12851 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
12852
12853         * glib/dbus-glib.h:
12854         * glib/dbus-gthread.c: (dbus_gthread_init):
12855         Don't use the gdbus prefix for public functions.
12856
12857 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
12858
12859         * Makefile.am:
12860         * configure.in:
12861         Add GLib checks and fixup .pc files
12862
12863         * glib/Makefile.am:
12864         * glib/dbus-glib.h:
12865         * glib/dbus-gmain.c: (gdbus_connection_prepare),
12866         (gdbus_connection_check), (gdbus_connection_dispatch),
12867         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
12868         (dbus_connection_gsource_new):
12869         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
12870         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
12871         * glib/test-dbus-glib.c: (message_handler), (main):
12872         Add GLib support.
12873
12874 2002-12-15  Harri Porten  <porten@kde.org>
12875
12876         * autogen.sh: check for libtoolize before attempting to use it
12877
12878         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
12879         struct.
12880
12881         * .cvsignore: ignore more stamp files
12882
12883         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
12884
12885         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
12886         without make install.
12887
12888 2002-12-15  Havoc Pennington  <hp@pobox.com>
12889
12890         * dbus/dbus-threads.c: add thread stubs that a higher library
12891         layer can fill in. e.g. the GLib wrapper might fill them in with
12892         GThread stuff. We still need to use this thread API to
12893         thread-safe-ize the library.
12894
12895 2002-12-12  Havoc Pennington  <hp@pobox.com>
12896
12897         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
12898         below new interfaces and include fewer system headers.
12899
12900         * dbus/dbus-sysdeps.c (_dbus_read): new function
12901         (_dbus_write): new function
12902         (_dbus_write_two): new function
12903         (_dbus_connect_unix_socket): new function
12904         (_dbus_listen_unix_socket): new function
12905
12906         * dbus/dbus-message-internal.h: change interfaces to use
12907         DBusString
12908
12909 2002-12-11  Havoc Pennington  <hp@pobox.com>
12910
12911         * dbus/dbus-types.h: add dbus_unichar
12912
12913         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
12914
12915         * dbus/dbus-connection.c (dbus_connection_send_message): return
12916         TRUE on success
12917
12918         * dbus/dbus-transport.c: include dbus-watch.h
12919
12920         * dbus/dbus-connection.c: include dbus-message-internal.h
12921
12922         * HACKING: add file with coding guidelines stuff.
12923
12924         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
12925         handling here, for security purposes (as in vsftpd). Not actually
12926         using this class yet.
12927
12928         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
12929         system/libc usage here, as in vsftpd, for ease of auditing (and
12930         should also simplify portability). Haven't actually moved all the
12931         system/libc usage into here yet.
12932
12933 2002-11-25  Havoc Pennington  <hp@pobox.com>
12934
12935         * dbus/dbus-internals.c (_dbus_verbose): fix to not
12936         always print the first verbose message.
12937
12938 2002-11-24  Havoc Pennington  <hp@pobox.com>
12939
12940         * test/echo-client.c, test/echo-server.c: cheesy test
12941         clients.
12942
12943         * configure.in (AC_CHECK_FUNCS): check for writev
12944
12945         * dbus/dbus-message.c (_dbus_message_get_network_data): new
12946         function
12947
12948         * dbus/dbus-list.c (_dbus_list_foreach): new function
12949
12950         * dbus/dbus-internals.c (_dbus_verbose): new function
12951
12952         * dbus/dbus-server.c, dbus/dbus-server.h: public object
12953         representing a server that listens for connections.
12954
12955         * dbus/.cvsignore: create
12956
12957         * dbus/dbus-errors.h, dbus/dbus-errors.c:
12958         public API for reporting errors
12959
12960         * dbus/dbus-connection.h, dbus/dbus-connection.c:
12961         public object representing a connection that
12962         sends/receives messages. (Same object used for
12963         both client and server.)
12964
12965         * dbus/dbus-transport.h, dbus/dbus-transport.c:
12966         Basic abstraction for different kinds of stream
12967         that we might read/write messages from.
12968
12969 2002-11-23  Havoc Pennington  <hp@pobox.com>
12970
12971         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN
12972         _DBUS_INT_MAX
12973
12974         * dbus/dbus-test.c (main): add list test, and include
12975         dbus-test.h as intended
12976
12977         * dbus/dbus-hash.c (_dbus_hash_table_remove_string)
12978         (_dbus_hash_table_remove_int): return value indicates
12979         whether the entry existed to remove
12980
12981         * dbus/dbus-list.c: add linked list utility class,
12982         with docs and tests
12983
12984         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
12985         array sometimes.
12986
12987 2002-11-23  Havoc Pennington  <hp@pobox.com>
12988
12989         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
12990         DBUS_END_DECLS to nothing, that should fix this once and for all
12991
12992         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
12993
12994         * dbus/dbus-message.c, dbus/dbus-hash.c:
12995         add some missing @brief
12996
12997 2002-11-23  Havoc Pennington  <hp@pobox.com>
12998
12999         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS
13000         to avoid confusing Doxygen
13001
13002         * dbus/dbus-hash.c: @} not }@
13003
13004         * dbus/dbus-message.c (struct DBusMessage): split out
13005         internals docs
13006
13007 2002-11-23  Havoc Pennington  <hp@pobox.com>
13008
13009         * configure.in: pile on more warning flags if using gcc
13010
13011         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have
13012         to document static functions
13013
13014         * configure.in: add summary to end of configure so it
13015         looks nice and attractive
13016
13017         * dbus/dbus-hash.c: finish implementation and write unit
13018         tests and docs
13019
13020         * configure.in: add --enable-tests to enable unit tests
13021
13022         * dbus/dbus-test.c: test program to run unit tests
13023         for all files in dbus/*, initially runs a test for
13024         dbus-hash.c
13025
13026         * dbus/dbus-internals.h: file to hold some internal utility stuff
13027
13028 2002-11-22  Havoc Pennington  <hp@redhat.com>
13029
13030         * dbus/dbus-hash.c: copy in Tcl hash table, not yet
13031         "ported" away from Tcl
13032
13033         * dbus/dbus-types.h: header for types such as dbus_bool_t
13034
13035 2002-11-22  Havoc Pennington  <hp@redhat.com>
13036
13037         * dbus/dbus.h: fixups for doc warnings
13038
13039         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
13040         macros
13041         (QUIET): make it quiet so we can see warnings
13042
13043         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
13044
13045 2002-11-22  Havoc Pennington  <hp@redhat.com>
13046
13047         * Makefile.am: include "Doxyfile" target in all-local
13048
13049         * configure.in: generate the Doxyfile
13050
13051         * Doxyfile.in: move Doxyfile here, so we can use
13052         configure to generate a Doxyfile with the right
13053         version number etc.
13054
13055 2002-11-22  Havoc Pennington  <hp@redhat.com>
13056
13057         * dbus/dbus-message.c: move inline docs into .c file
13058
13059         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
13060         so all docs are under doc/
13061         (MAN_EXTENSION): generate man pages. Use extension
13062         ".3dbus" which matches ".3qt" on my system,
13063         I guess this is OK, I don't know really.
13064         (FILE_PATTERNS): look for .c files not .h, makes sense
13065         for plain C I think
13066
13067 2002-11-22  Havoc Pennington  <hp@pobox.com>
13068
13069         * Makefile.am (SUBDIRS): rename subdir "server" to "bus"
13070         because any app can be a server, and any app can be a client,
13071         the bus is a special kind of server.
13072
13073 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
13074
13075         * Doxyfile : adding. Still needs Makefile rules to be generated
13076         automatically (just run "doxygen" in the toplevel dir for now to
13077         generate docs)
13078
13079         * dbus/dbus-message.h : Adding sample docs (javadoc since
13080         resembles gtk-doc a little more)
13081
13082         * dbus/dbus.h : Adding sample docs
13083
13084 2002-11-21  Havoc Pennington  <hp@redhat.com>
13085
13086         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION
13087         so we can allow ourselves to include files directly,
13088         instead of having to use dbus.h
13089
13090         * dbus/dbus.h: fill in
13091
13092         * dbus/dbus-message.h: sketch out a sample header file.
13093         Include griping if you include it directly instead of
13094         via dbus.h
13095
13096         * dbus/dbus-macros.h: new file with macros for extern "C",
13097         TRUE/FALSE, NULL, etc.
13098
13099         * doc/file-boilerplate.c: put include guards in here
13100
13101 2002-11-21  Havoc Pennington  <hp@redhat.com>
13102
13103         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
13104
13105         * COPYING: include the GPL as well, and license code
13106         under both AFL and GPL.
13107
13108 2002-11-21  Havoc Pennington  <hp@redhat.com>
13109
13110         * acconfig.h: get rid of this
13111
13112         * autogen.sh (run_configure): add --no-configure option
13113
13114         * configure.in: remove AC_ARG_PROGRAM to make
13115         autoconf complain less. add AC_PREREQ.
13116         add AC_DEFINE third arg.
13117
13118 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
13119
13120         * doc/Makefile.am:
13121         Fix references so we can distcheck.
13122
13123 2002-11-21  Havoc Pennington  <hp@redhat.com>
13124
13125         * Initial module creation
13126