2006-02-24 John (J5) Palmieri <johnp@redhat.com>
[platform/upstream/dbus.git] / ChangeLog
1 2006-02-24  John (J5) Palmieri  <johnp@redhat.com>
2
3         * Released 0.61
4
5 2006-02-24  John (J5) Palmieri  <johnp@redhat.com>
6         
7         * proxies.py: Fix the callchain
8
9 2006-02-24  John (J5) Palmieri <johnp@redhat.com>
10         
11         * patch from Sjoerd Simons <sjoerd at debian.org>:      
12
13         * dbus/dbus-sysdeps-util.c (_dbus_group_info_free): Moved to 
14         dbus/dbus-sysdeps.c
15
16         * dbus/dbus-userdb.c (_dbus_group_info_free_allocated): Don't
17         call _dbus_group_info_free_allocated which causes infinite loop,
18         correctly call _dbus_group_info_free
19
20 2006-02-20  Thiago Macieira <thiago.macieira@trolltech.com>
21
22         * qt/qdbusinterface_p.h:
23         * qt/qdbusinterface.cpp: Use the standard
24         org.freedesktop.DBus.Method.NoReply annotation for the "async"
25         calls instead of creating one for us.
26
27         * qt/qdbusconnection_p.h:
28         * qt/qdbusintegrator.cpp: Remove debugging code.
29
30         * qt/qdbusintegrator.cpp:
31         * qt/qdbusmessage.cpp:
32         * qt/qdbusmessage_p.h:
33         * qt/qdbusmessage.h: Change the behaviour of automatic
34         reply-sending: now a reply is always sent, unless the caller
35         didn't request one or if the user slot has already sent one.
36
37 2006-02-16  Robert McQueen  <robot101@debian.org>
38
39         * configure.in: Patch from Debian packages by Sjoerd Simons
40         <sjoerd@debian.org> to add --with-qt-moc and --with-qt3-moc
41         arguments so it's possible to build both bindings in the
42         same tree.
43
44         * qt/Makefile.am: Fix truncated value so that make dist works.
45
46 2006-02-16  Robert McQueen  <robot101@debian.org>
47
48         * acinclude.m4, configure.in: Patch from Brad Hards
49         <bradh@frogmouth.net> to avoid warnings from autoconf 1.9 by
50         improving quoting, re-ordering a few checks, and a few other
51         aesthetic tidy-ups.
52
53 2006-02-16  Robert McQueen  <robot101@debian.org>
54
55         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array):
56         Patch from Rob Taylor <rob.taylor@collabora.co.uk> to correct a bogus
57         assertion that the next element to read from the iter is fixed in
58         size. This is not the case when you are at the end of the iter,
59         because the next element type is INVALID.
60
61         * dbus/dbus-string.c (_dbus_string_init_const_len): Correct a
62         a bogus assert which means that you may not initialise a 0-length
63         string unless you provide a non-NULL pointer. This prevented
64         you from marshalling messages containing zero-length arrays in
65         some cases.
66
67         * glib/dbus-gvalue.c (demarshal_collection_array): Another patch
68         from Rob to correct bogus asserts when trying to demarshal an
69         array and get_fixed_array got you 0 elements. Append nothing to
70         the GArray in this case.
71
72         * test/glib/test-dbus-glib.c: Add a test case for round-tripping
73         an empty array via the glib bindings. Without all of the above
74         patches, this new test fails.
75
76 2006-02-16  Robert McQueen  <robot101@debian.org>
77
78         * glib/dbus-gmain.c: Make the previous commit compile.
79
80         * python/_dbus.py, python/matchrules.py: Patch from Ole Andre
81         Ravnaas <ole.andre.ravnaas@collabora.co.uk> to allow you to
82         specify sender_keyword="foo", path_keyword="bar" when adding
83         a signal listener, so that you can bind to signals generically
84         but still do something useful in your callback.
85
86         * python/dbus_bindings.pyx: Demarshal the byte type as unsigned
87         chars so that they're not cast to chars and made negative. Thanks
88         to Jakub Stachowski for reporting this and testing the fix.
89
90 2006-02-15  John (J5) Palmieri  <johnp@redhat.com>
91
92         * dbus/dbus-glib.h:
93         * glib/dbus-gmain.h:
94         (dbus_g_connection_open): new method for openning
95         a connection to an arbitrary address in the glib bindings
96
97         * ChangeLog: checkin last entry which doesn't seem to be commited
98
99 2006-02-13  John (J5) Palmieri  <johnp@redhat.com>
100
101         * tools/dbus-launch.c: Fixed sh syntax output
102
103 2006-02-13  Robert McQueen  <robot101@debian.org>
104
105         * glib/dbus-binding-tool-glib.c, glib/dbus-gmain.c,
106         glib/dbus-gsignature.c, glib/dbus-gtype-specialized.c,
107         glib/dbus-gtype-specialized.h, glib/dbus-gvalue-utils.c,
108         glib/dbus-gvalue-utils.h, glib/dbus-gvalue.c:
109         Patch from Rob Taylor <rob.taylor@collabora.co.uk> to add a big
110         missing piece of the glib bindings jigsaw puzzle. This modifies
111         the existing specialised types to have N type parameters (rather
112         than the current 1 or 2 for arrays and dictionaries respectively).
113         You can then use this to get a glib type to represent any arbitrary
114         D-Bus struct type using dbus_g_type_get_struct. The only
115         implementation of these types is with GValueArrays as before,
116         but it's now possible to store these in arrays, emit them in
117         signals, etc.
118
119 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
120
121         * dbus/dbus-signature.c (dbus_signature_iter_recurse): Correctly
122         deal with nested arrays (Bug #5823) Patch by Thiago Macieira 
123         <thiago.macieira at trolltech.com>
124
125 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
126
127         * mono/doc/Makefile.am: Fix parallel make problem with mono-doc
128         (Bug #4213) Patch from Doug Goldstein <cardoe at gentoo.org>
129
130 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
131
132         * bus/connection.c (bus_connections_expect_reply): Make
133         pending reply limit not common to all connections (Bug #5416)
134         Patch from Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>
135
136 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
137
138         * tools/dbus-launch.c: Fixed csh syntax output (Bug #5720)
139
140 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
141
142         * gcj/Makefile.am: point to correct jar command (Bug #4529)
143         patch from Doug Goldstein <cardoe at gentoo.org>
144
145 2006-02-09  Joe Shaw  <joeshaw@novell.com>
146
147         * mono/Arguments.cs: Fix a magic number in the mono bindings
148         that doesn't work on 64 bit arches.  Patch from Peter Johanson.
149
150 2006-01-27  Robert McQueen  <robot101@debian.org>
151
152         * glib/dbus-binding-tool-glib.[ch]: Patch based on Ricardo Kekki's
153         patch to use an annotation org.freedesktop.DBus.GLib.ClientCSymbol
154         when generating the client-side methods, instead of overloading
155         CSymbol which broke everything horribly. My apologies.
156
157 2006-01-27  Robert McQueen  <robot101@debian.org>
158
159         * glib/dbus-gtype-specialized.[ch], glib/dbus-gvalue-utils.c: Patch
160         by me and Rob Taylor to add a simple_free function to D-Bus map
161         and collection types, which allows those types which can be freed
162         with a GDestroyNotify (such as GHashTables and GArrays, but not
163         GPtrArrays) to be stored as the values in hashtables.
164
165         * test/glib/test-dbus-glib.c, test/glib/test-service-glib.{c,xml}:
166         Patch by Rob Taylor to add nested dicts to the glib tests to check
167         the above code works, and appears not to leak when called repeatedly.
168
169 2006-01-27  Robert McQueen  <robot101@debian.org>
170
171         * glib/dbus-gvalue.c (demarshal_valuearray): Patch from Rob Taylor
172         to free a D-Bus allocated string with dbus_free () instead of
173         g_free ().
174
175 2006-01-27  Iain Holmes  <iain@openedhand.com>
176
177         * glib/dbus-gproxy.c (dbus_g_proxy_dispose): Protect the dispose
178         method from being called multiple times.
179
180 2006-01-19  Robert McQueen  <robot101@debian.org>
181
182         * glib/dbus-binding-tool-glib.c: Patch from Rob Taylor
183         <rob.taylor@collabora.co.uk> to add support for generating bindings
184         to arrays that are represented as GPtrArrays rather than GArrays (ie
185         size-variable things, such as strings, objects, structs, etc).
186
187 2006-01-05  Robert McQueen  <robot101@debian.org>
188
189         * dbus/dbus-glib.h, glib/dbus-gproxy.c: Patch from Ricardo Kekki
190         <ricardo.kekki@movial.fi> to make it possible to inherit from
191         DBusGProxy, by splitting the DBusGProxy struct into a public part and
192         a private part, and moving the setting of the DBusGProxyManager into a
193         connection property, allowing proper GObject construction.
194
195 2006-01-05  Robert McQueen  <robot101@debian.org>
196
197         * glib/dbus-binding-tool-glib.c: Patch from Ricardo Kekki
198         <ricardo.kekki@movial.fi> to make dbus-binding-tool heed C symbol name
199         annotations when generating glib client bindings.
200
201 2005-12-19 John (J5) Palmieri  <johnp@redhat.com>
202
203         * dbus/dbus-shared.h: Call it shared constants instead of shared macros
204
205         * dbus/dbus-protocol.h: add DOxygen markup to quiet warnings
206
207 2005-12-19 John (J5) Palmieri  <johnp@redhat.com>
208
209         * dbus/dbus-shared.h: add DOxygen markup to quiet warnings
210
211 2005-12-19 John (J5) Palmieri  <johnp@redhat.com> 
212
213         * dbus/dbus-macros.h: correct DOxygen end of section (s/}@/@})
214
215 2005-12-19  Ross Burton  <ross@openedhand.com>
216
217         * doc/dbus-tutorial.xml:
218         Document the Glib client-side bindings, and list all possible annotations.
219
220 2005-12-19  John (J5) Palmieri  <johnp@redhat.com>
221
222         * dbus/bus.c (dbus_bus_release_name): Add documentation
223
224 2005-12-06  Robert McQueen  <robot101@debian.org>
225
226         * python/service.py: s/sucessful/successful/ so we're allocating to
227         and reading from the same variable. Oops.
228
229 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
230
231         * Released 0.60
232
233 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
234
235         * test/qt/Makefile.am: build from srcdir
236
237         * qt/qtconnection.cpp (requestName): Changed PROHIBIT_REPLACE to ALLOW_REPLACE
238         Note - this code is wrong and needs to be fixed by the Qt binding
239         developers.  The flags should be treated as bitfields and not enums.
240
241         * qt/qtconnection.h: Change ProhibitReplace to AllowReplace
242
243 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
244
245         * dbus/dbus-list.c (_dbus_list_insert_after_link, _dbus_list_insert_after, 
246           link_after): remove #ifdef DBUS_BUILD_TESTS since we use these methods 
247           in production code
248
249 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
250
251         * dbus/dbus-connection.c (dbus_connection_read_write): Add new
252         method for getting messages off the bus in the absence of a
253         mainloop.  This method is much like 
254         dbus_connection_read_write_dispatch except it does not dispatch
255         the messages to a registered filter function.  Instead it
256         allows a developer to process messages by directly popping
257         them off the bus.
258
259 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
260
261         * bus/desktop-file.c (parse_key_value): Ignore locales allowing 
262         the parser to continue instead of returning error
263         (bus_desktop_file_load): Do not free parser data when
264         parse_section_start or parse_key_value fails because it was 
265         already freed by parser_free (patch from Carlos Garcia Campos  
266         <carlosgc at gnome.org>)
267
268 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
269
270         * dbus/dbus-auth.c, dbus/dbus-connection.c, dbus/dbus-keyring.c,
271         dbus/dbus-server-debug-pipe.c, glib/dbus-binding-tool-glib.c
272         glib/dbus-glib-tool.c, glib/dbus-gparser.c, glib/dbus-gproxy.c
273         test/test-segfault.c, test/test-utils.c,
274         test/glib/test-dbus-glib.c, tools/dbus-cleanup-sockets.c
275         tools/dbus-launch.c, tools/dbus-tree-view.c, tools/dbus-viewer.c:
276         Various cleanup of dead code and compiler warnings (patch from
277         Kjartan Maraas <kmaraas at gnome.org>) 
278
279 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
280
281         * glib/dbus-gmain.c (connection_setup_add_watch): plugged a leak
282         (patch from Carlos Garnacho Parro <carlosg at gnome.org>
283
284 2005-11-27  Robert McQueen  <robot101@debian.org>
285
286         * python/dbus_bindings.pyx: Repair my previous commit which reverted
287         part of the preceding one. Oops. Merge patch by Johan Hedberg
288         <johan.hedberg@nokia.com> to fix marshalling of 16-bit integer values
289         on big-endian platforms.
290
291         * test/python/test-client.py: Add some 16-bit integers to the test
292         values.
293
294 2005-11-27  Carlos Garcia Campos  <carlosgc@gnome.org>
295
296         * glib/dbus-gobject.c: Append a GValue instead of a basic type in
297         method return message for property getters
298
299 2005-11-27  Robert McQueen  <robot101@debian.org>
300
301         * python/dbus_bindings.pyx: Fix a bug where doing a strict append
302         with type v of an instance of dbus.Variant(foo, type='x') caused
303         it to be boxed twice before sending over the bus.
304
305         * python/dbus_bindings.pyx, python/service.py,
306         test/python/test-client.py: Update the constants for the new
307         request_name flags, and update comments/test cases now that queueing
308         is the default action.
309
310 2005-11-22  John (J5) Palmieri  <johnp@redhat.com>
311
312         * configure.in:
313         - Change version to 0.60 for impending release
314         - upped the sonames because of ABI and API breakage
315
316 2005-11-22  John (J5) Palmieri  <johnp@redhat.com>
317
318         * configure.in: Add test/name-test/Makefile to the generated
319         Makefile list
320
321         * dbus/dbus-shared.h (#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT):
322         New flag which replaces DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT
323         (#define DBUS_NAME_FLAG_DO_NOT_QUEUE): New flag for specifying
324         not to queue an ower if it can't be the primary owner
325
326         * bus/bus.h: Add new internal BusOwner struct
327
328         * bus/driver.c (bus_driver_handle_hello): Send flags (0 for default)
329         to bus_registry_ensure and don't set the prohibit_replacement flag
330         since they are now set per BusOwner and not per name.
331         (bus_driver_handle_list_queued_owners): bus method (ListQueuedOwners) 
332         that returns the list of connections in a name's connection queue
333         
334         * bus/services.c (struct BusService): remove prohibit_replacement field
335         (struct BusOwner): new struct for keeping track of queued connections
336         and their associated flags for the queue
337         (struct BusRegistry): add a BusOwner memory pool
338         (bus_registry_new): initialize the BusOwner memory pool
339         (bus_registry_unref): free the BusOwner memory pool
340         (_bus_service_find_owner_link): new internal method for
341         searching the queue for a specific connection
342         (bus_owner_set_flags): new method for adding setting the flags on a
343         bus owner
344         (bus_owner_new): new method that creates a BusOwner object from the
345         pool and sets its flags
346         (bus_owner_ref, bus_owner_unref): ref counting for BusOwner objects
347         (bus_registry_ensure): Add the flags parameter
348         (bus_registry_acquire_service): Switch from using raw connections to
349         using the BusOwner struct
350         Add new state machine for dealing with the new set of flags
351         (bus_registry_set_service_context_table, struct OwnershipCancelData, 
352         cancel_ownership, free_ownership_cancel_data, 
353         add_cancel_ownership_to_transaction, struct OwnershipRestoreData, 
354         restore_ownership, free_ownership_restore_data, 
355         add_restore_ownership_to_transaction): Switch to using BusOwner 
356         instead of raw connections
357         (bus_service_add_owner): Add flags parameter
358         Switch to using BusOwner instead of raw connections
359         Add state machine for dealing with the new set of flags
360         (bus_service_swap_owner): Swaps the first and second owners in the
361         queue.  Used to make sure proper signals are sent when a service looses 
362         or gains primary ownership.  We never insert an owner at the top of the
363         queue.  Instead we insert it in the second position and then swap.
364         (bus_service_remove_owner): Remove the owner from the queue sending
365         out the NameLost and NameOwnerChanged signals if the we were the 
366         primary owner
367         (bus_service_get_primary_owners_connection): New method that extracts
368         the connection from the primary owner
369         (bus_service_get_primary_owner): Returns the BusOwner instead of the 
370         connection
371         (bus_service_get_allow_replacement): Changed from the old 
372         bus_service_get_prohibit_replacement method.  Checks the flags of the 
373         primary owner and returns if it can be replaced or not
374         (bus_service_set_prohibit_replacement): removed
375         (bus_service_has_owner): returns TRUE if and owner with
376         the specified connection exists in the queue
377         
378         * dbus/dbus-bus.c (dbus_bus_connection_get_unique_name): New helper
379         method that only compiles if tests are enabled.  Allows us to get the 
380         unique name of a connection so we can check it against the queue when
381         doing regression tests
382
383         * bus/activation.c (bus_activation_send_pending_auto_activate),
384         bus/dispatch.c (bus_dispatch),  
385         bus/driver.c (bus_driver_handle_get_service_owner, 
386         bus_driver_handle_get_connection_unix_user, 
387         bus_driver_handle_get_connection_unix_process_id,
388         bus_driver_handle_get_connection_selinux_security_context),
389         bus/signals.c (connection_is_primary_owner): 
390         use bus_service_get_primary_owners_connection instead of
391         bus_service_get_primary_owner
392
393         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket, 
394         _dbus_listen_unix_socket): Calculate the length of the socket
395         path and use that instead of using a fixed length which was
396         causing socket names to contain many trailing Nul bytes.
397
398         * dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c
399         (dbus_g_method_get_sender): New method for extracting the sender 
400         from a DBusGMethodInvocation
401         (dbus_g_method_return_get_reply): changed name to 
402         dbus_g_method_get_reply
403         (dbus_g_method_return_send_reply): changed name to
404         dbus_g_method_send reply
405
406         * doc/dbus-specification.xml: New docs that describe how the new
407         queueing system works and talks about the changes to the how
408         we specify socket names
409
410         * glib/examples/example-service.c, 
411         glib/examples/example-signal-emitter.c,
412         glib/examples/statemachine/statemachine-server.c:
413         Changed the RequestName flags to the new system
414
415         * test/name-test/ (test-names.c, run-test.sh, Makefile.am): New
416         regression test suite for testing various states of the new
417         queueing system
418         
419 2005-11-15  Robert McQueen  <robot101@debian.org>
420
421         * dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c: Patch from Rob
422         Taylor to add two methods, dbus_g_method_return_get_reply and
423         dbus_g_method_return_send_reply, to allow you to get the reply
424         message from a DBusGMethodInvocation, append arbitrary stuff to it,
425         and send it. The GLib bindings can't marshal a return value of
426         something like a(s) if the array is empty - ultimately they should be
427         made to heed the signature of the out arguments as the Python bindings
428         now can, but this is a workable interim solution which might have
429         other applications.
430
431 2005-11-15  Robert McQueen  <robot101@debian.org>
432
433         * bus/driver.c, bus/services.c, bus/services.h: Add a ReleaseName
434         method to org.freedesktop.DBus to release a bus name or give up
435         waiting in the queue for it.
436
437         * dbus/dbus-bus.c, dbus/dbus-bus.h, dbus/dbus-shared.h: Add a
438         dbus_bus_release_name method to send the ReleaseName method calls.
439         Add constants for the return values to dbus/dbus-shared.h.
440
441         * doc/dbus-specification.xml: Document the new ReleaseName method
442         in the specification.
443
444         * python/dbus_bindings.pyx: Add a low-level python binding for the
445         release name method.
446
447         * python/exceptions.py, python/service.py: Make freeing BusName
448         objects release the name. Add a NameExistsException, and fix a
449         bug with creating UnknownMethodException.
450
451         * test/python/test-client.py: Add tests for freeing BusName
452         objects causing names to be released.
453
454 2005-11-14  Robert McQueen  <robot101@debian.org>
455
456         * python/service.py: Include the traceback in the error reply when we
457         send an exception over the bus. _BEST_ _PATCH_ _EVER_
458
459 2005-11-14  David Zeuthen  <davidz@redhat.com>
460
461         Patch from Timo Hoenig <thoenig@suse.de>.
462
463         * bus/bus.c: I've recently investigated why the automatic reload
464         of configuration files does not work as expected.
465
466         Currently, reloading configuration files does only work when
467         running dbus-daemon with --nodaemon.  If we are running as daemon
468         we're hitting a dnotify bug once we fork the process.
469
470         We're initializing the dnotify fds before calling fork().  Once
471         the child process forked it does still have the fds (and they
472         still show up in /proc/`pidof dbus-daemon`/fd/) but we're not
473         getting SIGIO as changes are made to the configuration files.
474
475         The attached patch moves the initialization of the dnotify fds to
476         process_config_postinit().  This is safe for all current code
477         paths and solves the dnotify disfunction.  If we're running
478         dbus-daemon as daemon the fds for dnotify are now being
479         initialized after fork() for the child process.
480
481         * configure.in: The current configure.in check for dnotify probes
482         'x$target_os' for being 'xlinux-gnu'.  I've changed the check to
483         match for 'xlinux', too. Additionally I have adapted the configure
484         option's style to match with the others.
485
486 2005-11-14  Robert McQueen  <robot101@debian.org>
487
488         * python/decorators.py, python/service.py: Add a new argument to the
489         dbus.service.method decorator called sender_keyword, which if set,
490         specifies the name of an argument which will be provided the bus
491         name of the method caller.
492
493         * test/python/test-client.py, test/python/test-service.py: Add a
494         method and test to check the sender_keyword functionality.
495
496 2005-11-07  John (J5) Palmieri  <johnp@redhat.com>
497
498         * bus/driver.c (bus_driver_handle_reload_config): Make sure we send an 
499         empty reply so blocking calls don't block forever (Patch from Sjoerd 
500         Simons <sjoerd at luon.net>)
501
502         * AUTHORS: Add Robert McQueen for his work on the Python
503         Bindings and other parts of D-Bus
504
505 2005-11-07  Robert McQueen  <robot101@debian.org>
506
507         * python/decorators.py: Change emit_signal function to use the
508         signature annotation of the signal when marhsalling the arguments from
509         the service. Fix a bug where the code checking signature length
510         against argument length referenced the wrong variable.
511
512         * python/introspect_parser.py: Avoid adding the type signature of
513         signal arguments to any methods which occur after them in the
514         introspection data (!) by making the parser a little more careful
515         about its current state.
516
517         * python/service.py: Remove debug prints from last commit (again :D).
518
519         * test/python/test-client.py, test/python/test-service.py: Add test
520         signals with signature decorators to test the strict marshalling code
521         gives errors at the right time. Could do with checking the signals
522         actually get emitted too, given that the test does nothing with
523         signals at the moment...
524
525 2005-11-07  Robert McQueen  <robot101@debian.org>
526
527         * python/_dbus.py: Add WeakReferenceDictionary cache of dbus.Bus
528         instances to stop madness of creating new instances representing
529         the same bus connection all the time, rendering any tracking of
530         match rules and bus names quite meaningless. Caught a bug where
531         the private argument to SessionBus() and friends was being passed
532         in as use_default_mainloop by mistake. Still some problems with
533         multiple dbus_binding.Connection instances representing the same
534         low-level connection (eg when you use both SessionBus() and
535         StarterBus() in same process), but it's a lot better now than it
536         was.
537
538         * python/dbus_bindings.pyx: Add constants with the return values
539         for bus_request_name().
540
541         * python/service.py: Store bus name instances in a per-dbus.Bus cache
542         and retrieve the same instances for the same name, so deletion can be
543         done with refcounting. Also now throws some kind of error if you
544         don't actually get the name you requested, unlike previously...
545
546         * test/python/test-client.py: Add tests for instance caching of buses
547         and bus name objects.
548
549 2005-11-04  Robert McQueen  <robot101@debian.org>
550
551         * python/dbus_bindings.pyx, test/python/test-client.py: Fix
552         marshalling of boolean values. Add some booleans to the values in
553         the test client.
554
555         * python/decorators.py, python/service.py: Add an 'async_callbacks'
556         argument to the dbus.service.method decorator, which allows you to
557         name arguments to take two callback functions for replying with
558         return values or an exception.
559
560         * test/python/test-client.py, test/python/test-service.py: Add test
561         case using asynchronous method reply functions, both return values and
562         errors, and from within both the function itself and from a mainloop
563         callback.
564
565         * python/decorators.py, python/service.py: Perform checking that the
566         number of method/signal arguments matches the number of types in the
567         signature at class loading time, not when you first introspect the
568         class.
569
570         * python/service.py: Remove debug print left by the last commit.
571
572 2005-11-03  Robert McQueen  <robot101@debian.org>
573
574         * python/service.py: Heavy refactoring of method invocation, with
575         hopefully no effect on functionality. Nuked _dispatch_dbus_method_call
576         in favour of a new _message_cb that uses seperate functions for
577         looking up the method to call, marshalling the return values, and
578         sending exceptions as errors, and is easier to follow as a
579         consequence.  Fixes some corner cases about returning things that
580         don't match your declared out_signature, allows exceptions to define
581         _dbus_error_name and have it be sent over the bus as the error name,
582         and paves the way for cool stuff like heeding the message no reply
583         flag, asynchronous method implementations, informing the method of the
584         sender, and including backtraces in the error messages.
585
586         * test/python/test-client.py: Catch and print exceptions thrown in the
587         async callback tests, rather than passing them to the low-level
588         bindings to be ignored in a noisy and frustrating manner.
589
590 2005-11-03  Robert McQueen  <robot101@debian.org>
591
592         * python/_dbus.py, python/proxies.py, python/service.py: Add __repr__
593         functions to dbus.Bus, dbus.service.BusName and dbus.service.Object,
594         tweak others to be consistent.
595
596         * test/python/test-client.py: Tweak output of testInheritance.
597
598 2005-10-29  Robert McQueen  <robot101@debian.org>
599
600         * python/service.py: Major changes to allow multiple inheritance
601         from classes that define D-Bus interfaces:
602         
603          1. Create a new Interface class which is the parent class of
604             Object, and make the ObjectType metaclass into InterfaceType.
605         
606          2. Patch written with Rob Taylor to replace use of method_vtable
607             with code that walks the class's __MRO__ (method resolution order)
608             to behave like Python does when invoking methods and allow
609             overriding as you'd expect. Code is quite tricky because
610             we have to find two methods, the one to invoke which has the
611             right name and isn't decorated with the /wrong/ interface,
612             and the one to pick up the signatures from which is decorated
613             with the right interface.
614         
615             The same caveats apply as to normal multiple inheritance -
616             this has undefined behaviour if you try and inherit from two
617             classes that define a method with the same name but are
618             decorated with different interfaces. You should decorate
619             your overriding method with the interface you want.
620         
621          3. Replace grungy introspection XML generation code in the metaclass
622             with dictionaries that cope correctly with multiple inheritance
623             and the overriding of methods. This also uses the signature
624             decorations to provide correct introspection data, including
625             the debut appearance of the types of your return values. :D
626
627         * test/python/test-client.py, test/python/test-service.py: Add a test
628         case to try invoking an method that overrides one inherited from a
629         D-Bus interface class.
630
631 2005-10-29  Robert McQueen  <robot101@debian.org>
632
633         * python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert().
634         Add checking for the end of struct character when marshalling a
635         struct in MessageIter.append_strict.
636
637         * python/examples/example-service.py,
638         python/examples/gconf-proxy-service.py,
639         python/examples/gconf-proxy-service2.py: Update to use gobject
640         mainloop directly rather than appearing to depend on gtk.
641
642         * python/test/test-client.py, python/test/test-server.py: Remove
643         obsolete and broken test scripts for old bindings. We have up to date
644         and working tests in test/python/.
645
646 2005-10-29  Robert McQueen  <robot101@debian.org>
647
648         * python/decorators.py: Add optional arguments to the method and
649         signal decorators to allow you to specify the signature of arguments
650         and return values. Preserve the doc strings of signal functions in the
651         decorated version, for pydoc and friends.
652
653         * python/dbus_bindings.pyx, python/proxies.py: Replace the
654         parse_signature_block function with an iterable dbus.Signature()
655         type. Fix a bug in MessageIter.append_strict where you could append
656         anything by claiming it was a string.
657
658         * python/service.py: Use the out_signature decoration on methods to
659         marshal return values, meaning you no longer require dbus.Array()
660         or dbus.Dictionary() to indicate the type when returning empty
661         arrays or dictionaries. Fix a bug where exceptions which are defined
662         in __main__ are not turned into error replies.
663
664         * test/python/test-client.py, test/python/test-service.py: Add test
665         for correct marshalling of return values according to out_signature.
666         Fix a bug in the async call test where the error_handler is missing a
667         self argument.
668
669 2005-10-29  Robert McQueen  <robot101@debian.org>
670
671         * glib/Makefile.am, glib/examples/Makefile.am,
672         glib/examples/statemachine/Makefile.am: Merge patch from Ubuntu by
673         Daniel Stone to replace explicit calls to libtool with $(LIBTOOL).
674
675         * test/python/.cvsignore: Add run-with-tmp-session-bus.conf.
676
677         * tools/dbus-monitor.1, tools/dbus-monitor.c: Merge dbus-monitor patch
678         from Ubuntu by Daniel Silverstone to allow specifying match rules on
679         the command line.
680
681 2005-10-27  Ross Burton  <ross@openedhand.com>
682
683         * dbus/dbus-marshal-header.c:
684         Remove dead code.
685
686         * glib/dbus-gobject.c:
687         Stop compiler warning.
688
689 2005-10-25  Ross Burton  <ross@openedhand.com>
690
691         * dbus/dbus-auth.c:
692         * dbus/dbus-server-unix.c:
693         * dbus/dbus-transport-unix.c:
694         * glib/dbus-gmain.c:
695         * glib/dbus-gobject.c:
696         Add some const keywords.
697
698 2005-10-25  Ross Burton  <ross@openedhand.com>
699
700         * doc/dbus-specification.xml:
701         Document the NoReply annotation.
702
703         * glib/dbus-binding-tool-glib.h:
704         * glib/dbus-binding-tool-glib.c:
705         Respect the NoReply annotation.
706
707 2005-10-24  Robert McQueen <robot101@debian.org>
708
709         * python/dbus_bindings.pyx (String, MessageIter): make D-Bus strings
710         derive from unicode instead of str, and encode/decode UTF-8 when
711         marshalling/unmarshalling bus messages
712
713         * python/introspect_parser.py: encode introspection data as UTF-8
714         before passing the buffer into libxml2
715
716         * test/python/test-client.py: add unicode test strings
717
718         * test/data/valid-service-files/.cvsignore, test/python/.cvsignore:
719         ignore generated python test files
720
721 2005-10-17  John (J5) Palmieri  <johnp@redhat.com>
722
723         * glib/dbus-gvalue-utils.c (hash_free_from_gtype): handle gdouble
724         and G_TYPE_VALUE_ARRAY (DBUS_TYPE_STRUCT)
725         (gvalue_from_hash_value, hash_value_from_gvalue): handle gdouble
726
727         * glib/dbus-gvalue.c (dbus_gvalue_to_signature): add missing
728         DBUS_STRUCT_BEGIN_CHAR and DBUS_STRUCT_END_CHAR charaters
729         when constructing struct signatures
730
731         * python/_dbus.py (Bus): handle private connections using the
732         private keyword in the constructor. defaults to private=False
733         (Bus::close): new method to close a connection to the bus
734
735         * python/dbus_bindings.pyx (Connection::close): renamed method
736         was previously called disconnect
737         (bus_get): now supports getting a private connection
738
739         * python/proxies.py (ProxyMethod::__call__): check if ignore_reply
740         keyword is set to True.  if it is, execute the method without waiting
741         for a reply
742         (ProxyObject::_introspect_execute_queue): new method for executing
743         all the pending methods that were waiting for the introspect to
744         finish.  this is called when introspect either succeeds or fails
745         (ProxyObject::_introspect_error_handler): call queued methods
746
747 2005-10-14  John (J5) Palmieri  <johnp@redhat.com>
748
749         * python/dbus_bindings.pyx (MessageIter::append_strict): check for
750         STRUCT_BEGIN not TYPE_STRUCT in indicate we are marshalling a struct
751
752         * python/service.py (Object::_message_cb): handle exceptions correctly
753         by sending them over the wire to the calling app.  This makes sure
754         the client returns immediately instead of waiting the 15 seconds to
755         timeout.
756
757         * test/python/test-client.py (TestDBusBindings::testBenchmarkIntrospect): 
758         Add a test to benchmark how long it takes to introspect a service and 
759         call a method which returns a large element (pretty fast)
760
761         * test/python/test-service.py (TestObject::GetComplexArray): new test 
762         method which pushes a lot of data
763
764 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
765
766         * python/service.py(ObjectType::_reflect_on_signal, _reflect_on_method):        
767         reclaim memory outside of the loop and use del istead of just setting
768         the key to None
769
770 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
771
772         * python/service.py (ObjectType::_reflect_on_signal): Always close
773         signal tag even when there are no arguments
774
775 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
776
777         * configure.in: Set mono, mono-docs and Qt3 to default
778         to no instead of auto when building.  These bindings do not
779         have full time maintainers and will not be supported for the
780         1.0 release.
781
782 2005-10-12  John (J5) Palmieri  <johnp@redhat.com>
783
784         patches from Michael Krivoruchko <misha at sun.com>: 
785         
786         * dbus/dbus-connection.c (_dbus_connection_queue_received_message_link,
787         _dbus_connection_message_sent, 
788         _dbus_connection_send_preallocated_unlocked_no_update, 
789         _dbus_connection_pop_message_link_unlocked): handle the case when path 
790         is NULL when calling _dbus_verbose
791
792         * configure.in: check for functions getpeerucred and getpeereid
793
794         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): provides 
795         support of auth EXTERNAL on Solaris 10+ (getpeerucred), FreeBSD 4.6+, 
796         OpenBSD 3.0+ and FreeBSD 5.0+ as well as MacOSX 10.2+ (getpeereid). 
797         Patch was only tested on Solaris 10 x86 so it might be issues
798         with other platforms (i.e. BSDs and MacOSX)
799         
800
801 2005-10-05  John (J5) Palmieri  <johnp@redhat.com>
802
803         * glib/dbus-gvalue.c (marshal_variant): call _dbus_gvalue_marshal 
804         instead of marshal basic so we can handle recursive types in a variant
805
806         * test/glib/test-dbus-glib.c: Add test for marshaling recurive types
807         in variants
808
809         * test/glib/test-service-glib.c, test-service-glib.xml
810         (my_object_echo_variant [EchoVariant], 
811         my_object_process_variant_of_array_of_ints123
812         [ProcessVariantOfArrayOfInts123]): 
813         Add two test methods
814
815         * python/introspect_parser.py: New module for parsing introspect
816         data.
817
818         * python/dbus_bindings.pyx:
819         (various places): when throwing errors fix to use errormsg instead 
820         of message local variable because Pyrex can get confused with other 
821         message variables (initial patch by Robert McQueen 
822         <robert.mcqueen at collabora.co.uk>)
823         (MessageIter::parse_signature_block): new method for getting the next
824         block in a signiture.
825         (MessageIter::append_strict): new method for appending values strictly
826         using the passed in signature instead of guessing at the type
827         (MessageItter:: append_dict, append_struct, append_array): use 
828         signatures to marshal children if the signature is available
829         
830         * python/exceptions.py (IntrospectionParserException): new exception
831
832         * python/proxies.py (ProxyMethod::__call__): Marshal args with 
833         introspected signatures if available, else we fall back to the
834         old way of doing things.
835         (ProxyObject::_introspect_reply_handler ): parse introspection data
836         
837         * python/service.py (ObjectType::_reflect_on_method): Properly
838         terminate <method> if there are no args in the reflection data
839
840         * test/python/test-client.py: add tests for talking with the GLib
841         test server.  This gives us better coverage for introspection since
842         python to python will always generate arguments as variants.  It also
843         allows us to test the robustness of the GLib bindings and interlanguage
844         communications.
845
846         
847 2005-10-03  John (J5) Palmieri  <johnp@redhat.com>
848
849         * bus/driver.c (bus_driver_handle_introspect): Add signals
850         to the introspect data. (patch from Daniel P. Berrange 
851         <dan at berrange.com>)
852
853         * bus/dispatch.c (check_existent_ping): Add testcase for Ping
854         
855         * dbus/dbus-connection.c (_dbus_connection_peer_filter,
856         _dbus_connection_run_builtin_filters): Changed these to
857         be unlock_no_update functions and call 
858         _dbus_connection_send_unlocked_no_update instead of
859         dbus_connection_send to avoid locking errors.
860         
861         * doc/TODO: Removed the make Ping test TODO
862         
863 2005-09-26  John (J5) Palmieri  <johnp@redhat.com>
864
865         * dbus/Python.pyx: Fixed memory leaks when throwing errors.
866         We now copy the message from a DBusError and then free 
867         the error object befor throwing the error
868
869         * glib/dbus-glib-tool.c: removed extra comma at the end of the
870         DBusBindingOutputMode enum which was causing a warning.
871         #include <time.h> so using time_t is explicitly defined
872
873 2005-09-26  John (J5) Palmieri  <johnp@redhat.com>
874
875         * Integrate patches from Lennart Poettering <mzsqb at 0pointer.de>:
876         - dbus/dbus-bus.c
877         (internal_bus_get): new method that take over the heavy lifting
878         of dbus_bus_get and adds the ability to get a private connection
879         to the bus
880         (dbus_bus_get): wrapper to internal_bus_get that provides the same
881         interface as in previous versions
882         (dbus_bus_get_private): new method that is a wrapper to 
883         internal_bus_get to get a private connection to the bus
884
885         - dbus/dbus-bus.h
886         (dbus_bus_get_private): add as a public libdbus interface
887
888         - dbus-1.pc.in: output system_bus_default_address and 
889         sysconfdir variables so apps can use them when compiling
890
891 2005-09-23  Harald Fernengel  <harry@kdevelop.org>
892         * dbus/qt: New Qt bindings
893
894 2005-09-12  Waldo Bastian  <bastian@kde.org>
895
896         * dbus/dbus-marshal-validate.c,
897         doc/dbus-specification.xml, test/Makefile.am,
898         test/test-names.c: allow hyphens in bus names.
899
900 2005-09-11  Mark McLoughlin  <mark@skynet.ie>
901
902         * test/data/auth/fallback.auth-script: we don't
903         retry the EXTERNAL method when we know its going
904         to fail anymore.
905
906 2005-09-11  Mark McLoughlin  <mark@skynet.ie>
907
908         * dbus/dbus-connection-internal.h: rename
909         (add|remove|toggle)_(watch|timeout) to unlocked()
910         
911         * dbus/dbus-connection.c: ditto.
912         
913         * dbus/dbus-timeout.c, dbus/dbus-transport-unix.c:
914         Update some callers for the renaming.
915
916 2005-09-10  Mark McLoughlin  <mark@skynet.ie>
917
918         * dbus/dbus-auth.c: (record_mechanisms): don't
919         retry the first auth mechanism because we know
920         we're just going to get rejected again.
921         
922         * dbus/dbus-keyring.c: (_dbus_keyring_reload):
923         Fix thinko ... and what a nasty little bugger to
924         track down you were ...
925
926         * dbus/dbus-connection.c:
927         (_dbus_connection_add_watch),
928         (_dbus_connection_remove_watch): add note about
929         these needing the connection to be locked.
930         (_dbus_connection_get_dispatch_status_unlocked):
931         set status to DATA_REMAINS when we queue the
932         disconnected message.
933         
934         * bus/dispatch.c:
935         (bus_dispatch): fix warning.
936         (check_existent_service_no_auto_start):
937         Expect ChildSignaled error too.
938         (check_existent_hello_from_self): fix another
939         couple of warnings.
940         
941 2005-09-08  Joe Shaw  <joeshaw@novell.com>
942
943         Patches from James Willcox <snorp@snorp.net>
944
945         * mono/Makefile.am: Add Int16.cs and UInt16.cs
946
947         * mono/DBusType/Array.cs: Handle multidimensional arrays, and
948         support array "out" parameters.
949
950         * mono/DBusType/Int16.cs, mono/DBusType/UInt16.cs: New files,
951         for 16-bit int support.
952
953 2005-09-06  John (J5) Palmieri  <johnp@redhat.com>
954
955         * Released 0.50
956
957         * Patch from Steve Grubb:
958         - bus/activation.c (bus_activation_service_reload_test): clean up
959         some indentation
960         - dbus/dbus-keyring.c (_dbus_keyring_reload): fix conditional 
961         - dbus/dbus-message-factory.c (generate_special): fix a couple of
962         buffer overflows in the test suite.  This is non critical because
963         it can not be exploited and this code is only run when doing a 
964         make check.
965
966         * Patch from Yaakov Selkowitz: Build fixes for Cygwin
967         - configure.in: Don't check and link against kdecore, only qt headers
968         - dbus/Makefile.am: Add -no-undefined to libdbus_1_la_LDFLAGS
969         - gcj/org/freedesktop/dbus/Makefile.am:
970         add libdbus_gcj_1_la_LDFLAGS = -no-undefined
971         - glib/Makefile.am: Add -no-undefined to libdbus_glib_1_la_LDFLAGS
972         and $(DBUS_GLIB_LIBS) to dbus_binding_tool_LDADD
973         - qt/Makefile.am: Add -no-undefined to libdbus_qt_1_la_LDFLAGS
974         - tools/Makefile.am: Add platform extentions to binaries 
975         (i.e. .exe on windows)
976
977         * configure.in: 
978         - Make it so if no suitable version of python is found we only 
979         disable building python instead of exiting the configure script
980         - Require version 2.4 of glib for glib bindings
981         - Up version to 0.50
982
983         * python/__init__.py: Sync version with libdbus to (0,50,0)
984         
985 2005-09-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
986
987         * dbus/dbus-object-tree.c (find_subtree_recurse):
988         a couple of optimizations (bug #710):
989         - do a binary search in the tree
990         - insert a new child at the right place directly, no need for
991           qsort anymore
992         - do the "double alloc" thing when allocating children
993
994 2005-08-31  John (J5) Palmieri  <johnp@redhat.com>
995
996         * python/Makefile.am: Break on pyrexc errors instead of ignoring them
997
998         * python/dbus_bindings.pyx: Memory management foo
999         (global): remove hacky _user_data_references global list
1000         (GIL_safe_cunregister_function_handler): userdata now stuffed into
1001         tuples. Unref user_data
1002         (GIL_safe_cmessage_function_handler): userdata now stuffed into tuples
1003         (Connection::__del__): Remove and replace with __dealloc__ method
1004         (Connection::add_filter): Stuff user_data into a tuple.  Use Py_INCREF
1005         to keep tuple from being deallocated instead of the global var hack
1006         (Connection::register_object_path): Stuff user_data into a tuple.
1007         Use Py_INCREF to keep tuple from being deallocated instead of the 
1008         global var hack
1009         (Connection::register_fallback): Stuff user_data into a tuple.
1010         Use Py_INCREF to keep tuple from being deallocated instead of the 
1011         global var hack
1012         (GIL_safe_pending_call_notification): Don't unref the message
1013         because it gets unreffed when going out of scope.  Py_XDECREF
1014         the user_data
1015         (PendingCall::__del__): Remove and replace with __dealloc__ method
1016         (PendingCall::set_notify): ref the pending call because we will
1017         need it to stick around for when the notify callback gets called
1018         (Message::__del__): Remove and replace with __dealloc__ method
1019
1020         * python/dbus_glib_bindings.pyx (init_gthreads): Changed to 
1021         gthreads_init to match up with the dbus call
1022
1023         * python/glib.py (init_threads): Changed to threads_init to match
1024         up with gobject.threads_init().  init_threads is kept for backwards
1025         compat but will most likely be deprecated in the future
1026
1027         * test/python/test-client.py: 
1028         - revamp to use Python's unittest functionality
1029         - add async call tests
1030         - setup threads in glib and dbus so we make sure locks are working
1031         
1032 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
1033
1034         * python/dbus_bindings.pyx 
1035         (_pending_call_notification, cunregister_function_handler, 
1036         cmessage_function_handler): All callback functions have been rearranged 
1037         to workaround a bug in Pyrex when working with the GIL which is Python's 
1038         global lock when dealing with threads.  They have been split into
1039         a wrapper function (which assumes the name of the old function) and
1040         a _GIL_safe_<function name> function which contains the functionality
1041         of the old function.  This ensures that Pyrex does not write code
1042         the lock is released.
1043         
1044
1045 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
1046
1047         * python/dbus_bindings.pyx (_pending_call_notification): Obtain the
1048         GIL global lock when calling back into Python
1049
1050 2005-08-29  John (J5) Palmieri  <johnp@redhat.com>
1051
1052         * Release 0.36.2
1053
1054         * Add Havoc's patch that never got applied to HEAD (Bug #2436):
1055
1056         * bus/policy.c (bus_policy_allow_user): change default "user is
1057         allowed" to be "user has same uid as the bus itself"; any
1058         allow/deny rules will override.
1059
1060         * bus/session.conf.in: don't allow all users, since now by default
1061         the user that ran the bus can connect.
1062
1063 2005-08-26  Colin Walters  <walters@verbum.org>
1064
1065         * tools/dbus-print-message.c (print_message): Flush stdout
1066         after printing a message, so that redirecting to a file, then
1067         hitting Ctrl-C works.
1068
1069 2005-08-25  John (J5) Palmieri  <johnp@redhat.com>
1070
1071         * python/dbus_bindings.pyx: Tracked down a major memleak and fixed it
1072         (EmptyMessage): new class that subclasses Message.  This is a workaround
1073         to a Pyrex bug that fails to call __del__ when the Message object goes out
1074         of scope.  For some reason subclassing Message fixes this bug
1075         (Bus::send_with_reply_and_block): use EmptyMessage instead of Message
1076         - s/Message(_create=0)/EmptyMessage everywhere else
1077         
1078         * test/python/test-{server|client}.py: add the python/.libs directory
1079         to the lookup path so dbus_bindings and dbus_glib_bindings don't
1080         get picked up from the system
1081
1082 2005-08-25  Colin Walters  <walters@verbum.org>
1083
1084         * glib/dbus-gproxy.c (dbus_g_proxy_call): Doc update, thanks
1085         to Ryan Lortie for the suggestion.
1086
1087 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
1088
1089         * test/python: Add python regression test
1090
1091         * configure.in: Add test/python/Makefile
1092
1093         * test/Makefile.am: Add the python directory to SUBDIRS
1094
1095 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
1096
1097         * Release 0.36.1
1098
1099         * python/_dbus.py: 
1100         (Interface::connect_to_signal): propigate keywords for match on args
1101         (Bus::add_signal_receiver): Fix typo s/dbus_inteface/dbus_interface
1102
1103         * python/proxies.py (ProxyObject::connect_to_signal):
1104         propigate keywords for match on args
1105
1106         * Makefile.am: point everything to pyexecdir since python borks
1107         on multilib
1108
1109 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
1110
1111         * Release 0.36
1112
1113 2005-08-23  Colin Walters  <walters@verbum.org>
1114
1115         * test/glib/Makefile.am: Don't multiply-define EXTRA_DIST.
1116
1117 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
1118
1119         * python/dbus_glib_bindings.pyx: reorder imports and c definitions
1120         to fix some wranings. We now use dbus_bindings.DBusConnection instead
1121         of defining DBusConnection ourselves.
1122
1123 2005-08-18  John (J5) Palmieri  <johnp@redhat.com>
1124
1125         * python/dbus.pth: New path file to fix up problems when installing
1126         c libraries to lib64 and python files to lib.
1127
1128         * python/Makefile.am: install dbus.pth in the correct spot
1129
1130 2005-08-17  John (J5) Palmieri  <johnp@redhat.com>
1131         * ChangeLog: clean up my last entry a bit
1132
1133         * doc/introspect.xsl: New stylesheet for converting introspection data
1134         into browser renderable xhtml. Contributed by Lennart Poettering.
1135
1136         * doc/introspect.dtd: Fixups in the introspect format from Lennart
1137         Poettering.
1138
1139         * doc/dbus-tutorial.xml: 
1140         - Add Colin Walter to the Authors section for authoring the GLib
1141         section
1142         - Add descriptions of the new signature and type functionality
1143         in the Python complex type mapping section
1144         - Add a sidenote on the new args matching functionality in 
1145         the Python bindings
1146         - Fixed up some of the examples to use the gobject.MainLoop
1147         instead of gtk.main
1148         
1149         * python/_dbus.py:
1150         (Bus::_create_args_dict): New. Converts a hash of arg matches
1151         to a more useable format
1152         (Bus::add_signal_receiver): add a **keywords parameter for catching
1153         arg match parameters
1154         (Bus::remove_signal_receiver): add a **keywords parameter for catching
1155         arg match parameters
1156         
1157         * python/matchrules.py:
1158         (MatchTree::exec_matches): Check for arg matches
1159         (SignalMatchRule::add_args_match): New method
1160         (SignalMatchRule::execute): Added args_list parameter as an optimization
1161         so we don't have to marshal the args more than once
1162         (SignalMatchRule::match_args_from_list): New method that checks to see
1163         if the rule's arg matches match an argument list.  Only arguments
1164         set in the rule are checked.
1165         (SignalMatchRule::match_args_from_rule): New method that checks to see
1166         if the rule's arg matches match another rule's.  All args have to match
1167         in order for this method to return true.  If either rule has more args
1168         then it is not a match.
1169         (SignalMatchRule::is_match): Add args match
1170         (SignalMatchRule::repr): Add args to the final output if they exist
1171
1172 2005-08-17  Ross Burton  <ross@burtonini.com>
1173
1174         * glib/dbus-gproxy.c:
1175         (dbus_g_proxy_call_no_reply): unref the message once sent.
1176         (dbus_g_proxy_call): protect against NULL proxy.
1177
1178 2005-08-16  John (J5) Palmieri  <johnp@redhat.com>
1179
1180         * python/__init__.py: Version updated (0, 43, 0)
1181         
1182         * python/dbus_bindings.pyx: 
1183         - Fixed type objects to have self passed into __init__
1184         - Added the Variant type
1185         - Add the ability to specify types or signatures for Array, Variant 
1186         and Dictionary
1187         (Connection::send_with_reply_handlers): return a PendingCall object
1188         (_pending_call_notification): handle the case when an error is returned 
1189         without an error message in the body
1190         (MessageIter::get_boolean): return True or False instead of an integer
1191         (MessageIter::python_value_to_dbus_sig): add direct checking of types 
1192         and add checks for objects with embeded signatures or types (Array, 
1193         Variant and Dictionary)
1194         (MessageIter::append_byte): handle case when the value is a dbus.Byte
1195         (MessageIter::append_dict): handle embeded types or signatures
1196         (MessageIter::append_array): handle embeded types or signatures
1197         (MessageIter::append_variant): new method
1198         
1199         * python/proxies.py:
1200         (DeferedMethod): New. Dummy executable object used when queuing calls 
1201         blocking on introspection data
1202         (ProxyMethod::__call__): add the timeout keyword for specifying longer 
1203         or shorter timeouts for method calls
1204         (ProxyObject): Add first pass at an introspection state machine
1205         (ProxyObject::__init__): Add introspect keyword for turing off an on 
1206         introspection. 
1207         (ProxyObject::_Introspect): Internal Introspect call that bypasses 
1208         the usual mechanisms for sending messages.  This is to avoid a deadlock
1209         where the Intospect call would be queued waiting for the Introspect 
1210         call to finish ;-)
1211         (ProxyObject::_introspect_reply_handler): New.  This method is called 
1212         when introspection returns with no error
1213         (ProxyObject::_introspect_error_handler): New.  This method is called 
1214         when introspection encounters an error
1215         (ProxyObject::__getattr__): Code to handle different introspection 
1216         states.  Queue async calls or block blocking calls if we are 
1217         introspecting.  Pass through as normal if we are not or are done with 
1218         introspecting.
1219         
1220         * python/service.py: Import signal and method from decorators.py
1221
1222         * python/types.py: Add Variant type
1223
1224 2005-08-16  Colin Walters  <walters@verbum.org>
1225
1226         * glib/dbus-gobject.c (dbus_set_g_error): Don't lose if the
1227         DBusError message is NULL.
1228
1229 2005-08-09  Havoc Pennington  <hp@redhat.com>
1230
1231         * dbus/dbus-errors.c: apply patch from Timo Teras to make a
1232         malloc'd copy of the name parameter
1233
1234 2005-08-09  Havoc Pennington  <hp@redhat.com>
1235
1236         * dbus/dbus-message.c (dbus_message_set_reply_serial): print
1237         warning if the reply serial is set to 0
1238
1239 2005-08-04  Colin Walters  <walters@verbum.org>
1240
1241         * glib/dbus-gvalue-utils.h (_dbus_g_type_specialized_builtins_init)
1242         (dbus_g_type_is_fixed, dbus_g_type_fixed_get_size)
1243         (dbus_gvalue_set_from_pointer, dbus_g_hash_table_value_foreach)
1244         (dbus_g_hash_table_insert_values, dbus_g_hash_table_insert_steal_values)
1245         (dbus_gtype_is_valid_hash_key, dbus_gtype_is_valid_hash_value)
1246         (dbus_g_hash_func_from_gtype, dbus_g_hash_free_from_gtype)
1247         (dbus_g_hash_equal_from_gtype, dbus_gvalue_stor, dbus_gvalue_take):
1248         * glib/dbus-gvalue.h (dbus_g_value_types_init)
1249         (dbus_gvalue_demarshal, dbus_gvalue_demarshal_variant)
1250         (dbus_gvalue_demarshal_message, dbus_gvalue_marshal):
1251         
1252         Prefix name with _ to ensure they're not exported.  All callers
1253         updated.
1254
1255         * glib/dbus-gvalue.c (typecode_to_gtype)
1256         (dbus_typecode_maps_to_basic, basic_typecode_to_gtype)
1257         (signature_iter_to_g_type_dict)
1258         (signature_iter_to_g_type_array)
1259         (dbus_gtype_from_signature_iter, dbus_gtype_from_signature)
1260         (dbus_gtypes_from_arg_signature):
1261         Move to dbus-gsignature.c.
1262
1263         * glib/dbus-binding-tool-glib.c (dbus_binding_tool_output_glib_server): Call
1264         dbus_g_type_specialized_builtins_init instead of dbus_g_value_types_init.
1265         (dbus_binding_tool_output_glib_client): Ditto.
1266
1267         * glib/Makefile.am (DBUS_GLIB_INTERNALS): Add dbus-gsignature.c
1268         and dbus-gsignature.h
1269
1270         * test/glib/test-service-glib.c (my_object_rec_arrays): Delete
1271         unused variable.
1272
1273 2005-08-03  Colin Walters  <walters@verbum.org>
1274
1275         * glib/dbus-gobject.c: Add tests on hardcoded object info; this should
1276         catch any incompatible changes accidentally made.
1277
1278 2005-08-03  Havoc Pennington  <hp@redhat.com>
1279
1280         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): fix
1281         typo, from Julien Puydt
1282
1283         * bus/connection.c (bus_connection_disconnected): we were always
1284         doing a wait_for_memory due to a buggy loop, found by Timo Hoenig
1285
1286 2005-08-01  Colin Walters  <walters@verbum.org>
1287
1288         Patch from Joe Markus Clarke:   
1289         
1290         * glib/dbus-gidl.c (property_info_unref, arg_info_unref): Fix
1291         use-after-free.
1292
1293 2005-08-01  Colin Walters  <walters@verbum.org>
1294         
1295         Patch from Joe Markus Clarke:   
1296         
1297         * tools/dbus-send.c (main): 
1298         
1299         Don't use C99 style initializers (bug #3933).
1300         
1301 2005-08-01  Colin Walters  <walters@verbum.org>
1302
1303         Patch from Joe Markus Clarke:   
1304
1305         * glib/dbus-gvalue.c (dbus_g_value_types_init): 
1306         * glib/dbus-gvalue-utils.c (dbus_g_type_specialized_builtins_init) 
1307         * glib/dbus-gobject.c (write_interface):
1308
1309         Don't use C99 style initializers (bug #3933).
1310
1311 2005-07-31  Havoc Pennington  <hp@redhat.com>
1312
1313         * tools/dbus-viewer.c (load_child_nodes): fix invocation of
1314         dbus_g_proxy_call, fix from Piotr Zielinski bug #3920
1315
1316 2005-07-30  Havoc Pennington  <hp@redhat.com>
1317
1318         * fix a bunch of Doxygen warnings and mistakes
1319
1320 2005-07-30  Havoc Pennington  <hp@redhat.com>
1321
1322         * dbus/dbus-sysdeps.c (_dbus_string_parse_uint): remove #ifdef
1323         DBUS_BUILD_TESTS since it's now used in production code
1324
1325 2005-07-29  Havoc Pennington  <hp@redhat.com>
1326
1327         * test/glib/test-profile.c (write_junk): initialize the junk
1328         buffer so valgrind doesn't have a breakdown
1329
1330 2005-07-29  Havoc Pennington  <hp@redhat.com>
1331
1332         * bus/signals.c (bus_signals_test): add match_rule_equal() tests
1333         (match_rule_matches): remove unused arg
1334         (test_matching): add tests for match_rule_matches()
1335
1336         * bus/signals.c (bus_match_rule_parse_arg_match): add ability to
1337         do arg0='foo' arg5='bar' in the match rules
1338         (match_rule_matches): don't match if the arg0='foo' doesn't match.
1339
1340         * dbus/dbus-protocol.h (DBUS_MAXIMUM_MATCH_RULE_ARG_NUMBER): add this
1341
1342 2005-07-29  Ross Burton  <ross@openedhand.com>
1343
1344         * dbus/dbus-connection.c:
1345         Don't create a DBusCondVar which is never used.
1346
1347 2005-07-27  Ross Burton  <ross@openedhand.com>
1348
1349         * dbus/dbus-message.c:
1350         Reduce the size of the maximum cached message to 10K.
1351
1352 2005-07-25  Ross Burton  <ross@openedhand.com>
1353
1354         * glib/dbus-gproxy.c:
1355         Remove matches when all proxies are unregistered.
1356
1357 2005-07-24  Colin Walters  <walters@verbum.org>
1358
1359         * glib/dbus-gvalue.c (signature_iter_to_g_type_array): Don't require
1360         typedata; recursive arrays won't have it.
1361
1362         * test/glib/test-dbus-glib.c:
1363         * test/glib/test-service-glib.c:
1364         * test/glib/test-service-glib.xml: Add recursive arrays tests.
1365         
1366 2005-07-20  John (J5) Palmieir  <johnp@redhat.com>
1367
1368         * python/_dbus.py, _util.py, decorators.py, extract.py, matchrules.py.
1369         proxies.py, service.py: Cleanup of code after running it through the
1370         pyflakes code checker mostly dealing with undefined names.  
1371         (Bug #3828, Patch from Anthony Baxter <anthony@interlink.com.au>)
1372
1373 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
1374
1375         * NEWS: Update to 0.35.2
1376
1377 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
1378
1379         * python/_dbus.py: Remove import of the dbus.services
1380         module as it no longer exists (patch from Dimitur Kirov)
1381
1382         * python/service.py (Object::__init__): Fixed typo
1383         s/name/bus_name (patch from Dimitur Kirov)
1384
1385         * python/examples/example-signal-emitter.py: import dbus.glib
1386         to get the main loop and use glib mainloop instead of gtk so
1387         X doesn't have to be running.
1388
1389         * python/examples/example-signal-recipient.py: import dbus.glib
1390         to get the main loop and use glib mainloop instead of gtk so
1391         X doesn't have to be running. Import the decorators module
1392         directly.
1393
1394         * test/glib/Makefile.am:  Added DIST_EXTRA files that distcheck
1395         didn't pick up on but are needed to build
1396
1397         * configure.in: upped version to 0.35.2
1398
1399         * bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h:
1400         added Colin Walters' SELinux API rename patch from head 
1401         s/unix sercurity context/selinux security context/
1402
1403 2005-07-16  John (J5) Palmieri  <johnp@redhat.com>
1404
1405         * python/Makefile.am: dbus_binding.pxd.in should be included 
1406         in EXTRA_DIST not dbus_binding.pxd
1407         fix up $(srcdir) hopefully for the last time
1408
1409         * NEWS: Update to 0.35.1
1410
1411 2005-07-16  Colin Walters  <walters@verbum.org>
1412
1413         * bus/driver.c (bus_driver_handle_get_connection_selinux_security_context): Renamed
1414         from bus_driver_handle_get_connection_unix_security_context.  Update for
1415         error usage.
1416         (message_handlers): Update for renames.
1417
1418         * bus/selinux.c (bus_selinux_allows_send): Handle OOM on
1419         _dbus_string_init failure correctly.
1420         (bus_selinux_append_context): Convert SID to context.  Append it
1421         as a byte array.
1422         (bus_selinux_shutdown): Handle the case where bus_selinux_full_init
1423         hasn't been called.
1424
1425         * bus/selinux.h: Update prototype.
1426
1427         * dbus/dbus-protocol.h (DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN): Renamed
1428         from DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN.
1429
1430 2005-07-15  Colin Walters  <walters@verbum.org>
1431
1432         * doc/TODO: Add note about convenience wrappers.
1433
1434 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1435
1436         * NEWS: Update to 0.35
1437
1438 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1439
1440         * glib/Makefile.am: Add make-dbus-glib-error-switch.sh to EXTRA_DIST
1441         so distcheck doesn't fail
1442
1443         * glib/examples/Makefile.am: Add example-service.xml and 
1444         example-signal-emitter.xml to EXTRA_DIST so distcheck doesn't fail
1445
1446         * glib/examples/statemachine/Makefile.am: Add statemachine.xml and
1447         statemachine-server.xml to EXTRA_DIST so distcheck doesn't fail
1448
1449         * python/Makefile.am: Preprend $(srcdir)/ to source files so the
1450         compiler looks in the right places during distcheck
1451
1452 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1453
1454         * glib/example/Makefile.am: Fix a typo which cause make distcheck
1455         to fail
1456
1457 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1458
1459         * python/examples/example-service.py,
1460         python/examples/example-signal-emitter.py: Fixed up examples
1461         for API changes
1462
1463 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1464
1465         * python/__init__.py: Upped to version (0,42,0) because of
1466         the API change
1467
1468 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1469
1470         * ChangeLog: fix date in last entry
1471
1472         * configure.in, bus/system.conf.in: add the ability to configure 
1473         the system bus user at compiletime with the --with-dbus-user flag
1474         (patch from Kristof Vansant)
1475
1476 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1477
1478         * bus/dispatch.c, test/test-service.c: Add testcase
1479         for sending messages to oneself (TODO item).
1480
1481         * python/service.py (class Object): Swap ordering of bus_name 
1482         and object_path parameters to better support inheritance.
1483
1484         * doc/dbus-tutorial.xml: change Python docs to reflect change
1485         in parameter ordering and fix the inheritance section.
1486
1487         * doc/TODO: remove sending message to oneself TODO item
1488
1489 2005-07-15  Ross Burton  <ross@openedhand.com>
1490
1491         * glib/dbus-gproxy.c:
1492         Fix a leak when calling methods via the proxy.
1493
1494 2005-07-15  Colin Walters  <walters@verbum.org>
1495
1496         * bus/selinux.c (bus_selinux_append_context): Wrap in
1497         HAVE_SELINUX.
1498
1499 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
1500
1501         * python/_dbus.py (Bus::remove_signal_receiver):
1502         don't add a callback to the match if none has been passed in
1503         
1504         * python/matchrules.py (SignalMatchTree::remove): if the rule
1505         being matched does not have a callback treat it as a wildcard
1506         fix matching logic
1507
1508         * doc/dbus-tutorial.xml: Add Python tutorial
1509
1510 2005-07-14  Colin Walters  <walters@verbum.org>
1511
1512         * bus/driver.c
1513         (bus_driver_handle_get_connection_unix_security_context): New function.
1514         (message_handlers): Add.
1515
1516         * bus/selinux.c (bus_selinux_append_context): New function; appends
1517         security context to message.
1518
1519         * bus/selinux.h: Prototype.
1520
1521         * dbus/dbus-protocol.h (DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN): New.
1522
1523 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
1524
1525         * bus/activation.c: clean up all tabs to be 8 spaces 
1526         (bus_activation_activate_service): make sure we clean up
1527         if activation fails
1528
1529         * bus/dispatch.c: clean up all tabs to be 8 spaces 
1530         (check_shell_fail_service_auto_start): New function
1531         tests to make sure we get fail properly when trying to auto start a service
1532         with a faulty command line
1533         (check_shell_service_success_auto_start): New function tests to make sure
1534         auto started services get the arguments on the command line
1535
1536         * test/test-shell-service.c: Added service for testing auto-starting with 
1537         command line arguments
1538
1539         * test/data/valid-service-files/debug-shell-echo-fail.service.in, 
1540         test/data/valid-service-files/debug-shell-echo-success.service.in:
1541         Added service files for testing auto-starting with command line arguments
1542
1543         * */.cvsignore: added a bunch of generated files to various .cvsignore files
1544
1545 2005-07-14  Rodrigo Moya  <rodrigo@novell.com>
1546
1547         * dbus/dbus-shell.[ch]: copy/pasted code from GLib.
1548         
1549         * dbus/Makefile.am: added new files to build.
1550
1551         * bus/activation.c (bus_activation_activate_service): support
1552         activation commands with parameters.
1553
1554         * test/shell-test.c: added test program for the shell parsing
1555         code.
1556
1557 2005-07-13  David Zeuthen  <davidz@redhat.com>
1558
1559         * tools/dbus-send.c (append_arg, type_from_name): Also support 16 and
1560         64 bit signed and unsigned parameters
1561
1562 2005-07-13  John (J5) Palmieri  <johnp@redhat.com>
1563
1564         * python/.cvsignore: remove dbus_bindings.pyx, add dbus_bindings.pxd
1565
1566         * python/service.py (class Name): renamed BusName to make it clearer
1567         what the object is for (a name on the bus)
1568
1569         * python/examples/example-service.py,
1570         python/examples/example-signal-emitter.py: change the Name object to
1571         BusName
1572
1573 2005-07-12  Colin Walters  <walters@verbum.org>
1574
1575         Patch from Jim Gettys <Jim.Gettys@hp.com>.
1576
1577         * tools/dbus-launch.c: Include sys/select.h.
1578
1579 2005-07-12  John (J5) Palmieri  <johnp@redhat.com>
1580         * python/dbus_bindings.pyx.in: removed
1581
1582         * python/dbus_bindings.pyx: Added.
1583         - Fixed some memleaks (patch from 
1584         Sean Meiners <sean.meiners@linspireinc.com>)
1585         - Broke out the #include "dbus_h_wrapper.h" and put it in its
1586         own pxd file (Pyrex definition)
1587         - Broke out glib dependancies into its own pyx module
1588         
1589         * python/dbus_bindings.pdx: Added.
1590         - Defines C class Connection for exporting to other modules
1591
1592         * python/dbus_glib_bindings.pyx: Added.
1593         - New module to handle lowlevel dbus-glib mainloop integration
1594
1595         * python/glib.py: Added.
1596         - Registers the glib mainloop when you import this module
1597
1598         * python/services.py: Removed (renamed to service.py)
1599         
1600         * python/service.py: Added.
1601         - (class Server): renamed Name
1602
1603         * python/__init__.py: Bump ro version (0,41,0)
1604         -don't import the decorators or service module
1605         by default.  These now reside in the dbus.service namespace
1606
1607         * python/_dbus.py (Bus::__init__): Add code run the main loop 
1608         setup function on creation 
1609
1610         * python/examples/example-service.py,
1611         python/examples/example-signal-emitter.py: update examples
1612
1613         * python/examples/gconf-proxy-service.py,
1614         python/examples/gconf-proxy-service2.py: TODO fix these up
1615
1616         * doc/TODO: Addition
1617         - Added a Python Bindings 1.0 section
1618         - added "Add match on args or match on details to match rules"
1619
1620
1621 2005-07-12  Colin Walters  <walters@verbum.org>
1622
1623         * glib/examples/statemachine/Makefile.am (statemachine-server-glue.h) 
1624         (statemachine-glue.h): 
1625         * glib/examples/Makefile.am (example-service-glue.h) 
1626         (example-signal-emitter-glue.h): 
1627         * glib/Makefile.am (dbus-glib-error-switch.h): 
1628         Add libtool --mode=execute so we use the built library instead
1629         of any installed one.
1630
1631 2005-07-11  Colin Walters  <walters@verbum.org>
1632
1633         * glib/dbus-gvalue.c (struct _DBusGValue): Delete.
1634         (dbus_g_value_types_init): Remove assertion.
1635         (dbus_g_value_get_g_type, dbus_g_value_open)
1636         (dbus_g_value_iterator_get_values, dbus_g_value_get_signature)
1637         (dbus_g_value_copy, dbus_g_value_free): Delete unimplemented
1638         functions related to DBusGValue.  Now we marshal/demarshal
1639         structures as GValueArray.
1640         (dbus_gtype_from_signature_iter): Return G_TYPE_VALUE_ARRAY for
1641         structures.
1642         (signature_iter_to_g_type_array): Don't call
1643         signature_iter_to_g_type_struct.
1644         (signature_iter_to_g_type_struct): Delete.
1645         (dbus_gvalue_to_signature): Delete.
1646         (dbus_gvalue_to_signature): New function with same name as other
1647         one; we can convert structures to signatures.
1648         (demarshal_valuearray): New function.
1649         (get_type_demarshaller): Use it.
1650         (demarshal_recurse): Delete.
1651         (marshal_proxy): New function.
1652         (marshal_map): Warn if we can't determine signature from type.
1653         (marshal_collection_ptrarray): Ditto.
1654         (marshal_collection_array): Ditto.
1655         (get_type_marshaller): Use marshal_valuearray.
1656         (marshal_recurse): Delete.
1657         (_dbus_gvalue_test): Add some tests.
1658
1659         * dbus/dbus-glib.h (struct _DBusGValueIterator): 
1660         (dbus_g_value_get_g_type, DBUS_TYPE_G_VALUE)
1661         (dbus_g_value_open, dbus_g_value_iterator_get_value)
1662         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
1663         (dbus_g_value_free): Remove prototypes.
1664
1665         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_lookup_function): Handle
1666         G_TYPE_VALUE_ARRAY.
1667
1668         * glib/examples/example-service.c:
1669         * glib/examples/example-client.c: Implement GetTuple.
1670
1671         * test/glib/test-dbus-glib.c:
1672         * test/glib/test-service-glib.c:
1673         * test/glib/test-service-glib.xml: Add structure tests.
1674
1675 2005-07-10  Colin Walters  <walters@verbum.org>
1676
1677         * doc/TODO: Knock off some GLib items with this patch.
1678
1679         * glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error) 
1680         (_dbus_gvalue_signals_error): New functions.
1681
1682         * glib/dbus-gvalue-utils.h: Prototype them.
1683
1684         * glib/dbus-gobject.c (arg_iterate): Update to handle return vals
1685         and change to not output const/retval flags for input args.  All
1686         callers updated.
1687         (invoke_object_method): Refactor to handle return values.  Add
1688         some more comments in various places.  Remove debug g_print.
1689
1690         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New.
1691
1692         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name):
1693         Handle G_TYPE_NONE.
1694         (compute_gsignature): New function; refactored from code from
1695         compute_marshaller and compute_marshaller_name.  Enhance to
1696         handle return values and async ops more cleanly.  Update for
1697         async ops returning NONE instead of BOOLEAN.
1698         (compute_marshaller, compute_marshaller_name): Call compute_gsignature
1699         and output appropriate string.
1700         (generate_glue): Handle return value annotation.  Also don't dump
1701         constness flag for input arguments.
1702
1703         * glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains
1704         files shared between installed library and utilities.
1705         (libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS.
1706         (libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the
1707         binding tool can access gtype utility functions.
1708
1709         * test/glib/test-service-glib.c: 
1710         * test/glib/test-service-glib.xml: 
1711         * test/glib/test-dbus-glib.c: Add some tests for return values.
1712
1713 2005-07-09  Colin Walters  <walters@verbum.org>
1714
1715         * glib/dbus-gparser.c (parse_annotation): Add annotations to
1716         argument if available, not method.
1717
1718         * glib/dbus-gobject.c (arg_iterate): More verbose warnings.
1719         (invoke_object_method): First, remove some redundant
1720         GValues (object_value, error_value) in favor of working on
1721         array directly.  Second, rework constness to be less buggy.
1722         Now we iterate directly over the argument metadata instead
1723         of parallel iterating over output signature and metadata.
1724
1725         * glib/dbus-glib-tool.h: Add INVALID_ANNOTATION error.
1726
1727         * glib/dbus-binding-tool-glib.c (generate_glue): Barf on const
1728         annotation on input args.
1729         
1730 2005-07-09  Colin Walters  <walters@verbum.org>
1731
1732         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
1733         Define.
1734
1735         * glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
1736         annotation.
1737
1738         * glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
1739         (method_dir_signature_from_object_info): Handle arg_iterate change.
1740         (write_interface): Ditto.
1741         (lookup_object_info): Don't barf if format_version is > 0.
1742         (invoke_object_method): Handle arg constness.
1743
1744         * glib/dbus-gidl.c (struct ArgInfo): Add annotations.
1745         (arg_info_new): Create.
1746         (arg_info_unref): Destroy.
1747         (arg_info_get_annotations, arg_info_get_annotation) 
1748         (arg_info_add_annotation): New functions.
1749
1750         * glib/dbus-gidl.h: Prototype them.
1751
1752         * glib/dbus-gparser.c (parse_annotation): Allow annotations in
1753         args, disallow them in properties.
1754         (parse_annotation): Handle arg annotations.
1755
1756         * test/glib/test-service-glib.xml: 
1757         * test/glib/test-service-glib.c: Update to make some methods
1758         const.
1759
1760 2005-07-08  Colin Walters  <walters@verbum.org>
1761
1762         * test/glib/test-service-glib.xml: 
1763         * test/glib/test-service-glib.c:
1764         * test/glib/test-dbus-glib.c: Test a{sv}.
1765
1766         * glib/examples/statemachine/statemachine.c:
1767         * glib/examples/statemachine/statemachine-server.c:
1768         * glib/examples/statemachine/statemachine-client.c: Fix some bugs,
1769         add progress bar, etc.
1770
1771         * glib/dbus-gvalue.c (register_array, register_dict): Delete; not
1772         needed anymore due to generic array/map marshalling.
1773         (dbus_g_value_types_init): Don't register basic arrays or the
1774         string/string hash.
1775         (dbus_gtype_from_signature_iter): Don't try to recurse into
1776         variants.
1777         (dbus_gtype_to_signature): Check collection/map before type
1778         metadata.
1779         (demarshal_garray_basic): Renamed to demarshal_collection_array.
1780         (demarshal_ghashtable): Renamed to demarshal_map; fix to use new
1781         generic map creation/append functions instead of hash table
1782         specifically.
1783         (get_type_demarshaller): Handle maps.
1784         (demarshal_collection): Dispatch on collection type to either
1785         demarshal_collection_ptrarray or demarshal_collection_array.
1786         (get_type_marshaller): Handle maps.
1787         (marshal_collection): Dispatch collection type to either
1788         marshal_collection_ptrarray or marshal_collection_array.
1789         (_dbus_gvalue_test): New test.
1790
1791         * glib/dbus-gvalue-utils.c (unset_and_free_g_value): New function.
1792         (hash_free_from_gtype): Use it to free GValues.
1793         (hashtable_append): New function.
1794         (ptrarray_append): Fix prototype.
1795         (slist_append): Ditto.
1796         (_dbus_gvalue_utils_test): Extend tests.
1797
1798         * glib/dbus-gtype-specialized.c
1799         (dbus_g_type_specialized_init_append): Renamed from
1800         dbus_g_type_specialized_collection_init_append.  Remove const from
1801         value, since we steal it.
1802         (dbus_g_type_specialized_map_append): New function.
1803
1804         * glib/dbus-gtype-specialized.h: Update prototypes.
1805         Add DBusGTypeSpecializedMapAppendFunc.
1806
1807         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
1808         _dbus_gvalue_test.
1809         
1810         * glib/dbus-gtest.h: Prototype it.
1811
1812 2005-07-08  Ross Burton  <ross@openedhand.com>
1813
1814         * dbus/dbus-glib.h:
1815         Add DBysGAsyncData for the async bindings.
1816
1817         * glib/dbus-binding-tool-glib.c:
1818         Re-enable the async bindings.
1819
1820         * test/glib/test-dbus-glib.c:
1821         Add a test for the generated async bindings.
1822
1823 2005-07-08  Colin Walters  <walters@verbum.org>
1824
1825         * doc/TODO: Update GLib todo bits, also add a post-1.0 TODO for a
1826         connection concept.
1827         
1828 2005-07-08  Colin Walters  <walters@verbum.org>
1829         
1830         * tools/Makefile.am: Kill of print-introspect in favor of using
1831         dbus-send --print-reply=literal.
1832
1833         * test/glib/test-service-glib.xml: 
1834         * test/glib/test-service-glib.c (my_object_get_objs): New test
1835         for "ao".
1836
1837         * test/glib/test-dbus-glib.c (echo_received_cb): Free echo data.
1838         (main): Test GetObjs.
1839
1840         * glib/examples/statemachine/Makefile.am:
1841         * glib/examples/statemachine/sm-marshal.list:
1842         * glib/examples/statemachine/statemachine-client.c:
1843         * glib/examples/statemachine/statemachine-server.c:
1844         * glib/examples/statemachine/statemachine-server.xml:
1845         * glib/examples/statemachine/statemachine.c:
1846         * glib/examples/statemachine/statemachine.h:
1847         * glib/examples/statemachine/statemachine.xml:
1848
1849         New example.
1850
1851         * glib/examples/example-service.c (main): Move invocation
1852         of dbus_g_object_type_install_info earlier, to emphasize it
1853         should only be done once.
1854
1855         * glib/examples/example-signal-emitter.c (main): Ditto.
1856
1857         * glib/examples/Makefile.am (SUBDIRS): Include statemachine.
1858
1859         * glib/dbus-gvalue.h (dbus_gtype_to_signature)
1860         (dbus_gvalue_marshal): Update prototypes.
1861
1862         * glib/dbus-gvalue.c: Update all marshalling functions to take
1863         const GValue instead of GValue.
1864         (signature_iter_to_g_type_array): Return a GPtrArray for nonfixed
1865         types.
1866         (dbus_gvalue_to_signature): Update for dbus_gtype_to_signature
1867         change.
1868         (dbus_gtype_to_signature): Handle generic collecitons and maps.
1869         Return a newly-allocated string.
1870         (demarshal_proxy, demarshal_object_path, demarshal_object)
1871         (demarshal_strv, demarshal_ghashtable): Set error, don't assert if
1872         we get the wrong types from message.
1873         (get_type_demarshaller): New function, extracted from
1874         dbus_gvalue_demarshal.
1875         (demarshal_collection): New function, demarshals generic
1876         collection.
1877         (dbus_gvalue_demarshal): Just invoke result of
1878         get_type_demarshaller.  Throw error if we don't have one.
1879         (marshal_garray_basic): Abort on OOM.
1880         (get_type_marshaller): New function, extracted from
1881         dbus_gvalue_marshal.
1882         (collection_marshal_iterator, marshal_collection): New functions;
1883         implements generic marshalling for an iteratable specialized
1884         collection.
1885         (dbus_gvalue_marshal): Just invoke result of get_type_marshaller.
1886
1887         * glib/dbus-gvalue-utils.c (gvalue_from_ptrarray_value): Handle
1888         G_TYPE_STRING.
1889         (ptrarray_value_from_gvalue): Ditto.
1890         (ptrarray_append, ptrarray_free): New functions.
1891         (slist_constructor, slist_iterator, slist_copy_elt, slist_copy) 
1892         (slist_append, slist_end_append, slist_free): New functions.
1893         (dbus_g_type_specialized_builtins_init): Add append fuctions
1894         for GPtrArray and GSList.  Register GSList.
1895         (test_specialized_hash, _dbus_gvalue_utils_test): New functions.
1896
1897         * glib/dbus-gtype-specialized.h (DBusGTypeSpecializedAppendContext):
1898         New.
1899         (dbus_g_type_specialized_collection_init_append)
1900         (dbus_g_type_specialized_collection_append)
1901         (dbus_g_type_specialized_collection_end_append): Prototype.
1902         (DBusGTypeSpecializedCollectionVtable): Add append_func and
1903         end_append_func.
1904
1905         * glib/dbus-gtype-specialized.c (dbus_g_type_specialized_collection_init_append) 
1906         (dbus_g_type_specialized_collection_append) 
1907         (dbus_g_type_specialized_collection_end_append): New functions.
1908         (dbus_g_type_map_value_iterate): Take const GValue.
1909         (dbus_g_type_collection_value_iterate): Ditto.
1910
1911         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
1912         _dbus_gvalue_utils_test.
1913         
1914         * glib/dbus-gtest.h: Prototype it.
1915
1916         * glib/dbus-gproxy.c (dbus_g_proxy_manager_filter): Avoid
1917         using uninitialized owner_list.
1918         (dbus_g_proxy_begin_call_internal): Move return_if_fail to
1919         public API.
1920         (dbus_g_proxy_end_call_internal): Update to use error set
1921         from dbus_gvalue_demarshal instead of setting it here.
1922         (dbus_g_proxy_begin_call): Move return_if_fail here.
1923
1924         * glib/dbus-gobject.c (write_interface): Update for
1925         dbus_gtype_to_signature returning new string.
1926
1927         * configure.in: Add glib/examples/statemachine.
1928
1929 2005-07-08  Joe Shaw  <joeshaw@novell.com>
1930
1931         * configure.in: Add a configure option, --with-console-auth-dir
1932         
1933         * dbus/dbus-sysdeps-util.c (_dbus_user_at_console): Use the
1934         new setting.  Patch from Kay Sievers.
1935
1936 2005-07-06  Colin Walters  <walters@verbum.org>
1937
1938         * dbus/dbus-glib.h (DBusGPendingCall, DBusGPendingCallNotify)
1939         (DBUS_TYPE_G_PENDING_CALL, dbus_g_pending_call_get_g_type)
1940         (dbus_g_pending_call_ref, dbus_g_pending_call_unref): Delete.
1941         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel):
1942         Delete in favor of dbus_g_proxy_begin_call and
1943         dbus_g_proxy_cancel_call.
1944         (DBusGProxyCall, DBusGProxyCallNotify): New.
1945         (dbus_g_proxy_begin_call): Change prototype to take callback, user
1946         data, and destroy function.  This replaces
1947         dbus_g_pending_call_set_notify.
1948         (dbus_g_proxy_cancel_call): Prototype.
1949         (DBusGAsyncData): Delete, shouldn't be needed anymore.
1950
1951         * glib/dbus-gproxy.c (struct _DBusGProxy): Add call_id_counter and
1952         pending_calls map.
1953         (struct _DBusGProxyManager): Add bus_proxy member, which is an
1954         internal proxy for calls to the bus. Remove
1955         pending_nameowner_calls, now the internal proxy keeps track.
1956         (dbus_g_proxy_manager_unref): Unref bus proxy, remove reference to
1957         pending_nameowner_calls.
1958         (got_name_owner_cb): Update prototype, and use
1959         dbus_g_proxy_end_call.
1960         (got_name_owner_cb): Remove reference to pending_nameowner_calls.
1961         (dbus_g_proxy_manager_register): Delete directly libdbus code in
1962         favor of using internal proxy.
1963         (dbus_g_proxy_manager_unregister): Update to use
1964         dbus_g_proxy_cancel_call for any pending GetNameOwner call.
1965         (dbus_g_proxy_init): Initialize pending calls map.
1966         (dbus_g_proxy_constructor): New.
1967         (dbus_g_proxy_class_init): Add get/set property functions,
1968         constructor, and add NAME, PATH, and INTERFACE properties.
1969         (cancel_pending_call): New function.
1970         (dbus_g_proxy_dispose): Iterate over any outstanding calls and
1971         cancel them.
1972         (dbus_g_proxy_set_property, dbus_g_proxy_get_property): New.
1973         (GPendingNotifyClosure): New structure.
1974         (d_pending_call_notify, d_pending_call_free): Moved here from
1975         dbus-glib.c.
1976         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Moved around to satisfy function
1977         ordering.
1978         (manager_begin_bus_call): New internal function for talking to
1979         internal bus proxy.
1980         (dbus_g_proxy_new): Construct object using GObjet properties.
1981         (dbus_g_proxy_begin_call_internal): Update to take user data, etc.
1982         Create closure of same, and insert call into map of pending calls.
1983         (dbus_g_proxy_end_call_internal): Take call id instead of pending
1984         call.  Look up pending call in current set.  Remove it when we've
1985         completed.
1986         (dbus_g_pending_call_end, dbus_g_proxy_end_call_internal): Delete.
1987         (dbus_g_proxy_begin_call): Change API to take callback, user data,
1988         and destroy function directly.
1989         (dbus_g_proxy_end_call): Update to take DBusGProxyCall.
1990         (dbus_g_proxy_call): Invoke with NULL callback.
1991         (dbus_g_proxy_cancel_call): New function, replaces
1992         dbus_g_pending_call_cancel.
1993
1994         * glib/dbus-gparser.c (validate_signature): Fix call to
1995         dbus_set_g_error.
1996
1997         * glib/dbus-gobject.c (dbus_g_object_type_dbus_metadata_quark):
1998         New quark for attaching metadata to GType.
1999         (info_hash): Delete.
2000         (lookup_object_info): Look up using quark.
2001         (dbus_g_object_type_install_info): Check that a type is classed,
2002         not that it's an object.  Also just install type data using quark
2003         instead of using global hash.
2004
2005         * glib/dbus-glib.c (dbus_g_pending_call_ref) 
2006         (dbus_g_pending_call_unref, dbus_pending_call_get_g_type)
2007         (GPendingNotifyClosure): Delete.
2008         (d_pending_call_notify, d_pending_call_free): Move to dbus-gproxy.c.
2009         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel): Delete.
2010
2011         * glib/dbus-binding-tool-glib.c (generate_client_glue): Disable async
2012         client method generation until we can fix it...
2013         
2014         * tools/dbus-viewer.c (load_child_nodes): Use dbus_g_proxy_call.
2015         (load_from_service_thread_func): Ditto.
2016
2017         * tools/dbus-names-model.c (struct NamesModel): Hold
2018         DBusGProxyCall.
2019         (have_names_notify): Update prototype, use
2020         dbus_g_proxy_cancel_call.
2021         (names_model_reload): Update for new dbus_g_proxy_begin_call API.
2022
2023         * tools/dbus-monitor.c (filter_func): Update for print_message
2024         API change.
2025
2026         * test/glib/test-dbus-glib.c: Add more tests for async
2027         invocations.  Update many begin_call/end_call pairs to just use
2028         dbus_g_proxy_call.
2029
2030         * tools/dbus-send.c (main): Add --print-reply=literal mode.  This
2031         allows us to dump print-introspect.c.
2032
2033         * tools/dbus-print-message.h (print_message): Add literal argument
2034         to print_message which is intended to allow printing arguments without
2035         metadata like "string=".
2036
2037         * tools/dbus-print-message.c (print_iter): Add literal argument.
2038         (print_message): Allow printing string messages literally.
2039
2040 2005-07-05  Colin Walters  <walters@verbum.org>
2041
2042         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
2043         Remove value refcount leak, original patch from Jorn Baayen
2044         <jorn@openedhand.com>.  Also remove useless extra value in favor
2045         of prepending to value array directly.
2046
2047 2005-07-02  Colin Walters  <walters@verbum.org>
2048
2049         * glib/dbus-gmain.c (_dbus_gmain_test): Fix test.
2050
2051 2005-07-01  Colin Walters  <walters@verbum.org>
2052
2053         Patch from Jonathan Matthew <jonathan@kaolin.hn.org>
2054         
2055         * glib/dbus-gvalue.c (basic_typecode_to_gtype): Fix return type.
2056         (dbus_g_value_types_init): Marshal G_TYPE_CHAR as DBUS_TYPE_BYTE,
2057         G_TYPE_LONG as DBUS_TYPE_INT32, G_TYPE_ULONG as DBUS_TYPE_UINT32,
2058         and G_TYPE_FLOAT as DBUS_TYPE_DOUBLE.
2059
2060 2005-06-30  Colin Walters  <walters@verbum.org>
2061
2062         * test/glib/test-dbus-glib.c:
2063         * test/glib/test-service-glib.c:
2064         * test/glib/test-service-glib.xml: Update tests for new error
2065         setting bits, also add async tests (patch from Ross Burton).
2066
2067         * test/glib/Makefile.am (test_service_glib_LDADD): Add
2068         DBUS_GLIB_THREADS_LIBS.
2069
2070         * glib/dbus-gproxy.c (get_name_owner)
2071         (dbus_g_pending_call_end_valist): Ditto.
2072
2073         * glib/dbus-gobject.c (error_metadata): New mapping from GError
2074         domain (GQuark) to DBusGErrorInfo.  
2075         (gerror_domaincode_to_dbus_error_name): Attempt to look up error
2076         quark in error_metadata.  Take message interface as default
2077         error message interface.
2078         (gerror_to_dbus_error_message): Pass message interface.
2079         (dbus_set_g_error): Resurrected.
2080         (dbus_g_error_info_free): New function.
2081         (dbus_g_object_type_install_info): Use g_type_class_ref instead
2082         of _peek to actually create the object class if it hasn't been
2083         created yet.
2084         (dbus_g_error_domain_register): New function.
2085
2086         * glib/dbus-gmain.c (dbus_g_bus_get): Switch to dbus_set_g_error.
2087
2088         * glib/dbus-gparser.c (validate_signature): Ditto.
2089
2090         * dbus/dbus-glib.h (dbus_g_error_set): Delete.
2091         (dbus_g_error_domain_register): Prototype.
2092
2093         * glib/dbus-glib.c (dbus_g_error_set): Delete.
2094         Update tests.
2095
2096 2005-06-29  Colin Walters  <walters@verbum.org>
2097
2098         * dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY.  Add
2099         DBUS_TYPE_G_OBJECT_PATH.
2100
2101         * glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers
2102         for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should
2103         be handled more generically).  Add DBUS_TYPE_G_OBJECT_PATH.
2104         (dbus_g_object_path_get_g_type): New function.
2105         (dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH
2106         to DBUS_TYPE_G_OBJECT_PATH by default.
2107         (demarshal_proxy): Remove unused name variable.
2108         (demarshal_object_path, marshal_object_path): New functions.
2109         (demarshal_proxy_array, marshal_proxy_array): Delete.
2110         
2111         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map
2112         DBUS_TYPE_G_OBJECT_PATH to char *.
2113         (dbus_g_type_get_lookup_function): Map builtin
2114         DBUS_TYPE_G_OBJECT_PATH.
2115
2116         * test/glib/test-dbus-glib.c
2117         * test/glib/test-service-glib.c (my_object_objpath): 
2118         Adapt tests to new object path marshalling.
2119
2120 2005-06-29  John (J5) Palmieri  <johnp@redhat.com>
2121
2122         * configure.in: force check for Python >= 2.4
2123
2124 2005-06-29  Colin Walters  <walters@verbum.org>
2125         
2126         Patch from Ross Burton <ross@openedhand.com>
2127         
2128         * glib/dbus-gobject.c (invoke_object_method): Unset object
2129         value in all cases, not only in async case.
2130
2131 2005-06-29  Colin Walters  <walters@verbum.org>
2132
2133         * glib/dbus-gproxy.c (struct _DBusGProxy): Add new member
2134         name_call for keeping track of any outgoing GetNameOwner call.
2135         Also add for_owner and associated.
2136         (struct _DBusGProxyManager): Add owner_names, which is hash table
2137         that maps a base name to a list of names it owns (that we're
2138         interested in).  Add pending_nameowner_calls which is a list of
2139         all outstanding GetNameOwner; avoids us having to iterate over
2140         every proxy.  Add unassociated_proxies which keeps track of name
2141         proxies with no associated name owner.
2142         (dbus_g_proxy_manager_unref): Destroy owner_names.
2143         (struct DBusGProxyNameOwnerInfo): New struct for keeping track of
2144         name refcounts.
2145         (find_name_in_info, name_owner_foreach)
2146         (dbus_g_proxy_manager_lookup_name_owner, insert_nameinfo)
2147         (dbus_g_proxy_manager_monitor_name_owner)
2148         (dbus_g_proxy_manager_unmonitor_name_owner)
2149         (unassociate_proxies, dbus_g_proxy_manager_replace_name_owner):
2150         New functions; they manipulate the owner_names mapping.
2151         (got_name_owner_cb): New function.
2152         (get_name_owner): New function, extracted from
2153         dbus_g_proxy_new_for_name_owner.
2154         (dbus_g_proxy_manager_register): For now we need to keep track of
2155         all NameOwnerChanged.  Also if the proxy is for a name, if we
2156         don't already know the name owner, queue a new GetNameOwner
2157         request and add it to our list of unassociated proxies.  Otherwise
2158         inc the refcount.
2159         (dbus_g_proxy_manager_unregister): If this proxy is for a name,
2160         cancel any pending GetNameOwner call, etc.
2161         (dbus_g_proxy_manager_filter): Handle NameOwnerChanged.  Also use
2162         the owner_names mapping to look up the current names for the
2163         signal source, and dispatch to any proxies for that name.
2164         (dbus_g_proxy_new): Initialize new members.
2165         (dbus_g_proxy_new_for_name): Delete unused proxy variable.
2166         (dbus_g_proxy_new_for_name_owner): Use get_name_owner.
2167         (dbus_g_pending_call_end_valist): New function, extracted from
2168         dbus_g_proxy_end_call_internal.  Useful when we don't have a proxy
2169         but want to use the GLib infrastructure.  Also note how many
2170         arguments in reply were over.
2171         (dbus_g_pending_call_end): New function, just call
2172         dbus_g_pending_call_end_valist.
2173         (dbus_g_proxy_end_call_internal): Just call
2174         dbus_g_pending_call_end_valist.
2175
2176         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Fix lookup
2177         of builtin marshaller for STRING_STRING_STRING.
2178
2179         * test/glib/test-dbus-glib.c: 
2180         * test/glib/test-service-glib.c:
2181         * test/glib/test-service-glib.xml:
2182         Extend tests to cover name proxies, destruction of owner proxies,
2183         etc.
2184         
2185         * glib/examples/example-signal-recipient.c
2186         (dbus_g_proxy_new_for_name_owner): Create a name proxy.
2187         
2188         * tools/dbus-send.c (main): Print D-BUS error name in addition
2189         to message.
2190
2191 2005-06-28  John (J5) Palmieri  <johnp@redhat.com>
2192
2193         * python/dbus_bindings.pyx.in (cunregister_function_handler,
2194         cmessage_function_handler): Patch from 
2195         Anthony Baxter <anthony@interlink.com.au> fixes threading problems
2196         by using the Py_GILState_Ensure/Release to synchronize with the
2197         python runtime.
2198         
2199 2005-06-28  Ray Strode  <rstrode@redhat.com>
2200
2201         *  dbus/dbus-spawn.c (_dbus_babysitter_unref): kill
2202         babysitter helper process on last unref, bug #2813.
2203
2204 2005-06-27  Colin Walters  <walters@verbum.org>
2205
2206         * test/glib/test-dbus-glib.c: 
2207         * test/glib/test-service-glib.c:
2208         * test/glib/test-service-glib.xml:
2209         Test hash table signal emitting.
2210
2211         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Convert
2212         types to their fundamental basis types, since this is what
2213         marshallers operate on.  Also add an entry for VOID__BOXED.
2214         (dbus_g_object_register_marshaller_array): Convert to fundamental.
2215
2216 2005-06-26  Havoc Pennington  <hp@redhat.com>
2217
2218         * doc/dbus-tutorial.xml: fix names of interface/service/path, fix
2219         from Don Park
2220
2221 2005-06-26  Colin Walters  <walters@verbum.org>
2222
2223         * glib/dbus-glib.c (dbus_set_g_error): Delete.
2224         (dbus_g_error_set): New public function from its ashes; used by
2225         both service-side method implementation and GLib bindings
2226         internals.
2227         (dbus_g_error_has_name, dbus_g_error_get_name): New function.
2228         (_dbus_glib_test): Add some tests.
2229
2230         * test/glib/test-dbus-glib.c (main): Test dbus_g_error_has_name.
2231
2232         * test/glib/test-service-glib.c (my_object_throw_error): Use
2233         dbus_g_error_set.
2234
2235         * glib/dbus-gobject.c (gerror_to_dbus_error_message): Handle
2236         errors thrown by dbus_g_error_set.
2237
2238         * glib/dbus-gmain.c (dbus_g_bus_get): Change to dbus_g_error_set.
2239
2240         * glib/dbus-gparser.c (validate_signature): Ditto.
2241
2242         * glib/dbus-gproxy.c (dbus_g_proxy_new_for_name_owner) 
2243         (dbus_g_proxy_end_call_internal): Ditto.
2244
2245         * glib/Makefile.am: Generate dbus-glib-error-switch.h, which
2246         converts DBUS_ERROR_x to DBUS_GERROR_x.
2247         (libdbus_glib_1_la_SOURCES, BUILT_SOURCES, CLEANFILES): Add it.
2248
2249         * doc/TODO: Remove error TODO.
2250
2251         * doc/dbus-tutorial.xml: Update with documentation about error
2252         handling.
2253
2254         * dbus/make-dbus-glib-error-enum.sh: Tighten up regexp to make
2255         sure we only change DBUS_ERROR to DBUS_GERROR, not all ERROR to
2256         GERROR.  Also add DBUS_GERROR_REMOTE_EXCEPTION.
2257
2258 2005-06-22  Colin Walters  <walters@verbum.org>
2259         
2260         Patch from Ross Burton <ross@openedhand.com>
2261
2262         * glib/dbus-gobject.c (dbus_g_method_return): Free out_sig.
2263
2264 2005-06-20  Colin Walters  <walters@verbum.org>
2265
2266         * configure.in: Add glib/examples.
2267
2268         * glib/Makefile.am: Add examples/
2269
2270         * glib/examples/.cvsignore
2271         * glib/examples/Makefile.am
2272         * glib/examples/example-client.c
2273         * glib/examples/example-service.c
2274         * glib/examples/example-service.xml
2275         * glib/examples/example-signal-emitter.c
2276         * glib/examples/example-signal-emitter.xml
2277         * glib/examples/example-signal-recipient.c:
2278         New files; GLib binding examples, ported from
2279         python/examples.
2280
2281 2005-06-20  Colin Walters  <walters@verbum.org>
2282
2283         * dbus/dbus-glib.h: 
2284         * glib/dbus-gproxy.c: Rename dbus_g_proxy_invoke to
2285         dbus_g_proxy_call.
2286
2287         * glib/dbus-binding-tool-glib.c: 
2288         * doc/dbus-tutorial.xml: 
2289         * test/glib/test-dbus-glib.c: Update for rename.
2290         
2291 2005-06-20  Colin Walters  <walters@verbum.org>
2292
2293         Patch suggested by Ross Burton <ross@openedhand.com>
2294
2295         * glib/dbus-gobject.c (export_signals): Free signal name.
2296         (g_value_init): Use G_VALUE_NOCOPY_CONTENTS to plug
2297         memory leak.  Add a bit of documentation.
2298         (dbus_g_method_return_error): Free context, and note we do
2299         so.
2300
2301 2005-06-18  Murray Cumming  <murrayc@murrayc.com>
2302
2303         * dbus/dbus-glib.h:
2304         * glib/dbus-gobject.c:
2305         * glib/dbus-gproxy.c:
2306         * glib/dbus-gvalue.c: Predeclare structs as 
2307         typedef struct _Something Something instead of 
2308         typedef struct Something Something, so we can 
2309         redeclare the prototypes. Other GNOME libraries 
2310         do this already.
2311
2312 2005-06-17  Colin Walters  <walters@verbum.org>
2313
2314         * tools/dbus-names-model.c (have_names_notify): Fix call
2315         to dbus_g_proxy_end_call.
2316         
2317 2005-06-17  Colin Walters  <walters@verbum.org>
2318
2319         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): Don't
2320         spew warnings if we get malformed remote signals.
2321
2322         * glib/dbus-gobject.c (propsig_iterate): New function.
2323         (lookup_object_info): New function, extracted from
2324         lookup_object_and_method.
2325         (introspect_properties, introspect_signals): Delete; these
2326         are merged into write_interface.
2327         (write_interface): Write out signals and properties here;
2328         dump the org.gtk.object stuff and use the interface given
2329         in the introspection data blob.  Also fix up property XML.
2330         (lookup_values): New function.
2331         (introspect_interfaces): Gather a mapping from interface to a
2332         list of its methods, signals, and properties, then write out
2333         each interface.
2334         (lookup_object_and_method): Use lookup_object_info.
2335         (struct DBusGSignalClosure): Add interface.
2336         (dbus_g_signal_closure_new): Add interface. Don't dup signame;
2337         we can just use the constant data.
2338         (dbus_g_signal_closure_finalize): Don't free signal name.
2339         (signal_emitter_marshaller): Use interface from signal closure.
2340         (export_signals): Only export signals mentioned in introspection
2341         blob.
2342         (dbus_g_connection_register_g_object): Warn if we have no
2343         introspection data for an object.
2344         (funcsig_equal): Remove unused variable.
2345         (dbus_g_object_register_marshaller): Take varargs instead of
2346         list.
2347         (dbus_g_object_register_marshaller_array): New function,
2348         extracted from old dbus_g_object_register_marshaller.
2349
2350         * glib/dbus-binding-tool-glib.c (struct DBusBindingToolCData): Add
2351         signals and property data.
2352         (write_quoted_string): New function, extracted from generate_glue.
2353         (generate_glue): Write signals and properties to introspection
2354         blob.
2355
2356         * dbus/dbus-glib.h (struct DBusGObjectInfo): Include
2357         exported_signals and exported_properties.
2358         (dbus_g_object_register_marshaller): Update prototype.
2359         (dbus_g_object_register_marshaller_array): Prototype.
2360         
2361         * test/glib/test-dbus-glib.c: Extend testing to cover new signals.
2362
2363         * test/glib/test-service-glib.c: Add new test signals and method
2364         to emit them.
2365
2366         * test/glib/test-service-glib.xml: Add some test signals.
2367
2368         * test/glib/Makefile.am (BUILT_SOURCES): Add my-object-marshal.c
2369         and my-object-marshal.h
2370         (test_service_glib_SOURCES, test_dbus_glib_SOURCES): Add
2371         my-object-marshal.c.
2372         (my-object-marshal.c, my-object-marshal.h): Implement.
2373
2374         * test/glib/.cvsignore: Update.
2375
2376         * doc/TODO: Remove two GLib TODO items fixed by this
2377         patch.
2378
2379 2005-06-16  Colin Walters  <walters@verbum.org>
2380
2381         * doc/TODO: Update for GLib bindings.
2382         
2383 2005-06-16  Colin Walters  <walters@verbum.org>
2384
2385         * glib/dbus-binding-tool-glib.c:
2386         * glib/dbus-gobject.c:
2387         * glib/dbus-gproxy.c:  Add Nokia copyright; Patch
2388         from Ross Burton, for his GLib bindings work.
2389
2390 2005-06-16  Colin Walters  <walters@verbum.org>
2391
2392         * glib/dbus-gobject.c (funcsig_hash, funcsig_equal): Use n_params
2393         to iterate instead of walking to G_TYPE_INVALID.
2394
2395         Patch based on a patch from Ryan Gammon.
2396
2397 2005-06-16  Colin Walters  <walters@verbum.org>
2398
2399         * bus/bus.c (bus_context_new): Set parser to NULL
2400         after we unref it (Patch from Chris Boscolo, #2174).
2401         
2402 2005-06-16  Colin Walters  <walters@verbum.org>
2403
2404         * python/dbus_bindings.pyx.in: Import size_t,
2405         __int64_t, __uint64_t, and __signed.
2406
2407         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (write_credentials_byte):
2408         Define cmsg struct, output it.
2409         (_dbus_read_credentials_unix_socket):
2410         Use cmsg struct.
2411         
2412         Patch from Joe Markus Clarke for FreeBSD support.
2413         
2414 2005-06-16  Colin Walters  <walters@verbum.org>
2415
2416         * tools/dbus-send.c (append_array): Use strtok.
2417         (append_dict): New function.
2418         (type_from_name): New function, extracted from main.
2419         (main): Handle sending dicts.
2420
2421         * tools/dbus-print-message.c (print_iter): Print dict
2422         entries.
2423         
2424 2005-06-16  Colin Walters  <walters@verbum.org>
2425
2426         * glib/dbus-gvalue.c (marshal_basic): Marshal NULL string
2427         values as the empty string (#2948).
2428         
2429 2005-06-16  Colin Walters  <walters@verbum.org>
2430
2431         * dbus/Makefile.am:
2432         * mono/doc/Makefile.am:
2433         * test/glib/Makefile.am:
2434
2435         Fix srcdir != builddir issues (Patch from Chris Wilson, #3477)
2436
2437 2005-06-16  Colin Walters  <walters@verbum.org>
2438
2439         * dbus/dbus-marshal-header.c (_dbus_header_load): Set
2440         header byte order from expected byte order (Patch from Chris Wilson, #3475).
2441
2442         * dbus/dbus-marshal-byteswap.c (byteswap_body_helper): 
2443         Increment pointer after swapping fixed array.  Add assertion
2444         for array length.
2445                 
2446 2005-06-15  Colin Walters  <walters@verbum.org>
2447
2448         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
2449         Fix call to dbus_set_error.  (Patch from Michael Banck, #3461)
2450         
2451 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2452
2453         * NEWS: Update to 0.34
2454
2455 2005-06-15  David Zeuthen  <davidz@redhat.com>
2456
2457         * configure.in (LT_CURRENT): Revert back to 1 as the library
2458         hasn't changed and we've certainly not committed to protocol
2459         stability yet.  All this does is to break ABI. See commit note
2460         from hp@redhat.com 2005-05-05 for details.
2461         
2462 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2463
2464         * dbus/dbus-connection.c (_dbus_connection_peer_filter): New method 
2465         (_dbus_connection_run_builtin_filters): New method
2466         (dbus_connection_dispatch): Run the builtin filters which in turn
2467         runs the peer filter which handles Ping messages.
2468
2469         * doc/TODO: 
2470          - Ping isn't handled: This patch fixes it
2471          
2472          - Add a test case for the Ping message: added TODO item
2473
2474 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2475
2476         * dbus/dbus-message.c:
2477         (dbus_message_has_path): New method
2478         (dbus_message_has_interface): New method
2479         (dbus_message_has_member): New method
2480
2481         * dbus/dbus/dbus-sysdeps.c (_dbus_check_dir_is_private_to_user):
2482         New method
2483
2484         * dbus/dbus-keyring.c (_dbus_keyring_reload): Check to see that 
2485         the keyring directory is private to the user
2486
2487         * doc/TODO:
2488          - The convenience functions in dbus-bus.h should perhaps have
2489          the signatures that they would have if they were autogenerated
2490          stubs. e.g. the acquire service function. We should also evaluate
2491          which of these functions to include, in light of the fact that
2492          GLib/Qt native stubs will probably also exist.: Punted
2493
2494          - add dbus_message_has_path(), maybe has_member/interface:
2495          fixed in this patch
2496
2497          - in dbus-keyring.c, enforce that the keyring dir is not
2498          world readable/writable: Fixed in this patch
2499
2500 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2501
2502         * dbus/dbus-marshal-validate.h: Added a new validation
2503         error code DBUS_VALIDITY_UNKNOWN_OOM_ERROR = -4 for 
2504         out of memory errors when validating signitures
2505
2506         * dbus/dbus-marshal-header.c: use DBUS_VALIDITY_UNKNOWN_OOM_ERROR
2507         in places where we previously used DBUS_VALID and a FALSE return 
2508         value to indicate OOM
2509         
2510         * dbus/dbus-marshal-validate.c (_dbus_validate_signature_with_reason):
2511         Use a stack to track the number of elements inside containers.  The 
2512         stack values are then used to validate that dict entries have only two
2513         elements within them.
2514         (validate_body_helper): check the reason for failure when validating
2515         varients
2516         
2517         * dbus/dbus-message.c (load_message): use 
2518         DBUS_VALIDITY_UNKNOWN_OOM_ERROR in places where we previously used 
2519         DBUS_VALID and a FALSE return value to indicate OOM
2520
2521         * doc/TODO: remove "- validate dict entry number of fields" as this
2522         patch fixes it
2523
2524 2005-06-14  David Zeuthen  <davidz@redhat.com>
2525
2526         * bus/bus.c (process_config_every_time): Drop existing conf-dir
2527         watches (if applicable) and add new watches
2528
2529         * bus/main.c (signal_handler): Handle SIGIO if using D_NOTIFY
2530         (main): Setup SIGIO signal handler if using D_NOTIFY
2531
2532         * bus/config-parser.h: Add prototype bus_config_parser_get_conf_dirs
2533
2534         * bus/config-parser.c (struct BusConfigParser): Add conf_dirs list
2535         (merge_included): Also merge conf_dirs list
2536         (bus_config_parser_unref): Clear conf_dirs list
2537         (include_dir): Add directory to conf_dirs list
2538         (bus_config_parser_get_conf_dirs): New function
2539
2540         * bus/dir-watch.[ch]: New files
2541
2542         * bus/Makefile.am (BUS_SOURCES): Add dir-watch.[ch]
2543
2544         * configure.in: Add checks for D_NOTIFY on Linux
2545
2546 2005-06-14  Colin Walters  <walters@verbum.org>
2547
2548         * glib/dbus-binding-tool-glib.c:
2549         * glib/dbus-gobject.c:
2550         * glib/dbus-gvalue.c: Fix indentation and brace style.
2551         
2552 2005-06-14  Ross Burton <ross@openedhand.com>.
2553
2554         * glib/dbus-glib.h: Make DBusGMethodInvocation
2555         a private structure.  Rearrange prototypes a bit.
2556         
2557         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): Add
2558         documentation for first_arg_type.
2559         
2560         * glib/dbus-gobject.c: Move DBusGMethodInvocation
2561         here, add documentation.  Move dbus_g_method_return
2562         and dbus_g_method_return_error into public API
2563         section.
2564
2565 2005-06-14  Colin Walters  <walters@verbum.org>
2566
2567         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller):
2568         Add missing return statements, noticed by Ross Burton.
2569         
2570 2005-06-13  Ross Burton <ross@openedhand.com>.
2571
2572         * glib/dbus-gobject.c: Handle errors on message
2573         demarshalling by sending error message back.
2574         * glib/dbus-gvalue.c: Initialize return variables.
2575
2576 2005-06-13  Colin Walters  <walters@verbum.org>
2577
2578         * glib/Makefile.am: Fix thinko in last patch.
2579
2580 2005-06-13  Colin Walters  <walters@verbum.org>
2581
2582         * glib/Makefile.am: Move dbus-gtype-specialized.c
2583         and dbus-gtype-specialized.h into a _HEADERS variable,
2584         install them.
2585
2586 2005-06-12  Colin Walters  <walters@verbum.org>
2587
2588         Async signals and various bugfixes and testing by
2589         Ross Burton <ross@openedhand.com>.
2590
2591         * glib/dbus-gvalue.h: (struct DBusBasicGValue): Delete.
2592         (dbus_gvalue_genmarshal_name_from_type)
2593         (dbus_gvalue_ctype_from_type): Moved to dbus-binding-tool-glib.c.
2594         (dbus_gtype_to_dbus_type): Renamed to dbus_gtype_from_signature.
2595         (dbus_g_value_types_init, dbus_gtype_from_signature)
2596         (dbus_gtype_from_signature_iter, dbus_gtype_to_signature)
2597         (dbus_gtypes_from_arg_signature): New function prototypes.
2598         (dbus_gvalue_demarshal): Take context and error arguments.
2599         (dbus_gvalue_demarshal_variant): New function.
2600         (dbus_gvalue_demarshal_message): New function.
2601         (dbus_gvalue_store): Delete.
2602
2603         * glib/dbus-gvalue.c:
2604
2605         File has been almost entirely rewritten; now we special-case
2606         more types such as DBUS_TYPE_SIGNATURE, handle arrays and
2607         hash tables correctly, etc.  Full support for recursive values
2608         is not yet complete.
2609
2610         * glib/dbus-gproxy.c (dbus_g_proxy_class_init): Change last
2611         argument of signal to G_TYPE_POINTER since we now pass a
2612         structure.
2613         (lookup_g_marshaller): Delete in favor of
2614         _dbus_gobject_lookup_marshaller.
2615         (marshal_dbus_message_to_g_marshaller): Use
2616         _dbus_gobject_lookup_marshaller and dbus_gvalue_demarshal_message
2617         to handle remote signal callbacks.
2618         (dbus_g_proxy_new_from_proxy): New function; creates a new
2619         DBusGProxy by copying an existing one.
2620         (dbus_g_proxy_get_interface, dbus_g_proxy_set_interface)
2621         (dbus_g_proxy_get_path): New functions.
2622         (dbus_g_proxy_marshal_args_to_message): New function;
2623         factored out of existing code.
2624         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Collect all arguments
2625         from a varargs array.
2626         (dbus_g_proxy_begin_call_internal): New function.
2627         (dbus_g_proxy_end_call_internal): New function.
2628         (dbus_g_proxy_begin_call): Take GTypes instead of DBus types
2629         as arguments; simply invoke dbus_g_proxy_begin_call_internal
2630         after collecting args into value array.
2631         (dbus_g_proxy_end_call): Take GTypes instead of DBus types;
2632         invoke dbus_g_proxy_end_call_internal.
2633         (dbus_g_proxy_invoke): Simply invoke begin_call_interanl and
2634         end_call_internal.
2635         (dbus_g_proxy_call_no_reply): Take GTypes instead of DBus
2636         types.
2637         (array_free_all): New function.
2638         (dbus_g_proxy_add_signal): Take GTypes.
2639
2640         * glib/dbus-gobject.h:
2641         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
2642         (_dbus_gobject_get_path, _dbus_gobject_lookup_marshaller):
2643         Prototype.
2644
2645         * glib/dbus-gobject.c: Add a global marshal_table hash which
2646         stores mappings from type signatures to marshallers.  Change lots
2647         of invocations of dbus_gtype_to_dbus_type to
2648         dbus_gtype_to_signature.
2649         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
2650         (introspect_signals): Fix test for query.return_type.
2651         (set_object_property): Update invocation of dbus_gvalue_demarshal.
2652         (invoke_object_method): Many changes.  Handle asynchronous
2653         invocations.  Convert arguments with
2654         dbus_gvalue_demarshal_message.  Handle errors.  Use
2655         DBusSignatureIter instead of strlen on args. Handle all arguments
2656         generically.  Special-case variants.
2657         (dbus_g_method_return, dbus_g_method_return_error): New function.
2658         (DBusGSignalClosure): New structure, closes over signal
2659         information.
2660         (dbus_g_signal_closure_new): New function.
2661         (dbus_g_signal_closure_finalize): New function.
2662         (signal_emitter_marshaller): New function; is special marshaller
2663         which emits signals on bus.
2664         (export_signals): New function; introspects object signals and
2665         connects to them.
2666         (dbus_g_object_type_install_info): Take GType instead of
2667         GObjectClass.
2668         (dbus_g_connection_register_g_object): Invoke export_signals.
2669         (dbus_g_connection_lookup_g_object): New function.
2670         (DBusGFuncSignature) New structure; used for mapping type
2671         signatures to marshallers.
2672         (funcsig_hash): New function; hashes DBusGFuncSignature.
2673         (funcsig_equal): New function; compares DBusGFuncSignature.
2674         (_dbus_gobject_lookup_marshaller): New function.
2675         (dbus_g_object_register_marshaller): New function; used to
2676         register a marshaller at runtime for a particular signature.
2677
2678         * glib/dbus-gmain.c (_dbus_gmain_test): Add various tests.
2679
2680         * glib/dbus-binding-tool-glib.h: Add DBUS_GLIB_ANNOTATION_ASYNC
2681         which notes a server method implementation should be
2682         asynchronous.
2683
2684         * glib/dbus-binding-tool-glib.c
2685         (dbus_binding_tool_output_glib_server): Call
2686         dbus_g_value_types_init.
2687         (write_formal_parameters): Use dbus_gtype_from_signature.  Handle
2688         variants specially.
2689         (dbus_g_type_get_lookup_function): Turn GType into an invocation
2690         of a lookup function.
2691         (write_args_for_direction): Use dbus_g_type_get_lookup_function.
2692         (write_untyped_out_args): New method; write output arguments.
2693         (write_formal_declarations_for_direction): Function for
2694         writing prototypes.
2695         (write_formal_parameters_for_direction): Function for
2696         writing implementations.
2697         (write_typed_args_for_direction): Function for writing
2698         arguments prefixed with GTypes.
2699         (write_async_method_client): Write out async version
2700         of method.
2701
2702         * glib/dbus-binding-tool-glib.c: Include dbus-gvalue-utils.h.
2703         (dbus_g_type_get_marshal_name): Move mapping from GType
2704         to marshal name into here.
2705         (dbus_g_type_get_c_name): Move into here.
2706         (compute_marshaller): Convert signature to type with
2707         dbus_gtype_from_signature, use dbus_g_type_get_marshal_name.
2708         (compute_marshaller_name): Ditto.
2709         (compute_marshaller): Handle async signal annotations.
2710         (gather_marshallers): Return if we don't have a known
2711         prefix.
2712         (generate_glue): Collect introspection blob here, and
2713         write all of the blob at the end.  This allows an object
2714         with multiple interfaces to work.
2715         Mark async methods in introspection blob.
2716
2717         * glib/Makefile.am (libdbus_glib_1_la_SOURCES): Add
2718         dbus-gtype-specialized.c, dbus-gtype-specialized.h,
2719         dbus-gvalue-utils.h, dbus-gvalue-utils.c.
2720
2721         * dbus/dbus-glib.h: Don't include dbus-protocol.h; this
2722         avoids people accidentally using DBUS_TYPE_* which should
2723         not be necessary anymore.
2724         Do include dbus-gtype-specialized.h, which are utilities
2725         for GLib container types.
2726         Add various #defines for types such as
2727         DBUS_TYPE_G_BOOLEAN_ARRAY.
2728         (DBusGValueIterator, DBusGValue): Define, not fully used
2729         yet.
2730         (dbus_g_value_get_g_type): Type for recursive value.
2731         (dbus_g_value_open, dbus_g_value_iterator_get_value)
2732         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
2733         (dbus_g_value_free): Prototypes.
2734         (dbus_g_object_register_marshaller, dbus_g_proxy_new_from_proxy): Prototype.
2735         (dbus_g_proxy_set_interface): Prototype.
2736         (dbus_g_proxy_begin_call, dbus_g_proxy_end_call)
2737         (dbus_g_proxy_call_no_reply): Take GLib types instead of DBus
2738         types.
2739         (dbus_g_proxy_get_path, dbus_g_proxy_get_interface):
2740         Accessors.
2741         (DBusGAsyncData, DBusGMethodInvocation): Structures for
2742         doing async invocations.
2743         (dbus_g_method_return, dbus_g_method_return_error):
2744         Prototypes.
2745         * doc/dbus-tutorial.xml: Update GLib section.
2746         
2747         * tools/dbus-viewer.c (load_child_nodes): Update
2748         for new invocation type of dbus_g_proxy_end_call.
2749         (load_from_service_thread_func): Ditto.
2750
2751         * tools/print-introspect.c (main): Ditto.
2752
2753         * tools/dbus-names-model.c (have_names_notify)
2754         (names_model_reload, names_model_set_connection)
2755         Use GTypes.
2756
2757         * python/Makefile.am (INCLUDES): Define DBUS_COMPILATION,
2758         needed since Python bindings use GLib bindings.
2759
2760         * test/glib/Makefile.am (INCLUDES): Define DBUS_COMPILATION.
2761         Add --prefix argument.
2762
2763         * tools/Makefile.am: Define DBUS_COMPILATION.  Remove
2764         unneeded --ignore-unsupported arg.
2765         
2766         * test/glib/test-service-glib.c: 
2767         * test/glib/test-service-glib.xml:
2768         * test/glib/test-dbus-glib.c: Add many more tests.
2769
2770 2005-06-06  David Zeuthen  <davidz@redhat.com>
2771
2772         * doc/TODO: Add item about need to remove deprecated functions.
2773
2774         * dbus/dbus-connection.h: Add prototype for dbus_connection_disconnect
2775
2776         * dbus/dbus-connection.c (dbus_connection_disconnect): New function
2777         to repair the ABI which was broken with the last commit.
2778
2779 2005-06-02  John (J5) Palmieri <johnp@redhat.com>
2780
2781         *  dbus/dbus-connection.c, dbus/dbus-connection.h 
2782         (dbus_connection_disconnect): renamed to dbus_connection_close 
2783         for API symmetry with dbus_connection_open
2784         (_dbus_connection_open_internal): 
2785         s/dbus_connection_disconnect/dbus_connection_close
2786
2787         * dbus/dbus-bus.c (dbus_bus_get):
2788         s/dbus_connection_disconnect/dbus_connection_close
2789
2790         * bus/connection.c (bus_connections_unref, 
2791         bus_connections_setup_connection, bus_connections_expire_incomplete):
2792         s/dbus_connection_disconnect/dbus_connection_close
2793
2794         * bus/dispatch.c (bus_dispatch, kill_client_connection, 
2795         kill_client_connection_unchecked, check_hello_connection):
2796         s/dbus_connection_disconnect/dbus_connection_close
2797
2798         * bus/bus.c (new_connection_callback):
2799         s/dbus_connection_disconnect/dbus_connection_close
2800
2801         * tools/dbus-send.c (main):
2802         s/dbus_connection_disconnect/dbus_connection_close
2803
2804         * test/glib/test-profile.c (no_bus_thread_func, with_bus_thread_func):
2805         s/dbus_connection_disconnect/dbus_connection_close
2806         
2807         * test/test-service.c (path_message_func, filter_func):
2808         s/dbus_connection_disconnect/dbus_connection_close
2809         
2810         * doc/TODO: remove connection_open/connection_disconnect lacks symmetry         item that was just fixed
2811         
2812 2005-05-25  Colin Walters  <walters@verbum.org>
2813
2814         * dbus/dbus-protocol.h: Move various bus service #defines such
2815           as DBUS_SERVICE_DBUS and DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT to
2816           dbus/dbus-shared.h.
2817         * dbus/dbus-shared.h: Various defines moved here.
2818         * dbus/dbus-marshal-header.c: Include dbus-shared.h.
2819
2820 2005-05-25  John (J5) Palmieri  <johnp@redhat.com>
2821
2822         * python/__init__.py: Python bindings deserve a minor version
2823         update.  Upped to (0, 40, 2)
2824
2825 2005-05-24  John (J5) Palmieri  <johnp@redhat.com>
2826
2827         * python/decorators.py: add explicitly_pass_message decorator
2828         for passing in the dbus message as keyword for edge case signal
2829         handling
2830
2831         * python/matchrules.py (SignalMatchRule.__repr__): fix output
2832         to conform with what dbus expects for match rules
2833         (SignalMatchRule.execute): add the dbus message as a keyword
2834         if the signal handler has requested it
2835
2836         * python/examples/example/signal-recipient.py: added some more
2837         examples on how to hook up to signals
2838
2839 2005-05-23  John (J5) Palmieri  <johnp@redhat.com>
2840
2841         * python/decorators.py: import dbus_bindings
2842
2843         * python/matchrules.py (SignalMatchRule, SignalMatchTree, 
2844         SignalMatchNode): new classes that implement wildcard signal
2845         callback matching using a tree lookup. Heavily modified from a
2846         patch sent by Celso Pinto (fd.o bug #3241)
2847
2848         * _dbus.py (add_signal_receiver, remove_signal_receiver, _signal_func):
2849         use new match classes to handle signals.
2850
2851 2005-05-19  John (J5) Palmieri  <johnp@redhat.com>
2852         
2853         * python/dbus_bindings.pyx.in: s/TYPE_PATH/TYPE_OBJECT_PATH
2854
2855 2005-05-18  Havoc Pennington  <hp@redhat.com>
2856
2857         * configure.in: use GLIB_GNU_GETTEXT to get INTLLIBS and require
2858         gettext. Not really worth requiring yet perhaps, but any
2859         production quality 1.0 would require it so we should go ahead and
2860         get things set up. We do have a couple token calls to
2861         bindtextdomain in the code already.
2862
2863 2005-05-16  John (J5) Palmieri  <johnp@redhat.com>
2864
2865         * glib/dbus-gmain.c (io_handler_dispatch): fix deadlock
2866         when using recursive g_main_loops
2867
2868         * python/_dbus.py (class Bus): add the ProxyObjectClass
2869         alias for ProxyObject to make it easier for the Twisted 
2870         networking framework to integrate dbus.
2871
2872         * python/proxies.py (class ProxyObject): add the ProxyMethodClass
2873         alias for ProxyMethod to make it easier for the Twisted 
2874         networking framework to integrate dbus. 
2875
2876 2005-05-11  Ross Burton  <ross@openedhand.com>
2877
2878         * glib/dbus-glib-tool.c: Add --prefix argument.
2879         * glib/dbus-binding-tool-glib.h: Add prefix argument.
2880         * glib/dbus-binding-tool-glib.c (compute_marshaller_name):
2881         Add prefix argument.
2882         (generate_glue): Pass prefix argument down.
2883         (dbus_binding_tool_output_glib_server): Pass prefix to
2884         glib-genmarshal.
2885         
2886 2005-05-11  Colin Walters  <walters@verbum.org>
2887
2888         * tools/dbus-send.c (append_array): New function.
2889         (append_arg): Broken out from main.
2890         (main): Add cheesy hack to send arrays and variants.
2891         (usage): Update.
2892         * tools/dbus-print-message.c (print_iter): Broken out
2893         from main.
2894
2895 2005-05-11  Colin Walters  <walters@verbum.org>
2896
2897         * dbus/dbus-signature.c (dbus_signature_iter_get_signature):
2898         New function, returns signature string for signature iter.
2899         * dbus/dbus-signature.h: Prototype it.
2900         * dbus/dbus-message.c (dbus_message_iter_get_signature):
2901         New function, returns signature string for message iter.
2902         (dbus_message_iter_get_array_len): New function, returns
2903         length of array.
2904         (dbus_message_iter_get_fixed_array): Fix assertion; this
2905         function should be used when the iter is pointing to the
2906         contents of an array
2907         * dbus/dbus-message.h: Prototypes.
2908         * dbus/dbus-marshal-recursive.c (_dbus_type_reader_get_array_length):
2909         New function; returns length of an array.
2910         * dbus/dbus-marshal-recursive.h: Prototype it.
2911         
2912 2005-05-11  Colin Walters  <walters@verbum.org>
2913
2914         * dbus/dbus-sysdeps-util.c <!HAVE_POSIX_GETPWNAM_R>: Fix
2915         compilation error.
2916         
2917 2005-05-08  Havoc Pennington  <hp@redhat.com>
2918
2919         * dbus/dbus-sysdeps-util.c (_dbus_become_daemon): write the
2920         daemon's pid, not the parent's pid, to the file descriptor.
2921         Reported by Taj Morton.
2922
2923 2005-05-05  Havoc Pennington  <hp@redhat.com>
2924
2925         * configure.in (LT_*): add notes on how the libtool versioning
2926         works to save thinking. Increment soname to indicate protocol
2927         breakage (though really the library interface hasn't changed I
2928         guess)
2929
2930         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
2931         verify the GUID received from server matches what we were
2932         expecting, if we had an expectation
2933
2934         * dbus/dbus-auth.c (send_ok): send GUID along with the OK command
2935         (_dbus_auth_get_guid_from_server): new function
2936         (send_begin): parse the OK args
2937
2938         * doc/dbus-specification.xml: add GUID to the auth protocol
2939
2940 2005-05-05  John (J5) Palmieri  <johnp@redhat.com>
2941
2942         * Fix my name in previous changelog ;)
2943
2944         * python/proxies.py (ProxyObject.__getattr__): add further patch
2945         from Anthony Baxter to throw an AttributeError when python 
2946         __special__ functions are called instead of marshling them over 
2947         the bus (Bug#1685 comment 3).
2948
2949 2005-05-04  John (J5) Palmieri  <johnp@redhat.com>
2950
2951         * python/Makefile.am: changed to use pyexecdir for the binding
2952         shared libraries (Bug#2494)
2953
2954         * python/exceptions.py: bring exceptions over from the bindings
2955         so they can be used in applications (Bug#2036)
2956         Make all exceptions derive from DBusException
2957
2958         * python/_dbus.py, python/proxies.py: implement __repr__ in a couple
2959         of classes so that print obj doesn't throw an exception (Bug #1685)
2960
2961 2005-05-03  Ross Burton  <ross@openedhand.com>
2962
2963         * glib/dbus-gobject.c (dbus_g_connection_register_g_object):
2964         Return if we get an error during registration.  Set up a
2965         weak reference on object to unregister if object is destroyed.
2966         (unregister_gobject): New function.
2967         
2968 2005-05-01  John (J5) Palmieri  <johnp@redhat.com>
2969
2970         * python/dbus_bindings.pyx.in: 
2971         - added new type classes for hinting to the marashaler what type 
2972         to send over the wire
2973         - added int16 and uint16 marshalers
2974         - Fixed a bug in the type constants that caused int32 to go out
2975         as uint16 over the wire
2976         * python/dbus.py: split up into different files and renamed _dbus.py
2977         * python/__init__.py, python/_util.py, python/decorators.py, 
2978         python/exceptions.py, python/proxies.py, python/services.py,
2979         python/types.py: new files split off from dbus.py
2980         * python/Makefile.am: Add new files, remove dbus.py and 
2981         install all python files to <python module dir>/dbus
2982         * python/examples/*: Added #!/usr/bin/env python to the top of
2983         every example.  Patch provided by Tatavarty Kalyan
2984
2985 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
2986
2987         * NEWS: Update to 0.33
2988
2989 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
2990
2991         * python/dbus_bindings.pyx.in (send_with_reply_handlers): New send
2992         method for doing async calls
2993         (_pending_call_notification): New C function for handling pendning call
2994         callbacks
2995         (set_notify): New method for setting pending call notification
2996         
2997         * python/dbus.py: new version tuple "version" is set at (0, 40, 0)
2998         Async capabilities added to remote method calls
2999         (Sender): class removed
3000         (RemoteService): class removed
3001         (ObjectTree): class removed for now
3002         (RemoteObject): Renamed to ProxyObject
3003         (RemoteMethod): Renamed to ProxyMethod
3004         (method): Decorator added for decorating python methods as dbus methods
3005         (signal): Decorator added for decorating python methods as signal emitters
3006         (ObjectType): Metaclass added for generating introspection data and the
3007         method callback vtable
3008         (Interface): Wrapper class added to wrap objects in a dbus interface
3009         (Object): Uses ObjectType as its metaclass and exports Introspect
3010         of the org.freedesktop.DBus.Introspectable interface
3011         (ValidationException, UnknownMethodException): new exceptions
3012
3013         * python/examples/*: Modified to fit with the new bindings
3014
3015 2005-04-23  Havoc Pennington  <hp@redhat.com>
3016
3017         * dbus/dbus-message.c (dbus_message_append_args): fix doc comment,
3018         reported by Tony Houghton
3019
3020         * test/test-service.c (main): test
3021         dbus_connection_get_object_path_data()
3022
3023         * dbus/dbus-object-tree.c (find_handler): be sure we always init
3024         the exact_match
3025         (_dbus_object_tree_get_user_data_unlocked): new function used by
3026         dbus_connection_get_object_path_data()
3027         (do_register): add assertion test for get_user_data_unlocked
3028         (object_tree_test_iteration): more tests
3029
3030         * dbus/dbus-connection.c (dbus_connection_get_object_path_data):
3031         new function from Dan Reed to let you get the user data from 
3032         dbus_connection_register_object_path()
3033
3034 2005-04-23  John (J5) Palmieri  <johnp@redhat.com>
3035
3036         * dbus/dbus-marshal-recursive-util.c: Fixed buffer overflow
3037         in numerous places that did not account for the NULL terminator
3038         (signature_from_seed): changed the manual string copy loop to 
3039         just use strcpy instead
3040         make check should now pass
3041
3042 2005-04-19  John (J5) Palmieri  <johnp@redhat.com>
3043
3044         * dbus/dbus-marshal-header.c (_dbus_header_create): Fix assert
3045         so that it allows messages that are not signals to pass in 
3046         NULL as the interface.
3047
3048 2005-04-18  David Zeuthen  <davidz@redhat.com>
3049
3050         * glib/dbus-gmain.c (io_handler_destroy_source): 
3051         (timeout_handler_destroy_source, connection_setup_free): 
3052         Also unref the source to avoid memory leaks.
3053
3054 2005-04-13  David Zeuthen  <davidz@redhat.com>
3055
3056         * bus/config-parser.c (bus_config_parser_new): Bump this to a
3057         more reasonable, yet still totally arbitrary, value :-). 
3058
3059 2005-04-13  David Zeuthen  <davidz@redhat.com>
3060
3061         * doc/TODO: Added an "important for 1.0" item about selinux
3062         allow/deny messages
3063
3064 2005-04-13  David Zeuthen  <davidz@redhat.com>
3065
3066         * bus/selinux.c: Add c-file-style to top of file
3067         (log_audit_callback): Don't free the data here anymore
3068         (bus_selinux_check): Don't take spid and tpid since appending
3069         that to auxdata may OOM.
3070         (bus_selinux_allows_acquire_service): Handle OOM and signal back
3071         to the caller if we are OOM by taking an error object.
3072         (bus_selinux_allows_send): -do-
3073
3074         * bus/selinux.h: Fix prototypes for bus_selinux_allows_acquire_service
3075         and bus_selinux_allows_send
3076
3077         * bus/bus.c (bus_context_check_security_policy): Pass error and
3078         pass on OOM thrown by bus_selinux_allows_send()
3079
3080         * bus/services.c (bus_registry_acquire_service): Pass error and
3081         pass on OOM thrown by bus_selinux_allows_acquire_service()
3082
3083 2005-04-13  Havoc Pennington  <hp@redhat.com>
3084
3085         * glib/dbus-gmain.c (message_queue_dispatch): only dispatch one
3086         message at a time to avoid monopolizing the main loop, bug 
3087         #2953 from Benjamin Otte
3088
3089 2005-04-09  Havoc Pennington  <hp@redhat.com>
3090
3091         * dbus/dbus-string.c (copy): change a memcpy to memmove due to
3092         possible overlap, fix from Daniel Reed
3093         (fixup_alignment): fix signedness warnings
3094         (_dbus_string_append_unichar): ditto
3095
3096 2005-04-09  Havoc Pennington  <hp@redhat.com>
3097
3098         * dbus/dbus-message-util.c (_dbus_message_test): fix signedness warning
3099
3100         * glib/dbus-glib-tool.c (main): fix warning
3101
3102         * glib/dbus-binding-tool-glib.c (generate_glue): fix warning
3103
3104         * dbus/dbus-connection.c (dbus_connection_read_write_dispatch):
3105         add a new function that can be used in simple applications that
3106         don't have a main loop and are willing to block
3107
3108 2005-04-05  David Zeuthen  <davidz@redhat.com>
3109
3110         Fix https://bugs.freedesktop.org/show_bug.cgi?id=2889
3111
3112         * glib/dbus-gmain.c:
3113         (io_handler_destroy_source): Remove from list of IO handlers
3114         of the ConnectionSetup object
3115         (timeout_handler_destroy_source): -do- for timeout handlers
3116         (io_handler_source_finalized): Don't remove from list since
3117         we now do that in io_handler_destroy_source(). Renamed from
3118         io_handler_source_destroyed
3119         (timeout_handler_source_destroyed): -do- for timeout handlers
3120         (connection_setup_free): It is now safe to iterate over all
3121         IO and timeout handlers as the _destroy_source removes them
3122         from the list synchronously
3123
3124 2005-03-30  Havoc Pennington  <hp@redhat.com>
3125
3126         * configure.in: change check to gtk 2.4
3127
3128         * tools/dbus-viewer.c (name_combo_changed_callback): remove
3129         gtk_combo_box_get_active_text() usage to decrement GTK requirement
3130         to 2.4
3131
3132 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
3133
3134         * News: Update 0.32
3135
3136         * HACKING: Fixed realease instructions.  configure.in should be updated to
3137           the next release by the person who made the last release.
3138
3139 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
3140
3141         * python/lvalue_cast_post_process.py - removed.  Patch has been
3142           submitted to Pyrex maintainers that fixes gcc4.0 errors
3143
3144         * python/Makefile.am: removed refrences to lvalue_cast_post_process.py
3145
3146 2005-03-24  Daniel Reed  <n@ml.org>
3147
3148         * tools/Makefile.am: Make print-introspect and
3149         dbus-bus-introspect.xml building conditional on HAVE_GLIB.
3150
3151 2005-03-22  John (J5) Palmieri  <johnp@redhat.com>
3152
3153         * tools/Makefile.am: Patch by Colin Walters that fixes distcheck
3154
3155         * dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have 
3156           had in Red Hat packages for a while but for some reason never 
3157           got merged upstream
3158           (_dbus_is_a_number): New checks if a string
3159           can be converted to a number and does the conversion if it can
3160           (_dbus_user_database_lookup): Add check to see if the given username
3161           is a udi.  This allows udi's to be used instead of usernames in the
3162           config file.
3163           (_dbus_user_database_lookup_group): Add check to see if the given groupname
3164           is a gdi.  This allows gdi's to be used instead of groupnames in the
3165           config file.
3166
3167 2005-03-21  John (J5) Palmieri  <johnp@redhat.com>
3168
3169         * python/lvalue_cast_post_process.py - added post processor to fix Pyrex
3170           code so that it compiles with gcc4.0
3171
3172         * python/Makefile.am: Added lvalue_cast_post_process.py to EXTRA_DIST
3173           run dbus_bindings.c through lvalue_cast_post_process.py and copy the
3174           results back to dbus_binding.c
3175
3176 2005-03-20  Colin Walters  <walters@verbum.org>
3177
3178         Patch suggested by Inguva Rajasekhar <ringuva@novell.com>.
3179
3180         * configure.in: Require GTK+ 2.6.
3181         
3182 2005-03-20  Colin Walters  <walters@verbum.org>
3183
3184         * Makefile.am (SUBDIRS, DIST_SUBDIRS): Build tools before test.
3185
3186 2005-03-17  Tom Parker  <palfrey@tevp.net>
3187
3188         * dbus/dbus-userdb.c (_dbus_user_database_lookup): Don't
3189         print DBUS_UID_UNSET; instead print passed username.  Also
3190         be sure to actually use gid looked up in cache.
3191         
3192         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group): Ditto
3193         for DBUS_GID_UNSET and groupname.
3194
3195 2005-03-17  Colin Walters  <walters@verbum.org>
3196
3197         * bus/print-introspect.c: Move to tools/.
3198         * bus/run-with-tmp-session-bus.sh: Ditto.
3199         
3200         * glib/Makefile.am (dbus-glib-bindings.h): Move
3201         generation to tools/Makefile.am.
3202
3203         * test/glib/run-test.sh: Update to handle move
3204         of run-with-tmp-session-bus.sh.
3205
3206         * test/glib/test-service-glib.c: Update to handle
3207         move of dbus-glib-bindings.h.
3208
3209         * tools/print-introspect.c: Moved here
3210         from bus/, and ported to GLib bindings.
3211
3212         * tools/run-with-tmp-session-bus.sh: Moved here
3213         from bus/.
3214
3215         * tools/Makefile.am: Generate dbus-glib-bindings.h
3216         and dbus-bus-introspect.xml here.
3217
3218         * tools/.cvsignore, glib/.cvsignore, bus/.cvsignore:
3219         Update.
3220
3221 2005-03-17  Colin Walters  <walters@verbum.org>
3222
3223         * bus/driver.c (write_args_for_direction): Use
3224         _dbus_string_get_const_data to retrieve string;
3225         _dbus_string_get_const_data_len doesn't actually return
3226         a NULL-terminated substring.
3227
3228         * test/glib/test-service-glib.c: Include dbus-glib-bindings.h.
3229         (main): Change to use org_freedesktop_DBus_request_name
3230         instead of using g_proxy_begin_call/end_call.
3231
3232 2005-03-15  Joe Shaw  <joeshaw@novell.com>
3233
3234         * mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when
3235         generating the finalizer.  Fixes from Ben Maurer.
3236
3237 2005-03-12  Joe Shaw  <joeshaw@novell.com>
3238
3239         * mono/BusDriver.cs: Update method names: ListServices
3240         becomes ListNames; GetOwner becomes GetNameOwner.
3241
3242         * mono/ProxyBuilder.cs (BuildFinalizer): Need to load arg 0
3243         onto the eval stack when removing the delegate.
3244
3245 2005-03-12  Joe Shaw  <joeshaw@novell.com>
3246
3247         * mono/dbus-sharp.dll.config.in: Don't hardcode 0 for
3248         LT_CURRENT.  Set it to the autoconf variable.
3249                                                                                 
3250         * mono/ProxyBuilder.cs: Add a finalizer to the generated proxy
3251         classes that disconnects the signal handler delegate from the
3252         service object.  Fixes a big leak of proxy objects on the
3253         client side of things.  Patch from Ben Maurer
3254         <bmaurer@ximian.com>
3255
3256 2005-03-12  Colin Walters  <walters@verbum.org>
3257
3258         * bus/driver.c (write_args_for_direction): New function,
3259         parses a type signature into arguments and outputs to
3260         XML.
3261         (bus_driver_handle_introspect): Use it instead of
3262         hardcoding XML for certain signatures.
3263         
3264         * bus/Makefile.am (dbus-bus-introspect.xml): Add
3265         dependency on dbus-daemon.
3266
3267         * glib/dbus-glib-tool.c (main): Parse ignore_unsupported
3268         argument, pass it to dbus_binding_tool_output_glib_client.
3269
3270         * glib/dbus-binding-tool-glib.c
3271         (generate_client_glue): Protect against multiple inclusion.
3272         (dbus_binding_tool_output_glib_client): Add
3273         G_BEGIN_DECLS/G_END_DECLS.
3274
3275         * glib/dbus-binding-tool-glib.c (compute_client_method_name):
3276         Change to just take iface prefix directly.
3277         (write_formal_parameters): Clarify error message.
3278         (check_supported_parameters): New function; checks to see type
3279         signatures of method parameters are supported.
3280         (generate_client_glue): Handle ignore_unsupported flag.
3281         (dbus_binding_tool_output_glib_client): Handle ignore_unsupported
3282         parameter.
3283
3284         * glib/Makefile.am (dbus-glib-bindings.h): Pass
3285         --ignore-unsupported by default until glib bindings
3286         support arrays.
3287
3288 2005-03-11  Colin Walters  <walters@verbum.org>
3289
3290         * glib/Makefile.am: Generate dbus-glib-bindings.h and
3291         install it.
3292
3293         * bus/print-introspect.c: New file; prints introspection
3294         data for a given name and object path.
3295
3296         * bus/run-with-tmp-session-bus.sh: New file, refactored
3297         from test/glib/run-test.sh.  Creates a temporary session
3298         bus and runs another program.
3299
3300         * test/glib/run-test.sh: Refactor to invoke
3301         run-with-tmp-session-bus.sh.
3302
3303         * bus/driver.c (bus_driver_handle_introspect): Fix to print new
3304         introspection format.  Also change to use DBUS_TYPE_x_AS_STRING
3305         macros instead of hardcoding.
3306
3307         * glib/.cvsignore, bus/.cvsignore, test/glib/.cvsignore: Update.
3308
3309 2005-03-11  Joe Shaw  <joeshaw@novell.com>
3310
3311         * dbus/dbus-connection.c (dbus_connection_send_with_reply): Remove
3312         this unref; it doesn't match up evenly in some codepaths.
3313         (_dbus_connection_block_pending_call): Unref at every exitpoint;
3314         this evenly matches with the ref near the top of this function.
3315
3316 2005-03-09  Joe Shaw  <joeshaw@novell.com>
3317
3318         * dbus/dbus-object-tree.c
3319         (_dbus_object_tree_unregister_and_unlock): If checks are enabled
3320         and we try to unregister a path that's not registered, still go
3321         through the process of unlocking and don't just return.
3322
3323 2005-03-09  Colin Walters  <walters@verbum.org>
3324
3325         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): New method; calls
3326         to this are generated for client-side wrappers.  Invokes a
3327         D-BUS method and returns reply values.  
3328
3329         * glib/dbus-binding-tool-glib.c (write_args_sig_for_direction): New
3330         function; writes signature string for argument direction.
3331         (write_args_for_direction): Change to pass input values directly
3332         instead of via address, and fix indentation.
3333         (generate_client_glue): Change to invoke dbus_g_proxy_invoke.  Also
3334         make generated wrappers inlineable.
3335
3336         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array): Add
3337         note about using dbus_type_is_fixed.
3338
3339         * dbus/dbus-marshal-basic.c (_dbus_type_is_fixed): Moved to
3340         dbus/dbus-signature.c as dbus_type_is_fixed.
3341
3342         All callers updated.
3343
3344         * dbus/dbus-signature.c (dbus_type_is_fixed): Moved here
3345         from dbus/dbus-marshal-basic.c:_dbus_type_is_fixed.
3346
3347         * dbus/dbus-signature.h: Prototype.
3348
3349         * glib/dbus-binding-tool-glib.c (compute_marshaller_name): Fix
3350         error printf code.
3351
3352         * test/glib/test-dbus-glib.c (main): Be sure to clear error as
3353         appropriate instead of just freeing it.
3354         (main): Free returned strings using g_free.
3355
3356         * test/glib/Makefile.am (test-service-glib-glue.h)
3357         (test-service-glib-bindings.h): Add dependency on dbus-binding-tool.
3358
3359         * glib/dbus-gvalue.c (MAP_BASIC): Refactored from MAP_BASIC_INIT;
3360         simply maps a simple D-BUS type to GType.
3361         (dbus_dbus_type_to_gtype): Function which maps D-BUS type to
3362         GType.
3363         (dbus_gvalue_init): Just invoke dbus_dbus_type_to_gtype and
3364         initialize the value with it.
3365         (dbus_gvalue_binding_type_from_type): Unused, delete.
3366         (dbus_gvalue_demarshal): Switch to hardcoding demarshalling for
3367         various types instead of unmarshalling to value data directly.
3368         Remove can_convert boolean.
3369         (dbus_gvalue_marshal): Remove duplicate initialization; switch to
3370         returning directly instead of using can_convert boolean.
3371         (dbus_gvalue_store): New function; not related to D-BUS per-se.
3372         Stores a GValue in a pointer to a value of its corresponding C
3373         type.
3374
3375         * glib/dbus-gvalue.h: Remove dbus_gvalue_binding_type_from_type,
3376         add dbus_gvalue_store.
3377
3378 2005-03-08  Joe Shaw  <joeshaw@novell.com>
3379
3380         Fix a bunch of lifecycle and memory management problems
3381         in the mono bindings.
3382
3383         * mono/Arguments.cs (Arguments): Implement IDisposable
3384
3385         * mono/Bus.cs (Bus): Don't allow public instantiation.  This is
3386         strictly a static class.
3387
3388         * mono/Connection.cs: Move the DBusObjectPathVTable and associated
3389         delegates into this file.
3390         (Connection): Implement IDisposable.
3391         (Dispose): Disconnect the connection and set the raw connection
3392         pointer to IntPtr.Zero.
3393         (~Connection): Call Dispose().
3394         (RegisterObjectPath): Added.  Manages the registration of object
3395         paths so we can cleanly disconnect them at dispose/finalize time.
3396         (UnregisterObjectPath): Ditto.
3397         (set_RawConnection): Unregister all of the object paths when
3398         changing the underlying DBusConnection.  Add them back onto the
3399         new connection, if any.
3400
3401         * mono/Handler.cs: Don't implement IDisposable; it doesn't use any
3402         more unmanaged resources anymore, so it's not necessary.  Move all
3403         the DBusObjectPathVTable stuff out of here.
3404         (Handler): Save references to our delegates so that they don't get
3405         finalized.  Call Connection.RegisterObjectPath() instead of
3406         dbus_connection_register_object_path() directly.
3407         (Message_Called): Dispose the message after we're finished with
3408         it.
3409
3410         * mono/Message.cs (Message): Implement IDisposable.
3411         (Dispose): Dispose the Arguments, and set the RawMessage to
3412         IntPtr.Zero.
3413         (SendWithReplyAndBlock): We own the ref to the reply that comes
3414         back from dbus_connection_send_with_reply_and_block() so add a
3415         comment about that and unref it after we've constructed a managed
3416         MethodReturn class around it.  Fixes a big, big leak.
3417
3418         * mono/ProxyBuilder.cs: Reflect into Message to get the Dispose
3419         method.
3420         (BuildSignalHandler): After we've sent the Signal message, dispose
3421         of it.
3422         (BuildMethod): Dispose of the method call and reply messages after
3423         we've sent the message and extracted the data we want from the
3424         reply.
3425
3426         * mono/Service.cs (UnregisterObject): Don't call handler.Dispose()
3427         anymore.
3428         (Service_FilterCalled): Dispose of the message after we're
3429         finished with it.
3430
3431 2005-03-08  Joe Shaw  <joeshaw@novell.com>
3432
3433         * dbus/dbus-connection.c (dbus_connection_send_with_reply):
3434         After we attach our pending call to the connection, unref
3435         it.  Fixes a leak.
3436  
3437         * mono/Connection.cs (set_RawConnection): Disconnect our
3438         filter and match callbacks from the old connection and
3439         reconnect them to the new connection, if any.
3440
3441         * mono/DBusType/Array.cs: "Code" is a static member, so
3442         don't use "this" to refer to it.  Fix for stricter checking
3443         in Mono 1.1.4.
3444  
3445         * mono/DBusType/ObjectPath.cs (Append): Don't leak the
3446         object path that we pass into unmanaged code.
3447  
3448         * mono/DBusType/String.cs (Append): Don't leak the string
3449         that we pass into unmanged code.
3450
3451 2005-03-07  John (J5) Palmieri  <johnp@redhat.com>
3452         * NEWS: Update for 0.31
3453
3454         * configure.in: Release 0.31
3455         add LT_CURRENT, LT_REVISION, LT_AGE for easy soname bumping
3456
3457         * qt/Makefile.am: fixed build
3458
3459         * dbus/Makefile.am: soname bump for libdbus
3460
3461         * glib/Makefile.am: soname bump for libdbus-glib
3462
3463 2005-03-05  Havoc Pennington  <hp@redhat.com>
3464
3465         * dbus/dbus-sysdeps.c:
3466         (pseudorandom_generate_random_bytes_buffer): fix to have no return
3467         value
3468         (_dbus_generate_random_bytes_buffer): fix return value
3469
3470         * dbus/dbus-sysdeps-util.c: s/GETPWNAME/GETPWNAM/ so configure
3471         checks actually work, from Tom Parker <fdo@tevp.net>
3472
3473 2005-03-01  Colin Walters  <walters@verbum.org>
3474
3475         * test/glib/test-dbus-glib.c (lose, lose_gerror): Utility
3476         functions copied from dbus-glib-tool.c.
3477         (main): Convert lots of error code to use them.
3478         Also add some testing for introspection bits.
3479
3480 2005-03-01  Colin Walters  <walters@verbum.org>
3481         
3482         * doc/TODO: Remove introspection signature TODO.
3483
3484 2005-02-27  Colin Walters  <walters@verbum.org>
3485
3486         * glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
3487         Change return value to const char * instead of int so we can do
3488         full signatures.
3489         (struct PropertyInfo, struct ArgInfo): Store char *.
3490         (property_info_new, arg_info_new): Update parameters, strdup.
3491         (property_info_unref, arg_info_unref): Free.
3492
3493         * glib/dbus-gidl.h: Update prototypes.
3494
3495         * glib/dbus-gparser.c (basic_type_from_string): Delete.
3496         (validate_signature): New function, just validates signature and
3497         sets GError.
3498         (parse_property, parse_arg): Invoke validate_signature.  Store
3499         signature instead of just type code.
3500
3501         * glib/dbus-gvalue.c (base_type_from_signature): New utility
3502         function to return a primary type for a signature, dropping
3503         information about types in container types.
3504         (dbus_gvalue_genmarshal_name_from_type)
3505         (dbus_gvalue_binding_type_from_type)
3506         (dbus_gvalue_ctype_from_type): Update to take full signature
3507          instead of type code.
3508         (dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.
3509
3510         * glib/dbus-gvalue.h: Update prototypes for above.
3511
3512         * glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
3513         glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
3514         (introspect_properties, introspect_signals, write_interface):
3515         Update to handle signatures, and remove usage of
3516         _dbus_gutils_type_to_string.
3517         (handle_introspect): Print out type codes instead of e.g. "string"
3518         in hardcoded introspection XML; also use x_AS_STRING constants
3519         instead of hardcoding in string.
3520
3521         * glib/dbus-glib-tool.c (pretty_print): Handle signature change
3522         to string.  Remove usage of _dbus_gutils_type_to_string.
3523
3524         * glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.
3525
3526         * glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
3527         deletion.
3528         
3529         * glib/dbus-binding-tool-glib.c (compute_marshaller)
3530         (compute_marshaller_name, generate_glue): Handle signature change
3531         to string.
3532         (write_formal_parameters, write_args_for_direction): Ditto, and
3533         remove FIXME.
3534
3535         * tools/dbus-tree-view.c (type_to_string): Delete.
3536         (info_set_func_text): Update to print full signatures.
3537
3538         * test/glib/test-service-glib.xml: Change types to new
3539         introspection format.
3540
3541 2005-02-26  Havoc Pennington  <hp@redhat.com>
3542
3543         * doc/TODO: remove the "guid" item
3544
3545         * test/glib/test-profile.c (no_bus_thread_func): use open_private
3546         (with_bus_thread_func): use open_private
3547
3548         * dbus/dbus-connection.c (dbus_connection_open_private): new
3549         function that works like the old dbus_connection_open()
3550         (dbus_connection_open): now returns an existing connection if
3551         possible
3552
3553         * dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
3554         through the GUID to the transport
3555
3556         * dbus/dbus-server.c (_dbus_server_init_base): keep around the
3557         GUID in hex-encoded form.
3558
3559         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
3560         pass GUID argument in to the transport
3561
3562         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
3563         guid argument
3564
3565         * dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument
3566
3567         * dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument
3568
3569 2005-02-25  Havoc Pennington  <hp@redhat.com>
3570
3571         * doc/dbus-specification.xml: document the GUID thing
3572
3573         * dbus/dbus-server.c (_dbus_server_init_base): initialize a
3574         globally unique ID for the server, and put a "guid=hexencoded"
3575         field in the address
3576
3577         * dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h
3578
3579         * dbus/dbus-message.c: ditto
3580
3581         * dbus/dbus-dataslot.c: ditto
3582
3583         * dbus/dbus-list.c: ditto
3584
3585         * dbus/dbus-internals.h: wait, just include
3586         dbus-threads-internal.h here
3587         
3588         * dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
3589         use in main library
3590
3591         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function
3592
3593 2005-02-24  Colin Walters  <walters@verbum.org>
3594
3595         * test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml
3596
3597 2005-02-24  John (J5) Palmieir  <johnp@redhat.com>
3598
3599         * glib/Makefile.am: added dbus-gobject.h to sources list
3600         so distcheck doesn't fail
3601         
3602 2005-02-24  Havoc Pennington  <hp@redhat.com>
3603
3604         * dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
3605         you must disconnect before unref, since locking and other things
3606         are screwed up otherwise. Fix assorted other locking stuff.
3607
3608         * dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
3609         fix compilation
3610
3611         * dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
3612         into a private header and don't export from the library
3613
3614         * throughout - call _dbus_thread_stuff vs. dbus_thread_stuff
3615
3616 2005-02-24  Colin Walters  <walters@verbum.org>
3617         
3618         * dbus/dbus-signature.c: New file; implements various functions
3619         related to type signatures.  Includes an interator for parsing,
3620         validation functions.
3621         (dbus_type_is_basic): Moved here from
3622         dbus-marshal-basic.c:_dbus_type_is_basic.
3623         (dbus_type_is_container): Moved here from
3624         dbus-marshal-basic.c:_dbus_type_is_container.
3625
3626         All callers of _dbus_type_is_container and _dbus_type_is_basic
3627         updated, and include dbus-signature.h.
3628
3629         * dbus/dbus-signature.h: New file; prototypes for the above.
3630
3631         * dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
3632         dbus-signature.h.
3633
3634         * dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
3635         function factored out of _dbus_first_type_in_signature.
3636         (_dbus_first_type_in_signature_c_str): New function; returns first
3637         type code for a type signature character.
3638
3639         * dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
3640         handle function moves.
3641
3642         * dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.
3643
3644         * dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
3645         function; skips to next complete type in type signature.
3646         Implemented using previous skip_one_complete_type.  Now
3647         skip_one_complete_type just delegates to
3648         _dbus_type_signature_next.
3649
3650         * dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
3651         to dbus-signature.c
3652         (_dbus_type_is_container): Ditto.
3653
3654         * doc/dbus-specification.xml: Update introspection sample to
3655         use real type signatures.
3656
3657         * dbus/dbus-test.h: Prototype signature test.
3658
3659         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
3660         signature tests.
3661
3662         * dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.
3663
3664 2005-02-23  John (J5) Palmieri  <johnp@redhat.com>
3665
3666         * python/dbus_bindings.pyx.in (PendingCall::get_reply):
3667         s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply
3668
3669 2005-02-21  Colin Walters  <walters@verbum.org>
3670
3671         * dbus/dbus-test-main.c (main): Take optional specific test
3672         argument.
3673
3674         * dbus/dbus-test.c (run_test): New function, runs a test function
3675         with no data directory.
3676         (run_data_test): Like above, but takes data directory.
3677         (dbus_internal_do_not_use_run_tests): Take
3678         specific test argument.  Replace lots of cut n' paste code
3679         with run_test and run_data_test.
3680
3681         * dbus/dbus-test.h: Update prototype for
3682         dbus_internal_do_not_use_run_tests.
3683
3684 2005-02-20  Havoc Pennington  <hp@redhat.com>
3685
3686         Fix bugs reported by Daniel P. Berrange
3687         
3688         * dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
3689         (protected_change_watch): new function
3690         (_dbus_server_toggle_watch, _dbus_server_remove_watch)
3691         (_dbus_server_add_watch): change to work like the
3692         dbus-connection.c equivalents; like those, probably kind of
3693         busted, but should at least mostly work for now
3694         (dbus_server_disconnect): drop the lock if we were already
3695         disconnected, patch from Daniel P. Berrange
3696
3697         * dbus/dbus-server.c (_dbus_server_toggle_timeout) 
3698         (_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
3699         same stuff
3700
3701         * doc/TODO: todo about unscrewing this mess
3702
3703 2005-02-19  Colin Walters  <walters@verbum.org>
3704
3705         * glib/dbus-binding-tool-glib.c
3706         (dbus_binding_tool_output_glib_server): Fix iochannel refcounting.
3707
3708         * glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
3709         as errno.h and sys/stat.h.
3710         (lose): New function, prints error with
3711         newline and exits.
3712         (lose_gerror): Similar, but takes GError for message.
3713         (main): Add --output argument to specify output file to write to,
3714         instead of always printing to stdout.  In this mode, determine
3715         timestamps on source files to see whether any are newer than the
3716         target file.  If not, exit.  Also convert a number of error
3717         messages to use lose (since it's shorter), and switch to using
3718         g_io_channel_shutdown.
3719
3720 2005-02-19  Havoc Pennington  <hp@redhat.com>
3721
3722         * glib/dbus-gobject.c
3723         (_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs
3724
3725         * glib/dbus-glib.c: fix doxygen warnings
3726
3727         * glib/dbus-gparser.c (parse_annotation): error if an annotation
3728         is found on an <arg>
3729
3730 2005-02-17  Colin Walters  <walters@verbum.org>
3731
3732         * glib/dbus-gobject.h: Don't export
3733         _dbus_glib_marshal_dbus_message_to_gvalue_array.
3734         
3735         * glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
3736         (invoke_object_method): Handle it.
3737
3738         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
3739         Handle rename.
3740         
3741 2005-02-17  Colin Walters  <walters@verbum.org>
3742
3743         * bus/.cvsignore, doc/.cvsignore
3744         * test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
3745         Update.
3746
3747 2005-02-17  Colin Walters  <walters@verbum.org>
3748         
3749         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
3750         Rename to DBUS_SERVICE_DBUS.
3751         (DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
3752         (DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
3753         Change the value from "org.freedesktop.Local"
3754         to "org.freedesktop.DBus.Local".
3755         (DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
3756         (DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
3757         DBUS_INTERFACE_INTROSPECTABLE.
3758         Change the value from "org.freedesktop.Introspectable"
3759         to "org.freedesktop.DBus.Introspectable".
3760         (DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
3761         DBUS_INTERFACE_PROPERTIES.
3762         Change the value from "org.freedesktop.Properties"
3763         to "org.freedesktop.DBus.Properties".
3764         (DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
3765         DBUS_INTERFACE_PEER.
3766         Change the value from "org.freedesktop.Peer"
3767         to "org.freedesktop.DBus.Peer".
3768         (DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL): 
3769         DBUS_INTERFACE_LOCAL.
3770         Change the value from "org.freedesktop.Local"
3771         to "org.freedesktop.DBus.Local".
3772
3773         All other users of those constants have been changed.
3774
3775         * bus/driver.c (bus_driver_handle_introspect): Use constants.
3776
3777         * glib/dbus-gobject.c (handle_introspect): Use constants.
3778
3779         * doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.
3780
3781 2005-02-17  Colin Walters  <walters@verbum.org>
3782
3783         * glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
3784         (parse_node, parse_interface, parse_method, parse_signal)
3785         (parse_property, parse_annotation): Lose if we're currently in an
3786         annotation.
3787         (parse_annotation): New function.
3788         (parser_start_element, parser_end_element): Handle annotation.
3789         (parse_method, parse_interface): Remove support for c_name attribute,
3790         switch to annotations.
3791
3792         * glib/dbus-gidl.h (interface_info_get_binding_names)
3793         (method_info_get_binding_names)
3794         (interface_info_get_binding_name, method_info_get_binding_name)
3795         (interface_info_set_binding_name, method_info_set_binding_name):
3796         Remove.
3797         (interface_info_get_annotations, method_info_get_annotations)
3798         (interface_info_get_annotation, method_info_get_annotation)
3799         (interface_info_add_annotation, method_info_add_annotation):
3800         Prototype.
3801
3802         * glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
3803         for "bindings".
3804         (struct MethodInfo): Ditto.
3805         Straightfoward conversion of binding methods into annotation methods
3806         as prototyped.
3807
3808         * glib/dbus-glib-tool.c (pretty_print): Print annotations.
3809
3810         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.
3811
3812         * glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
3813         Use new annotation API.
3814
3815         * doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
3816         annotation element.
3817         
3818         * doc/dbus-specification.xml: Discuss introspection annotations,
3819         include list of well-known annotations.
3820
3821         * test/glib/test-service-glib.xml: Make validate against new DTD.
3822
3823 2005-02-17  Colin Walters  <walters@verbum.org>
3824
3825         This patch is based on initial work from
3826         Paul Kuliniewicz <kuliniew@purdue.edu>.
3827
3828         * glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
3829         initialization of GValue from dbus type to here.
3830         (dbus_gvalue_genmarshal_name_from_type): New function; generates a string
3831         for the "glib-genmarshal" program from a DBus type.
3832         (dbus_gvalue_binding_type_from_type): New function; turns a DBus type
3833         into the C name for it we use in the glib bindings.
3834         (dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
3835         glib C type (not GValue).
3836         (dbus_gvalue_demarshal): invoke dbus_gvalue_init.
3837
3838         * glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
3839         from dbus-gobject.c.
3840
3841         * glib/dbus-gutils.h: Prototype it.
3842
3843         * glib/dbus-gproxy.c: Include new dbus-gobject.h.
3844         (marshal_dbus_message_to_g_marshaller): Use new shared function
3845         dbus_glib_marshal_dbus_message_to_gvalue_array.
3846
3847         * glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
3848         Will be changed once we have annotations.
3849
3850         * glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
3851         GStaticRWLock.  Callers updated.
3852         (wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
3853         (string_table_next): New function for iterating over zero-terminated
3854         string value array.
3855         (string_table_lookup): New function; retrieves specific entry in
3856         array.
3857         (get_method_data): New function; look up method data in object data chunk.
3858         (object_error_domain_prefix_from_object_info)
3859         (object_error_code_from_object_info): New functions, but not implemented yet.
3860         (method_interface_from_object_info): New function; retrieve interface name.
3861         (method_name_from_object_info): New function; retrieve method name.
3862         (method_arg_info_from_object_info): New function; retrieve argument data.
3863         (arg_iterate): New function; iterates over serialized argument data.
3864         (method_dir_signature_from_object_info): New function; returns a
3865         GString holding type signature for arguments for just one
3866         direction (input or output).
3867         (method_input_signature_from_object_info)
3868         (method_output_signature_from_object_info): New functions.
3869         (dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
3870         converts dbus message arguments into a GValue array.  Used for both
3871         signal handling and method invocation.
3872         (struct DBusGlibWriteIterfaceData): New utility structure.
3873         (write_interface): New function; generate introspection XML for
3874         an interface.
3875         (introspect_interfaces): New function; gathers all interface->methods,
3876         generates introspection XML for them.
3877         (handle_introspect): Invoke introspect_interfaces.
3878         (get_object_property): Be sure to zero-initalize stack-allocated GValue.
3879         (lookup_object_and_method): New function; examines an incoming message
3880         and attempts to match it up (via interface, method name, and argument
3881         signature) with a known object and method.
3882         (gerror_domaincode_to_dbus_error_name): New function; converts a
3883         GError domain and code into a DBus error name.  Needs GError data
3884         added to object introspection to work well.
3885         (gerror_to_dbus_error_message): Creates a DBusMessage error return from
3886         GError.
3887         (invoke_object_method): New function to invoke an object method
3888         looked up via lookup_object_and_method.  Parses the incoming
3889         message, turns it into a GValue array, then invokes the marshaller
3890         specified in the DBusGMethodInfo.  Creates a new message with
3891         either return values or error message as appropriate.
3892         (gobject_message_function): Invoke lookup_object_and_method and
3893         invoke_object_method.
3894
3895         * glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
3896         (enum DBusBindingOutputMode): New enum for binding output modes.
3897         (pretty_print): Print binding names.
3898         (dbus_binding_tool_error_quark): GError bits.
3899         (version): Fix typo.
3900         (main): Create GIOChannel for output.  Parse new --mode argument,
3901         possible values are "pretty-print", "glib-server", "glib-client".
3902         Use mode to invoke appropriate function.
3903         
3904         * glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.
3905
3906         * glib/dbus-glib-tool.h: New header, just includes GError bits
3907         for now.
3908
3909         * glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
3910         maps binding style to name.
3911         (struct MethodInfo): Ditto.
3912         (get_hash_keys, get_hash_key): Utility function, returns keys for
3913         a GHashTable.
3914         (interface_info_new, method_info_new): Initialize bindings.
3915         (interface_info_unref, method_info_unref): Destroy bindings.
3916         (method_info_get_binding_names, method_info_get_binding_name)
3917         (interface_info_get_binding_names, interface_info_get_binding_name):
3918         Functions for retrieving binding names.
3919         (method_info_set_binding_name, interface_info_set_binding_name):
3920         Functions for setting binding names.
3921
3922         * glib/dbus-binding-tool-glib.h: New file, has prototypes
3923         for glib binding generation.
3924
3925         * glib/dbus-binding-tool-glib.c: New file, implements server-side
3926         and client-side glib glue generation.
3927
3928         * glib/Makefile.am (dbus_binding_tool_SOURCES): Add
3929         dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
3930         dbus-glib-tool.h.
3931
3932         * dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
3933         of using GClosureMarshal directly.
3934         (struct DBusGObjectInfo): Add n_infos member.
3935
3936         * test/glib/test-service-glib.xml: New file; contains introspection data
3937         for MyTestObject used in test-service-glib.c.
3938
3939         * test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
3940         (my_object_do_nothing, my_object_increment, my_object_throw_error)
3941         (my_object_uppercase, my_object_many_args): New test methods.
3942         (main): Use dbus_g_object_class_install_info to include generated object
3943         info.
3944
3945         * test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
3946         as well as client-side bindings.
3947
3948         * test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
3949         (main): Activate TestSuiteGLibService; test invoke a bunch of its methods
3950         using both the dbus_gproxy stuff directly as well as the generated bindings.
3951
3952 2005-02-15  Havoc Pennington  <hp@redhat.com>
3953
3954         * dbus/dbus-connection.c (dbus_connection_dispatch): always
3955         complete a pending call, don't run filters first.
3956
3957         * glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
3958         dbus_pending_call_steal_reply
3959
3960         * dbus/dbus-pending-call.c (dbus_pending_call_block): just call
3961         _dbus_connection_block_pending_call
3962         (dbus_pending_call_get_reply): change to steal_reply and return a
3963         ref
3964
3965         * dbus/dbus-connection.c
3966         (dbus_connection_send_with_reply_and_block): port to work in terms
3967         of DBusPendingCall
3968         (_dbus_connection_block_pending_call): replace block_for_reply
3969         with this
3970
3971 2005-02-14  Havoc Pennington  <hp@redhat.com>
3972
3973         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
3974         properly handle looking up group information by name; fix 
3975         from j@bootlab.org
3976
3977 2005-02-13  Havoc Pennington  <hp@redhat.com>
3978
3979         * dbus/dbus-connection.c (dbus_connection_return_message) 
3980         (dbus_connection_borrow_message): hold dispatch lock while message
3981         is outstanding
3982         (_dbus_connection_block_for_reply): hold dispatch lock while we
3983         block for the reply, so nobody steals our reply
3984         (dbus_connection_pop_message): hold the dispatch lock while we
3985         pluck the message
3986
3987 2005-02-13  Havoc Pennington  <hp@redhat.com>
3988
3989         * dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
3990         (_dbus_connection_release_dispatch)
3991         (_dbus_connection_acquire_io_path)
3992         (_dbus_connection_release_io_path): make the mutex and condvar
3993         control access to the "acquired" flag. Drop the connection lock
3994         while waiting on the condvar. Hopefully these are baby steps in
3995         roughly the right direction.
3996
3997 2005-02-13  Havoc Pennington  <hp@redhat.com>
3998
3999         * dbus/dbus-connection.c: use separate mutexes for the condition
4000         variables; this is some kind of baseline for sanity, but the
4001         condition variables still aren't used correctly afaict
4002
4003 2005-02-13  Havoc Pennington  <hp@redhat.com>
4004
4005         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
4006         fix a double-unlock
4007
4008         * dbus/dbus-connection.c
4009         (_dbus_connection_detach_pending_call_unlocked): add this
4010
4011         Initial semi-correct pass through to fix thread locking; there are
4012         still some issues with the condition variable paths I'm pretty
4013         sure
4014         
4015         * dbus/dbus-server.c: add a mutex on DBusServer and appropriate
4016         lock/unlock calls
4017
4018         * dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
4019         rename to add _unlocked
4020         (struct DBusConnection): move "dispatch_acquired" and
4021         "io_path_acquired" to use only one bit each.
4022         (CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
4023         (dbus_connection_set_watch_functions): hacky fix to reentrancy
4024         (_dbus_connection_add_watch, _dbus_connection_remove_watch) 
4025         (_dbus_connection_toggle_watch, _dbus_connection_add_timeout) 
4026         (_dbus_connection_remove_timeout) 
4027         (_dbus_connection_toggle_timeout): drop lock when calling out to
4028         user functions; done in a hacky/bad way.
4029         (_dbus_connection_send_and_unlock): add a missing unlock
4030         (_dbus_connection_block_for_reply): add a missing unlock
4031
4032         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
4033         drop lock in a hacky probably unsafe way to call out to user
4034         function
4035
4036 2005-02-12  Havoc Pennington  <hp@redhat.com>
4037
4038         * tools/dbus-tree-view.c (info_set_func_text): display more
4039         details on args
4040
4041         * bus/driver.c (bus_driver_handle_list_services): list the bus
4042         driver
4043
4044         * glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied
4045
4046         * glib/dbus-gidl.c (signal_info_get_n_args): new function
4047         (method_info_get_n_args): new function
4048
4049 2005-02-12  Havoc Pennington  <hp@redhat.com>
4050
4051         * bus/driver.c (bus_driver_handle_introspect): add introspection
4052         for bus driver
4053
4054 2005-02-12  Havoc Pennington  <hp@redhat.com>
4055
4056         * bus/driver.c: put the signature of each bus driver method in the
4057         table of handlers and check it on incoming calls; this isn't
4058         really useful, but going to add introspect support in a minute.
4059
4060 2005-02-11  Joe Shaw  <joeshaw@novell.com>
4061
4062         * mono/Connection.cs: The unpredictability of finalizers in mono
4063         prevents us from deterministically disconnecting the filters from
4064         the Service class's finalizer, so move tracking of filters and
4065         matches here.  Add API for that.
4066
4067         * mono/Service.cs: Remove the code, add code which calls the
4068         methods now on the Connection class.
4069
4070 2005-02-11  John (J5) Palmieri  <johnp@redhat.com>
4071
4072         * python/dbus.py (class Sender): added to support dbus signals better
4073         (Bus::add_signal_receiver): added expand_args parameter which defaults
4074         to True.  When expand args is True the signal handler will pass the 
4075         message arguments as parameters to the signal handler.  If False
4076         revert to previous behavior where the signal handler must get the
4077         argument list from the message.  This is to help port applications
4078         like HAL that have a tendancy to send variable length argument lists.
4079         self._match_rule_to_receivers is now a dict of dicts.
4080         (Bus::remove_signal_receiver): pop handler off the dict intead of 
4081         removing it from a list
4082         (Bus::_signal_func): change signal handlers so that interface,
4083         signal_name, service, path and message are packed into a Sender
4084         object and that is passed to the handler.  If expand_args is True
4085         extract the args list from the message and append it to the parameter
4086         list
4087         
4088         * python/dbus_bindings.pyx.in (class Signature): added to support 
4089         signiature types
4090         (MessageIter::__init__): changed iteration limit to match D-BUS
4091         (MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY, 
4092         STRUCT and VARIENT type support
4093         (MessageIter::python_value_to_dbus_sig): made recursive to support
4094         recursive types
4095         (MessageIter::append*): added Signature, dict, tuple 
4096         support
4097
4098         * python/examples/example-client.py: added examples of getting tuples
4099         and dicts
4100
4101         * python/examples/example-service.py: added examples of sending tuples
4102         and dicts
4103
4104         * python/examples/example-signal-recipient.py: Fixed to handle new
4105         signal callback format
4106
4107 2005-02-10  Havoc Pennington  <hp@redhat.com>
4108
4109         * test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
4110         (call dbus_g_proxy_add_signal)
4111
4112         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
4113         escape the hostname
4114         (_dbus_server_new_for_domain_socket): escape the path
4115
4116         * dbus/dbus-address.c (dbus_address_escape_value): new
4117         (dbus_address_unescape_value): new
4118         (dbus_parse_address): unescape values
4119
4120         * dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function
4121
4122         * doc/dbus-specification.xml: explain how to escape values in
4123         addresses
4124
4125 2005-02-10  Havoc Pennington  <hp@redhat.com>
4126
4127         * dbus/dbus-message-factory.c (generate_special): modify test to
4128         avoid using a non-basic dict key
4129
4130         * dbus/dbus-marshal-validate-util.c: add test for the below
4131
4132         * doc/dbus-specification.xml: require that dict keys are a basic
4133         type
4134
4135         * dbus/dbus-marshal-validate.c
4136         (_dbus_validate_signature_with_reason): require that dict key is a
4137         basic type
4138
4139 2005-02-10  Havoc Pennington  <hp@redhat.com>
4140
4141         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
4142         change to be _and_unlock instead of _unlocked
4143
4144         * dbus/dbus-connection.c
4145         (_dbus_connection_send_preallocated_unlocked_no_update): rename to
4146         have no_update so we can find this bug quickly in future
4147
4148 2005-02-10  Havoc Pennington  <hp@redhat.com>
4149
4150         * dbus/dbus-message-util.c (verify_test_message): tests for string
4151         array
4152
4153         * dbus/dbus-message.c (dbus_message_append_args_valist): add
4154         support for arrays of string/signature/path
4155
4156 2005-02-10  Joe Shaw  <joeshaw@novell.com>
4157
4158         * dbus/dbus-connection.c
4159         (_dbus_connection_queue_received_message_link,
4160         _dbus_connection_message_sent): Add the path to
4161         the verbose output.
4162         (_dbus_connection_send_preallocated_and_unlock): Added.  Calls
4163         _dbus_connection_send_preallocated_unlocked(), updated the
4164         dispatch status, and unlocks.  Fixes a bug where certain
4165         situations (like a broken pipe) could cause a Disconnect message
4166         to not be sent, tricking the bus into thinking a service was still
4167         there when the process had quit.
4168         (_dbus_connection_send_preallocated): Call
4169         _dbus_connection_send_preallocated_and_unlock().
4170         (_dbus_connection_send_and_unlock): Added.  Calls
4171         _dbus_connection_send_preallocated_and_unlock().
4172         (dbus_connection_send): Call _dbus_connection_send_and_unlock().
4173         (dbus_connection_send_with_reply): Update the dispatch status and
4174         unlock.
4175
4176         * mono/Service.cs (~Service): Added.  Removes the filter so that
4177         we don't get unmanaged code calling back into a GCed delegate.
4178         (RemoveFilter); Added.
4179
4180 2005-02-09  John (J5) Palmieri  <johnp@redhat.com>
4181
4182         * dbus/dbus-message.c (dbus_message_iter_open_container):
4183         - Removed check for iterator type being an array because
4184         get_arg_type does not work with writer iterators
4185         - Pass NULL to _dbus_type_writer_recurse if signiture is NULL
4186
4187 2005-02-07  Havoc Pennington  <hp@redhat.com>
4188
4189         * doc/dbus-specification.xml: some more language cleanups; add
4190         stuff about how to deal with invalid protocol and extension
4191         points; add _ to allowed chars in auth commands; add EXTENSION_
4192         auth command prefix
4193
4194 2005-02-06  Havoc Pennington  <hp@redhat.com>
4195
4196         * s/expected/required/ in a couple places for clarity
4197
4198 2005-02-07  Colin Walters  <walters@verbum.org>
4199
4200         * bus/selinux.c (bus_selinux_allows_send): Handle NULL for
4201         sender or proposed_recipient.
4202
4203 2005-02-06  Havoc Pennington  <hp@redhat.com>
4204
4205         * dbus/dbus-message-factory.c (generate_special): more tests
4206
4207         * dbus/dbus-marshal-validate.c (validate_body_helper): detect
4208         array length that exceeds the maximum
4209
4210 2005-02-05  Havoc Pennington  <hp@redhat.com>
4211
4212         * dbus/dbus-message-factory.c (generate_special): more test cases,
4213         increasing coverage
4214
4215         * dbus/dbus-marshal-validate.c (validate_body_helper): return the
4216         reason why a signature was invalid
4217
4218         * dbus/dbus-marshal-header.c (load_and_validate_field): fix to
4219         skip the length of the string before we look at it in validation
4220
4221         * dbus/dbus-string-util.c (_dbus_string_test): add tests for
4222         equal_substring
4223
4224         * dbus/dbus-message.c (_dbus_message_loader_new): default
4225         max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH
4226
4227 2005-02-05  Havoc Pennington  <hp@redhat.com>
4228
4229         * dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
4230         if the signature of a variant was empty
4231         (_dbus_validate_signature_with_reason): catch "(a)" (array inside
4232         struct with no element type)
4233
4234         * dbus/dbus-message-factory.c (generate_uint32_changed): add more
4235         mangled messages to break things
4236
4237 2005-02-04  Havoc Pennington  <hp@redhat.com>
4238
4239         * glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
4240         g_quark_try_string() so it actually can return 0
4241         (dbus_g_proxy_connect_signal): ditto
4242
4243 2005-02-04  Havoc Pennington  <hp@redhat.com>
4244
4245         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
4246         bogus warning
4247         (tristring_from_message): assert cleanly on null path/interface
4248         (should not be possible though I decided later)
4249         (dbus_g_proxy_dispose): move proxy manager unregistration here
4250         (DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
4251         g_return_if_fail() checks
4252
4253 2005-02-04  Havoc Pennington  <hp@redhat.com>
4254
4255         * doc/Makefile.am (EXTRA_DIST): add DTDs to makefile
4256
4257         * doc/introspect.dtd: add introspect.dtd from David A. Wheeler
4258         (with some minor changes)
4259
4260         * doc/dbus-specification.xml: add deprecated attribute to
4261         introspection format
4262
4263 2005-01-31  Havoc Pennington  <hp@redhat.com>
4264
4265         * glib/dbus-gproxy.c: rewrite how signals work again, this time I
4266         think it's sort of right
4267
4268 2005-01-30  Havoc Pennington  <hp@redhat.com>
4269
4270         * tools/dbus-viewer.c: kind of half-ass hook up the option menu.
4271
4272 2005-01-30  Havoc Pennington  <hp@redhat.com>
4273
4274         * tools/dbus-names-model.c: dynamically watch NameOwnerChanged
4275
4276         * autogen.sh: change to autotools 1.9
4277
4278         * glib/dbus-gproxy.c: completely change how signals work
4279         (dbus_g_proxy_add_signal): new function to specify signature of a
4280         signal
4281         (dbus_g_proxy_emit_received): marshal the dbus message to GValues,
4282         and g_warning if the incoming message has the wrong signature.
4283
4284 2005-01-30  Havoc Pennington  <hp@redhat.com>
4285
4286         * tools/dbus-names-model.c (have_names_notify): fix this
4287
4288         * dbus/dbus-message.c (_dbus_message_iter_get_args_valist): clean
4289         up the string array handling a bit 
4290
4291 2005-01-30  Havoc Pennington  <hp@redhat.com>
4292
4293         * glib/dbus-glib.c (dbus_g_pending_call_set_notify): new function
4294         (dbus_g_pending_call_cancel): new function
4295
4296         * dbus/dbus-glib.h: move GType decls for connection/message here;
4297         * dbus/dbus-glib.c: move all the g_type and ref/unref stuff in
4298         here, just kind of rationalizing how we handle all that
4299
4300         * tools/dbus-names-model.c: new file for a tree model listing the
4301         services on a bus
4302
4303         * tools/dbus-tree-view.c (model_new): use proper typing on the
4304         model rows
4305
4306 2005-01-30  Havoc Pennington  <hp@redhat.com>
4307
4308         * glib/dbus-gmain.c: add a custom GSource back that just checks
4309         whether the message queue has anything in it; otherwise, there are 
4310         cases where we won't see messages in the queue since there was no 
4311         IO visible to the glib main loop
4312
4313         * dbus/dbus-connection-internal.h (_DBUS_DEFAULT_TIMEOUT_VALUE):
4314         increase default message timeout to 25 seconds
4315
4316 2005-01-30  Havoc Pennington  <hp@redhat.com>
4317
4318         * test/glib/test-profile.c (no_bus_stop_server): remove the
4319         warning about the g_warning that I just fixed
4320
4321         * glib/dbus-gmain.c: rewrite the main loop stuff to avoid the
4322         custom source, seems to be a lot easier to understand and work
4323         better.
4324
4325 2005-01-30  Havoc Pennington  <hp@redhat.com>
4326
4327         I think this main loop thing is conceptually broken, but here are 
4328         some band aids. I'll maybe rewrite it in a minute.
4329         
4330         * glib/dbus-gmain.c (add_timeout): timeout stuff doesn't use the
4331         custom GSource, so don't pass it in; confusing
4332         (gsource_server_finalize, gsource_connection_finalize): add
4333         finalize handlers that remove all the watches.  
4334
4335 2005-01-30  Havoc Pennington  <hp@redhat.com>
4336
4337         * glib/dbus-gobject.c (introspect_properties): fix the XML
4338         generated
4339
4340         * dbus/dbus-message.c (dbus_message_unref): add an in_cache flag
4341         which effectively detects the use of freed messages
4342
4343         * glib/dbus-gobject.c (handle_introspect): modify and return the
4344         reply message instead of the incoming message
4345
4346         * dbus/dbus-object-tree.c (handle_default_introspect_unlocked):
4347         gee, maybe it should SEND THE XML instead of just making a string
4348         and freeing it again ;-)
4349
4350         * tools/dbus-print-message.c (print_message): improve printing of
4351         messages
4352
4353         * configure.in: add debug-glib.service to the output
4354
4355 2005-01-30  Havoc Pennington  <hp@redhat.com>
4356
4357         dbus-viewer introspected and displayed the bus driver
4358         
4359         * dbus/dbus-object-tree.c 
4360         (object_tree_test_iteration): add tests for a handler registered on "/"
4361
4362         * dbus/dbus-object-tree.c
4363         (_dbus_decompose_path): fix to handle path "/" properly
4364         (run_decompose_tests): add tests for path decomposition
4365         
4366         * glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
4367         properly
4368
4369         * glib/dbus-gobject.c (handle_introspect): fix quotes
4370
4371         * test/glib/run-test.sh: support launching the bus, then running
4372         dbus-viewer
4373
4374         * test/glib/test-service-glib.c (main): put in a trivial gobject
4375         subclass and register it on the connection
4376
4377         * bus/driver.c (bus_driver_handle_introspect): implement
4378         introspection of the bus driver service
4379
4380         * dbus/dbus-protocol.h: add #defines for the XML namespace,
4381         identifiers, doctype decl
4382
4383         * bus/driver.c (bus_driver_handle_get_service_owner): handle
4384         attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by 
4385         returning the service unchanged.
4386         (bus_driver_handle_message): remove old check for reply_serial in
4387         method calls, now the message type deals with that
4388         (bus_driver_handle_message): handle NULL interface
4389
4390         * glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function
4391
4392         * glib/dbus-gloader-expat.c (description_load_from_string): allow
4393         -1 for len
4394
4395         * tools/dbus-viewer.c: add support for introspecting a service on
4396         a bus
4397
4398         * glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
4399         (dbus_g_pending_call_unref): add
4400
4401 2005-01-29  Havoc Pennington  <hp@redhat.com>
4402
4403         * tools/dbus-tree-view.c: add support for displaying properties.
4404         (run dbus-viewer with an introspect xml file as arg, then resize
4405         the window so the tree elements show up, not sure what that is)
4406
4407         * glib/dbus-gobject.c (handle_introspect): return
4408         org.freedesktop.Properties and org.freedesktop.Introspectable
4409         interfaces when we are introspected.
4410
4411         * doc/dbus-specification.xml: allow empty interface name when 
4412         Get/Set a property
4413
4414 2005-01-29  Havoc Pennington  <hp@redhat.com>
4415
4416         * glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
4417         though it uses glib, it could be extended for any binding in
4418         principle
4419
4420         * glib/dbus-gobject.c (gobject_message_function): change to the
4421         new way properties work
4422
4423         * dbus/dbus-protocol.h: add the new interfaces
4424
4425         * doc/dbus-specification.xml: document the introspection format,
4426         Introspectable interface, and add an org.freedesktop.Properties
4427         interface.
4428
4429         * glib/dbus-gparser.c: add support for a <property> element
4430
4431         * glib/dbus-gidl.c: add PropertyInfo
4432
4433         * glib/dbus-gobject.c (handle_introspect): put the outermost
4434         <node> outside the signal and property descriptions.
4435         (introspect_properties): export properties as <property> rather
4436         than as method calls
4437
4438 2005-01-28  Havoc Pennington  <hp@redhat.com>
4439
4440         * doc/TODO, doc/dbus-specification.xml: spec and TODO tweaks
4441         related to authentication protocol
4442
4443 2005-01-28  John (J5) Palmieri  <johnp@redhat.com>
4444
4445         * python/dbus_bindings.pyx.in: Updated to handle new D-BUS type system
4446                 - BUS_ACTIVATION -> BUS_STARTER
4447                 - DBUS_BUS_ACTIVATION -> DBUS_BUS_STARTER
4448                 - class MessageIter (__init__): Added recursion checking 
4449                 so we throw a nice error instead of just disconnecting from the
4450                 bus.
4451                 (get): Added arg_type parameter for recursion.
4452                 Removed the nil type
4453                 Added signiture type placeholder (not implemented)
4454                 Added struct type placeholder (not implemented)
4455                 Added varient type placeholder (not implemented)
4456                 Commented out dict type for now     
4457                 (get_element_type): renamed from get_array_type
4458                 (get_*): changed to use the dbus_message_iter_get_basic API
4459                 (get_*_array): removed in favor of recursive get_array method
4460                 (get_array): new recursive method which calls get to marshal
4461                 the elements of the array
4462                 (value_to_dbus_sig): New method returns the corrasponding
4463                 dbus signiture to a python value
4464                 (append): Comment out dict handling for now
4465                 Handle lists with the new recursive API
4466                 Comment out None handling for now
4467                 (append_nil): removed
4468                 (append_*): changed to use dbus_message_iter_append_basic API
4469                 (append_*_array): removed in favor of recursive append_array 
4470                 method
4471                 (__str__): Make it easier to print out recursive iterators
4472                 for debugging
4473                 - class Message (__str__): moved type inspection to the
4474                 MessageIter class' __str__ method
4475                 (get_iter): Added an append parameter wich defaults to False
4476                 If True use the new API's to create an append iterator
4477
4478         * python/dbus.py: Update to use new bindings API
4479                 - TYPE_ACTIVATION -> TYPE_STARTER
4480                 - class Bus (_get_match_rule): GetServiceOwner -> GetNameOwner
4481                 - class ActivationBus -> class StarterBus
4482                 - class RemoteObject (__call__): get an append iterator
4483                 - (_dispatch_dbus_method_call): get an append iterator
4484                 - class Object (emit_signal): get an append iterator
4485
4486         * python/examples/: Fixed up the examples to work with the new API
4487                 
4488 2005-01-28  Joe Shaw  <joeshaw@novell.com>
4489
4490         * configure.in: Bump version up to 0.30.
4491
4492         * HACKING: Add a release item to bump the version number up after 
4493         a release.
4494
4495 2005-01-28  Havoc Pennington  <hp@redhat.com>
4496
4497         * doc/dbus-specification.xml: update to describe 16-bit types and
4498         dict entries
4499
4500         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint16): fix broken
4501         assertion
4502
4503         * dbus/dbus-protocol.h (DBUS_TYPE_DICT_ENTRY): add DICT_ENTRY as a
4504         type
4505
4506         * dbus/dbus-marshal-recursive.c: implement
4507
4508 2005-01-27  Havoc Pennington  <hp@redhat.com>
4509
4510         * dbus/dbus-arch-deps.h.in: add 16/32-bit types
4511
4512         * configure.in: find the right type for 16 and 32 bit ints as well
4513         as 64
4514
4515         * dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add
4516         the 16-bit types so people don't have to stuff them in 32-bit or
4517         byte arrays.
4518
4519 2005-01-27  Havoc Pennington  <hp@redhat.com>
4520
4521         * dbus/dbus-message.c: byteswap the message if you init an
4522         iterator to read/write from it
4523         
4524         * dbus/dbus-marshal-byteswap.c: new file implementing 
4525         _dbus_marshal_byteswap()
4526
4527         * dbus/dbus-marshal-basic.c: add _dbus_swap_array()
4528
4529 2005-01-26  Havoc Pennington  <hp@redhat.com>
4530         
4531         * dbus/dbus-marshal-validate-util.c: break this out (and fix
4532         build, apparently - nobody noticed?)
4533         
4534 2005-01-26  Havoc Pennington  <hp@redhat.com>
4535
4536         * dbus/dbus-marshal-recursive.h: remove todo comment
4537
4538 2005-01-25  Joe Shaw  <joeshaw@novell.com>
4539
4540         * Land the mono binding changes to conform to the new APIs.
4541
4542         * mono/Makefile.am: Remove Custom.cs, DBusType/Custom.cs,
4543         DBusType/Dict.cs, and DBusType/Nil.cs from the build.
4544
4545         * mono/Arguments.cs (GetCodeAsString): Added.  Returns the dbus
4546         type code as a string.
4547         (InitAppending): Rename dbus_message_append_iter_init() to
4548         dbus_message_iter_init_append().
4549
4550         * mono/BusDriver.cs: Rename ServiceEventHandler to
4551         NameOwnerChangedHandler.  Rename GetServiceOwner to GetOwner.
4552         Rename ServiceOwnerChanged to NameOwnerChanged.
4553
4554         * mono/Connection.cs: Rename BaseService to UniqueName, and the
4555         underlying C call.
4556
4557         * mono/Custom.cs: Removed.  The CUSTOM type has been removed.
4558
4559         * mono/Service.cs: Rename Exists to HasOwner, internally rename
4560         dbus_bus_acquire_service() to dbus_bus_request_name().
4561
4562         * mono/DBusType/Array.cs (ctor): Use Type.GetElementType() instead
4563         of Type.UnderlyingSystemType to get the correct element type for
4564         the array.
4565         (ctor): Update code for new APIs: use dbus_message_iter_recurse(),
4566         dbus_message_get_{element|arg}_type() instead of
4567         dbus_message_iter_init_array_iterator().
4568         (Append): Replace dbus_message_iter_append_array() with
4569         dbus_message_iter_open_container() and
4570         dbus_message_iter_close_container().
4571
4572         * mono/DBusType/Custom.cs, mono/DBusType/Nil.cs: Removed.  These
4573         types have been removed.
4574         
4575         * mono/DBusType/*.cs: Replace calls of
4576         dbus_message_iter_get_[type]() to dbus_message_iter_get_basic(),
4577         but specify the type in the DllImport extern declaration.  Ditto
4578         for dbus_message_iter_append_[type]() ->
4579         dbus_message_iter_append_basic().
4580
4581         * mono/example/BusListener.cs: Update for ServiceEventHandler ->
4582         NameOwnerChangedHandler.
4583
4584 2005-01-25  John (J5) Palmieri  <johnp@redhat.com>
4585
4586         * python/dbus_bindings.pyx.in: Rename of methods and bindings
4587                 - get_base_service -> get_unique_name
4588                 - bus_get_base_service -> bus_get_unique_name
4589                 - dbus_bus_get_base_service -> dbus_bus_get_unique_name
4590                 - ACTIVATION_REPLY_ACTIVATED -> DBUS_START_REPLY_SUCCESS 
4591                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> DBUS_START_REPLY_ALREADY_RUNNING
4592                 - bus_activate_service -> bus_start_service_by_name
4593                 - dbus_bus_activate_service -> dbus_bus_start_service_by_name
4594                 - bus_acquire_service -> bus_request_name
4595                 - dbus_bus_acquire_service -> dbus_bus_request_name
4596                 - bus_service_exists -> bus_name_has_owner
4597                 - dbus_bus_service_exists -> dbus_bus_name_has_owner
4598
4599         * python/dbus.py: Rename of methods
4600                 - activate_service -> start_service_by_name
4601                 - bus_acquire_service -> bus_request_name
4602                 - ACTIVATION_REPLY_ACTIVATED -> START_REPLY_SUCCESS 
4603                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> START_REPLY_ALREADY_RUNNING
4604
4605         
4606 2005-01-24  Joe Shaw  <joeshaw@novell.com>
4607
4608         * dbus/dbus-connection.c (dbus_connection_dispatch): Print out the
4609         signature for the method that can't be found.
4610
4611         * dbus/dbus-message.c (dbus_message_iter_init): To check to see if
4612         the message has any arguments, we need to call
4613         _dbus_type_reader_get_current_type(), not
4614         _dbus_type_reader_has_next().
4615
4616 2005-01-24  Havoc Pennington  <hp@redhat.com>
4617
4618         * dbus/dbus-message-factory.c: more testing of message validation
4619
4620         * dbus/dbus-protocol.h (DBUS_MINIMUM_HEADER_SIZE): move to this
4621         header
4622
4623 2005-01-23  Havoc Pennington  <hp@redhat.com>
4624
4625         * dbus/dbus-message-factory.c, dbus/dbus-message-util.c: 
4626         get this all working, not many tests in the framework yet though
4627
4628 2005-01-22  Havoc Pennington  <hp@redhat.com>
4629
4630         * doc/dbus-faq.xml, doc/dbus-tutorial: add a FAQ and update
4631         tutorial, based on work from David Wheeler.
4632
4633 2005-01-21  Havoc Pennington  <hp@redhat.com>
4634
4635         * dbus/dbus-bus.c: add more return_if_fail checks
4636
4637         * dbus/dbus-message.c (load_message): have the "no validation"
4638         mode (have to edit the code to toggle the mode for now though)
4639
4640         * dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that
4641         skips all validation; I want to use this at least for benchmark
4642         baseline, I'm not sure if it should be a publicly-available switch.
4643
4644 2005-01-21  Havoc Pennington  <hp@redhat.com>
4645
4646         * glib/dbus-gmain.c: don't put the GLib bindings in the same
4647         toplevel doxygen group as the low-level API stuff
4648
4649         * dbus/dbus.h: note that libdbus is the low-level API
4650
4651 2005-01-20  Havoc Pennington  <hp@redhat.com>
4652
4653         * update-dbus-docs.sh: script to update docs on the web site, only
4654         works for me though. neener.
4655
4656 2005-01-20  Havoc Pennington  <hp@redhat.com>
4657
4658         * dbus/dbus-sysdeps.c (_dbus_poll): amazingly, trying to compile
4659         code can reveal bugs in it
4660
4661 2005-01-20  Havoc Pennington  <hp@redhat.com>
4662
4663         * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
4664         select() version, patches from Tor Lillqvist
4665
4666 2005-01-20  Havoc Pennington  <hp@redhat.com>
4667
4668         * doc/dbus-tutorial.xml: replace > with &gt;
4669
4670         * bus/services.c (bus_registry_acquire_service): validate the name
4671         and return a better error if it's no good.
4672
4673         * doc/dbus-specification.xml: note NO_AUTO_START change
4674
4675         * dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
4676         from AUTO_START, we're toggling the default
4677
4678         * bus/dispatch.c: adapt the tests to change of auto-start default
4679
4680 2005-01-18  Havoc Pennington  <hp@redhat.com>
4681
4682         * rename dbus-daemon-1 to dbus-daemon throughout
4683
4684 2005-01-18  Havoc Pennington  <hp@redhat.com>
4685
4686         * Throughout, grand renaming to strip out the use of "service",
4687         just say "name" instead (or "bus name" when ambiguous).  Did not
4688         change the internal code of the message bus itself, only the
4689         programmer-facing API and messages.
4690         
4691         * doc/dbus-specification.xml: further update the message bus section
4692         
4693         * bus/config-parser.c (all_are_equiv): fix bug using freed string
4694         in error case
4695
4696 2005-01-17  Havoc Pennington  <hp@redhat.com>
4697
4698         * dbus/dbus-types.h: remove 16-bit types since we don't use them
4699         ever
4700
4701         * dbus/dbus-marshal-validate.c (_dbus_validate_path): disallow any
4702         "invalid name character" not only non-ASCII
4703
4704         * doc/dbus-specification.xml: further update spec, message bus 
4705         parts are still out-of-date but the marshaling etc. stuff is now
4706         accurate-ish
4707
4708 2005-01-17  Havoc Pennington  <hp@redhat.com>
4709
4710         * doc/dbus-specification.xml: partially update spec
4711
4712 2005-01-17  Havoc Pennington  <hp@redhat.com>
4713
4714         * Throughout, align variant bodies according to the contained
4715         type, rather than always to 8. Should save a fair bit of space in
4716         message headers.
4717         
4718         * dbus/dbus-marshal-validate.c (_dbus_validate_body_with_reason):
4719         fix handling of case where p == end
4720
4721         * doc/TODO: remove the dbus_bool_t item and variant alignment items
4722
4723 2005-01-17  Havoc Pennington  <hp@redhat.com>
4724
4725         * dbus/dbus-types.h: hardcode dbus_bool_t to 32 bits
4726
4727         * Throughout: modify DBUS_TYPE_BOOLEAN to be a 32-bit type instead
4728         of an 8-bit type. Now dbus_bool_t is the type to use whenever you 
4729         are marshaling/unmarshaling a boolean.
4730
4731 2005-01-16  Havoc Pennington  <hp@redhat.com>
4732
4733         This is about it on what can be disabled/deleted from libdbus
4734         easily, back below 150K anyhow. Deeper cuts are more work than 
4735         just turning the code off as I've done here.
4736         
4737         * dbus/dbus-marshal-basic.c (_dbus_pack_int32): we don't need the
4738         signed int convenience funcs
4739
4740         * dbus/dbus-internals.c (_dbus_verbose_real): omit when not in
4741         verbose mode
4742
4743         * dbus/dbus-string-util.c, dbus/dbus-string.c: more breaking
4744         things out of libdbus
4745
4746         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-util.c: same
4747         
4748         * dbus/dbus-hash.c: purge the TWO_STRINGS crap (well, make it
4749         tests-enabled-only, though it should probably be deleted)
4750
4751         * dbus/dbus-message-util.c: same stuff
4752
4753         * dbus/dbus-auth-util.c: same stuff
4754
4755 2005-01-16  Havoc Pennington  <hp@redhat.com>
4756
4757         * dbus/dbus-userdb-util.c: split out part of dbus-userdb.c
4758
4759         * dbus/dbus-sysdeps.c (_dbus_uid_from_string): move here to pave
4760         way for stripping down dbus-userdb.c stuff included in libdbus.
4761         Rename _dbus_parse_uid for consistency.
4762
4763 2005-01-16  Havoc Pennington  <hp@redhat.com>
4764
4765         * dbus/dbus-internals.c (_dbus_real_assert): print the function
4766         name the assertion failed in
4767
4768         * dbus/dbus-internals.h (_dbus_return_if_fail) 
4769         (_dbus_return_val_if_fail): assert that the name of the function
4770         containing the check doesn't start with '_', since we only want to 
4771         use checks on public functions
4772         
4773         * dbus/dbus-connection.c (_dbus_connection_ref_unlocked): change
4774         checks to assertions
4775
4776         * dbus/dbus-marshal-header.c (_dbus_header_set_field_basic):
4777         change checks to asserts for private function
4778
4779         * dbus/dbus-message.c (_dbus_message_set_serial): checks
4780         to asserts for private function
4781
4782         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): remove
4783         broken assertion that was breaking make check
4784         (_dbus_type_reader_array_is_empty): remove this rather than fix
4785         it, was only used in assertions
4786
4787 2005-01-16  Havoc Pennington  <hp@redhat.com>
4788
4789         * test/unused-code-gc.py: hacky script to find code that's used
4790         only by the bus (not libdbus) or used only by tests or not used at
4791         all. It has some false alarms, but looks like we can clean up a
4792         lot of size from libdbus.
4793
4794         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
4795         dbus/Makefile.am: initially move 10K of binary size out of libdbus
4796         
4797 2005-01-16  Havoc Pennington  <hp@redhat.com>
4798
4799         * Add and fix docs according to Doxygen warnings throughout
4800         source.
4801         
4802         * dbus/dbus-marshal-recursive.c
4803         (_dbus_type_reader_array_is_empty): change this to just call
4804         array_reader_get_array_len() and make it static
4805
4806         * dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
4807         from get_array_type
4808         (dbus_message_iter_init_append): rename from append_iter_init
4809
4810         * dbus/dbus-marshal-recursive.c
4811         (_dbus_type_reader_get_element_type): rename from
4812         _dbus_type_reader_get_array_type
4813
4814 2005-01-15  Havoc Pennington  <hp@redhat.com>
4815
4816         * test/glib/test-profile.c (with_bus_server_filter): fix crash
4817
4818         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
4819         when DBUS_DISABLE_ASSERT
4820         (_dbus_marshal_set_basic): be sure we align for the string length
4821
4822         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
4823         this look faster
4824
4825         * dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
4826         inline macro version
4827         (_dbus_string_set_byte): provide inline macro version
4828
4829 2005-01-15  Havoc Pennington  <hp@redhat.com>
4830
4831         * Land the new message args API and type system.
4832
4833         This patch is huge, but the public API change is not 
4834         really large. The set of D-BUS types has changed somewhat, 
4835         and the arg "getters" are more geared toward language bindings;
4836         they don't make a copy, etc.
4837
4838         There are also some known issues. See these emails for details
4839         on this huge patch:
4840         http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
4841         http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
4842         
4843         * dbus/dbus-marshal-*: all the new stuff
4844
4845         * dbus/dbus-message.c: basically rewritten
4846
4847         * dbus/dbus-memory.c (check_guards): with "guards" enabled, init
4848         freed blocks to be all non-nul bytes so using freed memory is less
4849         likely to work right
4850
4851         * dbus/dbus-internals.c (_dbus_test_oom_handling): add
4852         DBUS_FAIL_MALLOC=N environment variable, so you can do
4853         DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
4854         DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
4855         thorough.
4856
4857         * qt/message.cpp: port to the new message args API
4858         (operator<<): use str.utf8() rather than str.unicode()
4859         (pretty sure this is right from the Qt docs?)
4860
4861         * glib/dbus-gvalue.c: port to the new message args API
4862
4863         * bus/dispatch.c, bus/driver.c: port to the new message args API
4864
4865         * dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
4866         "locked" flag to TRUE and align_offset to 0; I guess we never
4867         looked at these anyhow, but seems cleaner.
4868
4869         * dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
4870         move allocation padding macro to this header; use it to implement
4871         (_DBUS_STRING_STATIC): ability to declare a static string.
4872
4873         * dbus/dbus-message.c (_dbus_message_has_type_interface_member):
4874         change to return TRUE if the interface is not set.
4875
4876         * dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
4877         to dbus-marshal-validate.[hc]
4878
4879         * dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
4880         dbus-internals.c
4881
4882         * dbus/Makefile.am: cut over from dbus-marshal.[hc]
4883         to dbus-marshal-*.[hc]
4884
4885         * dbus/dbus-object-tree.c (_dbus_decompose_path): move this
4886         function here from dbus-marshal.c
4887
4888 2005-01-12  Joe Shaw  <joeshaw@novell.com>
4889
4890         * NEWS: Update for 0.23.
4891
4892         * configure.in: Release 0.23.
4893
4894 2005-01-12  Joe Shaw  <joeshaw@novell.com>
4895
4896         * mono/Makefile.am, mono/example/Makefile.am: Always build the 
4897         dbus DLL with --debug.  Clean up after the .mdb files this leaves
4898         behind.
4899
4900         * mono/doc/Makefile.am: Need to uninstall the docs on "make
4901         uninstall"
4902
4903         * mono/Arguments.cs (GetDBusTypeConstructor): If the type
4904         is an enum, get the enum's underlying type.  Another mono
4905         1.1.3 fix.
4906
4907 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4908
4909         Patch from Sjoerd Simons <sjoerd@luon.net>
4910
4911         * mono/Makefile.am, mono/example/Makefile.am: Don't redefine
4912         DESTDIR.  It breaks stuff.
4913
4914 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4915
4916         Patch from Tambet Ingo <tambet@ximian.com>
4917
4918         * mono/DBusType/Array.cs (Get): Get the underlying element type by
4919         calling type.GetElementType().  The code previously depended on
4920         broken Mono behavior, which was fixed in Mono 1.1.3.
4921
4922         * mono/DBusType/Dict.cs (constructor): Fix the parameters for
4923         Activator.CreateInstance() so that the class's constructor is
4924         called with the right parameters.
4925
4926 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4927
4928         Patch from Timo Teräs <ext-timo.teras@nokia.com>
4929
4930         * dbus/dbus-connection.c
4931         (_dbus_connection_queue_received_message_link): Call
4932         _dbus_connection_remove_timeout() instead of the _locked()
4933         variant, since it's always called from
4934         _dbus_connection_handle_watch(), which handles the locking.
4935         Removed the _locked() variant since it's no longer used.
4936
4937 2005-01-03  Havoc Pennington  <hp@redhat.com>
4938
4939         * dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
4940         return
4941         
4942 2004-12-26  Havoc Pennington  <hp@redhat.com>
4943
4944         * dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert
4945
4946 2005-01-03  Havoc Pennington  <hp@redhat.com>
4947
4948         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
4949         floating point
4950
4951         * dbus/dbus-string.c (_dbus_string_insert_alignment): new function
4952
4953 2005-01-02  Havoc Pennington  <hp@redhat.com>
4954
4955         * dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro
4956
4957 2005-01-01  Havoc Pennington  <hp@redhat.com>
4958
4959         * configure.in: add -Wfloat-equal
4960
4961 2005-01-01  Havoc Pennington  <hp@redhat.com>
4962
4963         * dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
4964         for a variety of reasons '==' doesn't do this.
4965
4966 2004-12-31  Havoc Pennington  <hp@redhat.com>
4967
4968         * dbus/dbus-string.c (_dbus_string_equal_substrings): new function
4969         I keep wishing I had
4970
4971 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
4972
4973         * python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED
4974
4975 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
4976
4977         * python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
4978         and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
4979         dbus-protocol.h.  Because they are defines and not enums they are not
4980         autogenerated.
4981
4982 2004-12-26  John (J5) Palmieri  <johnp@redhat.com>
4983
4984         * python/dbus_bindings.pyx.in (bus_activate_service): Bind
4985         dbus_bus_activate_service
4986
4987         * python/dbus.py (Bus.activate_service): activate a service on the
4988         bus.
4989
4990 2004-12-24  Havoc Pennington  <hp@redhat.com>
4991
4992         * test/decode-gcov.c: change to use .gcno and .gcda files, but the
4993         file format has also changed and I haven't adapted to that yet
4994         
4995         * Makefile.am: load .gcno files from latest gcc
4996
4997 2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
4998         * Patch from Rob Taylor <robtaylor@fastmail.fm>
4999
5000         * python/dbus_bindings.pyx.in (bus_get_unix_user): New
5001         lowlevel binding
5002
5003         * python/dbus.py (get_unix_user): Added binding to 
5004         call dbus_bindings.bus_get_unix_user
5005
5006         * python/extract.py: Modified the proto_pat regex to
5007         handle unsigned long
5008
5009 2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5010
5011         * dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
5012         better POSIX compliance.
5013
5014 2004-12-19  Havoc Pennington  <hp@redhat.com>
5015
5016         * dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
5017         (_dbus_string_insert_8_aligned): new functions
5018
5019         * dbus/dbus-string.c (_dbus_string_alloc_space): new function
5020
5021 2004-12-18  Havoc Pennington  <hp@redhat.com>
5022
5023         * dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
5024         macro
5025
5026         * dbus/dbus-message.c: fix a comment, and add a still-unused
5027         not-implemented function
5028
5029         * dbus/dbus-marshal.h: fix comment
5030
5031         * dbus/dbus-internals.h (_DBUS_ISASCII): new macro
5032
5033 2004-12-17  Joe Shaw  <joeshaw@novell.com>
5034
5035         * mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
5036         mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
5037         mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
5038         Type.UnderlyingSystemType to get the actual system type
5039         underneath.  This code previously depended on the broken Mono
5040         behavior, which was fixed in 1.1.3.
5041
5042 2004-11-27  Havoc Pennington  <hp@redhat.com>
5043
5044         * dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
5045         are disabled
5046         (_dbus_string_get_const_data): inline when asserts are disabled
5047
5048         * dbus/dbus-message.c: record the _dbus_current_generation of
5049         creation so we can complain if dbus_shutdown() is used improperly.
5050         Do this only if checks are enabled.
5051
5052         * dbus/dbus-connection.c: ditto
5053         
5054 2004-11-26  Havoc Pennington  <hp@redhat.com>
5055
5056         * test/glib/test-profile.c: add with_bus mode to profile echoes
5057         that go through the bus.
5058
5059         * test/glib/run-test.sh: add ability to run test-profile
5060
5061         * bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
5062         config file reload.
5063
5064 2004-11-26  Havoc Pennington  <hp@redhat.com>
5065
5066         * test/glib/test-profile.c: clean up how the fake_malloc_overhead
5067         thing was implemented
5068
5069 2004-11-26  Havoc Pennington  <hp@redhat.com>
5070
5071         * test/glib/test-profile.c: tweak a bit, add support for some
5072         made-up minimal malloc overhead with plain sockets, since in 
5073         real life some sort of buffers are unavoidable thus we could 
5074         count them in the theoretical best case
5075
5076 2004-11-26  Havoc Pennington  <hp@redhat.com>
5077
5078         * dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
5079         where I was trying to cache one too many messages
5080
5081 2004-11-26  Havoc Pennington  <hp@redhat.com>
5082
5083         * dbus/dbus-message.c: reimplement message cache as an array which 
5084         makes the cache about twice as fast and saves maybe 1.5% overall
5085
5086 2004-11-26  Havoc Pennington  <hp@redhat.com>
5087
5088         * dbus/dbus-threads.c (init_global_locks): forgot to put the
5089         message cache lock here
5090
5091 2004-11-26  Havoc Pennington  <hp@redhat.com>
5092
5093         * dbus/dbus-message.c (struct DBusMessage): put the locked bit and
5094         the "char byte_order" next to each other to save 4 bytes
5095         (dbus_message_new_empty_header): reduce preallocation, since the
5096         message cache should achieve a similar effect
5097         (dbus_message_cache_or_finalize, dbus_message_get_cached): add a
5098         message cache that keeps a few DBusMessage around in a pool,
5099         another 8% speedup or so.
5100
5101         * dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function
5102
5103 2004-11-25  Havoc Pennington  <hp@redhat.com>
5104
5105         * dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
5106         to write, without reading or blocking, try it before the poll()
5107         and skip the poll() if nothing remains to write. This is about a
5108         3% speedup in the echo client/server
5109
5110 2004-11-25  Havoc Pennington  <hp@redhat.com>
5111
5112         The primary change here is to always write() once before adding
5113         the write watch, which gives us about a 10% performance increase.
5114         
5115         * dbus/dbus-transport-unix.c: a number of modifications to cope
5116         with removing messages_pending
5117         (check_write_watch): properly handle
5118         DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
5119         messages_pending stuff
5120         (check_read_watch): properly handle WAITING_FOR_MEMORY and
5121         AUTHENTICATED cases
5122         (unix_handle_watch): after writing, see if the write watch can be
5123         removed
5124         (unix_do_iteration): assert that write_watch/read_watch are
5125         non-NULL rather than testing that they aren't, since they 
5126         aren't allowed to be NULL. check_write_watch() at the end so 
5127         we add the watch if we did not finish writing (e.g. got EAGAIN)
5128
5129         * dbus/dbus-transport-protected.h: remove messages_pending call,
5130         since it resulted in too much inefficient watch adding/removing; 
5131         instead we now require that the transport user does an iteration 
5132         after queueing outgoing messages, and after trying the first
5133         write() we add a write watch if we got EAGAIN or exceeded our 
5134         max bytes to write per iteration setting
5135
5136         * dbus/dbus-string.c (_dbus_string_validate_signature): add this
5137         function
5138
5139         * dbus/dbus-server-unix.c (unix_finalize): the socket name was
5140         freed and then accessed, valgrind flagged this bug, fix it
5141
5142         * dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
5143         as the last valid field plus 1, where really it is equal to the
5144         last valid field. Corrects some message corruption issues.
5145
5146         * dbus/dbus-mainloop.c: verbosity changes
5147
5148         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
5149         instead of aborting in one of the test codepaths
5150
5151         * dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
5152         caused not printing the pid ever again if a verbose was missing
5153         the newline at the end
5154         (_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE
5155
5156         * dbus/dbus-connection.c: verbosity changes; 
5157         (dbus_connection_has_messages_to_send): new function
5158         (_dbus_connection_message_sent): no longer call transport->messages_pending
5159         (_dbus_connection_send_preallocated_unlocked): do one iteration to
5160         try to write() immediately, so we can avoid the write watch. This
5161         is the core purpose of this patchset
5162         (_dbus_connection_get_dispatch_status_unlocked): if disconnected,
5163         dump the outgoing message queue, so nobody will get confused
5164         trying to send them or thinking stuff is pending to be sent
5165
5166         * bus/test.c: verbosity changes
5167
5168         * bus/driver.c: verbosity/assertion changes
5169
5170         * bus/dispatch.c: a bunch of little tweaks to get it working again
5171         because this patchset changes when/where you need to block.
5172
5173 2004-11-23  Havoc Pennington  <hp@redhat.com>
5174
5175         * test/glib/test-profile.c: modify to accept a plain_sockets
5176         argument in which case it will bench plain sockets instead of
5177         libdbus, for comparison purposes.
5178
5179 2004-11-22  Havoc Pennington  <hp@redhat.com>
5180
5181         * test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
5182         threads for more time, so sysprof can get a grip on it.
5183
5184         * dbus/dbus-string.c (_dbus_string_validate_utf8): remove
5185         pointless variable
5186
5187 2004-11-13  Havoc Pennington  <hp@redhat.com>
5188
5189         * test/glib/test-profile.c: fix this thing up a bit
5190
5191         * dbus/dbus-message.c (dbus_message_new_empty_header): increase
5192         preallocation sizes by a fair bit; not sure if this will be an
5193         overall performance win or not, but it does reduce reallocs.
5194
5195         * dbus/dbus-string.c (set_length, reallocate_for_length): ignore
5196         the test hack that forced constant realloc if asserts are
5197         disabled, so we can profile sanely. Sprinkle in some
5198         _DBUS_UNLIKELY() which are probably pointless, but before I
5199         noticed the real performance problem I put them in.
5200         (_dbus_string_validate_utf8): micro-optimize this thing a little
5201         bit, though callgrind says it didn't help; then special-case
5202         ascii, which did help a lot; then be sure we detect nul bytes as
5203         invalid, which is a bugfix.
5204         (align_length_then_lengthen): add some more _DBUS_UNLIKELY
5205         superstition; use memset to nul the padding instead of a manual
5206         loop.
5207         (_dbus_string_get_length): inline this as a
5208         macro; it showed up in the profile because it's used for loop
5209         tests and so forth
5210
5211 2004-11-10  Colin Walters  <walters@verbum.org>
5212
5213         * dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
5214         for extra paranoia.
5215
5216 2004-11-09  Colin Walters  <walters@verbum.org>
5217
5218         * dbus/dbus-string.c (_dbus_string_get_length): New
5219         function, writes DBusString to C buffer.
5220
5221         * dbus/dbus-string.h: Prototype it.
5222
5223         * dbus/dbus-message.c (dbus_message_type_to_string): New
5224         function, converts message type into C string.
5225
5226         * dbus/dbus-message.h: Prototype it.
5227
5228         * bus/selinux.c (bus_selinux_check): Take source pid,
5229         target pid, and audit data.  Pass audit data to
5230         avc_has_perm.
5231         (log_audit_callback): New function, appends extra
5232         audit information.
5233         (bus_selinux_allows_acquire_service): Also take
5234         service name, add it to audit data.
5235         (bus_selinux_allows_send): Also take message
5236         type, interface, method member, error name,
5237         and destination, and add them to audit data.
5238         (log_cb): Initialize func_audit.
5239         
5240         * bus/selinux.h (bus_selinux_allows_acquire_service)
5241         (bus_selinux_allows_send): Update prototypes 
5242
5243         * bus/services.c (bus_registry_acquire_service): Pass
5244         service name to bus_selinux_allows_acquire_service.
5245
5246         * bus/bus.c (bus_context_check_security_policy): Pass
5247         additional audit data.  Move assignment of dest
5248         to its own line.
5249
5250 2004-11-07  Colin Walters  <walters@verbum.org>
5251
5252         * dbus/dbus-transport-unix.c (do_authentication): Always
5253         initialize auth_completed.
5254         
5255 2004-11-07  Colin Walters  <walters@verbum.org>
5256
5257         * bus/bus.c (load_config): Break into three
5258         separate functions: process_config_first_time_only,
5259         process_config_every_time, and process_config_postinit.
5260         (process_config_every_time): Move call of
5261         bus_registry_set_service_context_table into
5262         process_config_postinit.
5263         (process_config_postinit): New function, does
5264         any processing that needs to happen late
5265         in initialization (and also on reload).
5266         (bus_context_new): Instead of calling load_config,
5267         open config parser here and call process_config_first_time_only
5268         and process_config_every_time directly.  Later, after
5269         we have forked but before changing UID,
5270         invoke bus_selinux_full_init, and then call
5271         process_config_postinit.
5272         (bus_context_reload_config): As in bus_context_new,
5273         load parse file inside here, and call process_config_every_time
5274         and process_config_postinit.
5275
5276         * bus/services.h, bus/services.c
5277         (bus_registry_set_service_context_table): Rename
5278         from bus_registry_set_sid_table.  Take string hash from config
5279         parser, and convert them here into SIDs.
5280
5281         * bus/config-parser.c (struct BusConfigParser): Have
5282         config parser only store a mapping of service->context
5283         string.
5284         (merge_service_context_hash): New function.
5285         (merge_included): Merge context string hashes instead
5286         of using bus_selinux_id_table_union.
5287         (bus_config_parser_new): Don't use bus_selinux_id_table_new;
5288         simply create a new string hash.
5289         (bus_config_parser_unref): Unref it.
5290         (start_selinux_child): Simply insert strings into hash,
5291         don't call bus_selinux_id_table_copy_over.
5292
5293         * bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
5294         (bus_selinux_id_table_copy_over): Delete.
5295
5296 2004-11-03  Colin Walters  <walters@verbum.org>
5297
5298         * bus/selinux.c (bus_selinux_pre_init): Kill some unused
5299         variables.
5300         
5301 2004-11-03  Colin Walters  <walters@verbum.org>
5302
5303         * bus/test-main.c (test_pre_hook): Fix test logic,
5304         thanks Joerg Barfurth <Joerg.Barfurth@Sun.COM>.
5305
5306 2004-11-02  Colin Walters  <walters@redhat.com>
5307
5308         * bus/selinux.c (bus_selinux_init): Split into two functions,
5309         bus_selinux_pre_init and bus_selinux_post_init.
5310         (bus_selinux_pre_init): Just determine whether SELinux is
5311         enabled.
5312         (bus_selinux_post_init): Do everything else.
5313
5314         * bus/main.c (main): Call bus_selinux_pre_init before parsing
5315         config file, and bus_selinux_post_init after.  This ensures that
5316         we don't lose the policyreload notification thread that
5317         bus_selinux_init created before forking previously.
5318         
5319         * bus/test-main.c (test_pre_hook): Update for split.
5320
5321 2004-10-31  Owen Fraser-Green  <owen@discobabe.net>
5322
5323         Patch from Johan Fischer <linux@fischaz.com>
5324         
5325         * mono/doc/Makefile.am (install-data-local): Added directory
5326         install for DESTDIR
5327
5328 2004-10-29  Colin Walters  <walters@redhat.com>
5329
5330         * dbus/dbus-sysdeps.h (_dbus_become_daemon): Also take
5331         parameter for fd to write pid to.       
5332
5333         * dbus/dbus-sysdeps.c (_dbus_become_daemon): Implement it.
5334         
5335         * bus/bus.c (bus_context_new): Pass print_pid_fd
5336         to _dbus_become_daemon (bug #1720)
5337
5338 2004-10-29  Colin Walters  <walters@redhat.com>
5339
5340         Patch from Ed Catmur <ed@catmur.co.uk>
5341
5342         * mono/doc/Makefile.am (install-data-local): Handle
5343         DESTDIR.
5344
5345 2004-10-29  Colin Walters  <walters@redhat.com>
5346
5347         * bus/.cvsignore, qt/.cvsignore: Update.
5348
5349 2004-10-29  Colin Walters  <walters@redhat.com>
5350
5351         Patch from Kristof Vansant <de_lupus@pandora.be>
5352
5353         * configure.in: Detect Slackware.
5354         * bus/Makefile.am (SCRIPT_IN_FILES): Add rc.messagebus.in.
5355         * bus/rc.messagebus.in: New file.
5356
5357 2004-10-29  Colin Walters  <walters@redhat.com>
5358
5359         * tools/dbus-monitor.c (filter_func): Return
5360         DBUS_HANDLER_RESULT_HANDLED in filter function
5361         for now.  See:
5362         http://freedesktop.org/pipermail/dbus/2004-August/001433.html
5363
5364 2004-10-29  Colin Walters  <walters@redhat.com>
5365
5366         Patch from Matthew Rickard <mjricka@epoch.ncsc.mil>
5367
5368         * bus/services.c (bus_registry_acquire_service): 
5369         Correctly retrieve service name from DBusString
5370         for printing.
5371
5372 2004-10-29  Colin Walters  <walters@redhat.com>
5373
5374         * dbus/dbus-glib.h: Update documentation to not
5375         refer to internal APIs.
5376
5377 2004-10-27  Joe Shaw  <joeshaw@novell.com>
5378
5379         * mono/Arguments.cs (GetDBusTypeConstructor):
5380         type.UnderlyingSystemType will return "System.Byte" if you do it
5381         on "byte[]", which is not what we want.  So check the type.IsArray
5382         property and use System.Array instead.
5383
5384 2004-10-25  John (J5) Palmieri  <johnp@redhat.com>
5385
5386         * dbus/dbus-sysdeps.c (fill_user_info): On errors do not free
5387         the DBusUserInfo structure since this is passed into the function.
5388         This would cause a double free when the function that allocated
5389         the structure would try to free it when an error occured.
5390
5391         * (bus/session.conf.in, bus/Makefile.am, dbus/configure.in):
5392         use /usr/share/dbus-1/services instead of /usr/lib/dbus-1.0/services
5393         for service activation to avoid 32bit/64bit parallel install issues
5394
5395 2004-10-21  Colin Walters  <walters@verbum.org>
5396
5397         * AUTHORS: Fix my email address, the @gnu.org one
5398         has been bouncing for some time.  Also add J5.
5399         
5400 2004-10-21  Colin Walters  <walters@verbum.org>
5401
5402         * dbus/dbus-transport-unix.c (do_authentication): Return
5403         authentication status to callers.
5404         (unix_handle_watch): If we completed authentication this round,
5405         don't do another read.  Instead wait until the next iteration,
5406         after we've read any pending data in the auth buffer.
5407         (unix_do_iteration): Ditto.
5408         (unix_handle_watch): Updated for new do_authentication prototype.
5409
5410 2004-10-18  Colin Walters  <walters@verbum.org>
5411
5412         * bus/selinux.c (bus_selinux_enabled): Handle
5413         --disable-selinux case.
5414         
5415 2004-10-18  Colin Walters  <walters@verbum.org>
5416
5417         * bus/selinux.h: Add bus_selinux_enabled.
5418         
5419         * bus/selinux.c (bus_selinux_enabled): Implement it.
5420         
5421         * bus/config-parser.c (struct include): Add
5422         if_selinux_enabled member.
5423         (start_busconfig_child): Parse if_selinux_enabled
5424         attribute for include.
5425         (bus_config_parser_content): Handle it.
5426
5427         * bus/session.conf.in, bus/system.conf.in: Add
5428         inclusion of context mapping to default config files;
5429         conditional on SELinux being enabled.
5430         
5431         * doc/busconfig.dtd: Add to if_selinux_enabled to default DTD.
5432         
5433         * test/data/invalid-config-files/badselinux-1.conf, 
5434         test/data/invalid-config-files/badselinux-2.conf:
5435         Test files for bad syntax.
5436         
5437 2004-10-17  Colin Walters  <walters@verbum.org>
5438
5439         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug, check_guards)
5440         (dbus_malloc, dbus_malloc0, dbus_realloc): Fix up printf
5441         format specifier mismatches.
5442
5443 2004-10-07  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5444
5445         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): fix an incorrect
5446         format string.
5447
5448         * glib/dbus-dbus-gmain.c (dbus_g_bus_get): do not mangle NULL
5449         pointer (bug #1540, Leonardo Boiko).
5450
5451 2004-09-28  Jon Trowbridge  <trow@ximian.com>
5452
5453         * mono/BusDriver.cs: Changed BusDriver struct to remove
5454         the ServiceCreated and ServiceDeleted events and replace them
5455         with the new ServiceOwnerChanged event.
5456
5457         * mono/example/BusListener.cs: Added a new example program,
5458         which listens for and reports any ServiceOwnerChanged events
5459         on the bus driver.
5460
5461         * mono/example/Makefile.am (DESTDIR): Build changes for the
5462         new BusListener.cs example.
5463
5464 2004-09-27  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5465
5466         * bus/signals.c (bus_match_rule_parse): validate the components of
5467         match rules (bug #1439).
5468
5469         * dbus/dbus-bus.c (dbus_bus_add_match): add a missing OOM test.
5470
5471 2004-09-24  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5472
5473         * doc/dbus-specification.xml: document ServiceOwnerChanged
5474         signal.
5475         
5476         * bus/driver.c, bus/driver.h, bus/services.c: Use
5477         ServiceOwnerChanged signal instead of ServiceCreated and
5478         ServiceDeleted.
5479         
5480         * bus/dispatch.c: update testcase for the new signal.
5481
5482 2004-09-20  Jon Trowbridge  <trow@ximian.com>
5483
5484         Patch from Nat Friedman <nat@novell.com>
5485
5486         * mono/Makefile.am: A number of small build fixes to allow "make
5487         distcheck" to succeed.
5488
5489         * mono/example/Makefile.am: "make distcheck" fixes.
5490
5491         * mono/AssemblyInfo.cs.in: When signing the assembly, look for the
5492         key in @srcdir@.
5493
5494         * test/Makefile.am: "make distcheck" fixes.
5495
5496 2004-09-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5497
5498         * dbus/dbus-sysdeps.c (_dbus_user_at_console): fix memleak in OOM.
5499
5500         * doc/busconfig.dtd: update the DTD for the at_console attribute.
5501
5502         * bus/driver.c (bus_driver_handle_hello): correctly handle Hello
5503         messages after the first one (bug #1389).
5504         
5505         * bus/dispatch.c (check_double_hello_message): add a test case for
5506         the double hello message bug.
5507         (check_existent_service_activation): fix check of spawning error.
5508         
5509 2004-09-16  David Zeuthen  <david@fubar.dk>
5510
5511         * python/dbus_bindings.pyx.in: Add support for int64 and uint64
5512
5513 2004-09-12  David Zeuthen  <david@fubar.dk>
5514
5515         Patch from Kay Sievers <kay.sievers@vrfy.org>
5516
5517         * bus/bus.c (bus_context_new):
5518         * bus/bus.h:
5519         * bus/main.c (usage)
5520         (main):
5521         Add commandline option --nofork to override configuration file
5522         setting.
5523
5524 2004-09-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5525
5526         * dbus/dbus-*.h: remove the ; after DBUS_(BEGIN|END)_DECLS. Some C
5527         compilers don't like it (bug #974).
5528
5529 2004-09-04  Harald Fernengel  <harry@kdevelop.org>
5530
5531         * qt/connection.*: Applied patch by Jérôme Lodewyck
5532         <lodewyck@clipper.ens.fr> to integrate an existing
5533         connection into the Qt eventloop
5534
5535 2004-08-30  Jon Trowbridge  <trow@ximian.com>
5536
5537         * mono/BusDriver.cs: Added.  This is a class for interacting with
5538         the org.freedesktop.DBus service.
5539
5540         * mono/Message.cs: Added a mechanism to expose the message that is
5541         currently being dispatched via the static Message.Current
5542         property.  Added Message.Sender and Message.Destination
5543         properties.
5544
5545         * mono/Handler.cs: Expose the dispatched message via
5546         Message.Current when handling method calls.
5547
5548         * mono/Service.cs: Expose the dispatched message via
5549         Message.Current when handling signal emissions.
5550         
5551         * mono/Connection.cs: Bind dbus_bus_get_base_service via the
5552         Connection.BaseService property.
5553
5554 2004-08-28  Havoc Pennington  <hp@redhat.com>
5555
5556         * dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable
5557
5558         More fixes from Steve Grubb
5559         
5560         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix fd leak
5561         (_dbus_listen_tcp_socket): fix fd leak
5562
5563         * dbus/dbus-spawn.c (read_pid, read_ints): move the "again:" for
5564         EINTR to a bit lower in the code
5565
5566 2004-08-26  Jon Trowbridge  <trow@ximian.com>
5567
5568         * bus/driver.c (bus_driver_handle_service_exists): Respond with
5569         TRUE if we are inquiring about the existence of the built-in
5570         org.freedesktop.DBus service.
5571
5572 2004-08-25  John Palmieri  <johnp@redhat.com>
5573         * bus/config-parser.c:
5574         (struct PolicyType): Add POLICY_CONSOLE
5575         (struct Element.d.policy): s/gid_or_uid/gid_uid_or_at_console
5576         (start_busconfig_child): Sets up console element when
5577         <policy at_console=""> is encountered in a policy file
5578         (append_rule_from_element): Convert console elements to console
5579         rules.
5580
5581         * bus/policy.c: 
5582         (bus_policy_create_client_policy): Add console rules to the client
5583         policy based on if the client is at the console
5584         (bus_policy_append_console_rule): New function for adding a
5585         console rule to a policy
5586         (bus_policy_merge): Handle console rule merging
5587
5588         * dbus/dbus-sysdeps.h: Added the DBUS_CONSOLE_DIR constant
5589         where we check for console user files
5590         
5591         * dbus/dbus-sysdeps.c:
5592         (_dbus_file_exists): New function which checks if the given
5593         file exists
5594         (_dbus_user_at_console): New function which does the system
5595         specific process of checking if the user is at the console
5596
5597         * dbus/dbus-userdb.c:
5598         (_dbus_is_console_user): New function converts a UID to user name
5599         and then calls the system specific _dbus_user_at_console to 
5600         see if the user is at the console and therefor a console user
5601
5602 2004-08-25  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5603
5604         * bus/config-parser.c (set_limit):
5605         * bus/dbus-daemon-1.1.in:
5606         * test/data/valid-config-files/many-rules.conf: set the
5607         max_match_rules_per_connection limt from the config file. 
5608
5609         * doc/busconfig.dtd: update the DTD.
5610
5611         * bus/driver.c: remove some unused variables.
5612
5613 2004-08-24  Mikael Hallendal  <micke@imendio.com>
5614
5615         * dbus/dbus-glib-lowlevel.h: Removed dbus_bus_get_with_g_main since 
5616         it's been replaced by dbus_g_bus_get
5617
5618 2004-08-23  Colin Walters  <walters@redhat.com>
5619
5620         Updated SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
5621
5622         * bus/selinux.h: Prototype bus_selinux_get_policy_root.
5623
5624         * bus/selinux.c: Create a thread for policy reload notification.
5625         (bus_selinux_get_policy_root): Implement.
5626
5627         * bus/config-parser.c (start_busconfig_child)
5628         (bus_config_parser_content): Support SELinux-root relative
5629         inclusion.
5630
5631         * configure.in <HAVE_SELINUX>: Add -lpthread.
5632         
5633         * bus/test-main.c (test_pre_hook, test_post_hook): New.
5634         (test_post_hook): Move memory checking into here.
5635         (test_pre_hook, test_post_hook): Move SELinux checks in
5636         here, but conditional on a DBUS_TEST_SELINUX environment
5637         variable.  Unfortunately we can't run the SELinux checks
5638         as a normal user, since they won't have any permissions
5639         for /selinux.  So this will have to be tested manually
5640         for now, until we have virtualization for most of
5641         libselinux.
5642         
5643 2004-08-23  Havoc Pennington  <hp@redhat.com>
5644
5645         * dbus/dbus-sysdeps.c (_dbus_change_identity): add setgroups() to
5646         drop supplementary groups, suggested by Steve Grubb
5647
5648 2004-08-20  Colin Walters  <walters@redhat.com>
5649
5650         * bus/config-parser.c (start_busconfig_child): Remove some unused
5651         variables.
5652         
5653         * bus/selinux.c (bus_selinux_id_table_insert): Avoid compiler
5654         warning.
5655
5656 2004-08-17  Joe Shaw  <joeshaw@novell.com>
5657
5658         * configure.in: If --enable-mono is passed in, if we can't find
5659         mono error out.
5660
5661         * mono/Makefile.am: Use /gacutil to install assemblies into the
5662         GAC and not /root.
5663
5664 2004-08-12  Havoc Pennington  <hp@redhat.com>
5665
5666         * NEWS: update for 0.22
5667
5668         * configure.in: release 0.22
5669
5670 2004-08-11  Colin Walters  <walters@redhat.com>
5671
5672         * tools/dbus-send.c (main, usage): Add --reply-timeout
5673         argument.
5674
5675 2004-08-10  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5676
5677         * bus/bus.c (process_config_first_time_only): get rid of an unused
5678         DBusError that was causing a memoy leak (bug #989).
5679
5680         * dbus/dbus-keyring.c, dbus/dbus-message.c:
5681         fix compilation on Solaris/Forte C (bug #974)
5682
5683         * bus/main.c (main): plug two minuscule memleaks.
5684
5685 2004-08-10  Havoc Pennington  <hp@redhat.com>
5686
5687         * doc/dbus-tutorial.xml: add some more info on GLib bindings
5688
5689 2004-08-09  Havoc Pennington  <hp@redhat.com>
5690
5691         * COPYING: switch to Academic Free License version 2.1 instead of
5692         2.0, to resolve complaints about patent termination clause.
5693
5694 2004-07-31  John (J5) Palmieri  <johnp@redhat.com>
5695
5696         * README: added documentation for the --enable-python 
5697         configure switch.
5698
5699 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5700
5701         * bus/config-parser.c (bus_config_parser_new): fix an invalid
5702         _unref in the SELinux support.
5703
5704         * doc/busconfig.dtd: update DTD for SELinux support.
5705
5706         * bus/config-loader-libxml.c: fix error handler and parser
5707         initialisation/cleanup. OOM test now works with libxml2 HEAD.
5708
5709         * configure.in: remove the warning about libxml2.
5710
5711         * dbus/dbus-bus.c: silence doxygen warning.
5712
5713 2004-07-31  Colin Walters  <walters@redhat.com>
5714
5715         * configure.in: Move #error in SELinux check to its own line.
5716
5717 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5718
5719         * dbus/dbus-internals.h (_DBUS_SET_OOM):
5720         * bus/utils.h (BUS_SET_OOM): use dbus_error_set_const instead of
5721         dbus_error_set.
5722
5723         * bus/dispatch.c (check_send_exit_to_service): fix the test case,
5724         broken by the change in the _SET_OOM macros.
5725
5726 2004-07-31  Colin Walters  <walters@redhat.com>
5727
5728         * bus/selinux.c <HAVE_SELINUX>: Include utils.h to get
5729         BUS_SET_OOM.
5730
5731 2004-07-31  Colin Walters  <walters@redhat.com>
5732
5733         * configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER
5734         to correctly detect DBUS__ACQUIRE_SVC.  Also add an
5735         AC_MSG_CHECKING.
5736
5737 2004-07-24  Havoc Pennington  <hp@redhat.com>
5738
5739         SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
5740
5741         * bus/selinux.c, bus/selinux.h: new file encapsulating selinux
5742         functionality
5743
5744         * configure.in: add --enable-selinux
5745         
5746         * bus/policy.c (bus_policy_merge): add FIXME to a comment
5747
5748         * bus/main.c (main): initialize and shut down selinux
5749
5750         * bus/connection.c: store SELinux ID on each connection, to avoid 
5751         repeated getting of the string context and converting it into 
5752         an ID
5753
5754         * bus/bus.c (bus_context_get_policy): new accessor, though it
5755         isn't used
5756         (bus_context_check_security_policy): check whether the security
5757         context of sender connection can send to the security context of
5758         recipient connection
5759
5760         * bus/config-parser.c: add parsing for <selinux> and <associate>
5761         
5762         * dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
5763         implement dbus_connection_get_unix_fd()
5764
5765         * dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
5766         function, used by the selinux stuff
5767         
5768 2004-07-29  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5769
5770         * bus/config-loader-libxml.c: complete the implementation of
5771         libxml backend for config file loader. Doesn't work with full OOM
5772         test yet. 
5773         
5774         * configure.in: change error when selecting libxml into a warning.
5775         
5776         * test/data/invalid-config-files: add two non-well-formed XML
5777         files. 
5778         
5779         * glib/Makefile.am: libdbus_gtool always uses expat, not libxml.
5780         
5781         * dbus/dbus-transport-unix.c (unix_handle_watch): do not
5782         disconnect in case of DBUS_WATCH_HANGUP, several do_reading() may
5783         be necessary to read all the buffer. (bug #894)
5784
5785         * bus/activation.c (bus_activation_activate_service): fix a
5786         potential assertion failure (bug #896). Small optimization in the
5787         case of auto-activation messages.
5788
5789         * dbus/dbus-message.c (verify_test_message, _dbus_message_test):
5790         add test case for byte-through-vararg bug (#901). patch by Kimmo
5791         Hämäläinen. 
5792
5793 2004-07-28  Anders Carlsson  <andersca@gnome.org>
5794
5795         * python/dbus.py:
5796         * python/dbus_bindings.pyx.in:
5797         Add dbus.init_gthreads (), allow emit_signal to pass
5798         arguments to the signal.
5799         
5800 2004-07-24  Havoc Pennington  <hp@redhat.com>
5801
5802         * AUTHORS: add some people, not really comprehensively, let me
5803         know if I missed you
5804
5805 2004-07-24  Havoc Pennington  <hp@redhat.com>
5806
5807         * Makefile.am (DIST_SUBDIRS): add DIST_SUBDIRS, problem solved by
5808         Owen
5809
5810         * test/Makefile.am (DIST_SUBDIRS): here also
5811
5812 2004-07-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5813
5814         * dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
5815         breaking build on Solaris, reported by Farhad Saberi on the ML.
5816
5817         * dbus/dbus-message.c (dbus_message_append_args_valist): fix the
5818         va_arg invocation to account for integer promotion in the case of
5819         DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)
5820
5821         * bus/services.c (bus_service_remove_owner): fix bug #902, use
5822         _dbus_list_get_first_link, not _dbus_list_get_first.
5823
5824         * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.
5825
5826         * dbus/dbus-object-tree.c (free_subtree_recurse): always null
5827         handler functions so that the asserts in _dbus_object_subtree_unref
5828         do not fail.
5829
5830         * dbus/dbus-transport-unix.c (do_reading):
5831         _dbus_transport_queue_messages return value is of type
5832         dbus_bool_t, not DBusDispatchStatus.
5833         
5834 2004-07-19  David Zeuthen  <david@fubar.dk>
5835
5836         * dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
5837
5838         * bus/dispatch.c:
5839         (check_get_connection_unix_user): Debug says GetProperty; but the
5840         method is called GetConnectionUnixUser
5841         (check_get_connection_unix_process_id): New function
5842         (bus_dispatch_test): Actually call check_get_connection_unix_user();
5843         also call check_get_connection_unix_process_id()
5844         
5845         * bus/driver.c:
5846         (bus_driver_handle_get_connection_unix_process_id): New function,
5847         handles GetConnectionUnixProcessID on the org.freedesktop.DBus
5848         interface
5849         
5850         * dbus/dbus-auth.c:
5851         (handle_server_data_external_mech): Set pid from the credentials
5852         obtained from the socket
5853         
5854         * dbus/dbus-connection.c:
5855         (dbus_connection_get_unix_process_id): New function
5856         
5857         * dbus/dbus-connection.h: 
5858         Add prototype for dbus_connection_get_unix_process_id
5859         
5860         * dbus/dbus-transport.c:
5861         (_dbus_transport_get_unix_process_id): New function
5862         
5863         * dbus/dbus-transport.h:
5864         Add prototype for _dbus_transport_get_unix_process_id
5865         
5866 2004-07-19  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5867
5868         * dbus/dbus-message.c: Message counter fix, patch by Christian
5869         Hammond <chipx86@gnupdate.org>
5870
5871 2004-07-18  Seth Nickell  <seth@gnome.org>
5872
5873         * python/dbus.py:
5874         * python/dbus_bindings.pyx.in:
5875         * python/tests/test-client.py:
5876
5877         Add dbus.ByteArray and dbus_bindings.ByteArray
5878         types so that byte streams can be passed back.
5879
5880         Give jdahlin the heaps of credit that are so
5881         rightfully his.
5882         
5883 2004-07-12  Seth Nickell  <seth@gnome.org>
5884
5885         * python/dbus.py:
5886
5887         Add message argument to the default object_method_handler
5888         function.
5889         
5890         * python/dbus_bindings.pyx.in:
5891
5892         Automatically return NIL when passed an empty list
5893         (we can't pass back a list since lists are typed
5894         and we don't have any idea what type the the client
5895         intended the list to be... :-( )
5896         
5897 2004-07-10  Seth Nickell  <seth@gnome.org>
5898
5899         * python/examples/Makefile.am:
5900
5901         Fix distcheck breakage caused by new examples.
5902
5903 2004-07-10  Seth Nickell  <seth@gnome.org>
5904
5905         * python/dbus.py:
5906
5907         Add "message" argument to service-side dbus.Object
5908         methods. This will break existing services written
5909         using the python bindings, but will allow extraction
5910         of all the message information (e.g. who its from).
5911
5912         Add improved "object oriented" signal handling/emission.
5913         
5914         * python/examples/example-service.py:
5915
5916         Nix this example.
5917         
5918         * python/examples/example-signal-emitter.py:
5919         * python/examples/example-signal-recipient.py:
5920
5921         Two new examples that show how to emit and receive
5922         signals using the new APIs.
5923         
5924         * python/examples/example-signals.py:
5925         * python/examples/gconf-proxy-service.py:
5926         * python/examples/gconf-proxy-service2.py:
5927
5928         Add "message" argument to service methods.
5929
5930 2004-06-28  Kay Sievers <kay.sievers@vrfy.org>
5931
5932         * bus/driver.c (bus_driver_handle_get_connection_unix_user)
5933         * dbus/bus.c (dbus_bus_get_unix_user)
5934         * doc/dbus-specification.xml: implement GetConnectionUnixUser
5935         method of org.freedesktop.DBus interface.
5936
5937         * bus/dispatch.c: test case
5938
5939 2004-06-23  John (J5) Palmieri  <johnp@redhat.com>
5940
5941         * python/Makefile.am: switched include directory from glib/ to dbus/
5942         since dbus-glib.h moved
5943  
5944 2004-06-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5945
5946         * configure.in: prevent building the gcj stuff and libxml loader
5947         since they are broken.
5948
5949 2004-06-20  Havoc Pennington  <hp@redhat.com>
5950
5951         * dbus/dbus-glib-error-enum.h: autogenerate the GError enum 
5952         codes from the dbus error names
5953         
5954         * glib/dbus-glib.h: move to subdir dbus/ since it's included 
5955         as dbus/dbus-glib.h and that breakage is now visible due to 
5956         including dbus/dbus-glib.h in dbus-glib-lowlevel.h
5957         
5958         * glib/dbus-glib.h: s/gproxy/g_proxy/
5959
5960         * dbus/dbus-shared.h: new header to hold stuff shared with
5961         binding APIs
5962         
5963         * dbus/dbus-protocol.h (DBUS_ERROR_*): move errors here rather
5964         than dbus-errors.h
5965
5966         * glib/dbus-glib.h (dbus_set_g_error): move to
5967         dbus-glib-lowlevel.h
5968
5969         * glib/dbus-glib.h: remove dbus/dbus.h from here; change a bunch
5970         of stuff to enable this
5971
5972         * dbus/dbus-glib-lowlevel.h: put dbus/dbus.h here
5973
5974         * a bunch of other changes with the same basic "separate glib 
5975         bindings from dbus.h" theme
5976         
5977 2004-06-10  Owen Fraser-Green  <owen@discobabe.net>
5978
5979         * dbus-sharp.pc.in: Removed glib-sharp inclusion in Libs.
5980
5981         * python/examples/Makefile.am: Fixed typo in EXTRA_DIST.
5982
5983 2004-06-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5984
5985         * bus/driver.c, dbus/dbus-bus.c: use BOOLEAN instead of UINT32 for
5986         the reply value of the ServiceExists message.
5987
5988 2004-06-07  John (J5) Palmieri  <johnp@redhat.com>
5989
5990         * python/dbus_bindings.pyx.in: No longer need to parse path
5991         elements and pass them as arrays of strings.  The C API now
5992         accepts plain path strings.
5993         (_build_parsed_path): removed 
5994
5995 2004-06-07  Havoc Pennington  <hp@redhat.com>
5996
5997         * doc/TODO: remove auto-activation item since it's done; sort
5998         items by importance/milestone
5999
6000 2004-06-07  Havoc Pennington  <hp@redhat.com>
6001
6002         * dbus/dbus-message-builder.c (_dbus_message_data_load): append
6003         random signature when using REQUIRED_FIELDS (this hack won't work
6004         in the long term)
6005
6006         * dbus/dbus-message.c: change the signature to be a header field,
6007         instead of message->signature special-case string. Incremental
6008         step forward. Then we can fix up code to send the signature in the
6009         message, then fix up code to validate said signature, then fix up
6010         code to not put the typecodes inline, etc.
6011         (load_one_message): don't make up the signature after the fact
6012         (decode_header_data): require signature field for the known
6013         message types
6014
6015         * dbus/dbus-marshal.c (_dbus_marshal_string_len): new
6016
6017         * dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE
6018
6019 2004-06-07  Owen Fraser-Green  <owen@discobabe.net>
6020
6021         * mono/DBusType/ObjectPath.cs: Renamed PathName argument to Path
6022
6023         * mono/Handler.cs: Updated to follow new path argument for
6024         (un-)registering objects.
6025
6026         * mono/example/Makefile.am:
6027         * mono/Makefile.am:
6028         * configure.in: Bumped required version for mono and use new -pkg
6029         syntax for deps
6030
6031 2004-06-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6032
6033         * dbus/dbus-connection.h, dbus/dbus-connection.c: have object path
6034         registration functions take the path argument as char* instead of
6035         char**.
6036
6037         * dbus/dbus-marshal.h, dbus/dbus-marshal.c (_dbus_decompose_path):
6038         split off the path decompostion part of
6039         _dbus_demarshal_object_path. Some misc. fixes to silence compiler
6040         warnings. 
6041
6042         * glib/dbus-gobject.c, test/test-service.c: update accordingly.
6043         
6044 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
6045  
6046         * dbus/dbus-auth.c: Rewrite auth protocol handling to use a state
6047         machine approach.  A state is implemented as a function that
6048         handles incoming events as specified for that state.
6049         
6050         * doc/dbus-specification.xml: Update auth protocol state machine
6051         specification to match implementation.  Remove some leftover
6052         base64 examples.
6053
6054 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
6055
6056         * glib/dbus-gproxy.c, glib/dbus-gmain.c, dbus/dbus-string.c,
6057         dbus/dbus-object-tree.c, dbus/dbus-message.c: add comments to
6058         quiet doxygen.
6059
6060         * Doxyfile.in: remove deprecated options.
6061
6062         * dbus/dbus-message-handler.c, dbus/dbus-message-handler.h,
6063         glib/test-thread.h, glib/test-thread-client.c,
6064         glib/test-thread-server.c, glib/test-profile.c,
6065         glib/test-dbus-glib.c: remove these unused files.
6066
6067 2004-06-01  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6068
6069         * dbus/dbus-object-tree.c
6070         (_dbus_object_tree_dispatch_and_unlock): fix dispatch for
6071         non-fallback handlers (bug #684).
6072         (_dbus_object_subtree_new): initialize invoke_as_fallback field.
6073         (find_subtree_recurse): report wether the returned subtree is an
6074         exact match or a "fallback" match higher up in the tree.
6075         (object_tree_test_iteration): update test case.
6076
6077 2004-06-01  Seth Nickell  <seth@gnome.org>
6078
6079         * python/dbus_bindings.pyx.in:
6080         * python/tests/test-client.py:
6081
6082         Round off basic type support. Add dicts (yay!), and 
6083         remaining array types.
6084
6085         Make MessageIter more general so it works for dicts too.
6086
6087         Mark all loop variables as C integers.
6088         
6089 2004-05-31  Havoc Pennington  <hp@redhat.com>
6090
6091         * glib/dbus-gidl.c (method_info_add_arg): keep args sorted with
6092         "in" before "out"
6093
6094         * glib/dbus-gobject.c (dbus_type_to_string): move to dbus-gutils.c
6095
6096         * glib/dbus-glib-tool.c (main): set up to have a --self-test
6097         option that runs the tests, and start filling in some code
6098         including for starters just dumping the interfaces to stdout
6099
6100         * glib/Makefile.am (INCLUDES): define DBUS_LOCALEDIR
6101
6102         * test/data/valid-introspection-files/lots-of-types.xml: test of
6103         an example introspection file
6104
6105         * glib/dbus-gparser.c (parser_check_doctype): doctype should be
6106         "node" (I think...)
6107
6108 2004-05-31  Seth Nickell  <seth@gnome.org>
6109
6110         * python/dbus_bindings.pyx.in:
6111         * python/tests/test-client.py:
6112
6113         Test Suite: 1
6114         Python Bindings: 0
6115
6116         Fix string array memory trashing bug... oops...
6117
6118 2004-05-30  Seth Nickell  <seth@gnome.org>
6119
6120         * python/dbus.py:
6121
6122         Add a nicer-but-less-flexible alternate API for handling 
6123         calls to virtual objects in dbus.ObjectTree.
6124
6125         Screw up the argument order to the dbus.Object constructor
6126         for consistency with dbus.ObjectTree (and to make dbus_methods
6127         optional for future extension)
6128         
6129         * python/examples/Makefile.am:
6130         * python/examples/gconf-proxy-service.py:
6131         * python/examples/gconf-proxy-service2.py:
6132
6133         Alternate implementation of gconf-proxy-service using the
6134         nicer dbus.ObjectTree API.
6135         
6136         * python/examples/example-service.py:
6137         * python/tests/test-server.py
6138
6139         Reverse the argument order to deal with dbus.Object constructor
6140         changes.
6141         
6142 2004-05-30  Seth Nickell  <seth@gnome.org>
6143
6144         * python/examples/example-client.py:
6145         * python/examples/example-service.py:
6146
6147         Take it back. Lists seem to work but they're broken
6148         in the test suite. Make the base examples use
6149         lists (works fine).
6150
6151 2004-05-30  Seth Nickell  <seth@gnome.org>
6152
6153         * python/dbus_bindings.pyx.in:
6154         * python/tests/test-client.py:
6155
6156         Add some more tests and fix errors that crop up.
6157         Unfortunately, currently it seems like marshalling
6158         and unmarshalling of lists is completely broken :-(
6159
6160 2004-05-30  Seth Nickell  <seth@gnome.org>
6161
6162         * python/dbus_bindings.pyx.in:
6163
6164         Add support for ObjectPath type.
6165
6166         * python/dbus.py:
6167
6168         Refactor message handling code to a common function.
6169         
6170         * python/tests/test-client.py:
6171         * python/tests/test-server.py:
6172
6173         Add tests that check to make sure values of all types
6174         can be echoed from a service w/o mangling.
6175         
6176 2004-05-29  Seth Nickell  <seth@gnome.org>
6177
6178         * python/dbus.py:
6179
6180         Add ObjectTree class which allows implementation
6181         of trees of "virtual" objects. Basically the python
6182         wrapper for "register_fallback".
6183         
6184         * python/examples/Makefile.am
6185         * python/examples/gconf-proxy-client.py:
6186         * python/examples/gconf-proxy-service.py:
6187
6188         Implement a simple GConf proxy service that supports
6189         get/set on string and int GConf keys using the ObjectTree.
6190         
6191 2004-05-29  Seth Nickell  <seth@gnome.org>
6192
6193         * python/dbus.py:
6194         * python/examples/example-client.py:
6195         * python/examples/example-service.py:
6196         * python/examples/list-system-services.py:
6197
6198         Add SessionBus, SystemBus and ActivationBus classes
6199         so you don't need to know the special little BUS_TYPE
6200         flag.
6201         
6202 2004-05-29  Havoc Pennington  <hp@redhat.com>
6203
6204         * bus/config-parser.c (process_test_valid_subdir): temporarily
6205         stop testing config parser OOM handling, since expat has issues
6206         http://freedesktop.org/pipermail/dbus/2004-May/001153.html
6207
6208         * bus/dbus-daemon-1.1.in: change requested_reply to
6209         send_requested_reply/receive_requested_reply so we can send the
6210         replies, not just receive them.
6211
6212         * bus/config-parser.c: parse the new
6213         send_requested_reply/receive_requested_reply
6214
6215         * bus/policy.c (bus_client_policy_check_can_send): add
6216         requested_reply argument and use it
6217
6218         * bus/bus.c (bus_context_check_security_policy): pass through
6219         requested_reply status to message send check
6220
6221         * bus/system.conf.in: adapt to requested_reply change
6222         
6223 2004-05-28  Havoc Pennington  <hp@redhat.com>
6224
6225         * test/glib/test-service-glib.c (main): remove unused variable
6226
6227         * glib/dbus-gidl.c (base_info_ref): fix a silly compiler warning
6228
6229         * dbus/dbus-auth.h (enum): remove AUTHENTICATED_WITH_UNUSED_BYTES
6230         from the enum, no longer in use.
6231
6232         * dbus/dbus-sysdeps.h: include config.h so DBUS_VA_COPY actually
6233         works right.
6234
6235         * dbus/dbus-message.c: add various _dbus_return_val_if_fail for
6236         whether error_name passed in is a valid error name.
6237
6238 2004-05-28  John (J5) Palmieri  <johnp@redhat.com>
6239
6240         * dbus/dbus-message.c (dbus_message_get_args): Added support for
6241         OBJECT_PATH and OBJECT_PATH_ARRAY
6242
6243 2004-05-28  Seth Nickell  <seth@gnome.org>
6244
6245         * python/examples/Makefile.am:
6246
6247         Forget to add Makefile.am. Do not pass go.
6248
6249 2004-05-28  Michael Meeks  <michael@ximian.com>
6250
6251         * glib/dbus-gvalue.c (dbus_gvalue_marshal, dbus_gvalue_demarshal): 
6252         fix no int64 case.
6253
6254         * dbus/dbus-string.c (_dbus_string_parse_basic_type): impl.
6255
6256         * dbus/dbus-message.c (_dbus_message_iter_get_basic_type),
6257         (_dbus_message_iter_get_basic_type_array): impl.
6258         drastically simplify ~all relevant _get methods to use these.
6259         (_dbus_message_iter_append_basic_array),
6260         (dbus_message_iter_append_basic): impl
6261         drastically simplify ~all relevant _append methods to use these.
6262
6263         * dbus/dbus-message-builder.c (parse_basic_type) 
6264         (parse_basic_array, lookup_basic_type): impl.
6265         (_dbus_message_data_load): prune scads of duplicate /
6266         cut & paste coding.
6267
6268         * dbus/dbus-marshal.c (_dbus_demarshal_basic_type_array) 
6269         (_dbus_demarshal_basic_type): implement,
6270         (demarshal_and_validate_len/arg): beef up debug.
6271         (_dbus_marshal_basic_type, _dbus_marshal_basic_type_array): impl.
6272
6273 2004-05-27  Seth Nickell  <seth@gnome.org>
6274
6275         * configure.in:
6276         * python/Makefile.am:
6277
6278         Include the example python apps in the tarball.
6279         
6280         * python/examples/list-system-services.py
6281
6282         Add a python new example that fetches the list of services
6283         from the system bus.
6284         
6285 2004-05-27  Seth Nickell  <seth@gnome.org>
6286
6287         * python/dbus.py:
6288         * python/dbus_bindings.pyx.in:
6289
6290         Fix failure to notify that a signal was not handled,
6291         resulted in hung functions.
6292         
6293 2004-05-25  Colin Walters  <walters@redhat.com>
6294
6295         * tools/dbus-monitor.c (main): Monitor all types of messages.
6296
6297 2004-05-23  Owen Fraser-Green  <owen@discobabe.net>
6298
6299         * mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
6300         which unregisters the object path and disposes the handler.
6301
6302 2004-05-23  Kristian Høgsberg  <krh@redhat.com>
6303  
6304         Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
6305          
6306         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): Swap
6307         operands to && so we call dbus_message_iter_next () for the last
6308         argument also.
6309
6310 2004-05-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6311
6312         * dbus/dbus-object-tree.c
6313         (_dbus_object_tree_list_registered_unlock, lookup_subtree): return
6314         children even if the requested path isn't registered.
6315         (object_tree_test_iteration): test object_tree_list_registered.
6316
6317         * configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
6318         it to 0.
6319         
6320 2004-05-20  Kristian Høgsberg  <krh@redhat.com>
6321
6322         * doc/TODO: Remove resolved items.
6323
6324         * bus/expirelist.h (struct BusExpireList): remove unused n_items
6325         field.
6326         
6327         * bus/connection.c (bus_connections_expect_reply): Enforce the
6328         per-connection limit on pending replies.
6329         
6330         Patch from Jon Trowbridge <trow@ximian.com>:
6331  
6332         * bus/main.c (setup_reload_pipe): Added.  Creates a pipe and sets
6333         up a watch that triggers a config reload when one end of the pipe
6334         becomes readable.
6335         (signal_handler): Instead of doing the config reload in our SIGHUP
6336         handler, just write to the reload pipe and let the associated
6337         watch handle the reload when control returns to the main loop.
6338  
6339         * bus/driver.c (bus_driver_handle_reload_config): Added.
6340         Implements a ReloadConfig method for requesting a configuration
6341         file reload via the bus driver.
6342  
6343 2004-05-19  Owen Fraser-Green  <owen@discobabe.net>
6344
6345         * HACKING: Updated release instructions concerning the wiki page.
6346
6347 2004-05-18  Kristian Høgsberg  <krh@redhat.com>
6348
6349         * dbus/dbus-auth.c (client_try_next_mechanism): Remove logic to
6350         filter against auth->allowed_mechs; we only add allowed mechs in
6351         record_mechanisms().
6352  
6353         * dbus/dbus-auth-script.c (_dbus_auth_script_run): Add an
6354         ALLOWED_MECHS to auth-script format so we can set the list of
6355         allowed mechanisms.
6356  
6357         * data/auth/client-out-of-mechanisms.auth-script: New test to
6358         check client disconnects when it is out of mechanisms to try.
6359  
6360         * dbus/dbus-auth.c (process_command): Remove check for lines
6361         longer that 1 MB; we only buffer up maximum 16 kB.
6362  
6363         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
6364         dbus/dbus-auth-script.c, dbus/dbus-auth.c, dbus/dbus-auth.h:
6365         Remove auth state AUTHENTICATED_WITH_UNUSED_BYTES, instead always
6366         assume there might be unused bytes.
6367  
6368         * dbus/dbus-auth.c (_dbus_auth_do_work): Remove check for
6369         client-out-of-mechs, it is handled in process_reject(). Move check
6370         for max failures to send_rejected(), as it's a server-only thing.
6371
6372         * dbus/dbus-auth.c: Factor out protocol reply code into functions
6373         send_auth(), send_data(), send_rejected(), send_error(),
6374         send_ok(), send_begin() and send_cancel().
6375
6376 2004-05-17  Kristian Høgsberg  <krh@redhat.com>
6377
6378         Remove base64 encoding, replace with hex encoding. Original patch
6379         from trow@ximian.com, added error handling.
6380
6381         * dbus/dbus-string.c (_dbus_string_base64_encode)
6382         (_dbus_string_base64_decode): Remove.
6383         (_dbus_string_hex_decode): Add end_return argument so we can
6384         distinguish between OOM and invalid hex encoding.
6385         (_dbus_string_test): Remove base64 tests and add test case for
6386         invalid hex.
6387
6388         * dbus/dbus-keyring.c, dbus/dbus-auth-script.c, dbus/dbus-auth.c:
6389         Replace base64 with hex.
6390
6391         * test/data/auth/invalid-hex-encoding.auth-script: New test case
6392         for invalid hex encoded data in auth protocol.
6393
6394 2004-05-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6395
6396         * dbus/dbus-connection.c (check_for_reply_unlocked): plug a memory
6397         leak.
6398
6399 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
6400
6401         * mono/dbus-sharp.dll.config.in: Added for GAC
6402         * mono/dbus-sharp.snk: Added for GAC
6403         * mono/Assembly.cs.in: Added for GAC
6404         * mono/Makefile.am: Changes for GAC installation        
6405         * configure.in: Added refs for dbus-sharp.dll.config.in and
6406         Assembly.cs.in. More fixes for mono testing
6407         * mono/example/Makefile.am: Changed var to CSC
6408         * Makefile.am: Changed flag name to DBUS_USE_CSC
6409
6410 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
6411
6412         * mono/Makefile.am: Added SUBDIRS for docs. Changed SUBDIRS order
6413         * mono/doc/*: Added documentation framework
6414         * configure.in: Added monodoc check
6415         * README: Added description of mono configure flags
6416
6417 2004-05-11  John (J5) Palmieri  <johnp@redhat.com>:
6418
6419         * doc/dbus-specification.xml: Added a "Required" column to the 
6420         header fields table and changed the "zero or more" verbage in
6421         the above paragraph to read "The header must contain the required 
6422         named header fields and zero or more of the optional named header 
6423         fields".
6424         * test/data/invalid-messages/*.message: Added the required PATH 
6425         named header field to the tests so that they don't fail on 
6426         'Missing path field'
6427
6428 2004-05-07  John (J5) Palmieri  <johnp@redhat.com>
6429
6430         * python/dbus-bindings.pyx.in: Stopped the bindings from trashing
6431         the stack by implicitly defining variable and parameter types and
6432         removing the hack of defining C pointers as python objects and later
6433         casting them.
6434
6435 2004-05-02  Owen Fraser-Green  <owen@discobabe.net>
6436
6437         * mono/Makefile.am: Removed test-dbus-sharp.exe from all target
6438
6439 2004-05-01  Owen Fraser-Green  <owen@discobabe.net>
6440
6441         * mono/DBusType/Dict.cs: Handle empty dicts
6442         * mono/DBusType/Array.cs: Handle empty arrays
6443         * mono/Arguments.cs: Handle empty arguments
6444
6445 2004-04-30  Owen Fraser-Green  <owen@discobabe.net>
6446
6447         * dbus-sharp.pc.in: Modified to include include Libs and Requires
6448         field
6449
6450 2004-04-25  Kristian Høgsberg  <krh@redhat.com>
6451
6452         * test/data/valid-messages/standard-*.message: Update message
6453         test scripts to new header field names.
6454
6455 2004-04-22  John (J5) Palmieri  <johnp@redhat.com>
6456
6457         * test/break-loader.c (randomly_do_n_things): tracked down buffer
6458         overflow to times_we_did_each_thing array which would chop off the
6459         first character of the failure_dir string. Increased the size of
6460         the array to 7 to reflect the number of random mutation functions
6461         we have.
6462
6463 2004-04-21  Kristian Høgsberg  <krh@redhat.com>
6464
6465         * dbus/dbus-server-unix.c (unix_finalize): Don't unref
6466         unix_server->watch here, it is unreffed in disconnect.
6467         (_dbus_server_new_for_tcp_socket): convert NULL host to
6468         "localhost" here so we don't append NULL to address.
6469         
6470         * dbus/dbus-server.c (_dbus_server_test): Add test case for
6471         various addresses, including tcp with no explicit host.
6472
6473 2004-04-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6474
6475         * dbus/dbus-message.c (decode_header_data, decode_string_field):
6476         fix incorrect setting of .name_offset in the HeaderField (it was
6477         off by two bytes, positioned right after the name and typecode)
6478
6479         * bus/bus.c (bus_context_new, bus_context_unref): test before
6480         calling dbus_server_free_data_slot and _dbus_user_database_unref
6481         in case of an error.
6482
6483         * tools/Makefile.am: add $(DBUS_GLIB_TOOL_LIBS), xml libs needed
6484         by libdbus-gtool.
6485
6486 2004-04-19  Kristian Høgsberg  <krh@redhat.com>
6487
6488         * dbus/dbus-transport-unix.c (unix_do_iteration): Rewrite to use
6489         _dbus_poll() instead of select().
6490
6491 2004-04-15  Jon Trowbridge  <trow@ximian.com>
6492
6493         * bus/main.c (signal_handler): Reload the configuration files
6494         on SIGHUP.
6495         (main): Set up our SIGHUP handler.
6496
6497         * bus/bus.c (struct BusContext): Store the config file, user and
6498         fork flag in the BusContext.
6499         (process_config_first_time_only): Added.  Contains the code
6500         (previously in bus_context_new) for setting up the BusContext from
6501         the BusConfigParser that should only be run the first time the
6502         config files are read.
6503         (process_config_every_time): Added.  Contains the code (previously
6504         in bus_context_new) for setting up the BusContext from the
6505         BusConfigParser that should be run every time the config files are
6506         read.
6507         (load_config): Added.  Builds a BusConfigParser from the config
6508         files and passes the resulting structure off to
6509         process_config_first_time_only (assuming this is the first time)
6510         and process_config_every_time.
6511         (bus_context_new): All of the config-related code has been moved
6512         to process_config_first_time_only and process_config_every_time.
6513         Now this function just does the non-config-related initializations
6514         and calls load_config.
6515         (bus_context_reload_config): Added.
6516
6517 2004-04-15  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6518
6519         * bus/driver.c (bus_driver_handle_get_service_owner):
6520         implement a GetServiceOwner method.
6521         * doc/dbus-specification.xml: document it.
6522         * dbus/dbus-errors.h: add a 'ServiceHasNoOwner' error.
6523         
6524         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service_owner):
6525         implement, using the bus GetServiceOwner method.
6526
6527         * test/glib/test-dbus-glib.c:
6528         use dbus_gproxy_new_for_service_owner so that we can receive the
6529         signal. 
6530
6531 2004-04-15  John (J5) Palmieri  <johnp@redhat.com>
6532
6533         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
6534         dbus/dbus-message.c, dbus/dbus-protocol.h
6535         (DBUS_HEADER_FIELD_SERVICE): renamed DBUS_HEADER_FIELD_DESTINATION
6536
6537         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
6538         dbus/dbus-message.c, dbus/dbus-protocol.h
6539         (DBUS_HEADER_FIELD_SENDER_SERVICE): renamed DBUS_HEADER_FIELD_SENDER
6540
6541         * dbus/dbus-internals.c (_dbus_header_field_to_string):
6542         DBUS_HEADER_FIELD_DESTINATION resolves to "destination"
6543         DBUS_HEADER_FIELD_SENDER resolves to "sender"
6544
6545         * doc/dbus-specification.xml (Header Fields Table):
6546         s/SERVICE/DESTINATION
6547         s/SENDER_SERVICE/SENDER
6548
6549
6550 2004-04-14  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6551
6552         * test/glib/test-dbus-glib.c (timed_exit): fail the test after
6553         a few seconds.
6554
6555 2004-04-13  Michael Meeks  <michael@ximian.com>
6556
6557         * glib/dbus-gobject.c (handle_introspect): split out
6558         (introspect_properties): this.
6559         (handle_introspect): implement this.
6560
6561         * test/glib/Makefile.am: use the absolute path so the bus
6562         daemon's chdir ("/") doesn't kill us dead.
6563
6564         * configure.in: subst ABSOLUTE_TOP_BUILDDIR
6565
6566 2004-04-12  Jon Trowbridge  <trow@ximian.com>
6567
6568         * bus/config-parser.c (struct BusConfigParser): Added
6569         included_files field.
6570         (seen_include): Added.  Checks whether or not a file has already
6571         been included by any parent BusConfigParser.
6572         (bus_config_parser_new): Copy the parent's included_files.
6573         (include_file): Track which files have been included, and fail on
6574         circular inclusions.
6575         (process_test_valid_subdir): Changed printf to report if we are
6576         testing valid or invalid conf files.
6577         (all_are_equiv): Changed printf to be a bit clearer about
6578         what we are actually doing.
6579         (bus_config_parser_test): Test invalid configuration files.
6580
6581 2004-04-09  Jon Trowbridge  <trow@ximian.com>
6582
6583         * bus/config-parser.c (bus_config_parser_new): Added a 'parent'
6584         argument.  If non-null, the newly-constructed BusConfigParser will
6585         be initialized with the parent's BusLimits instead of the default
6586         values.
6587         (include_file): When including a config file, pass in
6588         the current parser as the parent and then copy the BusLimits
6589         from the included BusConfigParser pack to the current parser.
6590         (process_test_valid_subdir): Renamed from process_test_subdir.
6591         (process_test_equiv_subdir): Added.  Walks through a directory,
6592         descending into each subdirectory and loading the config files
6593         it finds there.  If any subdirectory contains two config files
6594         that don't produce identical BusConfigParser structs, fail.
6595         For now, the BusConfigParser's BusPolicies are not compared.
6596         (bus_config_parser_test): Call both process_test_valid_subdir and
6597         process_test_equiv_subdir.
6598
6599         * bus/config-loader-libxml.c (bus_config_load): Take a parent
6600         argument and pass it along to the call to bus_config_parser_new.
6601         Also made a few small changes to allow this code to compile.
6602
6603         * bus/config-loader-expat.c (bus_config_load): Take a parent
6604         argument and pass it along to the call to bus_config_parser_new.
6605
6606         * bus/bus.c (bus_context_new): Load the config file
6607         with a NULL parent argument.
6608
6609 2004-03-29  Michael Meeks  <michael@ximian.com>
6610
6611         * glib/dbus-gobject.c (introspect_properties): split
6612         out, fix mangled 'while' flow control.
6613         (introspect_signals): implement.
6614         (handle_introspect): update.
6615
6616 2004-03-29  Michael Meeks  <michael@ximian.com>
6617
6618         * glib/dbus-gobject.c (set_object_property): split out / 
6619         re-work, use the property type, and not the message type(!)
6620         (get_object_property): ditto.
6621
6622         * glib/dbus-gvalue.c (dbus_gvalue_demarshal),
6623         (dbus_gvalue_marshal): make this code re-usable, needed
6624         for signals too, also on both proxy and server side.
6625         Re-write for more efficiency / readability.
6626
6627 2004-03-29  Michael Meeks  <michael@ximian.com>
6628
6629         * dbus/dbus-message.c
6630         (dbus_message_new_error_printf): impl.
6631
6632         * dbus/dbus-connection.c
6633         (dbus_connection_unregister_object_path): fix warning.
6634
6635         * configure.in: fix no-mono-installed situation.
6636
6637 2004-03-27  Havoc Pennington  <hp@redhat.com>
6638
6639         Patch from Timo Teräs:
6640         
6641         * tools/dbus-send.c (main): if --print-reply, assume type is
6642         method call; support boolean type args
6643         
6644         * dbus/dbus-connection.c (dbus_connection_send_with_reply): fix a
6645         bunch of memleak and logic bugs
6646         
6647 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
6648
6649         * mono/Arguments.cs:
6650         * mono/Introspector.cs:
6651         * mono/Handler.cs:
6652         * mono/InterfaceProxy.cs:
6653         * mono/Message.cs
6654         * mono/ProxyBuilder.cs:
6655         * mono/Service.cs:
6656         Added InterfaceProxy class to avoid building proxies for every
6657         object.
6658
6659         * dbus-message.h:
6660         * dbus-message.c (dbus_message_append_args_valist)
6661         (dbus_message_iter_get_object_path)
6662         (dbus_message_iter_get_object_path_array)
6663         (dbus_message_iter_append_object_path)
6664         (dbus_message_iter_append_object_path_array):
6665         Added object_path iter functions to handle OBJECT_PATH arguments
6666         
6667 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
6668
6669         First checkin of mono bindings.
6670         * configure.in:
6671         * Makefile.am:
6672         Build stuff for the bindings
6673         * dbus-sharp.pc.in: Added for pkgconfig
6674         
6675 2004-03-21  Havoc Pennington  <hp@redhat.com>
6676
6677         * test/test-service.c (main): remove debug spew
6678
6679 2004-03-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6680
6681         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): accept empty
6682         arrays
6683
6684         * dbus/dbus-message.h, bus/dbus-message.c (dbus_message_iter_init)
6685         (dbus_message_iter_init_array_iterator)
6686         (dbus_message_iter_init_dict_iterator): return a dbus_bool_t to
6687         indicate whether the iterator is empty
6688
6689         * dbus/dbus-pending-call.c, dbus/dbus-server.c: silence compiler
6690         warnings
6691
6692 2004-03-19  Havoc Pennington  <hp@redhat.com>
6693
6694         * NEWS: 0.21 updates
6695
6696         * configure.in: 0.21
6697
6698         * doc/Makefile.am: add all XMLTO usage to DBUS_XML_DOCS_ENABLED
6699         
6700         * python/Makefile.am: change to avoid dist of dbus_bindings.c so
6701         you don't need pyrex to make dist
6702
6703         * qt/Makefile.am (libdbus_qt_1_la_SOURCES): add integrator.h to
6704         sources; run moc
6705         
6706 2004-03-18  Richard Hult  <richard@imendio.com>
6707
6708         * dbus/dbus-message.c (dbus_message_get_auto_activation) 
6709         (dbus_message_set_auto_activation): Add doxygen docs.
6710
6711 2004-03-16  Richard Hult  <richard@imendio.com>
6712
6713         * bus/activation.c: (bus_activation_service_created),
6714         (bus_activation_send_pending_auto_activation_messages),
6715         (bus_activation_activate_service):
6716         * bus/activation.h:
6717         * bus/dispatch.c: (bus_dispatch),
6718         (check_nonexistent_service_auto_activation),
6719         (check_service_auto_activated),
6720         (check_segfault_service_auto_activation),
6721         (check_existent_service_auto_activation), (bus_dispatch_test):
6722         * bus/driver.c: (bus_driver_handle_activate_service):
6723         * bus/services.c: (bus_registry_acquire_service):
6724         * dbus/dbus-message.c: (dbus_message_set_auto_activation),
6725         (dbus_message_get_auto_activation):
6726         * dbus/dbus-message.h:
6727         * dbus/dbus-protocol.h: Implement auto-activation.
6728         
6729         * doc/dbus-specification.xml: Add auto-activation to the spec.
6730
6731 2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6732
6733         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos):
6734         fix a bug with CUSTOM types.
6735
6736         * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add
6737         a unit test for this bug (used to fail).
6738
6739 2004-03-12  Mikael Hallendal  <micke@imendio.com>
6740
6741         * bus/activation.c:
6742         (babysitter_watch_callback): notify all pending activations waiting for
6743           the same exec that the activation failed.
6744         (bus_activation_activate_service): shortcut the activation if we 
6745           already waiting for the same executable to start up.
6746
6747 2004-03-12  Mikael Hallendal  <micke@imendio.com>
6748
6749         * bus/activation.c: 
6750         - Added service file reloading. 
6751           Each service files directory is kept in an hash table in 
6752           BusActivation and each BusActivationEntry knows what .service-file it
6753           was read from. So when you try to activate a service the bus will 
6754           check if it's been updated, removed or if new .service-files has 
6755           been installed.
6756         - Test code at the bottom for the service file reloading.
6757         * bus/test-main.c: (main):
6758         * bus/test.h:
6759         - added service reloading test.
6760         * dbus/dbus-sysdeps.c: 
6761         * dbus/dbus-sysdeps.h: (_dbus_delete_directory): Added.
6762
6763 2004-03-08  Michael Meeks  <michael@ximian.com>
6764
6765         * dbus/dbus-connection.c (_dbus_connection_block_for_reply): 
6766         bail immediately if disconnected, to avoid busy loop.
6767
6768         * dbus/dbus-message.c (dbus_message_iter_get_args_valist):
6769         cleanup cut/paste/inefficiency.
6770
6771 2004-03-01  David Zeuthen  <david@fubar.dk>
6772
6773         * dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
6774         bug where args were used twice. This bug resulted in a segfault
6775         on a Debian/PPC system when starting the messagebus daemon. Include
6776         dbus-sysdeps.h for DBUS_VA_COPY
6777
6778         * dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib
6779
6780         * configure.in: Check for va_copy; define DBUS_VA_COPY to the
6781         appropriate va_copy implementation. From GLib
6782         
6783 2004-02-24  Joe Shaw  <joe@ximian.com>
6784
6785         * bus/services.c (bus_registry_acquire_service): We need to pass
6786         in the service name to dbus_set_error() to prevent a crash.
6787
6788 2003-12-26  Anders Carlsson  <andersca@gnome.org>
6789
6790         * AUTHORS: Reveal my True identity.
6791
6792 2003-12-17  Mikael Hallendal  <micke@imendio.com>
6793
6794         * dbus/dbus-message.c: (dbus_message_append_args_valist): 
6795         - Added case for DBUS_TYPE_BYTE, patch from Johan Hedberg.
6796
6797 2003-12-13  Mikael Hallendal  <micke@imendio.com>
6798
6799         * doc/TODO: Added not about better error check of configuration files.
6800
6801 2003-12-02  Richard Hult  <richard@imendio.com>
6802
6803         * Update AFL version to 2.0 throughout the source files to reflect
6804         the update that was done a while ago.
6805
6806 2003-12-02  Richard Hult  <richard@imendio.com>
6807
6808         * dbus/dbus-message.c (dbus_message_iter_append_dict): Set
6809         wrote_dict_key to FALSE on the iter that the dict is appended to,
6810         just like when appending other types. Fixes a bug where a dict
6811         couldn't be put inside a dict.
6812         (dbus_message_iter_append_dict_key): Fix typo in warning message.
6813         (message_iter_test, _dbus_message_test): Add test case for dict
6814         inside dict.
6815
6816 2003-12-01  David Zeuthen  <david@fubar.dk>
6817
6818         * python/dbus.py: Add the actual message when calling the reciever
6819         of a signal such that parameters can be inspected. Add the method
6820         remove_signal_receiver
6821         
6822 2003-11-26  Mikael Hallendal  <micke@imendio.com>
6823
6824         * bus/*.[ch]:
6825         * dbus/*.[ch]:
6826         * glib/*.[ch]: Made ref functions return the pointer
6827
6828 2003-11-25  Zack Rusin  <zack@kde.org>
6829
6830         * qt/integrator.h, qt/integrator.cpp: Adding handling of DBusServer,
6831
6832         * qt/server.h, qt/server.cpp, qt/Makefile.am: Adding DBusServer 
6833         wrappers,
6834
6835         * qt/connection.h, qt/connection.cpp: Adjusting to changes in 
6836         the Integrator and to better fit with the server,
6837
6838 2003-11-24  Zack Rusin  <zack@kde.org>
6839
6840         * qt/connection.h, qt/connection.cpp: removing initDbus method since
6841         the integrator handles it now
6842
6843         * qt/integrator.h, qt/integrator.cpp: reworking handling of timeouts,
6844         since QTimer wasn't really meant to be used the way DBusTimeout is
6845
6846 2003-11-24  Zack Rusin  <zack@kde.org>
6847
6848         * qt/integrator.h, qt/integrator.cpp, Makefile.am: Adding 
6849         Integrator class which integrates D-BUS with the Qt event loop,
6850
6851         * qt/connection.h, qt/connection.cpp: Move all the code which
6852         was dealing with D-BUS integration to the Integrator class,
6853         and start using Integrator,
6854
6855 2003-11-23  Zack Rusin  <zack@kde.org>
6856
6857         * qt/connection.h, qt/connection.cpp: Adding the DBusConnection 
6858         wrapper
6859
6860         * qt/message.h, qt/message.cpp: updating to the current D-BUS api,
6861         switching namespaces to DBusQt, reworking the class,
6862
6863         * Makefile.cvs: switching dependencies so that it matches KDE 
6864         schematics,
6865         
6866         * qt/Makefile.am: adding connection.{h,cpp} and message.{h,cpp} to 
6867         the library
6868
6869 2003-11-19  Havoc Pennington  <hp@redhat.com>
6870
6871         * NEWS: update
6872
6873         * configure.in: bump version to 0.20
6874
6875         * configure.in (have_qt): add yet another place to look for qt
6876         (someone hand trolltech a .pc file...)
6877
6878 2003-11-01  Havoc Pennington  <hp@redhat.com>
6879
6880         * doc/dbus-specification.xml: add state machine docs on the auth
6881         protocol; just a first draft, I'm sure it's wrong.      
6882
6883 2003-10-28  David Zeuthen  <david@fubar.dk>
6884
6885         * python/dbus_bindings.pyx.in: add get_dict to handle dictionaries
6886         return types. Fixup TYPE_* to reflect changes in dbus/dbus-protocol.h
6887         
6888 2003-10-28  Havoc Pennington  <hp@redhat.com>
6889
6890         * dbus/dbus-message.c (get_next_field): delete unused function
6891
6892 2003-10-28  Havoc Pennington  <hp@redhat.com>
6893
6894         * bus/expirelist.c (do_expiration_with_current_time): detect
6895         failure of the expire_func due to OOM
6896
6897         * bus/connection.c (bus_pending_reply_expired): return FALSE on OOM
6898
6899         * bus/dispatch.c (check_send_exit_to_service): fix to handle the
6900         NoReply error that's now created by the bus when the service exits
6901
6902 2003-10-28  Havoc Pennington  <hp@redhat.com>
6903
6904         * dbus/dbus-message.c (_dbus_message_test): enable and fix the
6905         tests for set_path, set_interface, set_member, etc.
6906
6907         * dbus/dbus-string.c (_dbus_string_insert_bytes): allow 0 bytes
6908
6909         * dbus/dbus-message.c (set_string_field): always just delete and
6910         re-append the field; accept NULL for deletion
6911         (re_align_fields_recurse): reimplement
6912         
6913 2003-10-26  Havoc Pennington  <hp@redhat.com>
6914
6915         * dbus/dbus-connection.c: fix docs to properly describe the
6916         disconnected message
6917         (_dbus_connection_notify_disconnected): remove this function; 
6918         we can't synchronously add the disconnected message, we have to 
6919         do it after we've queued any remaining real messages
6920         (_dbus_connection_get_dispatch_status_unlocked): queue the
6921         disconnect message only if the transport has finished queueing all
6922         its real messages and is disconnected.
6923         (dbus_connection_disconnect): update the dispatch status here
6924
6925 2003-10-22  Havoc Pennington  <hp@redhat.com>
6926
6927         * bus/bus.c (bus_context_check_security_policy): fix up assertion
6928
6929         * bus/connection.c (bus_transaction_send_from_driver): set the
6930         destination to the connection's base service
6931
6932 2003-10-20  Havoc Pennington  <hp@redhat.com>
6933
6934         hmm, make check is currently not passing.
6935         
6936         * doc/dbus-specification.xml: add requirement that custom type
6937         names follow the same rules as interface names.
6938
6939         * dbus/dbus-protocol.h: change some of the byte codes, to avoid
6940         duplication and allow 'c' to be 'custom'; dict is now 'm' for
6941         'map'
6942
6943         * doc/dbus-specification.xml: update type codes to match
6944         dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
6945         CUSTOM. Add type OBJECT_PATH to the spec.
6946
6947 2003-10-17  Havoc Pennington  <hp@redhat.com>
6948
6949         * bus/driver.c (create_unique_client_name): use "." as separator
6950         in base service names instead of '-'
6951
6952         * dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
6953         byte at the end of the string
6954
6955         * dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
6956         optimization macros since string validation seems to be a slow
6957         point.
6958         
6959         * doc/dbus-specification.xml: restrict valid
6960         service/interface/member/error names. Add test suite code for the
6961         name validation.
6962
6963         * dbus/dbus-string.c: limit service/interface/member/error names 
6964         to [0-9][A-Z][a-z]_
6965
6966         * dbus/dbus-connection.c (dbus_connection_dispatch): add missing
6967         format arg to verbose spew
6968
6969         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
6970         memory, return instead of g_error
6971
6972         * test/test-service.c (path_message_func): support emitting a
6973         signal on request
6974
6975         * dbus/dbus-bus.c (init_connections_unlocked): only fill in
6976         activation bus type if DBUS_BUS_ACTIVATION was set; default to
6977         assuming the activation bus was the session bus so that services
6978         started manually will still register.
6979         (init_connections_unlocked): fix so that in OOM situation we get
6980         the same semantics when retrying the function
6981         
6982         * test/test-service.c (main): change to use path registration, to
6983         test those codepaths; register with DBUS_BUS_ACTIVATION rather
6984         than DBUS_BUS_SESSION
6985
6986 2003-10-16  Havoc Pennington  <hp@redhat.com>
6987
6988         * glib/dbus-gtest-main.c: bracket with #ifdef DBUS_BUILD_TESTS
6989
6990         * Makefile.am (GCOV_DIRS): remove "test", we don't care about test
6991         coverage of the tests
6992         (coverage-report.txt): don't move the .da and .bbg files around
6993
6994 2003-10-16  Havoc Pennington  <hp@redhat.com>
6995
6996         * bus/bus.c (struct BusContext): remove struct field I didn't mean
6997         to put there
6998
6999 2003-10-16  Havoc Pennington  <hp@redhat.com>
7000
7001         * bus/connection.c (bus_pending_reply_expired): either cancel or
7002         execute, not both
7003         (bus_connections_check_reply): use unlink, not remove_link, as we
7004         don't want to free the link; fixes double free mess
7005
7006         * dbus/dbus-pending-call.c (dbus_pending_call_block): fix in case
7007         where no reply was received
7008
7009         * dbus/dbus-connection.c (_dbus_pending_call_complete_and_unlock):
7010         fix a refcount leak
7011
7012         * bus/signals.c (match_rule_matches): add special cases for the
7013         bus driver, so you can match on sender/destination for it.
7014
7015         * dbus/dbus-sysdeps.c (_dbus_abort): print backtrace if
7016         DBUS_PRINT_BACKTRACE is set
7017
7018         * dbus/dbus-internals.c: add pid to assertion failure messages
7019
7020         * dbus/dbus-connection.c: add message type code to the debug spew
7021
7022         * glib/dbus-gproxy.c (gproxy_get_match_rule): match rules want
7023         sender=foo not service=foo
7024
7025         * dbus/dbus-bus.c (dbus_bus_get): if the activation bus is the
7026         session bus but DBUS_SESSION_BUS_ADDRESS isn't set, use 
7027         DBUS_ACTIVATION_ADDRESS instead
7028
7029         * bus/activation.c: set DBUS_SESSION_BUS_ADDRESS,
7030         DBUS_SYSTEM_BUS_ADDRESS if appropriate
7031
7032         * bus/bus.c (bus_context_new): handle OOM copying bus type into
7033         context struct
7034
7035         * dbus/dbus-message.c (dbus_message_iter_get_object_path): new function
7036         (dbus_message_iter_get_object_path_array): new function (half
7037         finished, disabled for the moment)
7038         
7039         * glib/dbus-gproxy.c (dbus_gproxy_end_call): properly handle
7040         DBUS_MESSAGE_TYPE_ERROR
7041
7042         * tools/dbus-launch.c (babysit): support DBUS_DEBUG_OUTPUT to
7043         avoid redirecting stderr to /dev/null
7044         (babysit): close stdin if not doing the "exit_with_session" thing
7045
7046         * dbus/dbus-sysdeps.c (_dbus_become_daemon): delete some leftover
7047         debug code; change DBUS_DEBUG_OUTPUT to only enable stderr, not
7048         stdout/stdin, so things don't get confused
7049         
7050         * bus/system.conf.in: fix to allow replies, I modified .conf
7051         instead of .conf.in again.
7052
7053 2003-10-14  David Zeuthen  <david@fubar.dk>
7054
7055         * python/dbus_bindings.pyx.in (MessageIter.get): fixed typo in
7056         argtype to arg_type when raising unknown arg type exception.
7057         Changed type list to reflect the changes in dbus-protocol.h so 
7058         the bindings actually work.
7059
7060 2003-10-14  Havoc Pennington  <hp@redhat.com>
7061
7062         * test/decode-gcov.c: support gcc 3.3 also, though gcc 3.3 seems
7063         to have a bug keeping it from outputting the .da files sometimes
7064         (string_get_string): don't append garbage nul bytes to the string.
7065
7066 2003-10-15  Seth Nickell  <seth@gnome.org>
7067
7068         * python/Makefile.am:
7069
7070         Include dbus_h_wrapper.h in the dist tarball.
7071
7072 2003-10-14  Havoc Pennington  <hp@redhat.com>
7073
7074         * bus/bus.c (bus_context_check_security_policy): revamp this to
7075         work more sanely with new policy-based requested reply setup
7076
7077         * bus/connection.c (bus_transaction_send_from_driver): set bus
7078         driver messages as no reply
7079
7080         * bus/policy.c (bus_client_policy_check_can_receive): handle a
7081         requested_reply attribute on allow/deny rules
7082
7083         * bus/system.conf: add <allow requested_reply="true"/>
7084
7085         * bus/driver.c (bus_driver_handle_message): fix check for replies
7086         sent to the bus driver, which was backward. How did this ever work
7087         at all though? I think I'm missing something.
7088
7089         * dbus/dbus-message.c (decode_header_data): require error and
7090         method return messages to have a reply serial field to be valid
7091         (_dbus_message_loader_queue_messages): break up this function;
7092         validate that reply serial and plain serial are nonzero; 
7093         clean up the OOM/error handling.
7094         (get_uint_field): don't return -1 from this
7095         (dbus_message_create_header): fix signed/unsigned bug
7096
7097         * bus/connection.c (bus_connections_expect_reply): save serial of
7098         the incoming message, not reply serial
7099
7100 2003-10-14  Havoc Pennington  <hp@redhat.com>
7101
7102         * bus/connection.c: implement pending reply tracking using
7103         BusExpireList
7104
7105         * bus/bus.c (bus_context_check_security_policy): verify that a
7106         reply is pending in order to allow a reply to be sent. Deny 
7107         messages of unknown type.
7108
7109         * bus/dbus-daemon-1.1.in: update to mention new resource limits
7110
7111         * bus/bus.c (bus_context_get_max_replies_per_connection): new
7112         (bus_context_get_reply_timeout): new
7113
7114 2003-10-13  Seth Nickell  <seth@gnome.org>
7115
7116         * python/Makefile.am:
7117
7118         Pass "make distcheck": remove a couple files from DIST_FILES
7119         that weren't included in the final version.
7120
7121 2003-10-12  Havoc Pennington  <hp@pobox.com>
7122
7123         Added test code that 1) starts an actual bus daemon and 2) uses
7124         DBusGProxy; fixed bugs that were revealed by the test. Lots 
7125         more testing possible, but this is the basic framework.
7126         
7127         * glib/dbus-gproxy.c (dbus_gproxy_manager_unregister): remove
7128         empty proxy lists from the proxy list hash
7129
7130         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): add a
7131         couple of return_if_fail checks
7132
7133         * dbus/dbus-pending-call.c (_dbus_pending_call_new): use dbus_new0
7134         to allocate, so everything is cleared to NULL as it should be.
7135
7136         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): pass
7137         source as data to dbus_connection_set_timeout_functions() as the 
7138         timeout functions expected
7139
7140         * test/glib/run-test.sh: add a little script to start up a message
7141         bus and run tests using it
7142
7143         * tools/dbus-launch.1: updates
7144
7145         * tools/dbus-launch.c (main): add --config-file option
7146
7147         * tools/dbus-launch.c (main): remove confusing else if (runprog)
7148         that could never be reached.
7149
7150         * dbus/dbus-message.c (dbus_message_new_method_return) 
7151         (dbus_message_new_error, dbus_message_new_signal): set the
7152         no-reply-expected flag on all these. Redundant, but may
7153         as well be consistent.
7154
7155 2003-10-11  Havoc Pennington  <hp@pobox.com>
7156
7157         * test/decode-gcov.c (function_solve_graph): make broken block
7158         graph a nonfatal error since it seems to be broken. Need to debug
7159         this.
7160
7161         * dbus/dbus-marshal.c (_dbus_type_is_valid): new function since we
7162         can't just check type > INVALID < LAST anymore
7163
7164         * dbus/dbus-message.c (dbus_message_get_signature): new function
7165         (dbus_message_has_signature): new function
7166         (struct DBusMessage): add signature field (right now it isn't sent
7167         over the wire, just generated on the fly)
7168         (dbus_message_copy): copy the signature, and init strings to
7169         proper length to avoid some reallocs
7170         (dbus_message_iter_init_array_iterator): return void, since it
7171         can't fail
7172         (dbus_message_iter_init_dict_iterator): return void since it can't fail
7173         (_dbus_message_loader_queue_messages): add silly temporary hack to
7174         fill in message->signature on load
7175
7176         * dbus/dbus-protocol.h: change DBUS_TYPE_* values to be ASCII
7177         characters, so they are relatively human-readable.
7178
7179 2003-10-11  Havoc Pennington  <hp@pobox.com>
7180
7181         * dbus/dbus-message.c (_dbus_message_test): add more test
7182         coverage, but #if 0 for now since they uncover a bug 
7183         not fixed yet; I think in re_align_field_recurse()
7184         (re_align_field_recurse): add FIXME about broken assertion
7185
7186         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage
7187
7188         * bus/connection.c: share a couple code bits with expirelist.c
7189
7190         * bus/expirelist.h, bus/expirelist.c: implement a generic
7191         expire-items-after-N-seconds facility, was going to share between
7192         expiring connections and replies, decided not to use for expiring
7193         connections for now.
7194
7195         * COPYING: include AFL 2.0 (still need to change all the file headers)
7196
7197 2003-10-09  Havoc Pennington  <hp@redhat.com>
7198
7199         * configure.in: define DBUS_HAVE_GCC33_GCOV if we have
7200         gcc 3.3. Not that we do anything about it yet.
7201
7202         * bus/signals.c (bus_match_rule_parse): impose max length on the
7203         match rule text
7204
7205         * dbus/dbus-protocol.h: add DBUS_MAXIMUM_MATCH_RULE_LENGTH
7206
7207 2003-10-09  Havoc Pennington  <hp@redhat.com>
7208
7209         Make matching rules theoretically work (add parser).
7210         
7211         * bus/bus.c (bus_context_check_security_policy): fix up to handle
7212         the case where destination is explicitly specified as bus driver
7213         and someone else is eavesdropping.
7214         
7215         * bus/policy.c (bus_client_policy_check_can_receive): fix up
7216         definition of eavesdropping and assertion
7217
7218         * tools/dbus-send.c (main): use dbus_message_type_from_string
7219
7220         * bus/signals.c (bus_match_rule_parse): implement
7221
7222         * dbus/dbus-message.c (dbus_message_type_from_string): new
7223
7224         * dbus/dbus-errors.h (DBUS_ERROR_MATCH_RULE_INVALID): add
7225
7226 2003-10-02  Havoc Pennington  <hp@pobox.com>
7227
7228         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): rename from
7229         dbus_gproxy_oneway_call
7230
7231         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main) 
7232         (dbus_server_setup_with_g_main): fix to allow calling them more
7233         than once on the same args
7234         (dbus_bus_get_with_g_main): new function
7235
7236 2003-10-02  Havoc Pennington  <hp@redhat.com>
7237
7238         * doc/dbus-tutorial.xml: write some stuff
7239
7240 2003-09-29  Havoc Pennington  <hp@pobox.com>
7241
7242         * configure.in: split checks for Doxygen from XML docs, check for
7243         xmlto
7244
7245         * doc/Makefile.am: XML-ify all the docs, and add a blank
7246         dbus-tutorial.xml
7247
7248 2003-09-29  Havoc Pennington  <hp@pobox.com>
7249
7250         * Merge dbus-object-names branch. To see the entire patch 
7251         do cvs diff -r DBUS_OBJECT_NAMES_BRANCHPOINT -r dbus-object-names,
7252         it's huuuuge though.
7253         To revert, I tagged DBUS_BEFORE_OBJECT_NAMES_MERGE.
7254         
7255 2003-09-28  Havoc Pennington  <hp@pobox.com>
7256
7257         * HACKING: update to reflect new server
7258
7259 2003-09-26  Seth Nickell  <seth@gnome.org>
7260
7261         * python/dbus.py:
7262         * python/examples/example-signals.py:
7263
7264         Start implementing some notions of signals. The API
7265         is really terrible, but they sort of work (with the
7266         exception of being able to filter by service, and to
7267         transmit signals *as* a particular service). Need to
7268         figure out how to make messages come from the service
7269         we registered :-(
7270         
7271         * python/dbus_bindings.pyx.in:
7272
7273         Removed duplicate message_handler callbacks.
7274         
7275 2003-09-25  Havoc Pennington  <hp@redhat.com>
7276
7277         * bus/session.conf.in: fix my mess
7278
7279 2003-09-25  Havoc Pennington  <hp@pobox.com>
7280
7281         * bus/session.conf.in: fix security policy, reported by Seth Nickell
7282
7283 2003-09-25  Seth Nickell  <seth@gnome.org>
7284
7285         * python/examples/example-service.py:
7286
7287         Johan notices complete wrong code in example-service, but
7288         completely wrong in a way that works exactly the same (!).
7289         Johan is confused, how could this possibly work? Example
7290         code fails to serve purpose of making things clear.
7291         Seth fixes.
7292
7293 2003-09-25  Mark McLoughlin  <mark@skynet.ie>
7294
7295         * doc/dbus-specification.sgml: don't require header fields
7296         to be 4-byte aligned and specify that fields should be
7297         distinguished from padding by the fact that zero is not
7298         a valid field name.
7299         
7300         * doc/TODO: remove re-alignment item and add item to doc
7301         the OBJECT_PATH type.
7302         
7303         * dbus/dbus-message.c:
7304         (HeaderField): rename the original member to value_offset
7305         and introduce a name_offset member to keep track of where
7306         the field actually begins.
7307         (adjust_field_offsets): remove.
7308         (append_int_field), (append_uint_field),
7309         (append_string_field): don't align the start of the header
7310         field to a 4-byte boundary.
7311         (get_next_field): impl finding the next marhsalled field
7312         after a given field.
7313         (re_align_field_recurse): impl re-aligning a number of
7314         already marshalled fields.
7315         (delete_field): impl deleting a field of any type and
7316         re-aligning any following fields.
7317         (delete_int_or_uint_field), (delete_string_field): remove.
7318         (set_int_field), (set_uint_field): no need to re-check
7319         that we have the correct type for the field.
7320         (set_string_field): ditto and impl re-aligning any
7321         following fields.
7322         (decode_header_data): update to take into account that
7323         the fields aren't 4-byte aligned any more and the new
7324         way to distinguish padding from header fields. Also,
7325         don't exit when there is too much header padding.
7326         (process_test_subdir): print the directory.
7327         (_dbus_message_test): add test to make sure a following
7328         field is re-aligned correctly after field deletion.
7329         
7330         * dbus/dbus-string.[ch]:
7331         (_dbus_string_insert_bytes): rename from insert_byte and
7332         allow the insert of multiple bytes.
7333         (_dbus_string_test): test inserting multiple bytes.
7334
7335         * dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
7336         warning note to docs about having to re-align any
7337         marshalled values following the string.
7338         
7339         * dbus/dbus-message-builder.c:
7340         (append_string_field), (_dbus_message_data_load):
7341         don't align the header field.
7342         
7343         * dbus/dbus-auth.c: (process_test_subdir): print the
7344         directory.
7345         
7346         * test/break-loader.c: (randomly_add_one_byte): upd. for
7347         insert_byte change.
7348         
7349         * test/data/invalid-messages/bad-header-field-alignment.message:
7350         new test case.
7351         
7352         * test/data/valid-messages/unknown-header-field.message: shove
7353         a dict in the unknown field.
7354
7355 2003-09-25  Seth Nickell  <seth@gnome.org>
7356
7357         * python/dbus.py:
7358         * python/dbus_bindings.pyx.in:
7359
7360         Handle return values.
7361         
7362         * python/examples/example-client.py:
7363         * python/examples/example-service.py:
7364
7365         Pass back return values from the service to the client.
7366         
7367 2003-09-24  Seth Nickell  <seth@gnome.org>
7368
7369         * python/dbus.py:
7370
7371         Connect Object methods (when you are sharing an object) up... pass
7372         in a list of methods to be shared. Sharing all the methods just
7373         worked out too weird. You can now create nice Services over the
7374         DBus in Python. :-)
7375         
7376         * python/dbus_bindings.pyx.in:
7377
7378         Keep references to user_data tuples passed into C functions so 
7379         Python doesn't garbage collect on us.
7380
7381         Implement MethodReturn and Error subclasses of Message for creating
7382         DBusMessage's of those types.
7383         
7384         * python/examples/example-client.py:
7385         * python/examples/example-service.py:
7386
7387         Simple example code showing both how create DBus services and objects,
7388         and how to use them.
7389
7390 2003-09-23  Havoc Pennington  <hp@pobox.com>
7391
7392         * glib/dbus-gproxy.c (dbus_gproxy_manager_filter): implement
7393
7394 2003-09-23  Havoc Pennington  <hp@redhat.com>
7395
7396         * glib/dbus-gproxy.c (dbus_gproxy_connect_signal): implement
7397         (dbus_gproxy_disconnect_signal): implement
7398         (dbus_gproxy_manager_remove_signal_match): implement
7399         (dbus_gproxy_manager_add_signal_match): implement
7400         (dbus_gproxy_oneway_call): implement
7401
7402 2003-09-23  Havoc Pennington  <hp@pobox.com>
7403
7404         * glib/dbus-gproxy.c (struct DBusGProxy): convert to a GObject
7405         subclass. This means dropping the transparent thread safety of the
7406         proxy; you now need a separate proxy per-thread, or your own
7407         locking on the proxy. Probably right anyway.
7408         (dbus_gproxy_ref, dbus_gproxy_unref): nuke, just use g_object_ref
7409
7410 2003-09-22  Havoc Pennington  <hp@redhat.com>
7411
7412         * glib/dbus-gproxy.c (dbus_gproxy_manager_get): implement
7413
7414 2003-09-21  Seth Nickell  <seth@gnome.org>
7415
7416         First checkin of the Python bindings.
7417         
7418         * python/.cvsignore:
7419         * python/Makefile.am:
7420         * python/dbus_bindings.pyx.in:
7421         * python/dbus_h_wrapper.h:
7422
7423         Pieces for Pyrex to operate on, building a dbus_bindings.so
7424         python module for low-level access to the DBus APIs.
7425         
7426         * python/dbus.py:
7427
7428         High-level Python module for accessing DBus objects.
7429
7430         * configure.in:
7431         * Makefile.am:
7432
7433         Build stuff for the python bindings.
7434
7435         * acinclude.m4:
7436
7437         Extra macro needed for finding the Python C header files.
7438
7439 2003-09-21  Havoc Pennington  <hp@pobox.com>
7440
7441         * glib/dbus-gproxy.c (dbus_gproxy_manager_new): start
7442         implementing the proxy manager, didn't get very far.
7443
7444         * dbus/dbus-bus.c (dbus_bus_add_match): new
7445         (dbus_bus_remove_match): new
7446
7447         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service): add a
7448         path_name argument; adjust the other not-yet-implemented 
7449         gproxy constructors to be what I think they should be.
7450
7451 2003-09-21  Havoc Pennington  <hp@pobox.com>
7452
7453         * dbus/dbus-bus.c (dbus_bus_get): set exit_on_disconnect to TRUE
7454         by default for message bus connections.
7455
7456         * dbus/dbus-connection.c (dbus_connection_dispatch): exit if
7457         exit_on_disconnect flag is set and we process the disconnected
7458         signal.
7459         (dbus_connection_set_exit_on_disconnect): new function
7460
7461 2003-09-21  Havoc Pennington  <hp@pobox.com>
7462
7463         Get matching rules mostly working in the bus; only actually
7464         parsing the rule text remains. However, the client side of
7465         "signal connections" hasn't been started, this patch is only the
7466         bus side.
7467         
7468         * dbus/dispatch.c: fix for the matching rules changes
7469         
7470         * bus/driver.c (bus_driver_handle_remove_match)
7471         (bus_driver_handle_add_match): send an ack reply from these
7472         method calls
7473
7474         * glib/dbus-gproxy.c (dbus_gproxy_begin_call): fix order of
7475         arguments, reported by Seth Nickell
7476
7477         * bus/config-parser.c (append_rule_from_element): support
7478         eavesdrop=true|false attribute on policies so match rules 
7479         can be prevented from snooping on the system bus.
7480
7481         * bus/dbus-daemon-1.1.in: consistently use terminology "sender"
7482         and "destination" in attribute names; fix some docs bugs; 
7483         add eavesdrop=true|false attribute
7484
7485         * bus/driver.c (bus_driver_handle_add_match)
7486         (bus_driver_handle_remove_match): handle AddMatch, RemoveMatch
7487         messages
7488
7489         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST): get
7490         rid of broadcast service concept, signals are just always broadcast
7491
7492         * bus/signals.c, bus/dispatch.c, bus/connection.c, bus/bus.c:
7493         mostly implement matching rules stuff (currently only exposed as signal
7494         connections)
7495
7496 2003-09-21  Mark McLoughlin  <mark@skynet.ie>
7497
7498         * doc/dbus-specification.sgml: Change the header field name
7499         to be an enum and update the rest of the spec to reference
7500         the fields using the conventinal name.
7501
7502         * dbus/dbus-protocol.h: update to reflect the spec.
7503
7504         * doc/TODO: add item to remove the 4 byte alignment requirement.
7505         
7506         * dbus/dbus-message.c: Remove the code to generalise the
7507         header/body length and serial number header fields as named
7508         header fields so we can reference field names using the 
7509         protocol values.
7510         (append_int_field), (append_uint_field), (append_string_field):
7511         Append the field name as a byte rather than four chars.
7512         (delete_int_or_uint_field), (delete_string_field): reflect the
7513         fact that the field name and typecode now occupy 4 bytes instead
7514         of 8.
7515         (decode_string_field), (decode_header_data): update to reflect
7516         protocol changes and move the field specific encoding from
7517         decode_string_field() back into decode_header_data().
7518         
7519         * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
7520         Add utility to aid debugging.
7521         
7522         * dbus/dbus-message-builder.c:
7523         (append_string_field), (_dbus_message_data_load): Update to
7524         reflect protocol changes; Change the FIELD_NAME directive
7525         to HEADER_FIELD and allow it to take the field's conventional
7526         name rather than the actual value.
7527         
7528         * test/data/*/*.message: Update to use HEADER_FIELD instead
7529         of FIELD_NAME; Always align the header on an 8 byte boundary
7530         *before* updating the header length.
7531
7532 2003-09-15  Havoc Pennington  <hp@pobox.com>
7533
7534         * dbus/dbus-pending-call.c: add the get/set object data
7535         boilerplate as for DBusConnection, etc. Use generic object data
7536         for the notify callback.
7537
7538         * glib/dbus-gparser.c (parse_node): parse child nodes
7539
7540         * tools/dbus-viewer.c: more hacking on the dbus-viewer
7541         
7542         * glib/dbus-gutils.c (_dbus_gutils_split_path): add a file to
7543         contain functions shared between the convenience lib and the
7544         installed lib
7545
7546         * glib/Makefile.am (libdbus_glib_1_la_LDFLAGS): add
7547         -export-symbols-regex to the GLib library
7548
7549         * dbus/dbus-object-tree.c (_dbus_object_tree_dispatch_and_unlock):
7550         fix the locking in here, and add a default handler for
7551         Introspect() that just returns sub-nodes.
7552
7553 2003-09-14  Havoc Pennington  <hp@pobox.com>
7554
7555         * glib/dbus-gthread.c (dbus_g_thread_init): rename to make g_foo
7556         rather than gfoo consistent
7557
7558         * glib/dbus-gproxy.h: delete for now, move contents to
7559         dbus-glib.h, because the include files don't work right since we
7560         aren't in the dbus/ subdir.
7561         
7562         * glib/dbus-gproxy.c (dbus_gproxy_send): finish implementing
7563         (dbus_gproxy_end_call): finish
7564         (dbus_gproxy_begin_call): finish
7565
7566         * glib/dbus-gmain.c (dbus_set_g_error): new
7567
7568         * glib/dbus-gobject.c (handle_introspect): include information
7569         about child nodes in the introspection
7570
7571         * dbus/dbus-connection.c (dbus_connection_list_registered): new
7572         function to help in implementation of introspection
7573
7574         * dbus/dbus-object-tree.c
7575         (_dbus_object_tree_list_registered_and_unlock): new function
7576
7577 2003-09-12  Havoc Pennington  <hp@pobox.com>
7578
7579         * glib/dbus-gidl.h: add common base class for all the foo_info
7580         types
7581
7582         * tools/dbus-viewer.c: add GTK-based introspection UI thingy
7583         similar to kdcop
7584
7585         * test/Makefile.am: try test srcdir -ef . in addition to test
7586         srcdir = ., one of them should work (yeah lame)
7587         
7588         * glib/Makefile.am: build the "idl" parser stuff as a convenience
7589         library
7590         
7591         * glib/dbus-gparser.h: make description_load routines return
7592         NodeInfo* not Parser*
7593
7594         * Makefile.am (SUBDIRS): build test dir after all library dirs
7595
7596         * configure.in: add GTK+ detection
7597
7598 2003-09-07  Havoc Pennington  <hp@pobox.com>
7599
7600         * Make Doxygen contented.
7601
7602 2003-09-07  Havoc Pennington  <hp@pobox.com>
7603
7604         * doc/dbus-specification.sgml: more updates
7605
7606 2003-09-06  Havoc Pennington  <hp@pobox.com>
7607
7608         * doc/dbus-specification.sgml: partial updates
7609
7610         * bus/dbus-daemon-1.1.in: fix the config file docs for the
7611         zillionth time; hopefully I edited the right file this time.
7612
7613         * bus/config-parser.c (append_rule_from_element): support
7614         send_type, send_path, receive_type, receive_path
7615
7616         * bus/policy.c: add message type and path to the list of things
7617         that can be "firewalled"
7618
7619 2003-09-06  Havoc Pennington  <hp@pobox.com>
7620
7621         * dbus/dbus-connection.c (dbus_connection_register_fallback): add this
7622         (dbus_connection_register_object_path): make this not handle
7623         messages to paths below the given path
7624
7625 2003-09-03  Havoc Pennington  <hp@pobox.com>
7626
7627         * test/glib/Makefile.am: add this with random glib-linked test
7628         programs
7629
7630         * glib/Makefile.am: remove the random test programs from here,
7631         leave only the unit tests
7632
7633         * glib/dbus-gobject.c (_dbus_gobject_test): add test for 
7634         uscore/javacaps conversion, and fix     
7635         (get_object_property, set_object_property): change to .NET
7636         convention for mapping props to methods, set_FooBar/get_FooBar, 
7637         since one language has such a convention we may as well copy it. 
7638         Plus real methods in either getFooBar or get_foo_bar style won't 
7639         collide with this convention.
7640
7641 2003-09-01  Havoc Pennington  <hp@pobox.com>
7642
7643         * glib/dbus-gparser.c: implement
7644
7645         * glib/dbus-gobject.c: start implementing skeletons support
7646
7647         * configure.in: when disabling checks/assert, also define
7648         G_DISABLE_ASSERT and G_DISABLE_CHECKS
7649
7650 2003-09-01  Havoc Pennington  <hp@pobox.com>
7651
7652         * glib/Makefile.am: rearrange a bunch of files and get "make
7653         check" framework set up
7654
7655 2003-08-31  Havoc Pennington  <hp@pobox.com>
7656
7657         * fix build with --disable-tests
7658
7659 2003-08-30  Havoc Pennington  <hp@pobox.com>
7660
7661         * dbus/dbus-connection.c: purge DBusMessageHandler
7662
7663         * dbus/dbus-message-handler.c: remove DBusMessageHandler, just 
7664         use callbacks everywhere
7665
7666 2003-08-30  Havoc Pennington  <hp@pobox.com>
7667
7668         * test/data/valid-config-files/system.d/test.conf: change to 
7669         root for the user so warnings don't get printed
7670
7671         * dbus/dbus-message.c: add dbus_message_get_path,
7672         dbus_message_set_path
7673         
7674         * dbus/dbus-object-tree.c (do_test_dispatch): add test of
7675         dispatching to a path
7676
7677         * dbus/dbus-string.c (_dbus_string_validate_path): add
7678
7679         * dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
7680         (_dbus_marshal_object_path): implement
7681
7682         * dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
7683         to contain the path to the target object
7684         (DBUS_HEADER_FIELD_SENDER_SERVICE): rename
7685         DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
7686
7687 2003-08-30  Havoc Pennington  <hp@pobox.com>
7688
7689         * dbus/dbus-object-tree.c: write tests and fix the discovered bugs
7690
7691 2003-08-29  Havoc Pennington  <hp@pobox.com>
7692
7693         * dbus/dbus-object-tree.c: modify to allow overlapping paths to be
7694         registered
7695         (struct DBusObjectSubtree): shrink this
7696         a lot, since we may have a lot of them
7697         (_dbus_object_tree_free_all_unlocked): implement
7698         (_dbus_object_tree_dispatch_and_unlock): implement
7699
7700 2003-08-29  Havoc Pennington  <hp@pobox.com>
7701
7702         * dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS
7703
7704 2003-08-28  Havoc Pennington  <hp@pobox.com>
7705
7706         purge DBusObjectID
7707         
7708         * dbus/dbus-connection.c: port to no ObjectID, create a
7709         DBusObjectTree, rename ObjectTree to ObjectPath in public API
7710
7711         * dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
7712         everything except UnregisterFunction and MessageFunction
7713         
7714         * dbus/dbus-marshal.c: port away from DBusObjectID, 
7715         add DBUS_TYPE_OBJECT_PATH
7716         
7717         * dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
7718         dbus/dbus-objectid.[hc]: remove these, we are moving to 
7719         path-based object IDs
7720
7721 2003-08-25  Havoc Pennington  <hp@pobox.com>
7722
7723         Just noticed that dbus_message_test is hosed, I wonder when I
7724         broke that. I thought make check was passing earlier...
7725         
7726         * dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
7727         container tree, will replace most of dbus-object-registry
7728
7729         * dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
7730         screwup
7731
7732 2003-08-19  Havoc Pennington  <hp@pobox.com>
7733
7734         * dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
7735         (dbus_message_is_error): fix this function
7736
7737         * bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
7738         match
7739
7740         * bus/policy.c (bus_client_policy_check_can_receive): fix code to
7741         reflect clarified man page
7742         (bus_client_policy_check_can_send): ditto
7743         
7744         * bus/session.conf.in: fixup
7745
7746         * bus/system.conf.in: fixup
7747
7748 2003-08-18  Havoc Pennington  <hp@redhat.com>
7749
7750         * dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix
7751
7752         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
7753         dumb bug created earlier (wrong order of args to
7754         decode_header_data())
7755         
7756         * tools/dbus-send.c: port
7757
7758         * tools/dbus-print-message.c (print_message): port
7759
7760         * test/data/*messages: port all messages over
7761         
7762         * dbus/dbus-message-builder.c: support including 
7763         message type
7764         
7765         * bus/driver.c: port over
7766         
7767         * bus/dispatch.c: port over to new stuff
7768
7769         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
7770         rename disconnect signal to "Disconnected"
7771
7772 2003-08-17  Havoc Pennington  <hp@pobox.com>
7773
7774         This doesn't compile yet, but syncing up so I can hack on it from
7775         work. What are branches for if not broken code? ;-)
7776         
7777         * dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
7778         DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
7779         DBUS_HEADER_FIELD_ERROR_NAME
7780         
7781         * dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
7782         for the interface+member pairs
7783         (string_hash): change to use g_str_hash algorithm
7784         (find_direct_function, find_string_function): refactor these to
7785         share most code.
7786         
7787         * dbus/dbus-message.c: port all of this over to support 
7788         interface/member fields instead of name field
7789
7790         * dbus/dbus-object-registry.c: port over
7791         
7792         * dbus/dbus-string.c (_dbus_string_validate_interface): rename
7793         from _dbus_string_validate_name
7794
7795         * bus/dbus-daemon-1.1: change file format for the 
7796         <deny>/<allow> stuff to match new message naming scheme
7797
7798         * bus/policy.c: port over
7799
7800         * bus/config-parser.c: parse new format
7801         
7802 2003-08-16  Havoc Pennington  <hp@pobox.com>
7803
7804         * dbus/dbus-object-registry.c (add_and_remove_objects): remove
7805         broken assertion
7806
7807         * glib/dbus-gproxy.c: some hacking
7808
7809 2003-08-15  Havoc Pennington  <hp@redhat.com>
7810
7811         * dbus/dbus-pending-call.c (dbus_pending_call_block): implement
7812
7813         * dbus/dbus-connection.c
7814         (dbus_connection_send_with_reply_and_block): factor out internals;
7815         change to convert any error replies to DBusError instead of 
7816         returning them as a message
7817
7818 2003-08-15  Havoc Pennington  <hp@pobox.com>
7819
7820         * dbus/dbus-connection.c, 
7821         dbus/dbus-pending-call.c: Finish the pending call stuff
7822
7823 2003-08-14  Havoc Pennington  <hp@redhat.com>
7824
7825         * dbus/dbus-pending-call.c: start on new object that will replace
7826         DBusMessageHandler and ReplyHandlerData for tracking outstanding
7827         replies
7828
7829         * dbus/dbus-gproxy.c: start on proxy object used to communicate
7830         with remote interfaces
7831
7832         * dbus/dbus-gidl.c: do the boring boilerplate in here
7833         
7834 2003-08-12  Havoc Pennington  <hp@pobox.com>
7835
7836         * bus/dispatch.c (bus_dispatch): make this return proper 
7837         DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD
7838
7839         * dbus/dbus-errors.c (dbus_set_error): use
7840         _dbus_string_append_printf_valist
7841
7842         * dbus/dbus-string.c (_dbus_string_append_printf_valist)
7843         (_dbus_string_append_printf): new
7844
7845         * dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
7846         UNKNOWN_METHOD
7847
7848         * dbus/dbus-connection.c (dbus_connection_dispatch): handle
7849         DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
7850         message is unhandled.
7851
7852 2003-08-11  Havoc Pennington  <hp@pobox.com>
7853
7854         * bus/test.c (client_disconnect_handler): change to return
7855         HANDLED (would have been REMOVE_MESSAGE)
7856
7857         * dbus/dbus-object.h (enum DBusHandlerResult): rename to
7858         HANDLED/NOT_YET_HANDLED instead of
7859         REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
7860         should be used.
7861
7862 2003-08-10  Havoc Pennington  <hp@pobox.com>
7863
7864         * tools/dbus-send.c (main): add --type argument, for now
7865         supporting only method_call and signal types.
7866
7867         * tools/dbus-print-message.c: print message type
7868
7869         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
7870         init connection->objects
7871
7872         * doc/dbus-specification.sgml: fix sgml
7873
7874         * bus/*.c: port over to object-instance API changes
7875
7876         * test/test-service.c: ditto
7877         
7878         * dbus/dbus-message.c (dbus_message_create_header): allow #NULL
7879         name, we will have to fix up the rest of the code to also handle
7880         this
7881         (dbus_message_new): generic message-creation call
7882         (set_string_field): allow appending name field
7883
7884 2003-08-06  Havoc Pennington  <hp@pobox.com>
7885
7886         * dbus/dbus-object-registry.c: implement signal connection 
7887         and dispatch
7888
7889         * dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new
7890
7891         * dbus/dbus-internals.c (_dbus_memdup): new function
7892
7893 2003-08-02  Havoc Pennington  <hp@pobox.com>
7894
7895         * dbus/dbus-message.c (dbus_message_get_no_reply)
7896         (dbus_message_set_no_reply): add these and remove
7897         set_is_error/get_is_error
7898
7899         * dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
7900         remove the ERROR flag, since there's now an ERROR type
7901
7902 2003-08-01  Havoc Pennington  <hp@pobox.com>
7903
7904         * dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
7905         implement
7906
7907         * dbus/dbus-message.c (dbus_message_get_type): new function
7908
7909         * doc/dbus-specification.sgml: add "type" byte to messages
7910
7911 2003-08-01  Havoc Pennington  <hp@pobox.com>
7912
7913         * dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
7914         a message type enum to distinguish kinds of message
7915         (DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
7916         that need not be replied to
7917
7918 2003-08-01  Havoc Pennington  <hp@pobox.com>
7919
7920         * dbus/dbus-marshal.c: adapt to DBusObjectID changes
7921         (unpack_8_octets): fix no-64-bit-int bug
7922
7923         * dbus/dbus-object-registry.c (validate_id): validate the 
7924         connection ID bits, not just the instance ID.
7925
7926         * dbus/dbus-connection.c (_dbus_connection_init_id): initialize
7927         the connection-global 33 bits of the object ID
7928
7929         * dbus/dbus-object-registry.c (info_from_entry): fill in 
7930         object ID in the new way
7931
7932         * dbus/dbus-objectid.h: rather than high/low bits, specifically 
7933         define server/client/instance bits.
7934
7935 2003-07-30  Havoc Pennington  <hp@pobox.com>
7936
7937         * dbus/dbus-connection.c (dbus_connection_register_object): fix
7938         build
7939
7940 2003-07-13  Havoc Pennington  <hp@pobox.com>
7941
7942         * dbus/dbus-object.h (struct DBusObjectVTable): add padding
7943         fields to DBusObjectVTable and DBusObjectInfo
7944
7945 2003-07-12  Havoc Pennington  <hp@pobox.com>
7946
7947         * dbus/dbus-object-registry.c: implement unit test,
7948         fix bugs discovered in process
7949
7950         * dbus/dbus-connection.c: remove handler_table and
7951         register_handler(), add DBusObjectRegistry usage
7952
7953         * dbus/dbus-objectid.c (dbus_object_id_is_null)
7954         (dbus_object_id_set_null): new functions
7955
7956 2003-07-08  Havoc Pennington  <hp@pobox.com>
7957
7958         * dbus/dbus-object.c: implement some of this
7959
7960         * dbus/dbus-object-registry.c
7961         (_dbus_object_registry_add_and_unlock): fill in the object_id out
7962         param
7963         (_dbus_object_registry_new): handle OOM
7964
7965 2003-07-08  Havoc Pennington  <hp@pobox.com>
7966
7967         * dbus/dbus-object.h: sketch out an API for registering objects
7968         with a connection, that allows us to use as little as 24 bytes
7969         per object and lets application code represent an object in 
7970         any conceivable way.
7971
7972         * dbus/dbus-object-registry.c: implement the hard bits of the
7973         DBusConnection aspect of object API. Not yet wired up.
7974         
7975 2003-07-06  Havoc Pennington  <hp@pobox.com>
7976
7977         * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function
7978         (_dbus_marshal_object_id): new
7979         (_dbus_demarshal_object_id): new
7980         (_dbus_marshal_get_arg_end_pos): support object ID type, and
7981         consolidate identical switch cases. Don't conditionalize handling
7982         of DBUS_TYPE_UINT64, need to handle the type always.
7983         (_dbus_marshal_validate_arg): consolidate identical cases, and
7984         handle DBUS_TYPE_OBJECT_ID
7985
7986         * dbus/dbus-objectid.c: new file with DBusObjectID data type.
7987
7988         * dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID
7989
7990 2003-09-28  Havoc Pennington  <hp@pobox.com>
7991
7992         * real 0.13 release
7993
7994 2003-09-28  Havoc Pennington  <hp@pobox.com>
7995
7996         * doc/Makefile.am (dbus-specification.html): testing a funky hack
7997         to work with Debian db2html
7998
7999 2003-09-28  Havoc Pennington  <hp@pobox.com>
8000
8001         * configure.in: 0.13
8002
8003         * doc/Makefile.am (dbus-test-plan.html): accept nonexistence of
8004         stylesheet-images for benefit of Debian
8005         
8006         Change back to using filesystem-linked sockets for the system
8007         bus, so only root can create the default system bus address.
8008         
8009         * bus/system.conf.in: change to use
8010         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
8011
8012         * dbus/Makefile.am (INCLUDES): remove DBUS_SYSTEM_BUS_PATH define
8013         from here.
8014
8015         * configure.in: define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
8016         here, and AC_DEFINE DBUS_SYSTEM_PATH
8017
8018 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
8019
8020         * doc/TODO:
8021         * doc/busconfig.dtd:
8022         Add busconfig DTD.
8023         
8024 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
8025
8026         * doc/dbus-specification.sgml:
8027         Add activation reply values.
8028         
8029 2003-08-05  Havoc Pennington  <hp@redhat.com>
8030
8031         * configure.in: 0.12
8032
8033 2003-08-05  Anders Carlsson  <andersca@codefactory.se>
8034
8035         * glib/dbus-gmain.c: (watch_fd_new), (watch_fd_ref),
8036         (watch_fd_unref), (dbus_gsource_check), (dbus_gsource_dispatch),
8037         (add_watch), (remove_watch), (create_source):
8038         Refcount fds, fixes some reentrancy issues.
8039         
8040 2003-07-30  Havoc Pennington  <hp@redhat.com>
8041
8042         * dbus/dbus-bus.c (init_connections_unlocked): fix default system
8043         bus address to be abstract if we have abstract sockets
8044
8045         * NEWS: update
8046
8047 2003-07-28  Havoc Pennington  <hp@redhat.com>
8048
8049         * bus/messagebus.in: fix to avoid processname/servicename 
8050         confusion, from Michael Kearey
8051         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100965
8052         
8053 2003-07-23  Havoc Pennington  <hp@pobox.com>
8054
8055         * dbus/dbus-message.c (dbus_message_iter_get_named): 
8056         fix from Andy Hanton to remove broken "+1"
8057
8058 2003-07-16  Havoc Pennington  <hp@pobox.com>
8059
8060         * tools/dbus-launch.c (babysit): close stdout/stderr in the
8061         babysitter process, as suggested by Thomas Leonard, so 
8062         an "eval `dbus-launch --exit-with-session`" will actually 
8063         return
8064
8065 2003-07-16  Havoc Pennington  <hp@pobox.com>
8066
8067         * configure.in: print out EXPANDED_* variables in the summary at
8068         the end; clean up the code that computes EXPANDED_ variables and
8069         get the ones using exec_prefix right. Should make things work
8070         when you build without --prefix
8071
8072 2003-06-29  Havoc Pennington  <hp@pobox.com>
8073
8074         * mono/Test.cs (class Test): fire up a main loop and run it
8075
8076         * mono/DBus.cs (DBus): don't g_thread_init since it can only be
8077         done once, the app has to do it
8078
8079 2003-06-26  Havoc Pennington  <hp@pobox.com>
8080
8081         * mono/Connection.cs: set up connection with the glib main loop
8082
8083 2003-07-01  Havoc Pennington  <hp@redhat.com>
8084
8085         * doc/dbus-specification.sgml: clarify the format of a type code,
8086         change suggested by Jim Blandy
8087
8088 2003-06-29  Miloslav Trmac  <mitr@volny.cz>
8089
8090         * doc/Makefile.am:
8091         * tools/Makefile.am: Don't assume srcdir == builddir.
8092
8093         * dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
8094         the allocated block.
8095         (_dbus_memory_test): New function.
8096         * dbus/dbus-test.h: Add _dbus_memory_test ().
8097         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.
8098
8099         * dbus/dbus-message.c (decode_header_data): Use %.4s instead
8100         of %c%c%c%c.
8101         (dbus_message_new): Remove obsolete @todo.
8102
8103         * dbus/dbus-marshal.c (_dbus_marshal_set_int64)
8104         (_dbus_marshal_set_uint64): Fix comment.
8105
8106         * dbus/dbus-message.c (append_int_field, append_uint_field): Don't
8107         hardcode FIELD_REPLY_SERIAL.
8108
8109         * dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
8110         (_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p
8111
8112         * configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
8113         and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used
8114
8115 2003-06-24  Havoc Pennington  <hp@pobox.com>
8116
8117         * mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)
8118
8119 2003-06-23  Anders Carlsson  <andersca@codefactory.se>
8120
8121         * configure.in:
8122         * gcj/.cvsignore:
8123         * gcj/Hello.java:
8124         * gcj/Makefile.am:
8125         * gcj/TestMessage.java: (TestMessage), (TestMessage.main):
8126         * gcj/org/.cvsignore:
8127         * gcj/org/Makefile.am:
8128         * gcj/org/freedesktop/.cvsignore:
8129         * gcj/org/freedesktop/Makefile.am:
8130         * gcj/org/freedesktop/dbus/.cvsignore:
8131         * gcj/org/freedesktop/dbus/Makefile.am:
8132         * gcj/org/freedesktop/dbus/Message.java: (Message),
8133         (Message.Message):
8134         * gcj/org/freedesktop/dbus/natMessage.cc:
8135         Fix the build system.
8136
8137 2003-06-22  Havoc Pennington  <hp@pobox.com>
8138
8139         * mono/Connection.cs: add more bindings
8140
8141         * dbus/dbus-threads.c (dbus_threads_init): allow calling this
8142         more than once.
8143
8144 2003-06-22  Havoc Pennington  <hp@pobox.com>
8145
8146         * mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
8147         Start wrapping more stuff.
8148
8149 2003-06-22  Havoc Pennington  <hp@pobox.com>
8150
8151         * mono/Message.cs: implement Message.Wrap() that ensures we only
8152         have a single C# wrapper per DBusMessage, assuming it works which
8153         it probably doesn't.
8154
8155         * dbus/dbus-message.c (dbus_message_allocate_data_slot): new
8156         (dbus_message_free_data_slot): new
8157         (dbus_message_set_data): new
8158         (dbus_message_get_data): new
8159
8160 2003-06-22  Havoc Pennington  <hp@pobox.com>
8161
8162         * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
8163         (_dbus_data_slot_allocator_alloc): rework these to keep a
8164         reference count on each slot and automatically manage a global
8165         slot ID variable passed in by address
8166
8167         * bus/bus.c: convert to new dataslot API
8168
8169         * dbus/dbus-bus.c: convert to new dataslot API
8170
8171         * dbus/dbus-connection.c: convert to new dataslot API
8172
8173         * dbus/dbus-server.c: convert to new dataslot API
8174
8175         * glib/dbus-gmain.c: ditto
8176
8177         * bus/test.c: ditto
8178
8179         * bus/connection.c: ditto
8180
8181 2003-06-22  Anders Carlsson  <andersca@codefactory.se>
8182
8183         * configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
8184         after the gcj checks so that the correct configuration tags
8185         will be added to libtool.
8186
8187         * dbus-glib-1.pc.in: No need to specify any includes since
8188         dbus-1.pc.in has those.
8189
8190 2003-06-22  Havoc Pennington  <hp@pobox.com>
8191
8192         * mono/*, gcj/*, configure.in, Makefile.am:
8193         Check in makefiles and subdirs for mono and gcj bindings.
8194         Neither binding actually exists, just trying to get through
8195         all the build and other boring bits.
8196
8197 2003-06-21  Philip Blundell  <philb@gnu.org>
8198
8199         * tools/dbus-monitor.1: Updated.
8200
8201         * tools/dbus-send.1: Likewise.
8202
8203 2003-06-20  Anders Carlsson  <andersca@codefactory.se>
8204
8205         * dbus/dbus-transport-unix.c (unix_handle_watch): Check
8206         for hangup and error after checking read so we won't discard
8207         pending data if both hangup and read are set.
8208
8209 2003-06-19  Philip Blundell  <philb@gnu.org>
8210
8211         * tools/dbus-print-message.c (print_message): Handle BOOLEAN.
8212
8213         * tools/dbus-send.c: Accept both --system and --session.
8214
8215         * tools/dbus-monitor.c: Same here.
8216
8217 2003-06-19  Anders Carlsson  <andersca@codefactory.se>
8218
8219         * glib/dbus-glib.h: Fix so that dbus-glib.h can be used
8220         from C++ (Patch by Miloslav Trmac).
8221
8222 2003-06-15  Joe Shaw  <joe@assbarn.com>
8223
8224         * configure.in: Check for socklen_t.
8225
8226         * dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.
8227
8228         * test/test-segfault.c: Add #include <sys/time.h>
8229
8230         * tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
8231         dbus-launch needs it.
8232
8233 2003-06-09  Havoc Pennington  <hp@redhat.com>
8234
8235         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
8236         SUN_LEN, it breaks abstract socket usage
8237
8238         * dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
8239         starts of lines.
8240
8241 2003-06-04  Havoc Pennington  <hp@pobox.com>
8242
8243         * dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
8244         using unix:abstract=/foo, and when listening in a tmpdir
8245         i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.
8246
8247         * dbus/dbus-transport.c (_dbus_transport_open): support
8248         unix:abstract=/foo
8249
8250         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
8251         support abstract sockets
8252
8253         * dbus/dbus-transport-unix.c
8254         (_dbus_transport_new_for_domain_socket): support abstract sockets
8255
8256         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
8257         toggle as an argument, implement abstract namespace support
8258         (_dbus_listen_unix_socket): ditto
8259
8260         * configure.in: add --enable-abstract-sockets and implement
8261         a configure check for autodetection of the right value.
8262
8263 2003-06-01  Havoc Pennington  <hp@pobox.com>
8264
8265         * tools/dbus-cleanup-sockets.c: add utility to clean up sockets
8266         in /tmp (though on Linux this will end up being useless,
8267         when we add abstract namespace support)
8268
8269         * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to
8270         subst'ing it
8271
8272 2003-05-28  Colin Walters  <walters@verbum.org>
8273
8274         * tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).
8275
8276 2003-05-18  Anders Carlsson  <andersca@codefactory.se>
8277
8278         * dbus/dbus-message.c (dbus_message_new): Remove @todo.
8279
8280 2003-05-17  Colin Walters  <walters@gnu.org>
8281
8282         * tools/dbus-send.c: Don't exit with an error code if --help was
8283         passed.  Default to using the session bus instead of the system
8284         one.
8285
8286         * tools/dbus-launch.c: Ditto.
8287
8288         * tools/dbus-monitor.c: Ditto.
8289
8290         * tools/dbus-send.1: Update with new arguments.
8291
8292         * tools/dbus-launch.c: Emit code to export variables.  New
8293         arguments -s and -c to specify shell syntax, and a bit of code to
8294         autodetect syntax.  Also, allow specifying a program to run.
8295
8296         * tools/dbus-launch.1: Update with new arguments.
8297
8298         * tools/dbus-send.1: Ditto.
8299
8300         * tools/dbus-monitor.1: Ditto.
8301
8302 2003-05-17  Havoc Pennington  <hp@pobox.com>
8303
8304         * bus/config-parser.c (merge_included): merge in policies from
8305         child configuration file.
8306
8307         * bus/policy.c (bus_policy_merge): function to merge two policies
8308         together
8309
8310 2003-05-16  Havoc Pennington  <hp@redhat.com>
8311
8312         * dbus/dbus-connection.c: disable verbose lock spew
8313
8314         * tools/dbus-send.c: add --print-reply command line option
8315
8316         * tools/dbus-print-message.h (print_message): new util function
8317         shared by dbus-send and dbus-monitor
8318
8319         * tools/dbus-monitor.c (handler_func): exit on disconnect
8320
8321         * dbus/dbus-transport-unix.c (do_reading): if the transport is
8322         disconnected, don't try to use the read_watch
8323
8324         * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
8325         so we can find this bug more easily
8326
8327 2003-05-16  Havoc Pennington  <hp@redhat.com>
8328
8329         * bus/policy.c (free_rule_list_func): avoid a crash when passed
8330         NULL as DBusHashTable is annoyingly likely to do.
8331
8332 2003-05-16  Colin Walters  <walters@verbum.org>
8333
8334         * tools/dbus-monitor.c: Add --session argument and usage()
8335         function.
8336
8337         * tools/dbus-monitor.1: Update with new --session arg.
8338
8339         * bus/Makefile.am (install-data-hook): Create
8340         $(libdir)/dbus-1.0/services so that the session bus is happy.
8341
8342 2003-05-15  Havoc Pennington  <hp@redhat.com>
8343
8344         * dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
8345         on non-x86. ifdef's are evil.
8346
8347 2003-05-15  Havoc Pennington  <hp@redhat.com>
8348
8349         * configure.in: 0.11
8350
8351         * NEWS: update
8352
8353         * bus/Makefile.am (initddir): apparently we are supposed to put
8354         init scripts in /etc/rc.d/init.d not /etc/init.d
8355
8356         * bus/Makefile.am: remove the "you must --enable-tests to make
8357         check" as it broke distcheck
8358
8359         * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d
8360
8361 2003-05-13  James Willcox  <jwillcox@gnome.org>
8362
8363         * configure.in:
8364         * bus/activation.c: (bus_activation_service_created),
8365         (bus_activation_activate_service):
8366         * bus/driver.c: (bus_driver_send_service_deleted),
8367         (bus_driver_send_service_created), (bus_driver_send_service_lost),
8368         (bus_driver_send_service_acquired),
8369         (bus_driver_send_welcome_message),
8370         (bus_driver_handle_list_services):
8371         * bus/session.conf.in:
8372         * dbus/dbus-bus.c: (dbus_bus_acquire_service),
8373         (dbus_bus_service_exists), (dbus_bus_activate_service):
8374         * dbus/dbus-bus.h:
8375
8376         Add some convenience API which lets you activate a service, and did a
8377         bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
8378         and dbus_message_get_args()
8379
8380 2003-05-11  Havoc Pennington  <hp@pobox.com>
8381
8382         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid
8383         calling _dbus_marshal_validate_arg() for every byte in a byte
8384         array, etc.
8385
8386         * dbus/dbus-message-handler.c: use atomic reference counting to
8387         reduce number of locks slightly; the global lock in here sucks
8388
8389         * dbus/dbus-connection.c
8390         (_dbus_connection_update_dispatch_status_and_unlock): variant of
8391         update_dispatch_status that can be called with lock held; then use
8392         in a couple places to reduce locking/unlocking
8393         (dbus_connection_send): hold the lock over the whole function
8394         instead of acquiring it twice.
8395
8396         * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM
8397
8398         * bus/connection.c (bus_connections_setup_connection): fix access
8399         to already-freed memory.
8400
8401         * dbus/dbus-connection.c: keep a little cache of linked list
8402         nodes, to avoid using the global linked list alloc lock in the
8403         normal send-message case. Instead we just use the connection lock
8404         that we already have to take.
8405
8406         * dbus/dbus-list.c (_dbus_list_find_last): new function
8407
8408         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec):
8409         change to use a struct for the atomic type; fix docs,
8410         they return value before increment, not after increment.
8411
8412         * dbus/dbus-string.c (_dbus_string_append_4_aligned)
8413         (_dbus_string_append_8_aligned): new functions to try to
8414         microoptimize this operation.
8415         (reallocate_for_length): break this out of set_length(), to
8416         improve profile info, and also so we can consider inlining the
8417         set_length() part.
8418
8419         * dbus/dbus-message.c (dbus_message_new_empty_header): init data
8420         strings with some preallocation, cuts down on our calls to realloc
8421         a fair bit. Though if we can get the "move entire string to empty
8422         string" optimization below to kick in here, it would be better.
8423
8424         * dbus/dbus-string.c (_dbus_string_move): just call
8425         _dbus_string_move_len
8426         (_dbus_string_move_len): add a special case for moving
8427         an entire string into an empty string; we can just
8428         swap the string data instead of doing any reallocs.
8429         (_dbus_string_init_preallocated): new function
8430
8431 2003-05-11  Havoc Pennington  <hp@pobox.com>
8432
8433         Write a "test-profile" that does echo client-server with threads;
8434         profile reveals lock contention, memcpy/realloc of buffers, and
8435         UTF-8 validation as hot spots. 20% of lock contention eliminated
8436         with dbus_atomic_inc/dec implementation on x86.  Much remaining
8437         contention is global mempool locks for GList and DBusList.
8438
8439         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add
8440         x86 implementation
8441
8442         * dbus/dbus-connection.c (struct DBusConnection): use
8443         dbus_atomic_t for the reference count
8444
8445         * dbus/dbus-message.c (struct DBusMessage): declare
8446         dbus_atomic_t values as volatile
8447
8448         * configure.in: code to detect ability to use atomic integer
8449         operations in assembly, from GLib patch
8450
8451         * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every
8452         time, tired of it being wrong in threads and forked processes
8453
8454         * glib/test-profile.c: a little program to bounce messages back
8455         and forth between threads and eat CPU
8456
8457         * dbus/dbus-connection.c: add debug spew macros for debugging
8458         thread locks; include config.h at top; fix deadlock in
8459         dbus_connection_flush()
8460
8461 2003-05-08  Havoc Pennington  <hp@pobox.com>
8462
8463         * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
8464         data from getting written, and there wasn't a good reason to
8465         use _exit really.
8466
8467         * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
8468         dbus_verbose lines in test coverage
8469         (main): add list of functions sorted by # of untested blocks
8470         to the coverage report
8471
8472         * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS
8473
8474         * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage
8475
8476         * dbus/dbus-message-handler.c (_dbus_message_handler_test):
8477         extend test coverage
8478
8479         * test/data/auth/cancel.auth-script: test canceling an
8480         authentication
8481
8482         * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
8483         aren't used. in CVS history if we end up needing them.
8484
8485 2003-05-04  Havoc Pennington  <hp@pobox.com>
8486
8487         * dbus/dbus-message-handler.c (_dbus_message_handler_test): add
8488         unit test
8489
8490         * dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
8491         function, which assumed length was in # of strings, not bytes
8492
8493         * dbus/dbus-message.c (_dbus_message_test): add tests for some
8494         missing coverage
8495
8496         * dbus/dbus-connection.c
8497         (_dbus_connection_queue_received_message): disable function for
8498         now, we are only using it in test mode
8499
8500         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
8501         remove a mistaken FIXME
8502
8503 2003-05-04  Havoc Pennington  <hp@pobox.com>
8504
8505         * dbus/dbus-connection.c (dbus_connection_preallocate_send):
8506         unlock mutex on successful return, patch from Anders Gustafsson
8507
8508 2003-05-04  Havoc Pennington  <hp@pobox.com>
8509
8510         * dbus-glib-1.pc.in (Requires): fix dependencies, from
8511         Anders Gustafsson
8512
8513 2003-05-04  Havoc Pennington  <hp@pobox.com>
8514
8515         * tools/dbus-launch.c: implement
8516
8517         * bus/main.c (main), bus/bus.c (bus_context_new):
8518         implement --print-pid and --fork
8519
8520 2003-05-03  Havoc Pennington  <hp@redhat.com>
8521
8522         * dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
8523         the address had no value, and add to test suite. Fix and
8524         regression test from Miloslav Trmac
8525
8526 2003-05-03  Havoc Pennington  <hp@pobox.com>
8527
8528         * dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
8529         watch is invalid when handled
8530
8531         * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add
8532         dbus-launch utility to launch the bus from a shell script.  Didn't
8533         actually implement dbus-launch yet, it's just a placeholder still.
8534
8535 2003-05-03  Havoc Pennington  <hp@pobox.com>
8536
8537         * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
8538         daemon; also documents daemon config file, so replaces
8539         doc/config-file.txt. Corrected some stuff from config-file.txt in
8540         the process of moving it.
8541
8542 2003-05-03  Havoc Pennington  <hp@pobox.com>
8543
8544         * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
8545         add some man pages
8546
8547 2003-05-03  Colin Walters  <walters@verbum.org>
8548
8549         * dbus/dbus-sysdeps.c (fill_user_info): Test against
8550         DBUS_UID_UNSET to determine whether to do a uid lookup or not.
8551
8552         * Makefile.am: Update to use new .pc versioning scheme.
8553
8554 2003-05-02  Havoc Pennington  <hp@redhat.com>
8555
8556         * bus/system.conf.in: allow send/receive to/from message bus
8557         service
8558
8559 2003-04-30  Havoc Pennington  <hp@redhat.com>
8560
8561         * configure.in: print a note when building with unit tests and
8562         without assertions
8563
8564 2003-04-30  Havoc Pennington  <hp@redhat.com>
8565
8566         * Makefile.am: add a check-local that complains if you didn't
8567         configure with --enable-tests
8568
8569 2003-04-29  Havoc Pennington  <hp@redhat.com>
8570
8571         * glib/dbus-gmain.c: docs cleanups
8572
8573         * dbus/dbus-types.h: add docs on int64 types
8574
8575         * dbus/dbus-memory.c: fix docs to avoid putting private API in
8576         public API docs section
8577
8578 2003-04-29  Havoc Pennington  <hp@redhat.com>
8579
8580         * dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
8581         dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
8582         parallel install API version, not with the D-BUS package version.
8583
8584         * HACKING: move some of README over here
8585
8586         * README: updates, and document API/ABI policy
8587
8588         * configure.in: reindentation
8589
8590 2003-04-29  Havoc Pennington  <hp@redhat.com>
8591
8592         * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE
8593         to use this library" to be sure people have the right
8594         expectations.
8595
8596 2003-04-28  Havoc Pennington  <hp@redhat.com>
8597
8598         * configure.in: add --enable-docs which by default is auto yes if
8599         doxygen and db2html found, no otherwise; but can be forced on/off
8600
8601         * doc/Makefile.am: conditionalize whether to build docs on
8602         --enable-docs
8603
8604 2003-04-28  Havoc Pennington  <hp@redhat.com>
8605
8606         * configure.in: 0.10
8607
8608         * NEWS: update
8609
8610         * bus/system.conf.in: add <includedir>system.d</includedir>
8611
8612         * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when
8613         username was provided but not uid
8614
8615         * bus/config-parser.c (struct BusConfigParser): keep track of
8616         whether the parser is toplevel or was included; change some
8617         of the error handling if it's included.
8618
8619 2003-04-27  Havoc Pennington  <hp@pobox.com>
8620
8621         Unbreak my code...
8622
8623         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
8624         report correct status if we finish processing authentication
8625         inside this function.
8626
8627         * bus/activation.c (try_send_activation_failure): use
8628         bus_transaction_send_error_reply
8629
8630         * bus/connection.c (bus_connection_get_groups): return an error
8631         explaining the problem
8632
8633         * bus/bus.c (bus_context_check_security_policy): implement
8634         restriction here that inactive connections can only send the
8635         hello message. Also, allow bus driver to send anything to
8636         any recipient.
8637
8638         * bus/connection.c (bus_connection_complete): create the
8639         BusClientPolicy here instead of on-demand.
8640         (bus_connection_get_policy): don't return an error
8641
8642         * dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
8643         sender field in message being replied to
8644
8645         * bus/bus.c (bus_context_check_security_policy): fix silly typo
8646         causing it to return FALSE always
8647
8648         * bus/policy.c (bus_client_policy_check_can_send): fix bug where
8649         we checked sender rather than destination
8650
8651 2003-04-25  Havoc Pennington  <hp@redhat.com>
8652
8653         test suite is slightly hosed at the moment, will fix soon
8654
8655         * bus/connection.c (bus_connections_expire_incomplete): fix to
8656         properly disable the timeout when required
8657         (bus_connection_set_name): check whether we can remove incomplete
8658         connections timeout after we complete each connection.
8659
8660         * dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
8661         probably still broken.
8662
8663         * bus/services.c (bus_registry_acquire_service): implement max
8664         number of services owned, and honor allow/deny rules on which
8665         services a connection can own.
8666
8667         * bus/connection.c (bus_connection_get_policy): report errors here
8668
8669         * bus/activation.c: implement limit on number of pending
8670         activations
8671
8672 2003-04-25  Havoc Pennington  <hp@redhat.com>
8673
8674         * dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
8675         where we used >= 0 instead of != DBUS_UID_UNSET.
8676
8677 2003-04-25  Havoc Pennington  <hp@redhat.com>
8678
8679         * glib/dbus-gmain.c (remove_watch): fix for a crash when watches
8680         were toggled without add/remove, fix from Anders Gustafsson
8681
8682 2003-04-24  Havoc Pennington  <hp@redhat.com>
8683
8684         * test/data/valid-config-files/basic.conf: add <limit> tags to
8685         this test
8686
8687         * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
8688         <limit> tag in configuration file.
8689
8690 2003-04-24  Havoc Pennington  <hp@redhat.com>
8691
8692         * bus/dispatch.c: somehow missed some name_is
8693
8694         * dbus/dbus-timeout.c (_dbus_timeout_set_enabled)
8695         (_dbus_timeout_set_interval): new
8696
8697         * bus/connection.c (bus_connections_setup_connection): record time
8698         when each connection is first set up, and expire them after the
8699         auth timeout passes.
8700
8701 2003-04-24  Havoc Pennington  <hp@redhat.com>
8702
8703         * dbus/dbus-message.c (dbus_message_name_is): rename
8704         (dbus_message_service_is): rename
8705         (dbus_message_sender_is): rename
8706         (dbus_message_get_service): rename
8707
8708 2003-04-24  Havoc Pennington  <hp@redhat.com>
8709
8710         * configure.in: add --enable-checks
8711
8712         * dbus/dbus-message.c (dbus_message_new): reverse name/service arguments
8713
8714         * dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
8715         to use thread locks.
8716         (_dbus_connection_handler_destroyed_locked): move some private
8717         functions into proper docs group
8718
8719         * dbus/dbus-internals.h: add _dbus_return_if_fail,
8720         _dbus_return_val_if_fail
8721
8722         Throughout: use dbus_return_if_fail
8723
8724 2003-04-23  James Willcox  <jwillcox@gnome.org>
8725
8726         * glib/dbus-glib.h:
8727         * glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
8728         (dbus_connection_setup_with_g_main),
8729         (dbus_server_setup_with_g_main):
8730         * glib/test-dbus-glib.c: (main):
8731         * glib/test-thread-client.c: (main):
8732         * glib/test-thread-server.c: (new_connection_callback), (main):
8733         * tools/dbus-monitor.c: (main):
8734
8735         Added a GMainContext argument to dbus_connection_setup_with_g_main()
8736         and dbus_server_setup_with_g_main().
8737
8738 2003-04-20  Havoc Pennington  <hp@pobox.com>
8739
8740         * doc/dbus-specification.sgml: document the restrictions on
8741         message and service names
8742
8743 2003-04-22  Havoc Pennington  <hp@redhat.com>
8744
8745         * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
8746         support, and do some code cleanups to share more code and
8747         speed up array marshal/demarshal.
8748
8749         * dbus-1.0.pc.in (Cflags): put libdir include file in cflags
8750
8751         * configure.in: generate dbus-arch-deps.h
8752
8753         * dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
8754         64-bit typecodes
8755
8756 2003-04-22  Havoc Pennington  <hp@redhat.com>
8757
8758         * test/data/valid-messages/opposite-endian.message: fix test
8759         to use proper type for rply field
8760
8761         * test/data/invalid-messages: add tests for below validation
8762
8763         * dbus/dbus-message.c (decode_header_data): validate field types,
8764         and validate that named fields are valid names
8765         (decode_name_field): consider messages in the
8766         org.freedesktop.Local. namespace to be invalid.
8767
8768         * dbus/dbus-string.c (_dbus_string_validate_name): new
8769
8770 2003-04-19  Havoc Pennington  <hp@pobox.com>
8771
8772         * bus/driver.c (bus_driver_handle_hello): check limits and
8773         return an error if they are exceeded.
8774
8775         * bus/connection.c: maintain separate lists of active and inactive
8776         connections, and a count of each. Maintain count of completed
8777         connections per user. Implement code to check connection limits.
8778
8779         * dbus/dbus-list.c (_dbus_list_unlink): export
8780
8781         * bus/bus.c (bus_context_check_security_policy): enforce a maximum
8782         number of bytes in the message queue for a connection
8783
8784 2003-04-18  Havoc Pennington  <hp@pobox.com>
8785
8786         * dbus/dbus-auth.c (record_mechanisms): memleak fixes
8787
8788         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
8789         memleaks
8790
8791         * dbus/dbus-keyring.c (add_new_key): fix a memleak, and
8792         on realloc be sure to update the pointer in the keyring
8793
8794         * dbus/dbus-string.c (_dbus_string_zero): compensate for align
8795         offset to avoid writing to unallocated memory
8796
8797         * dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
8798         try the next mechanism, so we properly handle OOM
8799
8800         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
8801         on OOM.
8802         (_dbus_keyring_new): fix OOM bug
8803         (_dbus_keyring_new_homedir): always set error; impose a maximum
8804         number of keys we'll load from the file, mostly to speed up the
8805         test suite and make its OOM checks more useful, but also for
8806         general sanity.
8807
8808         * dbus/dbus-auth.c (process_error_server): reject authentication
8809         if we get an error from the client
8810         (process_cancel): on cancel, send REJECTED, per the spec
8811         (process_error_client): send CANCEL if we get an error from the
8812         server.
8813
8814 2003-04-18  Havoc Pennington  <hp@pobox.com>
8815
8816         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
8817         debug spew
8818
8819         * dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
8820         handling problem
8821
8822         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
8823         about DBUS_TEST_HOMEDIR once
8824
8825         * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in
8826         the environment
8827
8828         * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1
8829         config file so we test the right thing
8830
8831         Throughout: assorted docs improvements
8832
8833 2003-04-18  Havoc Pennington  <hp@pobox.com>
8834
8835         * glib/dbus-gmain.c: adapt to watch changes
8836
8837         * bus/bus.c, bus/activation.c, etc.: adjust to watch changes
8838
8839         * dbus/dbus-server.h: remove dbus_server_handle_watch
8840
8841         * dbus/dbus-connection.h: remove dbus_connection_handle_watch
8842
8843         * dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
8844         like DBusTimeout, so we don't need dbus_connection_handle_watch
8845         etc.
8846
8847 2003-04-17  Havoc Pennington  <hp@redhat.com>
8848
8849         * dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
8850         database usage so it all goes via the DBusUserDatabase cache.
8851
8852 2003-04-17  Havoc Pennington  <hp@redhat.com>
8853
8854         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
8855         there was an OOM watch we skipped, we always return TRUE so we
8856         iterate again to have a look at it again. Fixes test suite hang.
8857         Code rearrangement also lets us lose some memset and only iterate
8858         over callbacks once.
8859
8860         * bus/driver.c (bus_driver_handle_message): sense of test for
8861         reply was backward
8862
8863 2003-04-16  Havoc Pennington  <hp@pobox.com>
8864
8865         * doc/dbus-specification.sgml: make spec say serials are unsigned
8866
8867         * dbus/dbus-message.h: change message serials to unsigned
8868
8869         * dbus/dbus-connection.c: adapt to message serials being unsigned
8870
8871 2003-04-15  Havoc Pennington  <hp@pobox.com>
8872
8873         * bus/bus.c: create and keep around a shared DBusUserDatabase
8874         object.
8875
8876         * bus/connection.c (bus_connection_get_groups): don't cache
8877         groups for user in the connection object, since user database
8878         object now does that.
8879
8880 2003-04-16  Havoc Pennington  <hp@redhat.com>
8881
8882         * dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
8883         list of size counters
8884         (_dbus_message_loader_putback_message_link): put back a popped link
8885
8886         * dbus/dbus-connection.c
8887         (dbus_connection_set_max_live_messages_size): rename
8888         max_received_size
8889         (dbus_connection_get_outgoing_size): get size of outgoing
8890         queue
8891         (_dbus_connection_set_connection_counter): remove this cruft
8892
8893 2003-04-14  Havoc Pennington  <hp@redhat.com>
8894
8895         * dbus/dbus-userdb.c: user database abstraction, mostly to get
8896         caching, but at some point we might want to be able to use a
8897         different database.
8898
8899         * bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
8900         SHA1 conf file to test the sha1 auth mechanism, since the regular
8901         test always uses EXTERNAL when available.
8902
8903         * configure.in,
8904         test/data/valid-config-files/debug-allow-all-sha1.conf.in:
8905         add conf file that requires use of sha1 auth
8906
8907 2003-04-13  Havoc Pennington  <hp@pobox.com>
8908
8909         * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs
8910         from Philip Blundell to send messages and monitor them.
8911
8912 2003-04-13  Havoc Pennington  <hp@pobox.com>
8913
8914         * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
8915         callbacks
8916
8917         * test/data/valid-config-files/debug-allow-all.conf.in: allow all
8918         users
8919
8920         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
8921         fix to only recover unused bytes if we're already authenticated
8922         (_dbus_transport_get_is_authenticated): fix to still mark us
8923         authenticated if there are unused bytes.
8924
8925         * bus/dispatch.c: implement security policy checking
8926
8927         * bus/connection.c (bus_transaction_send_from_driver): new
8928
8929         * bus/bus.c (bus_context_check_security_policy): new
8930
8931         * bus/dispatch.c (send_service_nonexistent_error): delete this,
8932         now we just set the DBusError and it gets converted to an error
8933         reply.
8934
8935         * bus/connection.c (allow_user_function): enable code using actual
8936         data from the config file
8937
8938         * bus/policy.c (list_allows_user): handle wildcard rules for
8939         user/group connection perms
8940
8941 2003-04-13  Havoc Pennington  <hp@pobox.com>
8942
8943         * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules
8944
8945         * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function
8946
8947         * bus/policy.c (bus_policy_append_mandatory_rule)
8948         (bus_policy_append_default_rule, bus_policy_append_user_rule)
8949         (bus_policy_append_group_rule): new functions
8950
8951 2003-04-12  Havoc Pennington  <hp@pobox.com>
8952
8953         * bus/config-parser.c (bus_config_parser_new): fix a memleak
8954
8955         * dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
8956         the pid/gid/uid, just for paranoia.
8957
8958         * test/break-loader.c (randomly_do_n_things): find a byte
8959         containing a type code, and randomly change it to a different
8960         type code.
8961
8962 2003-04-12  Havoc Pennington  <hp@pobox.com>
8963
8964         * bus/policy.h: change BusPolicy to be the thing from the config
8965         file, and rename old BusPolicy to BusClientPolicy
8966
8967         * bus/bus.c, bus/connection.c, bus/config-parser.c: change to
8968         match change in how policy works
8969
8970         * dbus/dbus-internals.h: mark assert_not_reached as
8971         __attribute((noreturn))__
8972
8973 2003-04-11  Havoc Pennington  <hp@redhat.com>
8974
8975         * doc/dbus-specification.sgml: fix a spot with the wrong name for
8976         the broadcast service. Use boolean return for ServiceExists.
8977
8978 2003-04-11  Havoc Pennington  <hp@redhat.com>
8979
8980         * configure.in: add another directory to look for qt in.
8981
8982 2003-04-11  Havoc Pennington  <hp@redhat.com>
8983
8984         * AUTHORS: add Colin Walters
8985
8986 2003-04-11  Havoc Pennington  <hp@redhat.com>
8987
8988         * NEWS: update
8989
8990         * configure.in: 0.9
8991
8992 2003-04-11  Havoc Pennington  <hp@redhat.com>
8993
8994         * bus/messagebus.in: remove pid file when stopping the
8995         message bus, since the bus won't have privileges to remove it
8996         itself.
8997
8998 2003-04-11  Havoc Pennington  <hp@redhat.com>
8999
9000         * bus/bus.c (bus_context_new): move credentials change after
9001         creating pidfile
9002
9003 2003-04-11  Havoc Pennington  <hp@pobox.com>
9004
9005         * test/decode-gcov.c: add "below average functions" to the
9006         coverage report, and change how some of the code works.
9007
9008         * bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
9009         not in the coverage stats.
9010
9011         * test/test-service.c (main): use _dbus_verbose not fprintf in a
9012         couple places so running the test suite doesn't result in megaspam.
9013
9014 2003-04-11  Havoc Pennington  <hp@pobox.com>
9015
9016         * bus/dispatch.c (check_existent_service_activation): accept a no
9017         memory error in a place we didn't before
9018
9019         * bus/test.c (bus_test_run_everything): remove hacky "do it twice
9020         in case the first one failed," since the test suite is less
9021         broken now.
9022
9023 2003-04-10  Havoc Pennington  <hp@pobox.com>
9024
9025         * bus/dispatch.c (check_segfault_service_activation): add test
9026         for launching an executable that just crashes.
9027
9028         * test/test-segfault.c (main): try setting coredumpsize to 0 so we
9029         don't leave a million cores. We'll see how portable this is.
9030
9031 2003-04-10  Havoc Pennington  <hp@pobox.com>
9032
9033         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
9034         the possible parent failures before we fork, so that we don't
9035         fail to create a babysitter after creating the child.
9036
9037         * bus/activation.c (bus_activation_activate_service): kill child
9038         if we don't successfully complete the activation.
9039
9040 2003-04-10  Havoc Pennington  <hp@redhat.com>
9041
9042         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
9043         the connection if it's disconnected
9044
9045         * bus/activation.c (bus_activation_service_created): use new
9046         transaction features to roll back removal of pending activation if
9047         we don't successfully create the service after all. Don't remove
9048         pending activation if the function fails.
9049
9050         * dbus/dbus-list.c (_dbus_list_insert_before_link)
9051         (_dbus_list_insert_after_link): new code to facilitate
9052         services.c fixes
9053
9054         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
9055         new functionality, so we can preallocate the ability to insert
9056         into a hash table.
9057
9058         * bus/connection.c (bus_transaction_add_cancel_hook): new function
9059         allowing us to put custom hooks in a transaction to be used for
9060         cancelling said transaction
9061
9062         * doc/dbus-specification.sgml: add some discussion of secondary
9063         service owners, and disallow zero-length service names
9064
9065         * bus/services.c (bus_registry_acquire_service): new function,
9066         splits out part of bus_driver_handle_acquire_service() and fixes
9067         a bug where we didn't remove the service doing the acquiring
9068         from the secondary queue if we failed to remove the current owner
9069         from the front of the queue.
9070
9071 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9072
9073         * doc/dbus-specification.sgml:
9074         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
9075
9076 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9077
9078         * bus/.cvsignore:
9079         * glib/.cvsignore:
9080         * test/.cvsignore:
9081         Added files to cvsignore
9082
9083         * dbus/dbus-message.h:
9084         * dbus/dbus-message.c: (dbus_message_iter_get_named):
9085         Make get_named() take two out argument and return a boolean.
9086         (dbus_message_iter_get_args_valist):
9087         Update usage of get_named().
9088         (dbus_message_iter_append_byte):
9089         Fix typo
9090         (dbus_message_iter_append_named)
9091         Fix typo
9092         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
9093         More tests.
9094
9095 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9096
9097         * dbus/dbus-marshal.[ch]:
9098         Add array_type_pos argument to _dbus_marshal_validate_arg.
9099         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
9100
9101         * dbus/dbus-message.[ch]:
9102         Multi-dimensional arrays have full type specification in the
9103         outermost array. Iter code re-arranged to handle this.
9104         Added some more iter tests.
9105
9106         * doc/dbus-specification.sgml:
9107         Add me to authors.
9108         Remove old FIXME.
9109         Update new array encoding description.
9110         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
9111
9112         * test/data/invalid-messages/array-with-mixed-types.message:
9113         * test/data/valid-messages/array-of-array-of-uint32.message:
9114         Change to the new array format.
9115
9116         * test/data/invalid-messages/too-short-dict.message:
9117         Fix bug in test.
9118
9119         * test/data/valid-messages/recursive-types.message:
9120         Fix up and extend test.
9121
9122 2003-04-10  Havoc Pennington  <hp@pobox.com>
9123
9124         * bus/dispatch.c: lots of fixes
9125
9126         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
9127         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
9128         that was crack, broke the test service.
9129
9130         * dbus/dbus-transport.c (_dbus_transport_open): fix error
9131         handling to avoid piling up errors if we get a failure on the
9132         first address.
9133
9134         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
9135         pid in assertion failures.
9136
9137         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
9138         to some fixed size of file descriptor array. Don't return TRUE
9139         anytime a timeout exists, that led to lots of busy loop silliness
9140         in the tests.
9141
9142 2003-04-09  Havoc Pennington  <hp@redhat.com>
9143
9144         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
9145         I'd checked this in earlier but hadn't.
9146
9147 2003-04-09  Havoc Pennington  <hp@redhat.com>
9148
9149         * bus/dispatch.c (bus_dispatch_test): get a bit further through
9150         the activation test (man this is getting old!)
9151
9152 2003-04-09  Havoc Pennington  <hp@redhat.com>
9153
9154         * test/test-utils.c: use dispatch status function to fix this up
9155
9156         * bus/connection.c (connection_watch_callback): don't dispatch
9157         from here
9158         (connection_timeout_callback): don't dispatch from here
9159         (bus_connections_setup_connection): set the dispatch status function
9160         (bus_connection_disconnected): unset it
9161
9162         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
9163         used to add a connection to be dispatched
9164         (_dbus_loop_iterate): do the dispatching at the end of each
9165         iteration
9166
9167         * dbus/dbus-connection.c
9168         (dbus_connection_set_dispatch_status_function): new function
9169         allowing us to fix up main loop usage
9170         (_dbus_connection_last_unref): free all the various function
9171         user data
9172         (dbus_connection_dispatch): call the DispatchStatusFunction
9173         whenever this function returns
9174         (dbus_connection_handle_watch): call DispatchStatusFunction
9175         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
9176         (reply_handler_timeout): call DispatchStatusFunction
9177         (dbus_connection_flush): call DispatchStatusFunction
9178
9179 2003-04-09  Havoc Pennington  <hp@redhat.com>
9180
9181         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
9182         a memory leak
9183
9184         * bus/dispatch.c (check_service_activated): fix bug in test
9185
9186         * dbus/dbus-mainloop.c (check_timeout): fix this up
9187
9188         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
9189         verbose output so we can sort out output from different processes,
9190         e.g. in the activation case.
9191
9192 2003-04-08  Colin Walters  <walters@gnu.org>
9193
9194         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
9195         the pid file.
9196         (bus_context_new): Set it.
9197         (bus_context_unref): Use it to delete the pid file.
9198
9199 2003-04-08  Havoc Pennington  <hp@redhat.com>
9200
9201         * test/data/invalid-messages/array-with-mixed-types.message:
9202         regression test that fails for the moment
9203
9204         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
9205         tests for convenience
9206
9207         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
9208         array of nil, it broke things.
9209
9210         * test/data/invalid-messages/array-of-nil.message: regression test
9211
9212         * test/data/valid-messages/array-of-array-of-uint32.message:
9213         happened to write this so added it to suite
9214
9215 2003-04-08  Havoc Pennington  <hp@redhat.com>
9216
9217         * bus/driver.c (bus_driver_handle_acquire_service): init
9218         retval/reply before checking name
9219
9220         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
9221         recursion depth argument
9222
9223         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
9224         in the public struct for future extension
9225
9226         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
9227         typo
9228
9229         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
9230         message
9231
9232         * doc/dbus-specification.sgml: fix typo
9233
9234 2003-04-08  Alexander Larsson  <alexl@redhat.com>
9235
9236         Implemented recursive types, named types and new-style iters
9237
9238         * bus/driver.c:
9239         * glib/test-thread-client.c: (thread_func):
9240         * glib/test-thread-server.c: (handle_test_message):
9241         * test/test-service.c: (handle_echo):
9242         Update to new api
9243
9244         * dbus/Makefile.am:
9245         * dbus/dbus-dict.c:
9246         * dbus/dbus-dict.h:
9247         * dbus/dbus.h
9248         Remove DBusDict
9249
9250         * dbus/dbus-internals.c: (_dbus_type_to_string):
9251         Update for new types.
9252
9253         * dbus/dbus-marshal.[ch]:
9254         Implement recursive types and the new marshalling format.
9255         Remove hardcoded dict marshalling.
9256         Marshal named types.
9257
9258         * dbus/dbus-message-builder.c:
9259         Add BYTE_ARRAY.
9260         Remove references to old types
9261
9262         * dbus/dbus-message.[ch]:
9263         New non-refcounted iter API that supports recursive iters.
9264         Use iters for appending, including support for recursive
9265         iters.
9266         Add byte and named type support.
9267         Update everything to new marshalling formats.
9268         Add tests for new API.
9269
9270         * dbus/dbus-protocol.h:
9271         Remove old array types.
9272         Add types: BYTE, ARRAY, DICT, NAMED
9273
9274         * dbus/dbus-string.c:
9275         * dbus/dbus-sysdeps.c:
9276         Make parse_double locale safe.
9277
9278         * dbus/dbus-test-main.c:
9279         Call setlocale.
9280
9281         * dbus/dbus-test.c:
9282         Kill dict test
9283
9284         * doc/dbus-specification.sgml:
9285         Update spec
9286
9287         * test/data/incomplete-messages/missing-body.message:
9288         * test/data/invalid-messages/bad-boolean.message:
9289         * test/data/invalid-messages/bad-boolean-array.message:
9290         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
9291         * test/data/invalid-messages/boolean-has-no-value.message-raw:
9292         * test/data/invalid-messages/too-short-dict.message:
9293         * test/data/valid-messages/dict-simple.message:
9294         * test/data/valid-messages/dict.message:
9295         * test/data/valid-messages/emptiness.message:
9296         * test/data/valid-messages/lots-of-arguments.message:
9297         * test/data/valid-messages/no-padding.message:
9298         * test/data/valid-messages/recursive-types.message:
9299         Add missing NAME fields
9300         Fix up dicts & arrays
9301
9302         * test/data/invalid-messages/dict-with-nil-value.message:
9303         Removed, this is not invalid anymore.
9304
9305         * test/data/valid-messages/recursive-types.message:
9306         Add new test for deeply recursive types.
9307
9308 2003-04-07  Havoc Pennington  <hp@pobox.com>
9309
9310         * bus/driver.c (bus_driver_handle_acquire_service): return an
9311         error if you try to acquire a service that starts with ':'
9312
9313 2003-04-07  Havoc Pennington  <hp@redhat.com>
9314
9315         * doc/dbus-specification.sgml: require that base service names
9316         start with ':' and that the base service is created/deleted
9317         as first and last things a connection does on the bus
9318
9319         * bus/dispatch.c (check_existent_service_activation): lots more
9320         work on the activation test; it doesn't fully pass yet...
9321
9322         * test/test-service.c (main): fix so we don't memleak the
9323         connection to the message bus
9324         (filter_func): accept a message asking us to exit
9325
9326 2003-04-06  Havoc Pennington  <hp@pobox.com>
9327
9328         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
9329         from Colin Walters
9330
9331         * configure.in: fixes to Qt detection from Colin Walters
9332
9333         * doc/Makefile.am: Only remove generated docbook dirs if they
9334         exist, from Colin Walters
9335
9336         * dbus/dbus-bus.c: change how we set well-known connections to
9337         NULL, so that it works if a single connection is stored in
9338         two well-known array slots.
9339
9340         * test/Makefile.am: remove a lot of stuff that isn't immediately
9341         useful, it's in CVS history if we want it.
9342
9343         * test/test-service.c: use dbus-mainloop instead of that
9344         watch.[hc] crack
9345
9346 2003-04-06  Havoc Pennington  <hp@pobox.com>
9347
9348         * dbus/Makefile.am: split lists of sources into stuff that goes in
9349         the library, util functions that go in the lib and are also used
9350         elsewhere, and util functions that are used in tests/daemon but
9351         don't go in the lib.
9352
9353         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc]
9354         here so it can be used in test binaries also
9355
9356 2003-04-06  Havoc Pennington  <hp@pobox.com>
9357
9358         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
9359         here in the parent process, so we can return an error if it
9360         fails. Also, move some of the code into the child so the parent
9361         is less hosed if we fail midway through.
9362
9363         * bus/bus.c (bus_context_new): move pidfile detection further up
9364         in the function, before we start overwriting sockets and such.
9365
9366         * bus/messagebus.in: adjust this a bit, not sure if it will work.
9367
9368         * configure.in: add --with-system-pid-file and --with-system-socket
9369
9370 2003-04-06  Colin Walters  <walters@verbum.org>
9371
9372         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
9373
9374         * bus/system.conf.in: Declare a pidfile.
9375
9376         * bus/bus.c (bus_context_new): Test for an existing pid file, and
9377         create one (if appropriate).
9378
9379         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
9380         (struct BusConfigParser) [pidfile]: New.
9381         (element_type_to_name, merge_included, start_busconfig_child)
9382         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
9383         (bus_config_parser_unref): Free it.
9384         (bus_config_parser_get_pidfile): New function.
9385
9386         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
9387
9388         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
9389
9390         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
9391
9392         * dbus/dbus-sysdeps.h: Prototype it.
9393
9394 2003-04-06  Havoc Pennington  <hp@pobox.com>
9395
9396         * bus/bus.c (bus_context_new): print the address in here, rather
9397         than in main(), because we need to do it before forking the daemon
9398
9399         * bus/dispatch.c (send_service_nonexistent_error): set the sender
9400         on the service nonexistent error
9401
9402         * bus/driver.c (bus_driver_handle_acquire_service): set the
9403         sender on the AcquireService reply
9404
9405         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
9406         server also listen on a UNIX socket so services can connect to it.
9407
9408 2003-04-06  Havoc Pennington  <hp@pobox.com>
9409
9410         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done
9411         so it detects deadlocks and also we actually init threads when
9412         debugging.
9413
9414 2003-04-06  Havoc Pennington  <hp@pobox.com>
9415
9416         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
9417         save the domain socket name, and unlink it when we disconnect the
9418         server. Means that at least when we exit normally, we won't leave
9419         a bunch of junk in /tmp
9420
9421         * dbus/dbus-transport-unix.c
9422         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
9423         memory management). (I was making a real change here but then
9424         didn't)
9425
9426 2003-04-06  Havoc Pennington  <hp@pobox.com>
9427
9428         * bus/bus.c (bus_context_new): fix wrong handling of
9429         server_data_slot_unref() in the error case.
9430
9431         * dbus/dbus-internals.h (_dbus_assert): change so it passes
9432         "(condition) != 0" to _dbus_real_assert so that
9433         "_dbus_assert (pointer)" doesn't cause a warning
9434
9435         * bus/main.c (main): accept --print-address option to print out
9436         the message bus address
9437
9438         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
9439
9440         * dbus/dbus-transport.c (_dbus_transport_open): special error for
9441         "tmpdir" option to unix: address on client side
9442
9443         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option
9444         to unix: address
9445
9446         * configure.in (TEST_SOCKET_DIR): locate a temporary directory
9447         we can use to create sockets in the test suite.
9448
9449         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
9450         cleanly. To be used for testing.
9451
9452         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
9453
9454         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
9455
9456         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
9457         handle trying to call this when there's no servers active
9458
9459 2003-04-05  Havoc Pennington  <hp@pobox.com>
9460
9461         * NEWS: update
9462
9463         * configure.in: 0.8
9464
9465 2003-04-05  Havoc Pennington  <hp@pobox.com>
9466
9467         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't
9468         crash on startup. Need to get "try starting the daemon"
9469         in the test suite I guess. ;-)
9470
9471         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
9472         tracked the number of open connections; it's better done in
9473         application-specific code as you want it to span all servers etc.
9474
9475 2003-04-05  Havoc Pennington  <hp@pobox.com>
9476
9477         * bus/Makefile.am (install-data-hook): add missing DESTDIR,
9478         patch from Colin Walters
9479
9480 2003-04-05  Havoc Pennington  <hp@pobox.com>
9481
9482         * doc/config-file.txt (Elements): fix docs of <auth> to reflect
9483         reality; in fact multiple mechanisms are allowed.
9484
9485         * dbus/dbus-internals.c (_dbus_real_assert)
9486         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
9487         _dbus_assert_not_reached() into functions, so that they don't show
9488         up in basic block counts for test coverage, and don't use up as
9489         much disk space. Does mean slower execution speed though, so
9490         assumes --disable-asserts is the normal production case.
9491
9492 2003-04-05  Havoc Pennington  <hp@pobox.com>
9493
9494         * test/Makefile.am (dist-hook): also dist *.in files
9495
9496         * NEWS: update
9497
9498         * configure.in: 0.7
9499
9500 2003-04-05  Havoc Pennington  <hp@pobox.com>
9501
9502         * dbus/dbus-string.c: docs warning
9503
9504         * dbus/dbus-spawn.c: missing docs
9505
9506         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
9507
9508 2003-04-05  Havoc Pennington  <hp@pobox.com>
9509
9510         * bus/loop.c (bus_loop_iterate): fix the timeout code, using
9511         magic from GLib
9512
9513         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
9514         to -1 once we've reaped the babysitter
9515         (_dbus_babysitter_handle_watch): do as much work as we can, not
9516         just one go of it
9517
9518         * bus/activation.c: add code using DBusBabysitter so that we
9519         handle it when a service fails to start up properly.
9520         (bus_activation_service_created): don't remove the activation
9521         entries as we go, just let them get removed when we free the pending
9522         activation. Unref reply messages after sending them.
9523
9524 2003-04-05  Havoc Pennington  <hp@pobox.com>
9525
9526         * test/decode-gcov.c (main): print per-directory stats in the report
9527
9528         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
9529
9530 2003-04-05  Havoc Pennington  <hp@pobox.com>
9531
9532         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
9533
9534         * test/decode-gcov.c: hack up a little program to suck data
9535         out of gcov files. Yes this is sort of silly.
9536
9537         * configure.in: define something in config.h and do an
9538         AM_CONDITIONAL when gcov is enabled
9539
9540 2003-04-04  Havoc Pennington  <hp@redhat.com>
9541
9542         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
9543         return a "babysitter" object that is used to monitor the status of
9544         the spawned process and reap it when required.
9545
9546         * test/test-segfault.c, test/test-exit.c,
9547         test/test-sleep-forever.c: binaries that do various lame things,
9548         used in the test suite.
9549
9550         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
9551
9552 2003-04-03  Havoc Pennington  <hp@pobox.com>
9553
9554         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file
9555         in preparation for modifying it, dbus-sysdeps is getting
9556         a bit unmanageable.
9557
9558 2003-04-03  Havoc Pennington  <hp@redhat.com>
9559
9560         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
9561         have multiple ones
9562
9563         * bus/*.[hc]: adapt to mainloop change
9564
9565 2003-04-03  Havoc Pennington  <hp@redhat.com>
9566
9567         * bus/activation.c (load_directory): fix up memleaks
9568         (bus_activation_entry_free): free the entry
9569
9570         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
9571         we get one from the message bus; fix memleaks.
9572
9573         * dbus/dbus-message.c (dbus_set_error_from_message): new function
9574
9575 2003-04-03  Havoc Pennington  <hp@pobox.com>
9576
9577         * bus/config-parser.c (bus_config_parser_unref): free
9578         list of mechanisms, bug discovered by test suite enhancements
9579         (putting system.conf and session.conf into suite)
9580
9581         * test/Makefile.am, test/test-service.c: add placeholder for a
9582         test service that we'll activate as part of test suite. Doesn't
9583         do anything yet.
9584
9585         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by
9586         setting NULL value, and use system malloc not dbus_malloc()
9587         when we have unavoidable memleakage.
9588
9589         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
9590         didn't work, and support DBUS_BUS_ACTIVATION.
9591
9592         * bus/activation.c (child_setup): pass our well-known bus type to
9593         the child
9594
9595         * bus/config-parser.c: support <type> to specify well-known type
9596
9597         * doc/dbus-specification.sgml: document the env variables to
9598         locate well-known buses and find service activator
9599
9600 2003-04-02  Havoc Pennington  <hp@redhat.com>
9601
9602         * test/Makefile.am (all-local): add a rule to copy tests to
9603         builddir, so we can have generated tests. Use this to remove the
9604         silly hack for testing system.conf and session.conf. Will use this
9605         shortly to generate .service files pointing to test binaries.
9606
9607 2003-04-02  Havoc Pennington  <hp@redhat.com>
9608
9609         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
9610         current alloc and needed new length, not max of the doubled
9611         allocation and needed new length. Also, when building tests,
9612         don't do the double-allocation stuff, just realloc every time.
9613
9614 2003-04-02  Havoc Pennington  <hp@redhat.com>
9615
9616         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
9617         in error messages
9618         (_dbus_string_get_dirname): new
9619         (_dbus_sysdeps_test): new
9620         (_dbus_directory_open): include dirnames in error messages
9621
9622         * bus/config-parser.c: interpret <include> and <includedir> and
9623         <servicedir> relative to config file location if the given
9624         filename is not absolute.
9625
9626         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
9627
9628 2003-04-02  Havoc Pennington  <hp@redhat.com>
9629
9630         * bus/connection.c (bus_transaction_send_error_reply): set sender
9631         service for the error, and unref the reply on success
9632
9633         * bus/activation.c: convert to use BusTransaction so OOM can be
9634         handled correctly
9635         (bus_activation_service_created): set sender of the message
9636
9637 2003-04-01  Havoc Pennington  <hp@redhat.com>
9638
9639         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
9640         <includedir> (at least mostly)
9641
9642         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
9643         first, then the user ID
9644
9645 2003-04-01  Havoc Pennington  <hp@pobox.com>
9646
9647         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
9648         function
9649
9650         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
9651
9652         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
9653
9654         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
9655         socket 0777, and unlink any existing socket.
9656
9657         * bus/bus.c (bus_context_new): change our UID/GID and fork if
9658         the configuration file so specifies; set up auth mechanism
9659         restrictions
9660
9661         * bus/config-parser.c (bus_config_parser_content): add support
9662         for <fork> option and fill in code for <auth>
9663
9664         * bus/system.conf.in: add <fork/> to default configuration,
9665         and limit auth mechanisms to EXTERNAL
9666
9667         * doc/config-file.txt (Elements): add <fork>
9668
9669         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
9670         (_dbus_change_identity): new function
9671
9672 2003-03-31  Havoc Pennington  <hp@redhat.com>
9673
9674         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
9675         (_dbus_listen_unix_socket): fix off-by-one error in null
9676         termination spotted by Nalin
9677
9678 2003-03-31  Havoc Pennington  <hp@redhat.com>
9679
9680         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
9681         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
9682         having a real home directory available.
9683
9684 2003-03-31  Havoc Pennington  <hp@redhat.com>
9685
9686         * bus/Makefile.am (install-data-hook): create /var/run/dbus
9687
9688         * bus/messagebus.in: add init script for Red Hat /etc/init.d
9689
9690         * configure.in: add support for specifying a style of init script
9691         to install
9692
9693 2003-03-31  Havoc Pennington  <hp@redhat.com>
9694
9695         Fix some annoying DBusString API and fix all affected code.
9696
9697         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
9698         max_length argument
9699         (_dbus_string_get_data): change to return string instead of using
9700         an out param
9701         (_dbus_string_get_const_data): ditto
9702         (_dbus_string_get_data_len): ditto
9703         (_dbus_string_get_const_data_len): ditto
9704
9705 2003-03-31  Havoc Pennington  <hp@redhat.com>
9706
9707         * bus/main.c (main): fix up the command line arguments to be nicer
9708
9709 2003-03-31  Havoc Pennington  <hp@redhat.com>
9710
9711         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
9712         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same
9713         final location that lands in the config file
9714
9715         * bus/config-loader-expat.c (bus_config_load): fix type of
9716         XML_Parser variable
9717
9718         * doc/TODO: remove TODO item for dbus_bus_get()
9719
9720         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
9721
9722 2003-03-31  Havoc Pennington  <hp@pobox.com>
9723
9724         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
9725         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
9726         argument since they are always client side
9727
9728         * dbus/dbus-server.c (dbus_server_get_address): new function
9729
9730         * bus/main.c (main): take the configuration file as an argument.
9731
9732         * test/data/valid-config-files/debug-allow-all.conf: new file to
9733         use with dispatch.c tests for example
9734
9735         * bus/test-main.c (main): require test data dir
9736
9737         * bus/bus.c (bus_context_new): change this to take a
9738         configuration file name as argument
9739
9740         * doc/config-file.txt (Elements): add <servicedir>
9741
9742         * bus/system.conf, bus/session.conf: new files
9743
9744         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
9745         well-known socket if none set
9746
9747         * configure.in: create system.conf and session.conf
9748
9749 2003-03-30  Havoc Pennington  <hp@pobox.com>
9750
9751         * bus/config-parser.c: hacking
9752
9753         * dbus/dbus-memory.c: don't use DBusList for the list of stuff
9754         to shut down, since it could cause weirdness with the DBusList
9755         lock
9756
9757         * dbus/dbus-list.c (_dbus_list_test): add tests for the
9758         link-oriented stack routines
9759         (alloc_link): free the mempool if the first alloc from it fails
9760
9761         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
9762
9763         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
9764         from GLib
9765         (_dbus_string_skip_white): new
9766
9767         * doc/config-file.txt (Elements): add <includedir>
9768
9769 2003-03-28  Havoc Pennington  <hp@pobox.com>
9770
9771         * dbus/dbus-string.c (_dbus_string_copy_data_len)
9772         (_dbus_string_copy_data): new functions
9773
9774 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
9775
9776         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
9777         * dbus/dbus-bus.h:
9778         Add dbus_bus_get.
9779
9780         * dbus/dbus-memory.c:
9781         Fix a doc comment.
9782
9783 2003-03-28  Havoc Pennington  <hp@pobox.com>
9784
9785         * bus/test.c (bus_test_flush_bus): remove the sleep from here,
9786         I think it may have just been superstition. Not sure.
9787
9788         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
9789         failures that were not being handled.
9790
9791         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
9792
9793         * dbus/dbus-memory.c: add ability to set number of mallocs in a
9794         row that will fail on out-of-memory.
9795
9796         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
9797         function for testing out-of-memory handling.
9798
9799         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
9800         allocation functions, they do map exactly to the expat ones.
9801
9802 2003-03-27  Havoc Pennington  <hp@redhat.com>
9803
9804         * bus/config-loader-libxml.c (bus_config_load): add another error
9805         check
9806
9807 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
9808
9809         * doc/TODO:
9810         Add note about automatic service activation.
9811
9812         * doc/dbus-specification.sgml:
9813         Rename the specification and clarify a few things.
9814
9815 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
9816
9817         * Doxyfile.in:
9818         * dbus/dbus-address.c:
9819         * dbus/dbus-dict.c:
9820         * dbus/dbus-marshal.c:
9821         * dbus/dbus-server-debug-pipe.c:
9822         * dbus/dbus-transport-unix.c:
9823         Fix documentation warnings.
9824
9825 2003-03-26  Havoc Pennington  <hp@pobox.com>
9826
9827         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
9828         after every test so it's quick and easy to see which leaked, and
9829         so we test multiple dbus_shutdown() calls
9830
9831         * configure.in: change configure.in XML stuff to also support
9832         expat
9833
9834         * config-loader-libxml.c: some hacking
9835
9836         * config-loader-expat.c: some hacking
9837
9838         * config-parser.c: some hacking, plus tests
9839
9840 2003-03-25  Havoc Pennington  <hp@redhat.com>
9841
9842         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
9843
9844         * configure.in: add --with-xml option to specify XML library,
9845         right now only libxml is supported.
9846
9847         * bus/config-loader-libxml.c, config-parser.c: sync some minor
9848         nonworking code between home and work, still just stubs
9849
9850 2003-03-24  Havoc Pennington  <hp@redhat.com>
9851
9852         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
9853         file
9854
9855         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow
9856         NULL argument for "message" if the error is a well-known one,
9857         fill in a generic message in this case.
9858
9859         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
9860         favor of DBusError
9861
9862         * bus/test.c (bus_test_flush_bus): add
9863
9864         * bus/policy.c (bus_policy_test): test code stub
9865
9866 2003-03-24  Havoc Pennington  <hp@pobox.com>
9867
9868         * bus/connection.c (bus_connections_setup_connection): set up
9869         the "can this user connect" function, but it always returns
9870         TRUE until we have a config file parser so we can have a config
9871         file that allows connections.
9872
9873 2003-03-23  Havoc Pennington  <hp@pobox.com>
9874
9875         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with
9876         DBUS_BUILD_TESTS, actually alloc/free a block of memory for
9877         the mutex, so we can check for proper memory management
9878         and OOM handling.
9879
9880         * dbus/dbus-dataslot.c: remove the mutex from
9881         DBusDataSlotAllocator and lock it manually when using it,
9882         to simplify fitting it into the global slots framework.
9883
9884         * dbus/dbus-threads.c (init_static_locks): rework how we're
9885         handling global locks so they are easily shut down.
9886
9887         * bus/policy.c (bus_policy_append_rule): fix
9888
9889         * bus/test-main.c (main): check for memleaks
9890
9891         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make
9892         test suite check for memleaks
9893
9894         * dbus/dbus-memory.c: add support in test mode for tracking
9895         number of outstanding blocks
9896
9897 2003-03-23  Havoc Pennington  <hp@pobox.com>
9898
9899         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
9900         policies code
9901
9902         * dbus/dbus-hash.h: add ULONG hash keys
9903
9904         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
9905         (_dbus_get_group_id): new function
9906
9907 2003-03-20  Havoc Pennington  <hp@redhat.com>
9908
9909         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
9910         new function
9911         (dbus_connection_get_unix_user): new function
9912
9913 2003-03-20  Havoc Pennington  <hp@pobox.com>
9914
9915         * bus/connection.c (bus_connection_send_oom_error): assert that
9916         message has a sender
9917         (connection_execute_transaction): ditto
9918         (bus_connection_preallocate_oom_error): fix to set the sender, and
9919         set recipient to the destination service, not the bus driver
9920
9921         * bus/policy.c: hacking
9922
9923         * dbus/dbus-message.c (dbus_message_service_is): new function
9924         (dbus_message_sender_is): new
9925
9926 2003-03-19  Havoc Pennington  <hp@redhat.com>
9927
9928         * bus/policy.c: start sketching code for policy restrictions on
9929         what connections can do.
9930
9931 2003-03-18  Havoc Pennington  <hp@redhat.com>
9932
9933         * doc/TODO: some notes on high-level todo items. Little nitpick
9934         stuff is all in @todo, so no need to add it here.
9935
9936         * doc/config-file.txt: some notes on how config file might look
9937
9938 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
9939
9940         * configure.in: 0.6
9941
9942         * NEWS: Update.
9943
9944 2003-03-17  Havoc Pennington  <hp@redhat.com>
9945
9946         * dbus/dbus-internals.h: add gcc attributes so that
9947         our printf-style functions warn on bad arguments to
9948         format
9949
9950         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf
9951         format bug
9952
9953         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
9954         printf format bug
9955
9956 2003-03-17  Havoc Pennington  <hp@redhat.com>
9957
9958         * bus/test-main.c (main): make it print something as it runs
9959         so make check doesn't look stuck
9960
9961         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove
9962         from CVS, now obsolete
9963
9964 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
9965
9966         * bus/dispatch.c: (bus_dispatch):
9967         Refetch the service name since it may have been reallocated
9968         when dbus_message_set_sender was called.
9969
9970         * dbus/dbus-sysdeps.c: (_dbus_accept):
9971         Add address and address length variables and use them to stop
9972         valgrind from complaining.
9973
9974 2003-03-17  Havoc Pennington  <hp@pobox.com>
9975
9976         All tests pass, no memleaks, no valgrind complaints.
9977
9978         * bus/test.c: refcount handler_slot
9979
9980         * bus/connection.c (bus_connections_new): refcount
9981         connection_data_slot
9982
9983         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
9984         bytes so that auth scripts pass.
9985
9986         * bus/dispatch.c: init message_handler_slot so it gets allocated
9987         properly
9988
9989         * bus/dispatch.c (message_handler_slot_ref): fix memleak
9990
9991         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
9992         dealloc server_pipe_hash when no longer used for benefit of
9993         leak checking
9994
9995         * dbus/dbus-auth.c (process_command): memleak fix
9996
9997         * bus/dispatch.c (check_hello_message): memleak fix
9998
9999 2003-03-16  Havoc Pennington  <hp@pobox.com>
10000
10001         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
10002
10003 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
10004
10005         * bus/activation.c (bus_activation_activate_service): Append
10006         the pending activation entry to the list of pending activations.
10007
10008 2003-03-16  Havoc Pennington  <hp@pobox.com>
10009
10010         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
10011         connections
10012
10013         * dbus/dbus-address.c (create_entry): fix OOM handling when
10014         failing to alloc entry->method
10015
10016 2003-03-16  Havoc Pennington  <hp@pobox.com>
10017
10018         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
10019         the watch
10020
10021         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
10022         add some missing dbus_set_result
10023
10024         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to
10025         alloc the DBusMessageHandler
10026
10027         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
10028         the transport here, since we call this from the finalizer; it
10029         resulted in a double-finalize.
10030
10031         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
10032         where we tried to use transport->connection that was NULL,
10033         happened when transport was disconnected early on due to OOM
10034
10035         * bus/*.c: adapt to handle OOM for watches/timeouts
10036
10037         * dbus/dbus-transport-unix.c: port to handle OOM during
10038         watch handling
10039
10040         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
10041         reference to unused bytes instead of a copy
10042
10043         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
10044         out of memory
10045
10046         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
10047         FALSE on OOM
10048
10049         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
10050         of memory
10051
10052 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10053
10054         * doc/dbus-specification.sgml:
10055         Document reply message for ActivateService.
10056
10057 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10058
10059         * bus/activation.c: (bus_pending_activation_entry_free),
10060         (bus_pending_activation_free), (bus_activation_new),
10061         (bus_activation_unref), (bus_activation_service_created),
10062         (bus_activation_activate_service):
10063         * bus/activation.h:
10064         * bus/bus.c: (bus_context_new):
10065         * bus/desktop-file.c: (new_section):
10066         * bus/driver.c: (bus_driver_send_service_deleted),
10067         (bus_driver_handle_activate_service):
10068         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
10069         * bus/services.h:
10070         * dbus/dbus-connection.c:
10071         (dbus_connection_send_with_reply_and_block):
10072         * dbus/dbus-message.c: (dbus_message_append_args_valist):
10073         * dbus/dbus-protocol.h:
10074         Make activation work better. Now pending activations will be queued
10075         and the daemon won't try to activate services that are already registered.
10076
10077 2003-03-16  Havoc Pennington  <hp@pobox.com>
10078
10079         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
10080         connection data
10081
10082         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
10083         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
10084
10085 2003-03-16  Havoc Pennington  <hp@pobox.com>
10086
10087         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
10088         this. always run the test suite before commit...
10089
10090         * bus/*: adapt to DBusConnection API changes
10091
10092         * glib/dbus-gmain.c: adapt to DBusConnection API changes,
10093         requires renaming stuff to avoid dbus_connection_dispatch name
10094         conflict.
10095
10096         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
10097         function
10098
10099         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
10100         separate from _dbus_message_loader_return_buffer()
10101
10102         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
10103         this, because it's now always broken to use; the number of
10104         messages in queue vs. the number still buffered by the message
10105         loader is undefined/meaningless. Should use
10106         dbus_connection_get_dispatch_state().
10107         (dbus_connection_dispatch): rename from
10108         dbus_connection_dispatch_message
10109
10110 2003-03-16  Havoc Pennington  <hp@pobox.com>
10111
10112         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
10113         implementation
10114
10115 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10116
10117         * dbus/dbus-connection.c:
10118         (dbus_connection_send_with_reply_and_block):
10119         Decrease connection->n_incoming when removing an entry
10120         from the list.
10121         * dbus/dbus-dict.c: (dbus_dict_entry_free),
10122         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
10123         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
10124         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
10125         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
10126         (dbus_dict_get_byte_array):
10127         Handle NULL arrays and strings. Also add support for byte arrays.
10128
10129         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
10130         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
10131         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
10132         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
10133         (_dbus_demarshal_dict), (demarshal_and_validate_len),
10134         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
10135         * dbus/dbus-marshal.h:
10136         Add support for marshalling and demarshalling empty arrays and strings.
10137
10138         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10139         (dbus_message_append_string_array),
10140         (dbus_message_iter_get_boolean),
10141         (dbus_message_iter_get_boolean_array),
10142         (dbus_message_iter_get_int32_array),
10143         (dbus_message_iter_get_uint32_array),
10144         (dbus_message_iter_get_double_array),
10145         (dbus_message_iter_get_byte_array),
10146         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
10147         (check_message_handling):
10148         Add support for getting empty arrays and dicts.
10149
10150         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
10151         Don't do any validation at all for now, that's better than just checking
10152         for ASCII.
10153
10154         * test/data/valid-messages/emptiness.message:
10155         New test message with lots of empty arrays.
10156
10157 2003-03-16  Havoc Pennington  <hp@pobox.com>
10158
10159         * dbus/dbus-connection.c
10160         (_dbus_connection_queue_received_message_link): new function that
10161         can't fail due to OOM
10162
10163         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
10164         new function pops a message together with a list link
10165         containing it.
10166
10167         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
10168         message queuing functions to avoid needing to alloc memory
10169
10170 2003-03-16  Havoc Pennington  <hp@pobox.com>
10171
10172         Oops - test code was only testing failure of around 30 of the
10173         mallocs in the test path, but it turns out there are 500+
10174         mallocs. I believe this was due to misguided linking setup such
10175         that there was one copy of dbus_malloc etc. in the daemon and one
10176         in the shared lib, and only daemon mallocs were tested. In any
10177         case, the test case now tests all 500+ mallocs, and doesn't pass
10178         yet, though there are lots of fixes in this patch.
10179
10180         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
10181         this so that it doesn't need to allocate memory, since it
10182         has no way of indicating failure due to OOM (and would be
10183         annoying if it did).
10184
10185         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
10186
10187         * bus/Makefile.am: rearrange to create two self-contained
10188         libraries, to avoid having libraries with overlapping symbols.
10189         that was resulting in weirdness, e.g. I'm pretty sure there
10190         were two copies of global static variables.
10191
10192         * dbus/dbus-internals.c: move the malloc debug stuff to
10193         dbus-memory.c
10194
10195         * dbus/dbus-list.c (free_link): free list mempool if it becomes
10196         empty.
10197
10198         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
10199
10200         * dbus/dbus-address.c (dbus_parse_address): free list nodes
10201         on failure.
10202
10203         * bus/dispatch.c (bus_dispatch_add_connection): free
10204         message_handler_slot when no longer using it, so
10205         memory leak checkers are happy for the test suite.
10206
10207         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
10208
10209         * bus/bus.c (new_connection_callback): disconnect in here if
10210         bus_connections_setup_connection fails.
10211
10212         * bus/connection.c (bus_connections_unref): fix to free the
10213         connections
10214         (bus_connections_setup_connection): if this fails, don't
10215         disconnect the connection, just be sure there are no side
10216         effects.
10217
10218         * dbus/dbus-string.c (undo_alignment): unbreak this
10219
10220         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
10221         leaking
10222         (_dbus_auth_new): fix the order in which we free strings
10223         on OOM failure
10224
10225         * bus/connection.c (bus_connection_disconnected): fix to
10226         not send ServiceDeleted multiple times in case of memory
10227         allocation failure
10228
10229         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
10230         get the base service name
10231         (dbus_bus_register_client): don't return base service name,
10232         instead store it on the DBusConnection and have an accessor
10233         function for it.
10234         (dbus_bus_register_client): rename dbus_bus_register()
10235
10236         * bus/dispatch.c (check_hello_message): verify that other
10237         connections on the bus also got the correct results, not
10238         just the one sending hello
10239
10240 2003-03-15  Havoc Pennington  <hp@pobox.com>
10241
10242         Make it pass the Hello handling test including all OOM codepaths.
10243         Now to do other messages...
10244
10245         * bus/services.c (bus_service_remove_owner): fix crash when
10246         removing owner from an empty list of owners
10247         (bus_registry_ensure): don't leave service in the list of
10248         a connection's owned services if we fail to put the service
10249         in the hash table.
10250
10251         * bus/connection.c (bus_connection_preallocate_oom_error): set
10252         error flag on the OOM error.
10253
10254         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
10255         handle _dbus_transport_set_connection failure
10256
10257         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
10258         to create watches up front and simply enable/disable them as
10259         needed.
10260         (unix_connection_set): this can now fail on OOM
10261
10262         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
10263         of enabling/disabling a watch or timeout.
10264
10265         * bus/loop.c (bus_loop_iterate): don't touch disabled
10266         watches/timeouts
10267
10268         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
10269
10270 2003-03-15  Havoc Pennington  <hp@pobox.com>
10271
10272         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
10273         write useful test code, after all that futzing around ;-)
10274
10275         Test does not yet pass because we can't handle OOM in
10276         _dbus_transport_messages_pending (basically,
10277         dbus_connection_preallocate_send() does not prealloc the write
10278         watch). To fix this, I think we need to add new stuff to
10279         set_watch_functions, namely a SetEnabled function so we can alloc
10280         the watch earlier, then enable it later.
10281
10282         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
10283         dbus-memory.c to the convenience lib
10284
10285         * bus/test.c: rename some static functions to keep them clearly
10286         distinct from stuff in connection.c. Handle client disconnection.
10287
10288 2003-03-14  Havoc Pennington  <hp@pobox.com>
10289
10290         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
10291         transport, tests more of the real codepath. Set up clients
10292         with bus_setup_debug_client.
10293
10294         * bus/test.c (bus_setup_debug_client): function to set up debug
10295         "clients" on the main loop
10296
10297         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
10298         support
10299
10300         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe
10301         server type
10302
10303         * dbus/dbus-server-debug.c: support a debug server based on pipes
10304
10305         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
10306         (_dbus_close): new function
10307
10308         * configure.in: check for socketpair
10309
10310 2003-03-14  Havoc Pennington  <hp@redhat.com>
10311
10312         * dbus/dbus-memory.c: add a "detect buffer overwrites on free"
10313         cheesy hack
10314
10315         * dbus/dbus-transport-debug.c: rework this a good bit to be
10316         less complicated. hopefully still works.
10317
10318         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
10319         manually
10320
10321         * glib/dbus-gmain.c (timeout_handler): don't remove timeout
10322         after running it
10323
10324         * dbus/dbus-message.c (dbus_message_copy): rename from
10325         dbus_message_new_from_message, fix it up to copy
10326         all the message fields, add test case
10327
10328         * bus/dispatch.c (bus_dispatch_test): add some more test code,
10329         not quite passing yet
10330
10331 2003-03-14  Havoc Pennington  <hp@pobox.com>
10332
10333         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
10334         until no work remains" in test code. (the large diff here
10335         is just code movement, no actual changes)
10336
10337         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
10338         1, no point waiting around for test code.
10339         (_dbus_server_debug_accept_transport): unref the timeout
10340         after adding it (right?)
10341
10342         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
10343
10344 2003-03-13  Havoc Pennington  <hp@redhat.com>
10345
10346         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
10347         out of memory
10348
10349         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
10350         of memory
10351
10352         * dbus/dbus-connection.h: Make AddWatchFunction and
10353         AddTimeoutFunction return a bool so they can fail on out-of-memory
10354
10355         * bus/bus.c (bus_context_new): set up timeout handlers
10356
10357         * bus/connection.c (bus_connections_setup_connection): set up
10358         timeout handlers
10359
10360         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
10361         can fail
10362
10363         * bus/bus.c (bus_context_new): adapt to changes
10364
10365         * bus/connection.c: adapt to changes
10366
10367         * test/watch.c: adapt to DBusWatch changes
10368
10369         * bus/dispatch.c (bus_dispatch_test): started adding this but
10370         didn't finish
10371
10372 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
10373
10374         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
10375
10376 2003-03-13  Havoc Pennington  <hp@pobox.com>
10377
10378         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
10379         set up a test framework as for the library
10380
10381 2003-03-12  Havoc Pennington  <hp@pobox.com>
10382
10383         Throughout: purge global variables, introduce BusActivation,
10384         BusConnections, BusRegistry, etc. objects instead.
10385
10386         * bus/bus.h, bus/bus.c: introduce BusContext as a global
10387         message bus object
10388
10389         * test/Makefile.am (TEST_BINARIES): disable bus-test for now,
10390         going to redo this a bit differently I think
10391
10392 2003-03-12  Havoc Pennington  <hp@redhat.com>
10393
10394         Mega-patch that gets the message bus daemon initially handling
10395         out-of-memory. Work still needed. Also lots of random
10396         moving stuff to DBusError instead of ResultCode.
10397
10398         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
10399
10400         * dbus/dbus-connection.c
10401         (dbus_connection_send_with_reply_and_block): use DBusError
10402
10403         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
10404         DBusResultCode
10405
10406         * dbus/dbus-connection.c (dbus_connection_send): drop the result
10407         code here, as the only failure possible is OOM.
10408
10409         * bus/connection.c (bus_connection_disconnect):
10410         rename bus_connection_disconnected as it's a notification only
10411
10412         * bus/driver.c (bus_driver_handle_acquire_service): don't free
10413         "name" on get_args failure, should be done by get_args;
10414         don't disconnect client for bad args, just return an error.
10415         (bus_driver_handle_service_exists): ditto
10416
10417         * bus/services.c (bus_services_list): NULL-terminate returned array
10418
10419         * bus/driver.c (bus_driver_send_service_lost)
10420         (bus_driver_send_service_acquired): send messages from driver to a
10421         specific client to the client's unique name, not to the broadcast
10422         service.
10423
10424         * dbus/dbus-message.c (decode_header_data): reject messages that
10425         contain no name field
10426         (_dbus_message_get_client_serial): rename to
10427         dbus_message_get_serial and make public
10428         (_dbus_message_set_serial): rename from set_client_serial
10429         (_dbus_message_set_reply_serial): make public
10430         (_dbus_message_get_reply_serial): make public
10431
10432         * bus/connection.c (bus_connection_foreach): allow stopping
10433         iteration by returning FALSE from foreach function.
10434
10435         * dbus/dbus-connection.c (dbus_connection_send_preallocated)
10436         (dbus_connection_free_preallocated_send)
10437         (dbus_connection_preallocate_send): new API for sending a message
10438         without possibility of malloc failure.
10439         (dbus_connection_send_message): rename to just
10440         dbus_connection_send (and same for whole function family)
10441
10442         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
10443
10444         * dbus/dbus-sysdeps.c (_dbus_exit): new function
10445
10446         * bus/activation.c: handle/return errors
10447
10448         * dbus/dbus-errors.h: add more DBUS_ERROR #define
10449
10450         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
10451         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
10452         (_dbus_result_from_errno): move to this file
10453
10454 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
10455
10456         * dbus/dbus-marshal.c:
10457         (_dbus_marshal_set_string):
10458         Take a length argument so we can marshal the correct string
10459         length.
10460
10461         (_dbus_marshal_dict), (_dbus_demarshal_dict),
10462         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
10463         (_dbus_marshal_test):
10464         * dbus/dbus-marshal.h:
10465         Add support for marshalling and demarshalling dicts.
10466
10467         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10468         Add support for TYPE DICT.
10469
10470         * dbus/dbus-message.c: (set_string_field):
10471         Adjust header padding.
10472
10473         (dbus_message_append_args_valist), (dbus_message_append_dict),
10474         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
10475         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
10476         (check_message_handling), (check_have_valid_message):
10477         * dbus/dbus-message.h:
10478         Add functions for setting and getting dicts.
10479
10480         * dbus/dbus-protocol.h:
10481         Add DBUS_TYPE_DICT.
10482
10483         * dbus/dbus.h:
10484         Add dbus-dict.h
10485
10486         * doc/dbus-specification.sgml:
10487         Add information about how dicts are marshalled.
10488
10489         * test/data/invalid-messages/dict-with-nil-value.message:
10490         * test/data/invalid-messages/too-short-dict.message:
10491         * test/data/valid-messages/dict-simple.message:
10492         * test/data/valid-messages/dict.message:
10493         Add sample messages containing dicts.
10494
10495 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
10496
10497         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
10498
10499 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
10500
10501         * dbus/Makefile.am:
10502         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
10503         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
10504         (dbus_dict_set_int32), (dbus_dict_set_uint32),
10505         (dbus_dict_set_double), (dbus_dict_set_string),
10506         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
10507         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
10508         (dbus_dict_set_string_array), (_dbus_dict_test):
10509         * dbus/dbus-dict.h:
10510         Fix according to comments from Havoc.
10511
10512 2003-03-06  Michael Meeks  <michael@server.home>
10513
10514         * configure.in: if we don't have kde-config, disable have_qt.
10515
10516 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
10517
10518         * dbus/Makefile.am:
10519         Add dbus-dict.[ch]
10520
10521         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
10522         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
10523         (dbus_dict_remove), (dbus_dict_get_value_type),
10524         (dbus_dict_get_keys), (dbus_dict_put_boolean),
10525         (dbus_dict_put_int32), (dbus_dict_put_uint32),
10526         (dbus_dict_put_double), (dbus_dict_put_string),
10527         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
10528         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
10529         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
10530         (dbus_dict_get_int32), (dbus_dict_get_uint32),
10531         (dbus_dict_get_double), (dbus_dict_get_string),
10532         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
10533         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
10534         (dbus_dict_get_string_array), (_dbus_dict_test):
10535         * dbus/dbus-dict.h:
10536         Add DBusDict implementation
10537
10538         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
10539         * dbus/dbus-test.h:
10540         Add _dbus_dict_test
10541
10542 2003-03-04  Havoc Pennington  <hp@pobox.com>
10543
10544         * test/data/auth/*: adapt to changes
10545
10546         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
10547         USERID_BASE64 and change USERNAME_BASE64 to put in username not
10548         userid
10549
10550         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
10551         more stuff from being in a context name, to make the protocol
10552         simpler to deal with
10553
10554         * dbus/dbus-errors.c (dbus_error_has_name): new function
10555         (dbus_error_is_set): new function
10556
10557         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
10558         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
10559
10560         * dbus/dbus-connection.c (dbus_connection_flush): also read
10561         messages during a flush operation
10562
10563         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
10564
10565 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10566
10567         * configure.in: Check for gethostbyname on Solaris.
10568
10569         * dbus/dbus-transport.c: (_dbus_transport_open):
10570         Remove duplicate "tcp" entry.
10571
10572         * doc/dbus-specification.sgml:
10573         Clarify some things.
10574
10575 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10576
10577         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
10578         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
10579         (_dbus_keyring_test):
10580         * dbus/dbus-md5.c: (_dbus_md5_compute):
10581         * dbus/dbus-sha.c: (_dbus_sha_compute):
10582         Plug memory leaks.
10583
10584 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10585
10586         * README: Add some things.
10587
10588 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
10589
10590         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
10591         after case DBUS_TYPE_BOOELAN.
10592
10593 2003-03-02  Havoc Pennington  <hp@pobox.com>
10594
10595         * test/break-loader.c (randomly_set_extreme_ints): add test that
10596         sets really huge and small integers
10597
10598         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
10599         that length of boolean array fits in the string, and that
10600         string has room for boolean value in single-bool case.
10601
10602         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
10603         optional value to "ALIGN" command which is what to fill the
10604         alignment with.
10605
10606         * test/data/valid-messages/no-padding.message: add regression
10607         test for the message padding problem
10608
10609 2003-03-02  Havoc Pennington  <hp@pobox.com>
10610
10611         * dbus/dbus-message.c (decode_header_data): fix to always init
10612         message_padding, from Benjamin Dauvergne
10613
10614 2003-03-02  Havoc Pennington  <hp@pobox.com>
10615
10616         * configure.in: 0.5
10617
10618         * NEWS: Update.
10619
10620 2003-03-01  Joe Shaw  <joe@assbarn.com>
10621
10622         * configure.in: Check for "struct cmsgcred" and try to access its
10623         members for BSD-like unices.
10624
10625         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
10626         _dbus_read_credentials_unix_socket().
10627         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
10628         read() for reading the credential byte off the unix socket.  Use
10629         struct cmsgcred on systems that support it.
10630
10631 2003-02-27  Alexander Larsson  <alexl@redhat.com>
10632
10633         * glib/Makefile.am:
10634         * configure.in:
10635         Make gthreads-2.0 dependency optional. Don't build thread test if
10636         its not found.
10637
10638 2003-02-27  Havoc Pennington  <hp@pobox.com>
10639
10640         * dbus/dbus-connection.c
10641         (dbus_connection_send_message_with_reply_and_block): fix doh!
10642         doh! doh! bug that resulted in never removing a reply from the
10643         queue, no wonder we called get_reply_serial so much ;-)
10644
10645         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
10646         and client serial instead of demarshaling them every time
10647
10648 2003-02-27  Havoc Pennington  <hp@pobox.com>
10649
10650         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
10651         more inlined, using dbus-string-private.h, speeds things up
10652         substantially
10653
10654         * dbus/dbus-string.c (_dbus_string_free): apply align offset
10655         when freeing the string
10656         (_dbus_string_steal_data): fix for align offset
10657         (undo_alignment): new function
10658
10659 2003-02-26  Havoc Pennington  <hp@redhat.com>
10660
10661         All kinds of audit fixes from Owen, plus initial attempt to
10662         handle unaligned memory returned from malloc.
10663
10664         * dbus/dbus-string.c (_dbus_string_init): clamp max length to
10665         leave room for align_offset and nul byte
10666         (fixup_alignment): function to track an align_offset and
10667         ensure real->str is aligned
10668         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
10669         to allow a nul byte plus align offset
10670         (_dbus_string_lock): fix overflow issue
10671         (_dbus_string_init_const_len): add assertions on sanity of len,
10672         assign allocated to be ALLOCATION_PADDING larger than len
10673         (set_length): fixup the overflow handling
10674         (_dbus_string_get_data_len): fix overflow in assertion
10675         (open_gap): detect overflow in size of gap to be opened
10676         (_dbus_string_lengthen): add overflow check
10677         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
10678         (_dbus_string_append): add overflow check
10679         (_dbus_string_append_unichar): overflow
10680         (_dbus_string_delete): fix overflow in assertion
10681         (_dbus_string_copy_len): overflow in assertion
10682         (_dbus_string_replace_len): overflows in assertions
10683         (_dbus_string_find): change to implement in terms of
10684         _dbus_string_find_to
10685         (_dbus_string_find_to): assorted fixage
10686         (_dbus_string_equal_c_str): assert c_str != NULL,
10687         fix logic so the function works
10688         (_dbus_string_ends_with_c_str): fix overflow thingy
10689         (_dbus_string_base64_encode): overflow fix
10690         (_dbus_string_validate_ascii): overflow
10691         (_dbus_string_validate_nul): overflow
10692
10693 2003-02-26  Havoc Pennington  <hp@redhat.com>
10694
10695         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
10696
10697 2003-02-26  Alexander Larsson  <alexl@redhat.com>
10698
10699         * configure.in:
10700         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
10701
10702         * dbus/dbus-connection.c:
10703         * dbus/dbus-connection.h:
10704         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
10705         Add dbus_connection_set_wakeup_main_function and use it when queueing
10706         incoming and outgoing messages.
10707
10708
10709         * dbus/dbus-dataslot.c:
10710         Threadsafe usage of DBusDataSlotAllocator
10711
10712         * dbus/dbus-message.c: (dbus_message_get_args_iter):
10713         dbus_new can fail.
10714
10715         * dbus/dbus-server-unix.c:
10716         Add todo comment
10717
10718         * glib/dbus-gmain.c:
10719         Implement the new wakeup functions for glib.
10720
10721         * glib/Makefile.am:
10722         * glib/test-thread-client.c:
10723         * glib/test-thread-server.c:
10724         * glib/test-thread.h:
10725         Initial cut at some thread test code. Not really done yet.
10726
10727 2003-02-26  Havoc Pennington  <hp@pobox.com>
10728
10729         * dbus/dbus-connection.c
10730         (dbus_connection_send_message_with_reply_and_block): fix crash
10731         where we ref'd the outgoing message instead of the returned reply
10732
10733         * dbus/dbus-transport-unix.c (do_authentication): check read watch
10734         at the end of this function, so if we didn't need to read for
10735         authentication, we reinstall it for receiving messages
10736
10737         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to
10738         a NULL sender for peer-to-peer case
10739
10740         * dbus/dbus-transport-unix.c (check_read_watch): handle
10741         !authenticated case correctly
10742
10743         * glib/dbus-gmain.c: add support for DBusServer
10744
10745         * dbus/dbus-server.c: add data slot support
10746
10747         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
10748         return values and handle errors
10749
10750         * dbus/dbus-dataslot.c: factor out the data slot stuff from
10751         DBusConnection
10752
10753         * Doxyfile.in (INPUT): add glib subdir
10754
10755         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
10756         setup_with_g_main instead of hookup_with_g_main; write docs
10757
10758 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
10759
10760         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
10761         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10762         * dbus/dbus-message.c: (dbus_message_append_boolean),
10763         (dbus_message_append_boolean_array),
10764         (dbus_message_get_args_valist), (_dbus_message_test):
10765         * dbus/dbus-message.h:
10766         * doc/dbus-specification.sgml:
10767         Various fixes as pointed out by Havoc.
10768
10769         * test/data/invalid-messages/bad-boolean-array.message:
10770         * test/data/invalid-messages/bad-boolean.message:
10771         Add invalid boolean value test cases.
10772
10773 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
10774
10775         * dbus/dbus-internals.c: (_dbus_type_to_string):
10776         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
10777         (_dbus_marshal_validate_arg):
10778         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10779         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10780         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
10781         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
10782         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
10783         (dbus_message_iter_get_double),
10784         (dbus_message_iter_get_boolean_array), (message_iter_test):
10785         * dbus/dbus-message.h:
10786         * dbus/dbus-protocol.h:
10787         * doc/dbus-specification.sgml:
10788         * test/data/valid-messages/lots-of-arguments.message:
10789         Add support for boolean and boolean array types.
10790
10791 2003-02-23  Havoc Pennington  <hp@pobox.com>
10792
10793         * dbus/dbus-keyring.c: finish most of this implementation and
10794         simple unit test
10795
10796         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
10797         these barf if the error isn't cleared to NULL
10798
10799         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
10800         (_dbus_create_directory): new function
10801
10802         * dbus/dbus-errors.c (dbus_set_error): fix warning
10803
10804         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
10805         (_dbus_string_hex_decode): new function
10806         (test_hex_roundtrip): test code
10807
10808         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
10809
10810         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
10811
10812         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
10813         the save-to-temp/rename trick to atomically write the new file
10814         (_dbus_string_parse_uint): new function
10815
10816 2003-02-22  Havoc Pennington  <hp@pobox.com>
10817
10818         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
10819
10820 2003-02-22  Havoc Pennington  <hp@pobox.com>
10821
10822         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
10823         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
10824
10825         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
10826
10827         * dbus/test/data/sha-1: add US government test suite for SHA-1
10828
10829 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10830
10831         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
10832         Make string arrays NULL-terminated.
10833
10834         * dbus/dbus-memory.c: (dbus_free_string_array):
10835         * dbus/dbus-memory.h:
10836         New function for freeing NULL-terminated string arrays.
10837
10838         * dbus/dbus-message-builder.c: (append_quoted_string),
10839         (_dbus_message_data_load):
10840         Add support for array types.
10841
10842         * dbus/dbus-message.c: (check_message_handling):
10843         Add more types as test cases.
10844
10845         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
10846         (_dbus_string_parse_double):
10847         Add the start offset to the end offset.
10848
10849         * test/data/valid-messages/lots-of-arguments.message:
10850         New test message with lots of arguments.
10851
10852 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10853
10854         * dbus/dbus-message.c: (dbus_message_append_nil),
10855         (dbus_message_append_int32), (dbus_message_append_uint32),
10856         (dbus_message_append_double), (dbus_message_append_string),
10857         (dbus_message_append_int32_array),
10858         (dbus_message_append_uint32_array),
10859         (dbus_message_append_double_array),
10860         (dbus_message_append_byte_array),
10861         (dbus_message_append_string_array):
10862         Fix all out-of-memory handling in these functions.
10863
10864 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10865
10866         * dbus/dbus-message.c: (dbus_message_append_nil):
10867         Fix a silly.
10868
10869 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10870
10871         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10872         (dbus_message_append_nil), (dbus_message_append_int32_array),
10873         (dbus_message_append_uint32_array),
10874         (dbus_message_append_double_array),
10875         (dbus_message_append_byte_array),
10876         (dbus_message_append_string_array), (dbus_message_get_args_valist),
10877         (dbus_message_iter_get_int32_array),
10878         (dbus_message_iter_get_uint32_array),
10879         (dbus_message_iter_get_double_array),
10880         (dbus_message_iter_get_byte_array),
10881         (dbus_message_iter_get_string_array):
10882
10883         * dbus/dbus-message.h:
10884         Add functions for appending and getting arrays.
10885
10886 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10887
10888         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
10889         element size at least 8 bytes, fixes mempool tests on
10890         64-bit machines.
10891
10892 2003-02-20  Alexander Larsson  <alexl@redhat.com>
10893
10894         * dbus/dbus-transport-unix.c (unix_do_iteration):
10895         Unlock the connection mutex during a blocking select call.
10896         Add todo about how we need a way to wake up the select.
10897
10898         * dbus/dbus-connection-internal.h:
10899         * dbus/dbus-connection.c:
10900         Add _dbus_connection_lock and _dbus_connection_unlock.
10901
10902 2003-02-19  Havoc Pennington  <hp@pobox.com>
10903
10904         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
10905         Doxyfile.in, not Doxyfile
10906
10907         * dbus/dbus-keyring.c: do some hacking on this
10908
10909         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
10910
10911         * dbus/dbus-errors.c (dbus_set_error_const): do not call
10912         dbus_error_init
10913         (dbus_set_error): remove dbus_error_init, check for message ==
10914         NULL *before* we sprintf into it, and add @todo about including
10915         system headers in this file
10916
10917         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
10918
10919         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
10920
10921         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
10922         get various bits of user information based on either username
10923         or user ID
10924         (_dbus_homedir_from_username): new function
10925
10926 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
10927
10928         * configure.in:
10929         Add check for nonposix getpwnam_r
10930
10931         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
10932         Align the pool element size to a sizeof (void *) boundary.
10933
10934         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
10935         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
10936         General Solaris fixes.
10937
10938         * test/data/valid-messages/simplest-manual.message:
10939         Explicitly state that we want little-endian packing.
10940
10941 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
10942
10943         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
10944
10945         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
10946         Added to create a transport connecting using a tcp/ip socket.
10947
10948         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
10949         to a tcp socket at given host and port.
10950         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
10951         hostname and port.
10952
10953         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
10954
10955         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
10956         Added to create a server listening on a TCP/IP socket.
10957
10958 2003-02-19  Havoc Pennington  <hp@pobox.com>
10959
10960         Throughout: mop up all the Doxygen warnings and undocumented
10961         stuff.
10962
10963         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
10964         to search any paths.
10965
10966         * dbus/dbus-threads.c: move global mutex initializers to
10967         dbus-internals.h, multiple prototypes was confusing doxygen
10968         besides being kind of ugly
10969
10970         * Doxyfile (PREDEFINED): have Doxygen define
10971         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from
10972         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
10973         (do not abuse the feature! it's for stuff like the autogenerated
10974         macros in dbus-md5.c, not just for things you don't feel like
10975         documenting...)
10976
10977 2003-02-18  Havoc Pennington  <hp@pobox.com>
10978
10979         * dbus/dbus-string.c (_dbus_string_zero): new function
10980
10981         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
10982         wrap it in some dbus-friendly API
10983
10984         * dbus/dbus-types.h: add 16-bit types
10985
10986 2003-02-18  Joe Shaw  <joe@assbarn.com>
10987
10988         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
10989         credentials from our currently running process.
10990         (get_word): Fix a buglet where we were copying the entire length
10991         instead of relative to our position.
10992
10993         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
10994         keys on the stack... it's 640k of data.
10995
10996         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
10997         read the credentials byte off the socket, even if we don't have
10998         SO_PEERCRED.
10999         (_dbus_poll): Implement poll() using select() for systems which
11000         don't have it.
11001
11002         * glib/test-dbus-glib.c (main): Print out an error if no
11003         parameters are given.
11004
11005         * test/data/auth/fallback.auth-script: Added.  Tests that a client
11006         can fallback to a secondary auth mechanism if the first fails.
11007
11008 2003-02-18  Havoc Pennington  <hp@pobox.com>
11009
11010         * AUTHORS: add Alex
11011
11012 2003-02-17  Havoc Pennington  <hp@pobox.com>
11013
11014         * doc/dbus-specification.sgml: lots of cosmetic
11015         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
11016         env variable to DBUS_BUS_ADDRESS, s/client/application/,
11017         s/server/bus/ (except in authentication section). Add a section
11018         "Message Bus Message Routing"
11019
11020 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
11021
11022         Release 0.4
11023
11024         * NEWS: Update
11025
11026 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11027
11028         * doc/dbus-specification.sgml:
11029         Specification updates.
11030
11031 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11032
11033         * bus/activation.c: (bus_activation_init), (child_setup),
11034         (bus_activation_activate_service):
11035         * bus/activation.h:
11036         * bus/main.c: (main):
11037         Set DBUS_ADDRESS environment variable.
11038
11039         * dbus/dbus-errors.c: (dbus_set_error):
11040         Don't use va_copy since that's a C99 feature.
11041
11042         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
11043         (_dbus_spawn_async):
11044         * dbus/dbus-sysdeps.h:
11045         Add child_setup_func to _dbus_spawn_async.
11046
11047         * doc/dbus-specification.sgml:
11048         Update specification.
11049
11050         * test/spawn-test.c: (setup_func), (main):
11051         Fix test.
11052
11053 2003-02-17  Alexander Larsson  <alexl@redhat.com>
11054
11055         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
11056         Added todo.
11057
11058 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11059
11060         * doc/.cvsignore:
11061         * doc/Makefile.am:
11062         * doc/dbus-test-plan.sgml:
11063         Add test plan document.
11064
11065         * test/Makefile.am:
11066         Fix distcheck.
11067
11068 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11069
11070         * dbus/dbus-message.c: (decode_header_data),
11071         (_dbus_message_loader_return_buffer):
11072         Set the header padding amount when loading a message.
11073
11074 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11075
11076         * bus/dispatch.c: (send_one_message):
11077         Only send broadcast messages to registered connections.
11078
11079         * dbus/dbus-message.c: (dbus_message_name_is):
11080         * dbus/dbus-message.h:
11081         New convenience function.
11082
11083         * dbus/dbus-transport-debug.c: (do_reading):
11084         Only dispatch one message per run.
11085
11086         * test/Makefile.am:
11087         * test/bus-test.c: (new_connection_callback), (die),
11088         (test_hello_client1_handler), (test_hello_client2_handler),
11089         (test_hello_replies), (main):
11090
11091         * test/bus-test-loop.[ch]:
11092         Add these.
11093
11094 2003-02-16  Havoc Pennington  <hp@pobox.com>
11095
11096         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
11097         backward conditional
11098
11099 2003-02-16  Alexander Larsson  <alexl@redhat.com>
11100
11101         * dbus/dbus-connection.c:
11102         Implement sent_message_with_reply. (with_reply_and block is still
11103         busted).
11104         Made dispatch_message not lose message if OOM.
11105
11106         * dbus/dbus-errors.h:
11107         Add NoReply error (for reply timeouts).
11108
11109 2003-02-16  Alexander Larsson  <alexl@redhat.com>
11110
11111         * dbus/dbus-hash.c (_dbus_hash_table_unref):
11112         Actually free keys and values when destroying hashtable.
11113
11114 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11115
11116         * dbus/dbus-auth.c: (client_try_next_mechanism):
11117         Plug a leak.
11118
11119         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
11120         Return TRUE if there's no thread implementation around.
11121
11122         * glib/dbus-gmain.c: (free_source),
11123         (dbus_connection_hookup_with_g_main):
11124         Make sure to remove the GSource when the connection is finalized.
11125
11126 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11127
11128         * bus/dispatch.c: (bus_dispatch_message_handler):
11129         * dbus/dbus-errors.h:
11130         Return an error if someone tries to send a message to a service
11131         that doesn't exist.
11132
11133 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11134
11135         * bus/activation.c: (load_directory), (bus_activation_init),
11136         (bus_activation_activate_service):
11137         * bus/activation.h:
11138         * bus/driver.c:
11139         (bus_driver_handle_activate_service), (bus_driver_handle_message):
11140         More work on the activation handling.
11141
11142         * dbus/dbus-errors.h:
11143         Add some error messages
11144
11145         * dbus/dbus-message.c: (dbus_message_new_error_reply):
11146         * dbus/dbus-message.h:
11147         New function that creates an error message.
11148
11149         * dbus/dbus-protocol.h:
11150         Add ACTIVATE_SERVER message.
11151
11152         * dbus/dbus-server-unix.c: (unix_handle_watch),
11153         (_dbus_server_new_for_domain_socket):
11154         Call _dbus_fd_set_close_on_exec.
11155
11156         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
11157         (_dbus_spawn_async), (_dbus_disable_sigpipe),
11158         (_dbus_fd_set_close_on_exec):
11159         * dbus/dbus-sysdeps.h:
11160         Add _dbus_fd_set_close_on exec function. Also add function that checks
11161         that all open fds are set to close-on-exec and warns otherwise.
11162
11163         * dbus/dbus-transport-unix.c:
11164         (_dbus_transport_new_for_domain_socket):
11165         Call _dbus_fd_set_close_on_exec.
11166
11167 2003-02-16  Havoc Pennington  <hp@pobox.com>
11168
11169         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
11170         allow people to avoid setting SIGPIPE to SIG_IGN
11171         (_dbus_connection_new_for_transport): disable SIGPIPE unless
11172         we've been asked not to
11173
11174 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11175
11176         * dbus/dbus-list.c: (_dbus_list_append_link),
11177         (_dbus_list_prepend_link):
11178         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
11179         (dbus_realloc):
11180         Warning fixes.
11181
11182 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11183
11184         * bus/Makefile.am:
11185         * bus/activation.c: (bus_activation_entry_free),
11186         (add_desktop_file_entry), (load_directory), (bus_activation_init):
11187         * bus/activation.h:
11188         * bus/main.c: (main):
11189         Add simple activation support, doesn't work yet though.
11190
11191 2003-02-15   Zack Rusin  <zack@kde.org>
11192
11193         * qt/dbus-qthread.cpp:  small casting fix
11194
11195 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11196
11197         * dbus/dbus-errors.c: (dbus_set_error):
11198         * dbus/dbus-errors.h:
11199         Add a few errors and make dbus_set_error void.
11200
11201         * dbus/dbus-sysdeps.c:
11202         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
11203         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
11204         * dbus/dbus-sysdeps.h:
11205         Add _dbus_spawn_async.
11206
11207         * test/spawn-test.c: (main):
11208         Test for _dbus_spawn_async.
11209
11210 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11211
11212         * dbus/dbus-internals.h:
11213         Fix build without tests.
11214
11215         * dbus/dbus-list.c: (alloc_link):
11216         Fix a segfault when a malloc fails.
11217
11218         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
11219         (dbus_malloc0), (dbus_realloc):
11220         Add support for malloc debugging.
11221
11222 2003-02-15  Alexander Larsson  <alexl@redhat.com>
11223
11224         * dbus/dbus-threads.c:
11225         * dbus/dbus-threads.h:
11226         Add condvars. Remove static mutext from API.
11227         Implement static mutexes by initializing them from threads_init.
11228
11229         * glib/dbus-gthread.c:
11230         * qt/dbus-qthread.cpp:
11231         Update with the thread api changes.
11232
11233
11234         * dbus/dbus-list.c:
11235         * dbus/dbus-list.h:
11236         Turn StaticMutex into normal mutex + init function.
11237         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
11238         _dbus_list_append_link, _dbus_list_prepend_link
11239
11240
11241         * dbus/dbus-sysdeps.c:
11242         * dbus/dbus-sysdeps.h:
11243         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
11244         _dbus_atomic_dec. Only slow fallback implementation at the moment.
11245
11246         * dbus/dbus-protocol.h:
11247         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
11248
11249         * dbus/dbus-message.c:
11250         Make ref/unref atomic.
11251         Fix some docs.
11252
11253         * dbus/dbus-connection-internal.h:
11254         * dbus/dbus-connection.c:
11255         * dbus/dbus-connection.h:
11256         Make threadsafe.
11257         Change _peek to _borrow,_return & _steal_borrowed.
11258         Change disconnect callback to event.
11259         Make dbus_connection_dispatch_messages reentrant.
11260
11261         * dbus/dbus-transport.c:
11262         Don't ref the connection on calls to the transport
11263         implementation.
11264
11265         * dbus/dbus-message-handler.c:
11266         Make threadsafe.
11267
11268         * glib/dbus-gmain.c:
11269         Don't use peek_message anymore
11270
11271         * test/Makefile.am:
11272         * test/debug-thread.c:
11273         * test/debug-thread.h:
11274         Simple thread implementation that asserts() on deadlocks in
11275         single-threaded code.
11276
11277         * test/bus-test.c:
11278         (main) Call debug_threads_init.
11279
11280         * test/watch.c:
11281         Use disconnect message instead of disconnect callback.
11282
11283         * bus/connection.c:
11284         * bus/connection.h:
11285         Don't call dbus_connection_set_disconnect_function. Instead export
11286         bus_connection_disconnect.
11287
11288         * bus/dispatch.c:
11289         Call bus_connection_disconnect when we get a disconnected message.
11290
11291 2003-02-15  Havoc Pennington  <hp@pobox.com>
11292
11293         * dbus/dbus-message.c (dbus_message_new): fool around with the
11294         docs
11295
11296 2003-02-14  Havoc Pennington  <hp@pobox.com>
11297
11298         * dbus/dbus-mempool.c: fail if the debug functions so indicate
11299
11300         * dbus/dbus-memory.c: fail if the debug functions indicate we
11301         should
11302
11303         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
11304         (_dbus_decrement_fail_alloc_counter): debug functions to
11305         simulate memory allocation failures
11306
11307 2003-02-14  Havoc Pennington  <hp@pobox.com>
11308
11309         * dbus/dbus-errors.h (struct DBusError): add a word of padding
11310         to DBusError
11311
11312 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11313
11314         * bus/driver.c: (bus_driver_handle_hello):
11315         * bus/driver.h:
11316         * bus/services.c: (bus_service_lookup):
11317         Reorder message sending so we get a more sane order.
11318
11319         * test/bus-test.c: (message_handler):
11320         Fix tyop.
11321
11322 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11323
11324         * bus/driver.c: (bus_driver_send_service_deleted),
11325         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11326         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
11327         (bus_driver_send_welcome_message),
11328         (bus_driver_handle_list_services),
11329         (bus_driver_handle_acquire_service),
11330         (bus_driver_handle_service_exists):
11331         * dbus/dbus-bus.c: (dbus_bus_register_client),
11332         (dbus_bus_acquire_service), (dbus_bus_service_exists):
11333         * dbus/dbus-errors.c: (dbus_result_to_string):
11334         * dbus/dbus-errors.h:
11335         * dbus/dbus-message.c: (dbus_message_append_args),
11336         (dbus_message_append_args_valist), (dbus_message_get_args),
11337         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
11338         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
11339         (dbus_message_iter_get_byte_array),
11340         (dbus_message_iter_get_string_array), (message_iter_test),
11341         (check_message_handling), (_dbus_message_test):
11342         * dbus/dbus-message.h:
11343         * test/bus-test.c: (main):
11344         Change fields to arguments in messages, so that they won't be
11345         confused with header fields.
11346
11347         * glib/test-dbus-glib.c: (main):
11348         Remove append_fields from hello message.
11349
11350 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11351
11352         * dbus/dbus-errors.c:
11353         * dbus/dbus-message.c:
11354         * dbus/dbus-string.c:
11355         Documentation fixes.
11356
11357 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11358
11359         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
11360         (remove_timeout):
11361         Implement support for timeouts in dbus-glib.
11362
11363 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11364
11365         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
11366         * dbus/dbus-message.c: (process_test_subdir):
11367         * test/break-loader.c: (find_breaks_based_on):
11368         Plug some memory leaks.
11369
11370 2003-02-13  Richard Hult  <rhult@codefactory.se>
11371
11372         * bus/main.c: Fix build.
11373
11374         * dbus/dbus-errors.h:
11375         * dbus/dbus-errors.c: Fix copyright for Anders.
11376
11377 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11378
11379         * bus/Makefile.am:
11380         Add utils.[ch]
11381
11382         * bus/connection.c: (bus_connection_foreach):
11383         Fix a warning.
11384
11385         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
11386         (unescape_string), (new_section), (parse_section_start),
11387         (parse_key_value), (report_error), (bus_desktop_file_load),
11388         (bus_desktop_file_get_string):
11389         * bus/desktop-file.h:
11390         Use DBusError for error reporting.
11391
11392         * bus/dispatch.c: (send_one_message),
11393         (bus_dispatch_message_handler):
11394         * bus/driver.c: (bus_driver_send_service_deleted),
11395         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11396         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
11397         (bus_driver_send_welcome_message),
11398         (bus_driver_handle_list_services),
11399         (bus_driver_handle_acquire_service),
11400         (bus_driver_handle_service_exists):
11401         * bus/loop.c: (bus_loop_run):
11402         * bus/main.c:
11403         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
11404
11405         * bus/utils.c: (bus_wait_for_memory):
11406         * bus/utils.h:
11407         New files with general utility functions.
11408
11409         * dbus/dbus-internals.h:
11410         Remove _DBUS_HANDLE_OOM.
11411
11412 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11413
11414         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
11415         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
11416         * dbus/dbus-errors.h:
11417         Add DBusError structure.
11418
11419 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11420
11421         * test/data/valid-messages/standard-acquire-service.message:
11422         * test/data/valid-messages/standard-hello.message:
11423         * test/data/valid-messages/standard-list-services.message:
11424         * test/data/valid-messages/standard-service-exists.message:
11425         Add some standard messages.
11426
11427 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11428
11429         * bus/driver.c: (bus_driver_send_welcome_message),
11430         (bus_driver_handle_list_services),
11431         (bus_driver_handle_acquire_service),
11432         (bus_driver_handle_service_exists), (bus_driver_handle_message):
11433         Update for API changes in libdbus.
11434
11435         * dbus/dbus-message.c: (dbus_message_new_reply):
11436         * dbus/dbus-message.h:
11437         Remove the name argument. The spec states that replies shouldn't
11438         have a name.
11439
11440 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11441
11442         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
11443         (report_error), (bus_desktop_file_load), (lookup_section),
11444         (lookup_line), (bus_desktop_file_get_raw),
11445         (bus_desktop_file_get_string):
11446         * bus/desktop-file.h:
11447         Some fixes, and new functions for getting a key value from a section.
11448
11449 2003-02-13  Havoc Pennington  <hp@pobox.com>
11450
11451         * test/data/auth/fail-after-n-attempts.auth-script: new test
11452
11453         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
11454         reject the client.
11455
11456 2003-02-13  Havoc Pennington  <hp@pobox.com>
11457
11458         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
11459         dbus_credentials_match were backward
11460
11461         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
11462         NO_CREDENTIALS and ROOT_CREDENTIALS
11463
11464         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine
11465         into here. Never process more commands after we've reached an
11466         end state; store further data as unused bytes.
11467
11468         * test/data/auth/*: add more auth tests
11469
11470         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
11471         command to match exact string and EXPECT_UNUSED to match unused
11472         bytes
11473
11474         * test/Makefile.am (dist-hook): fix to dist all the test stuff
11475
11476 2003-02-12  Havoc Pennington  <hp@pobox.com>
11477
11478         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
11479         \r off of popped lines
11480
11481         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
11482         scripts
11483
11484         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
11485         SEND, append \r\n
11486
11487 2003-02-12  Havoc Pennington  <hp@pobox.com>
11488
11489         * dbus/Makefile.am: remove break-loader from the build, since it
11490         moved.
11491
11492         * configure.in: add --enable-gcov to turn on coverage profiling
11493         flags and disable optimization
11494
11495 2003-02-10  Havoc Pennington  <hp@pobox.com>
11496
11497         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync
11498         initial cut at test framework for DBusAuth from laptop.
11499         Doesn't quite work yet but it compiles and I need to get
11500         it off the 266mhz laptop. ;-)
11501
11502         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
11503         fix a memleak in error case
11504
11505 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
11506
11507         * bus/Makefile.am:
11508         * bus/desktop-file.c:
11509         * bus/desktop-file.h:
11510         Add a desktop file parser.
11511
11512 2003-02-11  Zack Rusin  <zack@kde.org>
11513
11514         * qt/message.[h|cpp]: sample implementation
11515         of the KDE wrapper for DBusMessage
11516
11517 2003-02-09  Zack Rusin  <zack@kde.org>
11518
11519         * test/bus-test.c: make_it_compile
11520         * doc/dbus-specification.sgml: minimal semantic fix
11521
11522 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
11523
11524         Release 0.3
11525
11526         * NEWS: Update
11527
11528 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
11529
11530         * dbus/Makefile.am:
11531         * dbus/dbus-break-loader.c:
11532         * test/Makefile.am:
11533         * test/break-loader.c:
11534         Move dbus-break-loader to test/ and rename it to break-loader.
11535
11536 2003-02-02  Havoc Pennington  <hp@pobox.com>
11537
11538         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files
11539         for code to manage cookies in your home directory
11540
11541         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
11542
11543         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
11544         to authenticate, then disconnect the client.
11545
11546 2003-02-03  Alexander Larsson  <alexl@redhat.com>
11547
11548         * dbus/dbus-message.c (dbus_message_append_fields):
11549         Correct docs.
11550
11551 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11552
11553         * doc/dbus-specification.sgml:
11554         Update address format section.
11555
11556 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11557
11558         * test/Makefile.am:
11559         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
11560         (message_handler), (new_connection_callback), (loop_quit),
11561         (loop_run), (main):
11562         Add bus test.
11563
11564 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11565
11566         * bus/driver.c: (bus_driver_handle_service_exists):
11567         Simplify the code a bit.
11568
11569         * dbus/dbus-bus.c: (dbus_bus_service_exists):
11570         Fix a silly.
11571
11572 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11573
11574         * bus/Makefile.am:
11575         Add libdbus-daemon.la and link to it.
11576
11577 2003-02-01  James Willcox  <jwillcox@gnome.org>
11578
11579         * bus/driver.c: (bus_driver_handle_own_service):
11580         Actually include the service reply code in the message.
11581
11582 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11583
11584         * bus/driver.c: (bus_driver_handle_service_exists):
11585         Don't unref the incoming message.
11586
11587 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11588
11589         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
11590
11591 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11592
11593         * dbus/dbus-server.c: (dbus_server_listen):
11594         * dbus/dbus-transport.c: (_dbus_transport_open):
11595         ifdef out the calls to the debug transport and server.
11596
11597 2003-02-02  Alexander Larsson  <alexl@redhat.com>
11598
11599         * dbus/dbus-watch.c (dbus_watch_get_flags):
11600         Add note in the docs that ERROR or HANGUP won't be returned
11601         and are assumed always on.
11602
11603         * glib/dbus-gmain.c (add_watch):
11604         Always add IO_ERR | IO_HUP
11605
11606         * dbus/dbus-message.h:
11607         Add semicolon after dbus_message_iter_get_string_array().
11608         Makes qt code build again
11609
11610 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
11611
11612         * bus/driver.c: (create_unique_client_name),
11613         (bus_driver_handle_hello):
11614         Don't take a name, just use a numeric id to identify
11615         each client.
11616
11617         * dbus/Makefile.am:
11618         * dbus/dbus-bus.c: (dbus_bus_register_client),
11619         (dbus_bus_acquire_service), (dbus_bus_service_exists):
11620         * dbus/dbus-bus.h:
11621         Add new convenience functions for communicating with the bus.
11622
11623         * dbus/dbus-message.h:
11624
11625         * dbus/dbus-protocol.h:
11626         Fix a typo.
11627
11628 2003-02-01  Alexander Larsson  <alexl@redhat.com>
11629
11630         * dbus/dbus-message.c (dbus_message_append_fields):
11631         Add some more doc comments.
11632
11633 2003-02-01  Havoc Pennington  <hp@pobox.com>
11634
11635         * dbus/dbus-break-loader.c (randomly_modify_length): change
11636         a 4-byte value in the message as if it were a length
11637
11638         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
11639         execute bit on saved files
11640
11641 2003-02-01  Havoc Pennington  <hp@pobox.com>
11642
11643         * dbus/dbus-break-loader.c (main): new program to find messages
11644         that break the loader.
11645
11646         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
11647         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
11648
11649         * dbus/dbus-string.c (_dbus_string_set_byte): new
11650
11651 2003-01-31  Havoc Pennington  <hp@pobox.com>
11652
11653         * dbus/dbus-message.c: refactor the test code to be more general,
11654         in preparation for writing a "randomly permute test cases to
11655         try to break the loader" program.
11656
11657 2003-01-31  Havoc Pennington  <hp@pobox.com>
11658
11659         * doc/dbus-specification.sgml: work on the specification
11660
11661         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check
11662         the protocol version of the message.
11663
11664         * dbus/dbus-protocol.h: drop special _REPLY names, the spec
11665         no longer specifies that.
11666         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not
11667         1/2/3/4)
11668
11669         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
11670         "break" for DBUS_TYPE_NIL, remove @todo
11671
11672 2003-01-31  Havoc Pennington  <hp@pobox.com>
11673
11674         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename
11675         just set_is_error/get_is_error as this is a commonly-used
11676         function, and write docs.
11677
11678 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
11679
11680         * dbus/dbus-address.c: (dbus_address_entry_free):
11681         Free key and value lists.
11682
11683         * dbus/dbus-internals.c: (_dbus_type_to_string):
11684         Add the types we didn't have.
11685
11686         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
11687         (_dbus_marshal_validate_arg):
11688         Add NIL types.
11689
11690         * dbus/dbus-message.c: (dbus_message_set_sender):
11691         Remove todo about being able to set sender to NULL.
11692
11693         (dbus_message_set_is_error_reply),
11694         (dbus_message_get_is_error_reply):
11695         * dbus/dbus-message.h:
11696         New functions.
11697
11698         * dbus/dbus-protocol.h:
11699         Add error reply flag.
11700
11701         * test/data/valid-messages/opposite-endian.message:
11702         Add NIL type to test.
11703
11704 2003-01-31  Havoc Pennington  <hp@pobox.com>
11705
11706         * doc/dbus-specification.sgml: fully specify the header.  Add
11707         flags and major protocol version, and change header/body len to
11708         unsigned.
11709
11710         * dbus/dbus-message-builder.c (append_saved_length): append length
11711         as uint32
11712
11713         * dbus/dbus-message.c (dbus_message_create_header): change header
11714         length and body length to unsigned. Add the new fields from the
11715         spec
11716         (_dbus_message_loader_return_buffer): unsigned header/body len
11717
11718 2003-01-30  Havoc Pennington  <hp@pobox.com>
11719
11720         * dbus/dbus-auth.c: rework to use only REJECTED, no
11721         MECHANISMS
11722
11723         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just
11724         use REJECTED, suggested by Mark McLoughlin
11725
11726 2003-01-30  Havoc Pennington  <hp@pobox.com>
11727
11728         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
11729         a better way to report errors here. e.g.  "unix address lacks
11730         path" or something. also "no such file" when the path doesn't
11731         exist, etc.
11732
11733         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
11734         leaking list nodes
11735         (dbus_parse_address): add @todo about documenting address format,
11736         and allowing , and ; to be escaped
11737
11738 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
11739
11740         * dbus/Makefile.am:
11741         Add dbus-address.[ch]
11742
11743         * dbus/dbus-address.c: (dbus_address_entry_free),
11744         (dbus_address_entries_free), (create_entry),
11745         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
11746         (dbus_parse_address), (_dbus_address_test):
11747         * dbus/dbus-address.h:
11748         New files for dealing with address parsing.
11749
11750         * dbus/dbus-connection.c:
11751         Document timeout functions.
11752
11753         * dbus/dbus-message.c:
11754         Document dbus_message_new_from_message.
11755
11756         * dbus/dbus-server-debug.c:
11757         Document.
11758
11759         * dbus/dbus-server.c: (dbus_server_listen):
11760         Parse address and use correct server implementation.
11761
11762         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
11763         * dbus/dbus-string.h:
11764         New function with test.
11765
11766         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
11767         * dbus/dbus-test.h:
11768         Add address tests.
11769
11770         * dbus/dbus-transport-debug.c:
11771         Document.
11772
11773         * dbus/dbus-transport.c: (_dbus_transport_open):
11774         Parse address and use correct transport implementation.
11775
11776 2003-01-30  Havoc Pennington  <hp@pobox.com>
11777
11778         * dbus/dbus-message.c: use message->byte_order instead of
11779         DBUS_COMPILER_BYTE_ORDER throughout.
11780         (dbus_message_create_header): pad header to align the
11781         start of the body of the message to 8-byte boundary
11782
11783         * dbus/dbus-marshal.h: make all the demarshalers take const
11784         DBusString arguments.
11785
11786         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
11787         validate message args here, so we don't have to do slow validation
11788         later, and so we catch bad messages as they are incoming. Also add
11789         better checks on header_len and body_len. Also fill in
11790         message->byte_order
11791
11792         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
11793         implemented properly)
11794         (_dbus_string_validate_nul): new function to check all-nul
11795
11796         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
11797         get_arg_end_pos and remove all validation
11798         (_dbus_marshal_validate_arg): actually do validation here.
11799
11800 2003-01-29  Havoc Pennington  <hp@pobox.com>
11801
11802         * dbus/dbus-message.c (check_message_handling): fix assertion
11803         failure on set_client_serial
11804
11805 2003-01-28  Havoc Pennington  <hp@pobox.com>
11806
11807         * dbus/dbus-server-debug.c: Add doc section comments
11808
11809         * dbus/dbus-transport-debug.c: add doc section comments
11810
11811 2003-01-28  Havoc Pennington  <hp@redhat.com>
11812
11813         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
11814         the reverse order from how I had it
11815         (_dbus_string_base64_encode): reverse encoding order. I was
11816         basically byteswapping everything during encoding.
11817
11818 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
11819
11820         * dbus/dbus-connection-internal.h:
11821         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
11822         (_dbus_connection_remove_timeout):
11823         Add functions for adding and removing timeouts.
11824
11825         * dbus/dbus-message.c: (dbus_message_new_from_message):
11826         Add new function that takes a message and creates an exact
11827         copy of it, but with the refcount set to 1.
11828         (check_message_handling):
11829         Fix build error.
11830
11831         * dbus/dbus-server-protected.h:
11832         * dbus/dbus-server.c: (_dbus_server_init_base),
11833         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
11834         (dbus_server_set_timeout_functions):
11835         (_dbus_server_remove_timeout):
11836         New functions so that a server can add and remove timeouts.
11837
11838         (dbus_server_listen):
11839         Add commented out call to dbus_server_debug_new.
11840
11841         * dbus/dbus-timeout.c: (_dbus_timeout_new):
11842         Actually set the handler, doh.
11843
11844         * dbus/dbus-transport.c: (_dbus_transport_open):
11845         Add commented out call to dbus_transport_debug_client_new.
11846
11847         * dbus/Makefile.am:
11848         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
11849
11850 2003-01-28  Havoc Pennington  <hp@pobox.com>
11851
11852         * dbus/dbus-message.c (check_message_handling): function to check
11853         on the loaded message, iterates over it etc.
11854
11855 2003-01-28  Havoc Pennington  <hp@pobox.com>
11856
11857         * test/Makefile.am (dist-hook): fix make distdir
11858
11859         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
11860
11861 2003-01-27  Havoc Pennington  <hp@pobox.com>
11862
11863         * dbus/dbus-mempool.c (time_for_size): replace printf with
11864         _dbus_verbose
11865
11866         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
11867         empty lines; fix the SAVE_LENGTH stuff to be
11868         START_LENGTH/END_LENGTH so it actually works; couple other
11869         bugfixes
11870
11871         * test/Makefile.am (dist-hook): add dist-hook for .message files
11872
11873         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
11874         can be constant or locked.
11875         (_dbus_string_free): allow freeing a const string as
11876         documented/intended
11877
11878         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
11879
11880         * dbus/dbus-test-main.c (main): take an argument which is the
11881         directory containing test data
11882
11883         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
11884         argument to this and load all the messages in test/data/
11885         checking that they can be loaded or not loaded as appropriate.
11886
11887 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
11888
11889         * bus/dispatch.c: (bus_dispatch_message_handler):
11890         Dispatch messages sent to services.
11891
11892         * bus/driver.c: (bus_driver_send_service_deleted),
11893         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11894         (bus_driver_send_service_acquired):
11895         Add helper functions for sending service related messages.
11896
11897         (bus_driver_send_welcome_message):
11898         Send HELLO_REPLY instead of WELCOME.
11899
11900         (bus_driver_handle_list_services):
11901         Send LIST_SERVICES_REPLY instead of SERVICES.
11902
11903         (bus_driver_handle_own_service),
11904         (bus_driver_handle_service_exists):
11905         New message handlers.
11906
11907         (bus_driver_handle_message):
11908         Invoke new message handlers.
11909
11910         (bus_driver_remove_connection):
11911         Don't remove any services here since that's done automatically
11912         by bus_service_remove_owner now.
11913
11914         * bus/driver.h:
11915         New function signatures.
11916
11917         * bus/services.c: (bus_service_add_owner):
11918         Send ServiceAcquired message if we're the only primary owner.
11919
11920         (bus_service_remove_owner):
11921         Send ServiceAcquired/ServiceLost messages.
11922
11923         (bus_service_set_prohibit_replacement),
11924         (bus_service_get_prohibit_replacement):
11925         Functions for setting prohibit replacement.
11926
11927         (bus_service_has_owner):
11928         New function that checks if a connection is in the owner queue of
11929         a certain service.
11930
11931         * bus/services.h:
11932         Add new function signatures.
11933
11934         * dbus/dbus-list.c: (_dbus_list_test):
11935         Add tests for _dbus_list_remove_last and traversing the list backwards.
11936
11937         * dbus/dbus-list.h:
11938         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
11939         go any further, so return NULL then.
11940
11941         * dbus/dbus-protocol.h:
11942         Add new messages, service flags and service replies.
11943
11944 2003-01-26  Havoc Pennington  <hp@pobox.com>
11945
11946         * dbus/dbus-message-builder.c: implement, completely untested.
11947
11948         * test/data/*: add data to be used in testing.
11949         ".message" files are our simple loadable text format.
11950         ".message-raw" will be binary dumps of messages.
11951
11952         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
11953
11954 2003-01-26  Havoc Pennington  <hp@pobox.com>
11955
11956         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
11957
11958         * dbus/dbus-errors.c (dbus_result_to_string): add
11959         file errors
11960
11961         * dbus/dbus-message-builder.c: new file, will contain code to load
11962         up messages from files. Not implemented yet.
11963
11964 2003-01-26  Havoc Pennington  <hp@pobox.com>
11965
11966         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
11967         the sender by setting to NULL
11968
11969 2003-01-26  Havoc Pennington  <hp@pobox.com>
11970
11971         The unit tests pass, but otherwise untested.  If it breaks, the
11972         tests should have been better. ;-)
11973
11974         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
11975         the connection.
11976
11977         * dbus/dbus-message.c: redo everything so we maintain
11978         message->header as the only copy of the various fields.
11979         This avoids the possibility of out-of-memory in some cases,
11980         for example dbus_message_lock() can't run out of memory anymore,
11981         and avoids extra copying. Figured I may as well go ahead and do
11982         this since it was busted for dbus_message_lock to not return
11983         failure on OOM, and dbus_message_write_header was totally
11984         unchecked for OOM. Also fixed some random other bugs.
11985
11986         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
11987         that strings are nul-terminated. Also, end_pos can be equal
11988         to string length just not greater than, I think.
11989         (_dbus_marshal_set_int32): new function
11990         (_dbus_marshal_set_uint32): new function
11991         (_dbus_marshal_set_string): new function
11992
11993         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
11994         a warning, init timeout_list to NULL
11995         (dbus_connection_send_message): don't use uninitialized variable
11996         "serial"
11997
11998         * dbus/dbus-string.c (_dbus_string_replace_len): new function
11999
12000 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
12001
12002         * bus/driver.c: (bus_driver_handle_hello),
12003         (bus_driver_send_welcome_message):
12004         Plug leaks
12005
12006 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
12007
12008         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
12009         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
12010         (dbus_connection_unref):
12011         * dbus/dbus-marshal.c: (_dbus_marshal_test):
12012         * dbus/dbus-message.c: (dbus_message_unref),
12013         Plug memory leaks.
12014
12015         (dbus_message_get_fields):
12016         Remove debugging printout.
12017
12018         (_dbus_message_loader_return_buffer):
12019         Don't store the header string.
12020
12021         (_dbus_message_test):
12022         Plug leaks.
12023
12024 2003-01-26  Richard Hult  <rhult@codefactory.se>
12025
12026         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
12027         the file descriptor list, since it can change under us.
12028
12029 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12030
12031         * glib/dbus-gmain.c: (dbus_connection_prepare),
12032         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
12033         (remove_watch), (dbus_connection_hookup_with_g_main):
12034         Rewrite the glib handling to use its own GSource instead of a
12035         GIOChannel so we can catch messages put in the queue while waiting
12036         for a reply.
12037
12038 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12039
12040         * bus/Makefile.am:
12041         * bus/connection.c: (connection_disconnect_handler),
12042         (connection_watch_callback), (bus_connection_setup):
12043         * bus/dispatch.c: (send_one_message),
12044         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
12045         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
12046         * bus/dispatch.h:
12047         * bus/driver.c: (bus_driver_send_service_deleted),
12048         (bus_driver_send_service_created), (bus_driver_handle_hello),
12049         (bus_driver_send_welcome_message),
12050         (bus_driver_handle_list_services), (bus_driver_remove_connection),
12051         (bus_driver_handle_message):
12052         * bus/driver.h:
12053         Refactor code, put the message dispatching in its own file. Use
12054         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
12055         is disconnected.
12056
12057 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12058
12059         * dbus/dbus-internals.h:
12060         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
12061
12062         * dbus/dbus-message.c: (dbus_message_get_sender):
12063         * dbus/dbus-message.h:
12064         Implement dbus_message_get_sender.
12065
12066         * dbus/dbus-protocol.h:
12067         Add message and service defines.
12068
12069 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12070
12071         * dbus/dbus-connection.c: (dbus_connection_send_message):
12072         * dbus/dbus-message-internal.h:
12073         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
12074         (dbus_message_write_header):
12075         Remove _dbus_messag_unlock and don't set the client serial on a
12076         message if one already exists.
12077
12078 2003-01-24  Havoc Pennington  <hp@pobox.com>
12079
12080         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
12081         list_pool
12082
12083         * bus/driver.c (bus_driver_handle_list_services): fix a leak
12084         on OOM
12085
12086 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12087
12088         * dbus/dbus-list.c: (alloc_link), (free_link):
12089         Use a memory pool for the links.
12090
12091 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12092
12093         * bus/connection.c: (bus_connection_foreach):
12094         * bus/connection.h:
12095         Add new bus_connection_foreach function.
12096
12097         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
12098         Add function that broadcasts a message to all clients.
12099
12100         (bus_driver_send_service_created), (bus_driver_handle_hello),
12101         (bus_driver_send_welcome_message),
12102         (bus_driver_handle_list_services), (bus_driver_message_handler):
12103         Implement functions that take care of listing services, and notifying
12104         clients when new services are created.
12105
12106         * bus/services.c: (bus_services_list):
12107         * bus/services.h:
12108         Add new function that returns an array of strings with the currently
12109         registered services.
12110
12111         * glib/dbus-glib.h:
12112         * glib/dbus-gmain.c:
12113         Update copyright year.
12114
12115 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12116
12117         * dbus/dbus-connection.c: (dbus_connection_send_message):
12118         Unlock the message in case it was sent earlier.
12119
12120         (dbus_connection_send_message_with_reply_and_block):
12121         Remove the reply message from the list.
12122
12123         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
12124         Set array_len and new_pos correctly.
12125
12126         (_dbus_marshal_test):
12127         Remove debug output.
12128
12129         * dbus/dbus-message-internal.h:
12130         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
12131         New function that returns the reply serial.
12132
12133         (_dbus_message_unlock):
12134         New function that unlocks a message and resets its header.
12135
12136         (dbus_message_append_string_array),
12137         (dbus_message_get_fields_valist),
12138         (dbus_message_iter_get_field_type),
12139         (dbus_message_iter_get_string_array),
12140         (dbus_message_get_fields),
12141         (dbus_message_append_fields_valist):
12142         Handle string arrays.
12143
12144         (dbus_message_set_sender):
12145         Make this function public since the bus daemon needs it.
12146
12147         (decode_header_data):
12148         Set the reply serial to -1 initially.
12149
12150         * dbus/dbus-message.h:
12151         Add dbus_message_set_sender.
12152
12153 2003-01-24  Havoc Pennington  <hp@pobox.com>
12154
12155         * doc/dbus-specification.sgml: add some stuff
12156
12157 2003-01-22  Havoc Pennington  <hp@pobox.com>
12158
12159         * doc/dbus-specification.sgml: Start to document the protocol.
12160
12161 2003-01-22  Havoc Pennington  <hp@pobox.com>
12162
12163         * dbus/dbus-connection.c
12164         (dbus_connection_send_message_with_reply_and_block): add some @todo
12165
12166         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
12167
12168 2003-01-21  Havoc Pennington  <hp@pobox.com>
12169
12170         (patch untested because can't compile)
12171
12172         * bus/driver.c (create_unique_client_name): make this function
12173         never recycle client names. Also, caller should initialize
12174         the DBusString.
12175
12176         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
12177
12178 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12179
12180         * dbus/dbus-marshal.c: (_dbus_marshal_double),
12181         (_dbus_marshal_int32), (_dbus_marshal_uint32),
12182         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
12183         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
12184         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
12185         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
12186         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
12187         * dbus/dbus-marshal.h:
12188         * dbus/dbus-protocol.h:
12189         Add support for marshalling and demarshalling integer, double
12190         and string arrays.
12191
12192 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12193
12194         * bus/Makefile.am:
12195         Add driver.[ch]
12196
12197         * bus/connection.c: (connection_disconnect_handler):
12198         Remove the connection from the bus driver's list.
12199
12200         (connection_watch_callback): Dispatch messages.
12201
12202         (free_connection_data): Free connection name.
12203
12204         (bus_connection_setup): Add connection to the bus driver's list.
12205         (bus_connection_remove_owned_service):
12206         (bus_connection_set_name), (bus_connection_get_name):
12207         Add functions for setting and getting the connection's name.
12208
12209         * bus/connection.h:
12210         Add function headers.
12211
12212         * bus/driver.c: (create_unique_client_name),
12213         (bus_driver_handle_hello_message),
12214         (bus_driver_send_welcome_message), (bus_driver_message_handler),
12215         (bus_driver_add_connection), (bus_driver_remove_connection):
12216         * bus/driver.h:
12217         * bus/main.c:
12218         * bus/services.c: (bus_service_free):
12219         * bus/services.h:
12220         New file that handles communication and registreation with the bus
12221         itself.
12222
12223 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12224
12225         * dbus/dbus-connection.c: (dbus_connection_send_message):
12226         Add a new client_serial parameter.
12227
12228         (dbus_connection_send_message_with_reply):
12229         Remove a @todo since we've implemented the blocking function.
12230
12231         (dbus_connection_send_message_with_reply_and_block):
12232         New function that sends a message and waits for a reply and
12233         then returns the reply.
12234
12235         * dbus/dbus-connection.h:
12236         Add new functions.
12237
12238         * dbus/dbus-errors.c: (dbus_result_to_string):
12239         * dbus/dbus-errors.h:
12240         Add new DBUS_RESULT.
12241
12242         * dbus/dbus-message-internal.h:
12243         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
12244         (_dbus_message_set_sender), (dbus_message_write_header),
12245         (dbus_message_new_reply), (decode_header_data),
12246         (_dbus_message_loader_return_buffer), (_dbus_message_test):
12247         * dbus/dbus-message.h:
12248         Add new functions that set the reply serial and sender.
12249         Also marshal and demarshal them correctly and add test.
12250
12251         * dbus/dbus-protocol.h:
12252         Add new DBUS_MESSAGE_TYPE_SENDER.
12253
12254         * glib/dbus-glib.h:
12255         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
12256         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
12257         (dbus_connection_hookup_with_g_main):
12258         * glib/test-dbus-glib.c: (main):
12259         Rewrite to use GIOChannel and remove the GSource crack.
12260
12261         * test/echo-client.c: (main):
12262         * test/watch.c: (check_messages):
12263         Update for changed APIs
12264
12265 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
12266
12267         * dbus/Makefile.am: Add dbus-timeout.[cħ]
12268
12269         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
12270         Create a DBusTimeoutList.
12271         (dbus_connection_set_timeout_functions): Add new function to
12272         set timeout callbacks
12273
12274         * dbus/dbus-connection.h: Add public DBusTimeout API.
12275
12276         * dbus/dbus-message.c: (dbus_message_get_service):
12277         * dbus/dbus-message.h:  New function.
12278
12279         * dbus/dbus-server.c: Fix small doc typo.
12280
12281         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
12282
12283 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
12284
12285         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
12286         of the string, just as long as specified.
12287
12288 2003-01-19  Havoc Pennington  <hp@pobox.com>
12289
12290         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
12291         new function
12292
12293         * dbus/dbus-server.c (dbus_server_set_max_connections)
12294         (dbus_server_get_max_connections, dbus_server_get_n_connections):
12295         keep track of current number of connections, and add API for
12296         setting a max (but haven't implemented enforcing the max yet)
12297
12298 2003-01-18  Havoc Pennington  <hp@pobox.com>
12299
12300         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
12301         reading/writing if read_watch != NULL or write_watch != NULL.
12302
12303         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
12304         the message loader code to actually load message->header and
12305         message->body into the newly-created message.
12306
12307         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
12308         in OOM case
12309
12310         * dbus/dbus-connection.c (dbus_connection_set_max_message_size)
12311         (dbus_connection_get_max_message_size)
12312         (dbus_connection_set_max_live_messages_size)
12313         (dbus_connection_get_max_live_messages_size): implement some
12314         resource limitation functions
12315
12316         * dbus/dbus-resources.c: new file implementing some of the
12317         resource limits stuff
12318
12319         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
12320         missing docs, add @todo to handle OOM etc.
12321
12322         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
12323         docs
12324
12325 2003-01-18  Havoc Pennington  <hp@pobox.com>
12326
12327         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the
12328         connection if it hasn't been already.
12329
12330         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
12331         replace with DisconnectFunction.
12332
12333 2003-01-18  Havoc Pennington  <hp@pobox.com>
12334
12335         Building --disable-verbose-mode --disable-asserts --disable-tests
12336         cuts the library from 112K to 45K or so
12337
12338         * configure.in: check for varargs macro support,
12339         add --enable-verbose-mode, --enable-asserts.
12340
12341         * dbus/dbus-internals.h (_dbus_assert): support
12342         DBUS_DISABLE_ASSERT
12343         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
12344
12345 2003-01-18  Havoc Pennington  <hp@pobox.com>
12346
12347         * dbus/dbus-test.c: include config.h so that tests actually run
12348
12349         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
12350         so the failure mode when that assumption fails will be plenty
12351         obvious.
12352
12353 2003-01-18  Havoc Pennington  <hp@pobox.com>
12354
12355         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
12356
12357         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
12358         the distribution
12359
12360         * test/Makefile.am: don't use special variable "TESTS" for echo-*
12361         since we don't want to use those in make check
12362
12363 2003-01-15  Havoc Pennington  <hp@redhat.com>
12364
12365         Release 0.2
12366
12367         * NEWS: update
12368
12369 2003-01-15  Havoc Pennington  <hp@redhat.com>
12370
12371         * test/Makefile.am: fix so that test source code ends up in the
12372         distribution on make distcheck
12373
12374 2003-01-15  Havoc Pennington  <hp@redhat.com>
12375
12376         Release 0.1.
12377
12378         * NEWS: update
12379
12380 2003-01-15  Havoc Pennington  <hp@redhat.com>
12381
12382         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
12383         fix build when --disable-tests
12384
12385         * Makefile.am (EXTRA_DIST): put HACKING in here
12386
12387         * HACKING: document procedure for making a tarball release.
12388
12389 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
12390
12391         * bus/connection.c: (connection_error_handler),
12392         (bus_connection_setup):
12393         * bus/main.c: (main):
12394         Make sure that the DBusConnectionData struct is NULLed
12395         out to prevent a segfault.
12396
12397         * dbus/dbus-errors.c: (dbus_result_to_string):
12398         * dbus/dbus-errors.h:
12399         * dbus/dbus-message.c: (dbus_message_get_fields),
12400         (dbus_message_get_fields_valist), (_dbus_message_test):
12401         * dbus/dbus-message.h:
12402         Make dbus_message_get_fields return a result code so we can
12403         track invalid fields as well as oom.
12404
12405 2003-01-11  Havoc Pennington  <hp@pobox.com>
12406
12407         * configure.in: change --enable-test/--enable-ansi action-if-given
12408         to enable_foo=$enableval instead of enable_foo=yes
12409
12410 2003-01-08  Havoc Pennington  <hp@pobox.com>
12411
12412         * dbus/dbus-string.c (_dbus_string_align_length): new function
12413
12414         * dbus/dbus-test-main.c: move main() for test app here
12415         * dbus/dbus-test.c
12416         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
12417         symbol to run tests, because dbus-test isn't in the main
12418         library
12419
12420         Code review nitpicks.
12421
12422         * dbus/dbus-message.c (dbus_message_write_header): add newlines
12423         for people with narrow emacs ;-). Assert client_serial was filled
12424         in. Assert message->name != NULL.
12425         (dbus_message_append_fields): have "first_field_type" arg separate
12426         from va list, needed for C++ binding that also uses varargs IIRC
12427         and helps with type safety
12428         (dbus_message_new): add @todo about using DBusString to store
12429         service/name internally
12430         (dbus_message_new): don't leak ->service and ->name on OOM later
12431         in the function
12432         (dbus_message_unref): free the service name
12433         (dbus_message_get_fields): same change to varargs
12434         i.e. first_field_type
12435         (_dbus_message_loader_return_buffer): assert that the message data
12436         is aligned (if not it's a bug in our code). Put in verbose griping
12437         about why we set corrupted = TRUE.
12438         (decode_header_data): add FIXME that char* is evil.  Was going to
12439         add FIXME about evil locale-specific string.h strncmp, but just
12440         switched to wacky string-as-uint32 optimization. Move check for
12441         "no room for field name" above get_const_data_len() to avoid
12442         assertion failure in get_const_data_len if we have trailing 2
12443         bytes or the like. Check for service and name fields being
12444         provided twice. Don't leak service/name on error. Require field
12445         names to be aligned to 4 bytes.
12446
12447         * dbus/dbus-marshal.c: move byte swap stuff to header
12448         (_dbus_pack_int32): uscore-prefix
12449         (_dbus_unpack_int32): uscore-prefix
12450         (_dbus_unpack_uint32): export
12451         (_dbus_demarshal_string): add @todo complaining about use of
12452         memcpy()
12453         (_dbus_marshal_get_field_end_pos): add @todo about bad error
12454         handling allowing corrupt data to go unchecked
12455
12456 2003-01-08  Havoc Pennington  <hp@redhat.com>
12457
12458         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write
12459         to the select() as needed for authentication. (should be using
12460         _dbus_poll() not select, but for another day)
12461
12462         * dbus/dbus.h: include dbus/dbus-protocol.h
12463
12464 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
12465
12466         * dbus/Makefile.am (dbusinclude_HEADERS): Install
12467         dbus-connection.h
12468
12469 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
12470
12471         * dbus/dbus-internals.c: (_dbus_type_to_string):
12472         New function that returns a string describing a type.
12473
12474         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
12475         * dbus/dbus-marshal.h:
12476         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
12477         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
12478         (dbus_message_iter_get_byte_array):
12479         * dbus/dbus-message.h:
12480         Add new convenience functions for appending and getting message fields.
12481         Also add demarshalling routines for byte arrays.
12482
12483 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12484
12485         * dbus/dbus-connection-internal.h:
12486         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
12487         (_dbus_connection_get_next_client_serial),
12488         (dbus_connection_send_message):
12489         * dbus/dbus-internals.h:
12490         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
12491         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
12492         (_dbus_marshal_uint32), (_dbus_demarshal_double),
12493         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
12494         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
12495         (_dbus_verbose_bytes), (_dbus_marshal_test):
12496         * dbus/dbus-marshal.h:
12497         * dbus/dbus-message-internal.h:
12498         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
12499         (dbus_message_write_header), (_dbus_message_lock),
12500         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
12501         (dbus_message_get_name), (dbus_message_append_int32),
12502         (dbus_message_append_uint32), (dbus_message_append_double),
12503         (dbus_message_append_string), (dbus_message_append_byte_array),
12504         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
12505         (dbus_message_iter_unref), (dbus_message_iter_has_next),
12506         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
12507         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
12508         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
12509         (decode_header_data), (_dbus_message_loader_return_buffer),
12510         (message_iter_test), (_dbus_message_test):
12511         * dbus/dbus-message.h:
12512         * dbus/dbus-protocol.h:
12513         * dbus/dbus-test.c: (main):
12514         * dbus/dbus-test.h:
12515         * glib/test-dbus-glib.c: (message_handler), (main):
12516         * test/echo-client.c: (main):
12517         * test/watch.c: (check_messages):
12518         Make messages sendable and receivable for real.
12519
12520 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12521
12522         * dbus/dbus-marshal.c: (_dbus_marshal_double),
12523         (_dbus_marshal_string), (_dbus_marshal_byte_array):
12524         * dbus/dbus-message.c: (dbus_message_append_int32),
12525         (dbus_message_append_uint32), (dbus_message_append_double),
12526         (dbus_message_append_string), (dbus_message_append_byte_array):
12527         Handle OOM restoration.
12528
12529 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12530
12531         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12532         (_dbus_demarshal_string), (_dbus_marshal_test):
12533         * dbus/dbus-marshal.h:
12534         * dbus/dbus-message.c: (dbus_message_get_name),
12535         Document these functions.
12536
12537         (dbus_message_append_int32), (dbus_message_append_uint32),
12538         (dbus_message_append_double), (dbus_message_append_string),
12539         (dbus_message_append_byte_array):
12540         * dbus/dbus-message.h:
12541         Add functions for adding message fields of different types.
12542
12543         * dbus/dbus-protocol.h:
12544         Add the different types.
12545
12546 2003-01-05  Havoc Pennington  <hp@pobox.com>
12547
12548         * bus/connection.c: implement routines for handling connections,
12549         first thing is keeping a list of owned services on each connection
12550         and setting up watches etc.
12551
12552         * bus/services.c: implement a mapping from service names to lists
12553         of connections
12554
12555         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
12556
12557         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
12558         to use static mutexes for global data
12559
12560         * dbus/dbus-connection.c (dbus_connection_set_data): add new
12561         collection of functions to set/get application-specific data
12562         on the DBusConnection.
12563
12564 2003-01-04  Havoc Pennington  <hp@pobox.com>
12565
12566         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
12567         (_dbus_poll): new function
12568
12569         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
12570         copied from GLib
12571
12572         * bus/loop.c: initial code for the daemon main loop
12573
12574 2003-01-04  Havoc Pennington  <hp@pobox.com>
12575
12576         * test/watch.c (error_handler): make it safe if the error handler
12577         is called multiple times (if we s/error handler/disconnect
12578         handler/ we should just guarantee it's called only once)
12579
12580         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
12581         error handler on disconnect (it's quite possible we should
12582         just change the error handler to a "disconnect handler," I'm
12583         not sure we have any other meaningful errors)
12584
12585         * configure.in: check for getpwnam_r
12586
12587         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
12588         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
12589         mechanism as in SASL spec, using socket credentials
12590
12591         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
12592         (_dbus_send_credentials_unix_socket): new function
12593
12594         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
12595         dbus_accept()
12596         (_dbus_write): only check errno if <0 returned
12597         (_dbus_write_two): ditto
12598
12599 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
12600
12601         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
12602         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
12603         (_dbus_marshal_test):
12604         * dbus/dbus-marshal.h:
12605         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
12606         to _dbus_marshal_utf8_string. Also fix some tests.
12607
12608 2002-12-28  Harri Porten  <porten@kde.org>
12609
12610         * configure.in: added check for C++ compiler and a very cheesy
12611         check for the Qt integration
12612
12613         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
12614
12615         * qt/Makefile.am: added
12616
12617         * qt/.cvsignore: added
12618
12619         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
12620         latter, added #ifdef QT_THREAD_SUPPORT guard.
12621
12622         * dbus/Makefile.am: added missing headers for make dist
12623
12624 2002-12-28  Kristian Rietveld  <kris@gtk.org>
12625
12626         * dbus/Makefile.am: fixup export-symbols-regex.
12627
12628 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
12629
12630         * acinclude.m4: Add this file and put the
12631         PKG_CHECK_MODULE macro in it.
12632
12633 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
12634
12635         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12636         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12637         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
12638         (_dbus_marshal_test):
12639         Make the demarshalling routines align the pos argument.
12640         Add string marshalling tests and fix the obvious bugs
12641         discovered.
12642
12643 2002-12-26  Havoc Pennington  <hp@pobox.com>
12644
12645         * dbus/dbus-auth.c: fixes fixes fixes
12646
12647         * dbus/dbus-transport-unix.c: wire up support for
12648         encoding/decoding data on the wire
12649
12650         * dbus/dbus-auth.c (_dbus_auth_encode_data)
12651         (_dbus_auth_decode_data): append to target string
12652         instead of nuking it.
12653
12654 2002-12-26  Havoc Pennington  <hp@pobox.com>
12655
12656         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
12657         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
12658         doh
12659
12660         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
12661         avoid swap_bytes() overhead (ignoring possible assembly stuff for
12662         now). Main point is because I wanted unpack_uint32 to implement
12663         _dbus_verbose_bytes
12664         (_dbus_verbose_bytes): new function
12665
12666         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
12667
12668         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
12669         mechanism to handle a corrupt message stream
12670         (_dbus_message_loader_new): fix preallocation to only prealloc,
12671         not prelengthen
12672
12673         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
12674         (_dbus_string_test): enhance tests for copy/move and fix the
12675         functions
12676
12677         * dbus/dbus-transport-unix.c: Hold references in more places to
12678         avoid reentrancy problems
12679
12680         * dbus/dbus-transport.c: ditto
12681
12682         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
12683         leak reference count in no-message case
12684
12685         * test/watch.c (do_mainloop): handle adding/removing watches
12686         during iteration over the watches. Also, ref the connection/server
12687         stored on a watch, so we don't try to mangle a destroyed one.
12688
12689         * dbus/dbus-transport-unix.c (do_authentication): perform
12690         authentication
12691
12692         * dbus/dbus-auth.c (get_state): add a state
12693         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
12694         (_dbus_auth_get_unused_bytes): append the unused bytes
12695         to the passed in string, rather than prepend
12696
12697         * dbus/dbus-transport.c (_dbus_transport_init_base): create
12698         the auth conversation DBusAuth
12699
12700         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
12701         (_dbus_transport_new_for_domain_socket): when creating a
12702         transport, pass in whether it's a client-side or server-side
12703         transport so we know which DBusAuth to create
12704
12705 2002-12-03  Havoc Pennington  <hp@pobox.com>
12706
12707         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
12708         _after_ finalizing the derived members
12709         (unix_connection_set): unref watch if we fail to add it
12710
12711         * dbus/dbus-connection.c (dbus_connection_unref): delete the
12712         transport first, so that the connection owned by the
12713         transport will be valid as the transport finalizes.
12714
12715         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
12716         if necessary, and remove watches from the connection.
12717
12718         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
12719
12720 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
12721
12722         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12723         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12724         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
12725         (_dbus_marshal_test):
12726         * dbus/dbus-marshal.h:
12727         Add string marshal functions and have the demarshal functions
12728         return the new position.
12729
12730 2002-12-25  Havoc Pennington  <hp@pobox.com>
12731
12732         * doc/dbus-sasl-profile.txt: docs on the authentication protocol,
12733         it is a simple protocol that just maps directly to SASL.
12734
12735         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
12736         initial implementation, not actually used yet.
12737
12738         * dbus/dbus-string.c (_dbus_string_find): new function
12739         (_dbus_string_equal): new function
12740         (_dbus_string_base64_encode): new function
12741         (_dbus_string_base64_decode): new function
12742
12743 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
12744
12745         * dbus/Makefile.am:
12746         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
12747         (_dbus_marshal_int32), (_dbus_marshal_uint32),
12748         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12749         (_dbus_demarshal_uint32), (_dbus_marshal_test):
12750         * dbus/dbus-marshal.h:
12751         * dbus/dbus-protocol.h:
12752         * dbus/dbus-test.c: (main):
12753         * dbus/dbus-test.h:
12754         Add un-optimized marshalling/demarshalling routines.
12755
12756 2002-12-25  Harri Porten  <porten@kde.org>
12757
12758         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
12759
12760 2002-12-24  Zack Rusin  <zack@kde.org>
12761
12762         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
12763         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
12764         main loop stuff
12765
12766 2002-12-24  Havoc Pennington  <hp@pobox.com>
12767
12768         * glib/dbus-gthread.c: fix include
12769
12770         * glib/dbus-glib.h: rename DBusMessageHandler for now.
12771         I think glib API needs to change, though, as you don't
12772         want to use DBusMessageFunction, you want to use the
12773         DBusMessageHandler object. Probably
12774         dbus_connection_open_with_g_main_loop()
12775         and dbus_connection_setup_g_main_loop() or something like that
12776         (but think of better names...) that just create a connection
12777         that has watch/timeout functions etc. already set up.
12778
12779         * dbus/dbus-connection.c
12780         (dbus_connection_send_message_with_reply): new function just to
12781         show how the message handler helps us deal with replies.
12782
12783         * dbus/dbus-list.c (_dbus_list_remove_last): new function
12784
12785         * dbus/dbus-string.c (_dbus_string_test): free a string that
12786         wasn't
12787
12788         * dbus/dbus-hash.c: use memory pools for the hash entries
12789         (rebuild_table): be more paranoid about overflow, and
12790         shrink table when we can
12791         (_dbus_hash_test): reduce number of sprintfs and write
12792         valid C89. Add tests for case where we grow and then
12793         shrink the hash table.
12794
12795         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
12796
12797         * dbus/dbus-connection.c (dbus_connection_register_handler)
12798         (dbus_connection_unregister_handler): new functions
12799
12800         * dbus/dbus-message.c (dbus_message_get_name): new
12801
12802         * dbus/dbus-list.c: fix docs typo
12803
12804         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
12805         an object representing a handler for messages.
12806
12807 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
12808
12809         * glib/dbus-glib.h:
12810         * glib/dbus-gthread.c: (dbus_gthread_init):
12811         Don't use the gdbus prefix for public functions.
12812
12813 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
12814
12815         * Makefile.am:
12816         * configure.in:
12817         Add GLib checks and fixup .pc files
12818
12819         * glib/Makefile.am:
12820         * glib/dbus-glib.h:
12821         * glib/dbus-gmain.c: (gdbus_connection_prepare),
12822         (gdbus_connection_check), (gdbus_connection_dispatch),
12823         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
12824         (dbus_connection_gsource_new):
12825         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
12826         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
12827         * glib/test-dbus-glib.c: (message_handler), (main):
12828         Add GLib support.
12829
12830 2002-12-15  Harri Porten  <porten@kde.org>
12831
12832         * autogen.sh: check for libtoolize before attempting to use it
12833
12834         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
12835         struct.
12836
12837         * .cvsignore: ignore more stamp files
12838
12839         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
12840
12841         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
12842         without make install.
12843
12844 2002-12-15  Havoc Pennington  <hp@pobox.com>
12845
12846         * dbus/dbus-threads.c: add thread stubs that a higher library
12847         layer can fill in. e.g. the GLib wrapper might fill them in with
12848         GThread stuff. We still need to use this thread API to
12849         thread-safe-ize the library.
12850
12851 2002-12-12  Havoc Pennington  <hp@pobox.com>
12852
12853         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
12854         below new interfaces and include fewer system headers.
12855
12856         * dbus/dbus-sysdeps.c (_dbus_read): new function
12857         (_dbus_write): new function
12858         (_dbus_write_two): new function
12859         (_dbus_connect_unix_socket): new function
12860         (_dbus_listen_unix_socket): new function
12861
12862         * dbus/dbus-message-internal.h: change interfaces to use
12863         DBusString
12864
12865 2002-12-11  Havoc Pennington  <hp@pobox.com>
12866
12867         * dbus/dbus-types.h: add dbus_unichar
12868
12869         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
12870
12871         * dbus/dbus-connection.c (dbus_connection_send_message): return
12872         TRUE on success
12873
12874         * dbus/dbus-transport.c: include dbus-watch.h
12875
12876         * dbus/dbus-connection.c: include dbus-message-internal.h
12877
12878         * HACKING: add file with coding guidelines stuff.
12879
12880         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
12881         handling here, for security purposes (as in vsftpd). Not actually
12882         using this class yet.
12883
12884         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
12885         system/libc usage here, as in vsftpd, for ease of auditing (and
12886         should also simplify portability). Haven't actually moved all the
12887         system/libc usage into here yet.
12888
12889 2002-11-25  Havoc Pennington  <hp@pobox.com>
12890
12891         * dbus/dbus-internals.c (_dbus_verbose): fix to not
12892         always print the first verbose message.
12893
12894 2002-11-24  Havoc Pennington  <hp@pobox.com>
12895
12896         * test/echo-client.c, test/echo-server.c: cheesy test
12897         clients.
12898
12899         * configure.in (AC_CHECK_FUNCS): check for writev
12900
12901         * dbus/dbus-message.c (_dbus_message_get_network_data): new
12902         function
12903
12904         * dbus/dbus-list.c (_dbus_list_foreach): new function
12905
12906         * dbus/dbus-internals.c (_dbus_verbose): new function
12907
12908         * dbus/dbus-server.c, dbus/dbus-server.h: public object
12909         representing a server that listens for connections.
12910
12911         * dbus/.cvsignore: create
12912
12913         * dbus/dbus-errors.h, dbus/dbus-errors.c:
12914         public API for reporting errors
12915
12916         * dbus/dbus-connection.h, dbus/dbus-connection.c:
12917         public object representing a connection that
12918         sends/receives messages. (Same object used for
12919         both client and server.)
12920
12921         * dbus/dbus-transport.h, dbus/dbus-transport.c:
12922         Basic abstraction for different kinds of stream
12923         that we might read/write messages from.
12924
12925 2002-11-23  Havoc Pennington  <hp@pobox.com>
12926
12927         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN
12928         _DBUS_INT_MAX
12929
12930         * dbus/dbus-test.c (main): add list test, and include
12931         dbus-test.h as intended
12932
12933         * dbus/dbus-hash.c (_dbus_hash_table_remove_string)
12934         (_dbus_hash_table_remove_int): return value indicates
12935         whether the entry existed to remove
12936
12937         * dbus/dbus-list.c: add linked list utility class,
12938         with docs and tests
12939
12940         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
12941         array sometimes.
12942
12943 2002-11-23  Havoc Pennington  <hp@pobox.com>
12944
12945         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
12946         DBUS_END_DECLS to nothing, that should fix this once and for all
12947
12948         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
12949
12950         * dbus/dbus-message.c, dbus/dbus-hash.c:
12951         add some missing @brief
12952
12953 2002-11-23  Havoc Pennington  <hp@pobox.com>
12954
12955         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS
12956         to avoid confusing Doxygen
12957
12958         * dbus/dbus-hash.c: @} not }@
12959
12960         * dbus/dbus-message.c (struct DBusMessage): split out
12961         internals docs
12962
12963 2002-11-23  Havoc Pennington  <hp@pobox.com>
12964
12965         * configure.in: pile on more warning flags if using gcc
12966
12967         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have
12968         to document static functions
12969
12970         * configure.in: add summary to end of configure so it
12971         looks nice and attractive
12972
12973         * dbus/dbus-hash.c: finish implementation and write unit
12974         tests and docs
12975
12976         * configure.in: add --enable-tests to enable unit tests
12977
12978         * dbus/dbus-test.c: test program to run unit tests
12979         for all files in dbus/*, initially runs a test for
12980         dbus-hash.c
12981
12982         * dbus/dbus-internals.h: file to hold some internal utility stuff
12983
12984 2002-11-22  Havoc Pennington  <hp@redhat.com>
12985
12986         * dbus/dbus-hash.c: copy in Tcl hash table, not yet
12987         "ported" away from Tcl
12988
12989         * dbus/dbus-types.h: header for types such as dbus_bool_t
12990
12991 2002-11-22  Havoc Pennington  <hp@redhat.com>
12992
12993         * dbus/dbus.h: fixups for doc warnings
12994
12995         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
12996         macros
12997         (QUIET): make it quiet so we can see warnings
12998
12999         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
13000
13001 2002-11-22  Havoc Pennington  <hp@redhat.com>
13002
13003         * Makefile.am: include "Doxyfile" target in all-local
13004
13005         * configure.in: generate the Doxyfile
13006
13007         * Doxyfile.in: move Doxyfile here, so we can use
13008         configure to generate a Doxyfile with the right
13009         version number etc.
13010
13011 2002-11-22  Havoc Pennington  <hp@redhat.com>
13012
13013         * dbus/dbus-message.c: move inline docs into .c file
13014
13015         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
13016         so all docs are under doc/
13017         (MAN_EXTENSION): generate man pages. Use extension
13018         ".3dbus" which matches ".3qt" on my system,
13019         I guess this is OK, I don't know really.
13020         (FILE_PATTERNS): look for .c files not .h, makes sense
13021         for plain C I think
13022
13023 2002-11-22  Havoc Pennington  <hp@pobox.com>
13024
13025         * Makefile.am (SUBDIRS): rename subdir "server" to "bus"
13026         because any app can be a server, and any app can be a client,
13027         the bus is a special kind of server.
13028
13029 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
13030
13031         * Doxyfile : adding. Still needs Makefile rules to be generated
13032         automatically (just run "doxygen" in the toplevel dir for now to
13033         generate docs)
13034
13035         * dbus/dbus-message.h : Adding sample docs (javadoc since
13036         resembles gtk-doc a little more)
13037
13038         * dbus/dbus.h : Adding sample docs
13039
13040 2002-11-21  Havoc Pennington  <hp@redhat.com>
13041
13042         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION
13043         so we can allow ourselves to include files directly,
13044         instead of having to use dbus.h
13045
13046         * dbus/dbus.h: fill in
13047
13048         * dbus/dbus-message.h: sketch out a sample header file.
13049         Include griping if you include it directly instead of
13050         via dbus.h
13051
13052         * dbus/dbus-macros.h: new file with macros for extern "C",
13053         TRUE/FALSE, NULL, etc.
13054
13055         * doc/file-boilerplate.c: put include guards in here
13056
13057 2002-11-21  Havoc Pennington  <hp@redhat.com>
13058
13059         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
13060
13061         * COPYING: include the GPL as well, and license code
13062         under both AFL and GPL.
13063
13064 2002-11-21  Havoc Pennington  <hp@redhat.com>
13065
13066         * acconfig.h: get rid of this
13067
13068         * autogen.sh (run_configure): add --no-configure option
13069
13070         * configure.in: remove AC_ARG_PROGRAM to make
13071         autoconf complain less. add AC_PREREQ.
13072         add AC_DEFINE third arg.
13073
13074 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
13075
13076         * doc/Makefile.am:
13077         Fix references so we can distcheck.
13078
13079 2002-11-21  Havoc Pennington  <hp@redhat.com>
13080
13081         * Initial module creation
13082