2006-02-16 Robert McQueen <robot101@debian.org>
[platform/upstream/dbus.git] / ChangeLog
1 2006-02-16  Robert McQueen  <robot101@debian.org>
2
3         * configure.in: Patch from Debian packages by Sjoerd Simons
4         <sjoerd@debian.org> to add --with-qt-moc and --with-qt3-moc
5         arguments so it's possible to build both bindings in the
6         same tree.
7
8         * qt/Makefile.am: Fix truncated value so that make dist works.
9
10 2006-02-16  Robert McQueen  <robot101@debian.org>
11
12         * acinclude.m4, configure.in: Patch from Brad Hards
13         <bradh@frogmouth.net> to avoid warnings from autoconf 1.9 by
14         improving quoting, re-ordering a few checks, and a few other
15         aesthetic tidy-ups.
16
17 2006-02-16  Robert McQueen  <robot101@debian.org>
18
19         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array):
20         Patch from Rob Taylor <rob.taylor@collabora.co.uk> to correct a bogus
21         assertion that the next element to read from the iter is fixed in
22         size. This is not the case when you are at the end of the iter,
23         because the next element type is INVALID.
24
25         * dbus/dbus-string.c (_dbus_string_init_const_len): Correct a
26         a bogus assert which means that you may not initialise a 0-length
27         string unless you provide a non-NULL pointer. This prevented
28         you from marshalling messages containing zero-length arrays in
29         some cases.
30
31         * glib/dbus-gvalue.c (demarshal_collection_array): Another patch
32         from Rob to correct bogus asserts when trying to demarshal an
33         array and get_fixed_array got you 0 elements. Append nothing to
34         the GArray in this case.
35
36         * test/glib/test-dbus-glib.c: Add a test case for round-tripping
37         an empty array via the glib bindings. Without all of the above
38         patches, this new test fails.
39
40 2006-02-16  Robert McQueen  <robot101@debian.org>
41
42         * glib/dbus-gmain.c: Make the previous commit compile.
43
44         * python/_dbus.py, python/matchrules.py: Patch from Ole Andre
45         Ravnaas <ole.andre.ravnaas@collabora.co.uk> to allow you to
46         specify sender_keyword="foo", path_keyword="bar" when adding
47         a signal listener, so that you can bind to signals generically
48         but still do something useful in your callback.
49
50         * python/dbus_bindings.pyx: Demarshal the byte type as unsigned
51         chars so that they're not cast to chars and made negative. Thanks
52         to Jakub Stachowski for reporting this and testing the fix.
53
54 2006-02-15  John (J5) Palmieri  <johnp@redhat.com>
55
56         * dbus/dbus-glib.h:
57         * glib/dbus-gmain.h:
58         (dbus_g_connection_open): new method for openning
59         a connection to an arbitrary address in the glib bindings
60
61         * ChangeLog: checkin last entry which doesn't seem to be commited
62
63 2006-02-13  John (J5) Palmieri  <johnp@redhat.com>
64
65         * tools/dbus-launch.c: Fixed sh syntax output
66
67 2006-02-13  Robert McQueen  <robot101@debian.org>
68
69         * glib/dbus-binding-tool-glib.c, glib/dbus-gmain.c,
70         glib/dbus-gsignature.c, glib/dbus-gtype-specialized.c,
71         glib/dbus-gtype-specialized.h, glib/dbus-gvalue-utils.c,
72         glib/dbus-gvalue-utils.h, glib/dbus-gvalue.c:
73         Patch from Rob Taylor <rob.taylor@collabora.co.uk> to add a big
74         missing piece of the glib bindings jigsaw puzzle. This modifies
75         the existing specialised types to have N type parameters (rather
76         than the current 1 or 2 for arrays and dictionaries respectively).
77         You can then use this to get a glib type to represent any arbitrary
78         D-Bus struct type using dbus_g_type_get_struct. The only
79         implementation of these types is with GValueArrays as before,
80         but it's now possible to store these in arrays, emit them in
81         signals, etc.
82
83 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
84
85         * dbus/dbus-signature.c (dbus_signature_iter_recurse): Correctly
86         deal with nested arrays (Bug #5823) Patch by Thiago Macieira 
87         <thiago.macieira at trolltech.com>
88
89 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
90
91         * mono/doc/Makefile.am: Fix parallel make problem with mono-doc
92         (Bug #4213) Patch from Doug Goldstein <cardoe at gentoo.org>
93
94 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
95
96         * bus/connection.c (bus_connections_expect_reply): Make
97         pending reply limit not common to all connections (Bug #5416)
98         Patch from Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>
99
100 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
101
102         * tools/dbus-launch.c: Fixed csh syntax output (Bug #5720)
103
104 2006-02-10  John (J5) Palmieri  <johnp@redhat.com>
105
106         * gcj/Makefile.am: point to correct jar command (Bug #4529)
107         patch from Doug Goldstein <cardoe at gentoo.org>
108
109 2006-02-09  Joe Shaw  <joeshaw@novell.com>
110
111         * mono/Arguments.cs: Fix a magic number in the mono bindings
112         that doesn't work on 64 bit arches.  Patch from Peter Johanson.
113
114 2006-01-27  Robert McQueen  <robot101@debian.org>
115
116         * glib/dbus-binding-tool-glib.[ch]: Patch based on Ricardo Kekki's
117         patch to use an annotation org.freedesktop.DBus.GLib.ClientCSymbol
118         when generating the client-side methods, instead of overloading
119         CSymbol which broke everything horribly. My apologies.
120
121 2006-01-27  Robert McQueen  <robot101@debian.org>
122
123         * glib/dbus-gtype-specialized.[ch], glib/dbus-gvalue-utils.c: Patch
124         by me and Rob Taylor to add a simple_free function to D-Bus map
125         and collection types, which allows those types which can be freed
126         with a GDestroyNotify (such as GHashTables and GArrays, but not
127         GPtrArrays) to be stored as the values in hashtables.
128
129         * test/glib/test-dbus-glib.c, test/glib/test-service-glib.{c,xml}:
130         Patch by Rob Taylor to add nested dicts to the glib tests to check
131         the above code works, and appears not to leak when called repeatedly.
132
133 2006-01-27  Robert McQueen  <robot101@debian.org>
134
135         * glib/dbus-gvalue.c (demarshal_valuearray): Patch from Rob Taylor
136         to free a D-Bus allocated string with dbus_free () instead of
137         g_free ().
138
139 2006-01-27  Iain Holmes  <iain@openedhand.com>
140
141         * glib/dbus-gproxy.c (dbus_g_proxy_dispose): Protect the dispose
142         method from being called multiple times.
143
144 2006-01-19  Robert McQueen  <robot101@debian.org>
145
146         * glib/dbus-binding-tool-glib.c: Patch from Rob Taylor
147         <rob.taylor@collabora.co.uk> to add support for generating bindings
148         to arrays that are represented as GPtrArrays rather than GArrays (ie
149         size-variable things, such as strings, objects, structs, etc).
150
151 2006-01-05  Robert McQueen  <robot101@debian.org>
152
153         * dbus/dbus-glib.h, glib/dbus-gproxy.c: Patch from Ricardo Kekki
154         <ricardo.kekki@movial.fi> to make it possible to inherit from
155         DBusGProxy, by splitting the DBusGProxy struct into a public part and
156         a private part, and moving the setting of the DBusGProxyManager into a
157         connection property, allowing proper GObject construction.
158
159 2006-01-05  Robert McQueen  <robot101@debian.org>
160
161         * glib/dbus-binding-tool-glib.c: Patch from Ricardo Kekki
162         <ricardo.kekki@movial.fi> to make dbus-binding-tool heed C symbol name
163         annotations when generating glib client bindings.
164
165 2005-12-19 John (J5) Palmieri  <johnp@redhat.com>
166
167         * dbus/dbus-shared.h: Call it shared constants instead of shared macros
168
169         * dbus/dbus-protocol.h: add DOxygen markup to quiet warnings
170
171 2005-12-19 John (J5) Palmieri  <johnp@redhat.com>
172
173         * dbus/dbus-shared.h: add DOxygen markup to quiet warnings
174
175 2005-12-19 John (J5) Palmieri  <johnp@redhat.com> 
176
177         * dbus/dbus-macros.h: correct DOxygen end of section (s/}@/@})
178
179 2005-12-19  Ross Burton  <ross@openedhand.com>
180
181         * doc/dbus-tutorial.xml:
182         Document the Glib client-side bindings, and list all possible annotations.
183
184 2005-12-19  John (J5) Palmieri  <johnp@redhat.com>
185
186         * dbus/bus.c (dbus_bus_release_name): Add documentation
187
188 2005-12-06  Robert McQueen  <robot101@debian.org>
189
190         * python/service.py: s/sucessful/successful/ so we're allocating to
191         and reading from the same variable. Oops.
192
193 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
194
195         * Released 0.60
196
197 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
198
199         * test/qt/Makefile.am: build from srcdir
200
201         * qt/qtconnection.cpp (requestName): Changed PROHIBIT_REPLACE to ALLOW_REPLACE
202         Note - this code is wrong and needs to be fixed by the Qt binding
203         developers.  The flags should be treated as bitfields and not enums.
204
205         * qt/qtconnection.h: Change ProhibitReplace to AllowReplace
206
207 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
208
209         * dbus/dbus-list.c (_dbus_list_insert_after_link, _dbus_list_insert_after, 
210           link_after): remove #ifdef DBUS_BUILD_TESTS since we use these methods 
211           in production code
212
213 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
214
215         * dbus/dbus-connection.c (dbus_connection_read_write): Add new
216         method for getting messages off the bus in the absence of a
217         mainloop.  This method is much like 
218         dbus_connection_read_write_dispatch except it does not dispatch
219         the messages to a registered filter function.  Instead it
220         allows a developer to process messages by directly popping
221         them off the bus.
222
223 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
224
225         * bus/desktop-file.c (parse_key_value): Ignore locales allowing 
226         the parser to continue instead of returning error
227         (bus_desktop_file_load): Do not free parser data when
228         parse_section_start or parse_key_value fails because it was 
229         already freed by parser_free (patch from Carlos Garcia Campos  
230         <carlosgc at gnome.org>)
231
232 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
233
234         * dbus/dbus-auth.c, dbus/dbus-connection.c, dbus/dbus-keyring.c,
235         dbus/dbus-server-debug-pipe.c, glib/dbus-binding-tool-glib.c
236         glib/dbus-glib-tool.c, glib/dbus-gparser.c, glib/dbus-gproxy.c
237         test/test-segfault.c, test/test-utils.c,
238         test/glib/test-dbus-glib.c, tools/dbus-cleanup-sockets.c
239         tools/dbus-launch.c, tools/dbus-tree-view.c, tools/dbus-viewer.c:
240         Various cleanup of dead code and compiler warnings (patch from
241         Kjartan Maraas <kmaraas at gnome.org>) 
242
243 2005-11-30  John (J5) Palmieri  <johnp@redhat.com>
244
245         * glib/dbus-gmain.c (connection_setup_add_watch): plugged a leak
246         (patch from Carlos Garnacho Parro <carlosg at gnome.org>
247
248 2005-11-27  Robert McQueen  <robot101@debian.org>
249
250         * python/dbus_bindings.pyx: Repair my previous commit which reverted
251         part of the preceding one. Oops. Merge patch by Johan Hedberg
252         <johan.hedberg@nokia.com> to fix marshalling of 16-bit integer values
253         on big-endian platforms.
254
255         * test/python/test-client.py: Add some 16-bit integers to the test
256         values.
257
258 2005-11-27  Carlos Garcia Campos  <carlosgc@gnome.org>
259
260         * glib/dbus-gobject.c: Append a GValue instead of a basic type in
261         method return message for property getters
262
263 2005-11-27  Robert McQueen  <robot101@debian.org>
264
265         * python/dbus_bindings.pyx: Fix a bug where doing a strict append
266         with type v of an instance of dbus.Variant(foo, type='x') caused
267         it to be boxed twice before sending over the bus.
268
269         * python/dbus_bindings.pyx, python/service.py,
270         test/python/test-client.py: Update the constants for the new
271         request_name flags, and update comments/test cases now that queueing
272         is the default action.
273
274 2005-11-22  John (J5) Palmieri  <johnp@redhat.com>
275
276         * configure.in:
277         - Change version to 0.60 for impending release
278         - upped the sonames because of ABI and API breakage
279
280 2005-11-22  John (J5) Palmieri  <johnp@redhat.com>
281
282         * configure.in: Add test/name-test/Makefile to the generated
283         Makefile list
284
285         * dbus/dbus-shared.h (#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT):
286         New flag which replaces DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT
287         (#define DBUS_NAME_FLAG_DO_NOT_QUEUE): New flag for specifying
288         not to queue an ower if it can't be the primary owner
289
290         * bus/bus.h: Add new internal BusOwner struct
291
292         * bus/driver.c (bus_driver_handle_hello): Send flags (0 for default)
293         to bus_registry_ensure and don't set the prohibit_replacement flag
294         since they are now set per BusOwner and not per name.
295         (bus_driver_handle_list_queued_owners): bus method (ListQueuedOwners) 
296         that returns the list of connections in a name's connection queue
297         
298         * bus/services.c (struct BusService): remove prohibit_replacement field
299         (struct BusOwner): new struct for keeping track of queued connections
300         and their associated flags for the queue
301         (struct BusRegistry): add a BusOwner memory pool
302         (bus_registry_new): initialize the BusOwner memory pool
303         (bus_registry_unref): free the BusOwner memory pool
304         (_bus_service_find_owner_link): new internal method for
305         searching the queue for a specific connection
306         (bus_owner_set_flags): new method for adding setting the flags on a
307         bus owner
308         (bus_owner_new): new method that creates a BusOwner object from the
309         pool and sets its flags
310         (bus_owner_ref, bus_owner_unref): ref counting for BusOwner objects
311         (bus_registry_ensure): Add the flags parameter
312         (bus_registry_acquire_service): Switch from using raw connections to
313         using the BusOwner struct
314         Add new state machine for dealing with the new set of flags
315         (bus_registry_set_service_context_table, struct OwnershipCancelData, 
316         cancel_ownership, free_ownership_cancel_data, 
317         add_cancel_ownership_to_transaction, struct OwnershipRestoreData, 
318         restore_ownership, free_ownership_restore_data, 
319         add_restore_ownership_to_transaction): Switch to using BusOwner 
320         instead of raw connections
321         (bus_service_add_owner): Add flags parameter
322         Switch to using BusOwner instead of raw connections
323         Add state machine for dealing with the new set of flags
324         (bus_service_swap_owner): Swaps the first and second owners in the
325         queue.  Used to make sure proper signals are sent when a service looses 
326         or gains primary ownership.  We never insert an owner at the top of the
327         queue.  Instead we insert it in the second position and then swap.
328         (bus_service_remove_owner): Remove the owner from the queue sending
329         out the NameLost and NameOwnerChanged signals if the we were the 
330         primary owner
331         (bus_service_get_primary_owners_connection): New method that extracts
332         the connection from the primary owner
333         (bus_service_get_primary_owner): Returns the BusOwner instead of the 
334         connection
335         (bus_service_get_allow_replacement): Changed from the old 
336         bus_service_get_prohibit_replacement method.  Checks the flags of the 
337         primary owner and returns if it can be replaced or not
338         (bus_service_set_prohibit_replacement): removed
339         (bus_service_has_owner): returns TRUE if and owner with
340         the specified connection exists in the queue
341         
342         * dbus/dbus-bus.c (dbus_bus_connection_get_unique_name): New helper
343         method that only compiles if tests are enabled.  Allows us to get the 
344         unique name of a connection so we can check it against the queue when
345         doing regression tests
346
347         * bus/activation.c (bus_activation_send_pending_auto_activate),
348         bus/dispatch.c (bus_dispatch),  
349         bus/driver.c (bus_driver_handle_get_service_owner, 
350         bus_driver_handle_get_connection_unix_user, 
351         bus_driver_handle_get_connection_unix_process_id,
352         bus_driver_handle_get_connection_selinux_security_context),
353         bus/signals.c (connection_is_primary_owner): 
354         use bus_service_get_primary_owners_connection instead of
355         bus_service_get_primary_owner
356
357         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket, 
358         _dbus_listen_unix_socket): Calculate the length of the socket
359         path and use that instead of using a fixed length which was
360         causing socket names to contain many trailing Nul bytes.
361
362         * dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c
363         (dbus_g_method_get_sender): New method for extracting the sender 
364         from a DBusGMethodInvocation
365         (dbus_g_method_return_get_reply): changed name to 
366         dbus_g_method_get_reply
367         (dbus_g_method_return_send_reply): changed name to
368         dbus_g_method_send reply
369
370         * doc/dbus-specification.xml: New docs that describe how the new
371         queueing system works and talks about the changes to the how
372         we specify socket names
373
374         * glib/examples/example-service.c, 
375         glib/examples/example-signal-emitter.c,
376         glib/examples/statemachine/statemachine-server.c:
377         Changed the RequestName flags to the new system
378
379         * test/name-test/ (test-names.c, run-test.sh, Makefile.am): New
380         regression test suite for testing various states of the new
381         queueing system
382         
383 2005-11-15  Robert McQueen  <robot101@debian.org>
384
385         * dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c: Patch from Rob
386         Taylor to add two methods, dbus_g_method_return_get_reply and
387         dbus_g_method_return_send_reply, to allow you to get the reply
388         message from a DBusGMethodInvocation, append arbitrary stuff to it,
389         and send it. The GLib bindings can't marshal a return value of
390         something like a(s) if the array is empty - ultimately they should be
391         made to heed the signature of the out arguments as the Python bindings
392         now can, but this is a workable interim solution which might have
393         other applications.
394
395 2005-11-15  Robert McQueen  <robot101@debian.org>
396
397         * bus/driver.c, bus/services.c, bus/services.h: Add a ReleaseName
398         method to org.freedesktop.DBus to release a bus name or give up
399         waiting in the queue for it.
400
401         * dbus/dbus-bus.c, dbus/dbus-bus.h, dbus/dbus-shared.h: Add a
402         dbus_bus_release_name method to send the ReleaseName method calls.
403         Add constants for the return values to dbus/dbus-shared.h.
404
405         * doc/dbus-specification.xml: Document the new ReleaseName method
406         in the specification.
407
408         * python/dbus_bindings.pyx: Add a low-level python binding for the
409         release name method.
410
411         * python/exceptions.py, python/service.py: Make freeing BusName
412         objects release the name. Add a NameExistsException, and fix a
413         bug with creating UnknownMethodException.
414
415         * test/python/test-client.py: Add tests for freeing BusName
416         objects causing names to be released.
417
418 2005-11-14  Robert McQueen  <robot101@debian.org>
419
420         * python/service.py: Include the traceback in the error reply when we
421         send an exception over the bus. _BEST_ _PATCH_ _EVER_
422
423 2005-11-14  David Zeuthen  <davidz@redhat.com>
424
425         Patch from Timo Hoenig <thoenig@suse.de>.
426
427         * bus/bus.c: I've recently investigated why the automatic reload
428         of configuration files does not work as expected.
429
430         Currently, reloading configuration files does only work when
431         running dbus-daemon with --nodaemon.  If we are running as daemon
432         we're hitting a dnotify bug once we fork the process.
433
434         We're initializing the dnotify fds before calling fork().  Once
435         the child process forked it does still have the fds (and they
436         still show up in /proc/`pidof dbus-daemon`/fd/) but we're not
437         getting SIGIO as changes are made to the configuration files.
438
439         The attached patch moves the initialization of the dnotify fds to
440         process_config_postinit().  This is safe for all current code
441         paths and solves the dnotify disfunction.  If we're running
442         dbus-daemon as daemon the fds for dnotify are now being
443         initialized after fork() for the child process.
444
445         * configure.in: The current configure.in check for dnotify probes
446         'x$target_os' for being 'xlinux-gnu'.  I've changed the check to
447         match for 'xlinux', too. Additionally I have adapted the configure
448         option's style to match with the others.
449
450 2005-11-14  Robert McQueen  <robot101@debian.org>
451
452         * python/decorators.py, python/service.py: Add a new argument to the
453         dbus.service.method decorator called sender_keyword, which if set,
454         specifies the name of an argument which will be provided the bus
455         name of the method caller.
456
457         * test/python/test-client.py, test/python/test-service.py: Add a
458         method and test to check the sender_keyword functionality.
459
460 2005-11-07  John (J5) Palmieri  <johnp@redhat.com>
461
462         * bus/driver.c (bus_driver_handle_reload_config): Make sure we send an 
463         empty reply so blocking calls don't block forever (Patch from Sjoerd 
464         Simons <sjoerd at luon.net>)
465
466         * AUTHORS: Add Robert McQueen for his work on the Python
467         Bindings and other parts of D-Bus
468
469 2005-11-07  Robert McQueen  <robot101@debian.org>
470
471         * python/decorators.py: Change emit_signal function to use the
472         signature annotation of the signal when marhsalling the arguments from
473         the service. Fix a bug where the code checking signature length
474         against argument length referenced the wrong variable.
475
476         * python/introspect_parser.py: Avoid adding the type signature of
477         signal arguments to any methods which occur after them in the
478         introspection data (!) by making the parser a little more careful
479         about its current state.
480
481         * python/service.py: Remove debug prints from last commit (again :D).
482
483         * test/python/test-client.py, test/python/test-service.py: Add test
484         signals with signature decorators to test the strict marshalling code
485         gives errors at the right time. Could do with checking the signals
486         actually get emitted too, given that the test does nothing with
487         signals at the moment...
488
489 2005-11-07  Robert McQueen  <robot101@debian.org>
490
491         * python/_dbus.py: Add WeakReferenceDictionary cache of dbus.Bus
492         instances to stop madness of creating new instances representing
493         the same bus connection all the time, rendering any tracking of
494         match rules and bus names quite meaningless. Caught a bug where
495         the private argument to SessionBus() and friends was being passed
496         in as use_default_mainloop by mistake. Still some problems with
497         multiple dbus_binding.Connection instances representing the same
498         low-level connection (eg when you use both SessionBus() and
499         StarterBus() in same process), but it's a lot better now than it
500         was.
501
502         * python/dbus_bindings.pyx: Add constants with the return values
503         for bus_request_name().
504
505         * python/service.py: Store bus name instances in a per-dbus.Bus cache
506         and retrieve the same instances for the same name, so deletion can be
507         done with refcounting. Also now throws some kind of error if you
508         don't actually get the name you requested, unlike previously...
509
510         * test/python/test-client.py: Add tests for instance caching of buses
511         and bus name objects.
512
513 2005-11-04  Robert McQueen  <robot101@debian.org>
514
515         * python/dbus_bindings.pyx, test/python/test-client.py: Fix
516         marshalling of boolean values. Add some booleans to the values in
517         the test client.
518
519         * python/decorators.py, python/service.py: Add an 'async_callbacks'
520         argument to the dbus.service.method decorator, which allows you to
521         name arguments to take two callback functions for replying with
522         return values or an exception.
523
524         * test/python/test-client.py, test/python/test-service.py: Add test
525         case using asynchronous method reply functions, both return values and
526         errors, and from within both the function itself and from a mainloop
527         callback.
528
529         * python/decorators.py, python/service.py: Perform checking that the
530         number of method/signal arguments matches the number of types in the
531         signature at class loading time, not when you first introspect the
532         class.
533
534         * python/service.py: Remove debug print left by the last commit.
535
536 2005-11-03  Robert McQueen  <robot101@debian.org>
537
538         * python/service.py: Heavy refactoring of method invocation, with
539         hopefully no effect on functionality. Nuked _dispatch_dbus_method_call
540         in favour of a new _message_cb that uses seperate functions for
541         looking up the method to call, marshalling the return values, and
542         sending exceptions as errors, and is easier to follow as a
543         consequence.  Fixes some corner cases about returning things that
544         don't match your declared out_signature, allows exceptions to define
545         _dbus_error_name and have it be sent over the bus as the error name,
546         and paves the way for cool stuff like heeding the message no reply
547         flag, asynchronous method implementations, informing the method of the
548         sender, and including backtraces in the error messages.
549
550         * test/python/test-client.py: Catch and print exceptions thrown in the
551         async callback tests, rather than passing them to the low-level
552         bindings to be ignored in a noisy and frustrating manner.
553
554 2005-11-03  Robert McQueen  <robot101@debian.org>
555
556         * python/_dbus.py, python/proxies.py, python/service.py: Add __repr__
557         functions to dbus.Bus, dbus.service.BusName and dbus.service.Object,
558         tweak others to be consistent.
559
560         * test/python/test-client.py: Tweak output of testInheritance.
561
562 2005-10-29  Robert McQueen  <robot101@debian.org>
563
564         * python/service.py: Major changes to allow multiple inheritance
565         from classes that define D-Bus interfaces:
566         
567          1. Create a new Interface class which is the parent class of
568             Object, and make the ObjectType metaclass into InterfaceType.
569         
570          2. Patch written with Rob Taylor to replace use of method_vtable
571             with code that walks the class's __MRO__ (method resolution order)
572             to behave like Python does when invoking methods and allow
573             overriding as you'd expect. Code is quite tricky because
574             we have to find two methods, the one to invoke which has the
575             right name and isn't decorated with the /wrong/ interface,
576             and the one to pick up the signatures from which is decorated
577             with the right interface.
578         
579             The same caveats apply as to normal multiple inheritance -
580             this has undefined behaviour if you try and inherit from two
581             classes that define a method with the same name but are
582             decorated with different interfaces. You should decorate
583             your overriding method with the interface you want.
584         
585          3. Replace grungy introspection XML generation code in the metaclass
586             with dictionaries that cope correctly with multiple inheritance
587             and the overriding of methods. This also uses the signature
588             decorations to provide correct introspection data, including
589             the debut appearance of the types of your return values. :D
590
591         * test/python/test-client.py, test/python/test-service.py: Add a test
592         case to try invoking an method that overrides one inherited from a
593         D-Bus interface class.
594
595 2005-10-29  Robert McQueen  <robot101@debian.org>
596
597         * python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert().
598         Add checking for the end of struct character when marshalling a
599         struct in MessageIter.append_strict.
600
601         * python/examples/example-service.py,
602         python/examples/gconf-proxy-service.py,
603         python/examples/gconf-proxy-service2.py: Update to use gobject
604         mainloop directly rather than appearing to depend on gtk.
605
606         * python/test/test-client.py, python/test/test-server.py: Remove
607         obsolete and broken test scripts for old bindings. We have up to date
608         and working tests in test/python/.
609
610 2005-10-29  Robert McQueen  <robot101@debian.org>
611
612         * python/decorators.py: Add optional arguments to the method and
613         signal decorators to allow you to specify the signature of arguments
614         and return values. Preserve the doc strings of signal functions in the
615         decorated version, for pydoc and friends.
616
617         * python/dbus_bindings.pyx, python/proxies.py: Replace the
618         parse_signature_block function with an iterable dbus.Signature()
619         type. Fix a bug in MessageIter.append_strict where you could append
620         anything by claiming it was a string.
621
622         * python/service.py: Use the out_signature decoration on methods to
623         marshal return values, meaning you no longer require dbus.Array()
624         or dbus.Dictionary() to indicate the type when returning empty
625         arrays or dictionaries. Fix a bug where exceptions which are defined
626         in __main__ are not turned into error replies.
627
628         * test/python/test-client.py, test/python/test-service.py: Add test
629         for correct marshalling of return values according to out_signature.
630         Fix a bug in the async call test where the error_handler is missing a
631         self argument.
632
633 2005-10-29  Robert McQueen  <robot101@debian.org>
634
635         * glib/Makefile.am, glib/examples/Makefile.am,
636         glib/examples/statemachine/Makefile.am: Merge patch from Ubuntu by
637         Daniel Stone to replace explicit calls to libtool with $(LIBTOOL).
638
639         * test/python/.cvsignore: Add run-with-tmp-session-bus.conf.
640
641         * tools/dbus-monitor.1, tools/dbus-monitor.c: Merge dbus-monitor patch
642         from Ubuntu by Daniel Silverstone to allow specifying match rules on
643         the command line.
644
645 2005-10-27  Ross Burton  <ross@openedhand.com>
646
647         * dbus/dbus-marshal-header.c:
648         Remove dead code.
649
650         * glib/dbus-gobject.c:
651         Stop compiler warning.
652
653 2005-10-25  Ross Burton  <ross@openedhand.com>
654
655         * dbus/dbus-auth.c:
656         * dbus/dbus-server-unix.c:
657         * dbus/dbus-transport-unix.c:
658         * glib/dbus-gmain.c:
659         * glib/dbus-gobject.c:
660         Add some const keywords.
661
662 2005-10-25  Ross Burton  <ross@openedhand.com>
663
664         * doc/dbus-specification.xml:
665         Document the NoReply annotation.
666
667         * glib/dbus-binding-tool-glib.h:
668         * glib/dbus-binding-tool-glib.c:
669         Respect the NoReply annotation.
670
671 2005-10-24  Robert McQueen <robot101@debian.org>
672
673         * python/dbus_bindings.pyx (String, MessageIter): make D-Bus strings
674         derive from unicode instead of str, and encode/decode UTF-8 when
675         marshalling/unmarshalling bus messages
676
677         * python/introspect_parser.py: encode introspection data as UTF-8
678         before passing the buffer into libxml2
679
680         * test/python/test-client.py: add unicode test strings
681
682         * test/data/valid-service-files/.cvsignore, test/python/.cvsignore:
683         ignore generated python test files
684
685 2005-10-17  John (J5) Palmieri  <johnp@redhat.com>
686
687         * glib/dbus-gvalue-utils.c (hash_free_from_gtype): handle gdouble
688         and G_TYPE_VALUE_ARRAY (DBUS_TYPE_STRUCT)
689         (gvalue_from_hash_value, hash_value_from_gvalue): handle gdouble
690
691         * glib/dbus-gvalue.c (dbus_gvalue_to_signature): add missing
692         DBUS_STRUCT_BEGIN_CHAR and DBUS_STRUCT_END_CHAR charaters
693         when constructing struct signatures
694
695         * python/_dbus.py (Bus): handle private connections using the
696         private keyword in the constructor. defaults to private=False
697         (Bus::close): new method to close a connection to the bus
698
699         * python/dbus_bindings.pyx (Connection::close): renamed method
700         was previously called disconnect
701         (bus_get): now supports getting a private connection
702
703         * python/proxies.py (ProxyMethod::__call__): check if ignore_reply
704         keyword is set to True.  if it is, execute the method without waiting
705         for a reply
706         (ProxyObject::_introspect_execute_queue): new method for executing
707         all the pending methods that were waiting for the introspect to
708         finish.  this is called when introspect either succeeds or fails
709         (ProxyObject::_introspect_error_handler): call queued methods
710
711 2005-10-14  John (J5) Palmieri  <johnp@redhat.com>
712
713         * python/dbus_bindings.pyx (MessageIter::append_strict): check for
714         STRUCT_BEGIN not TYPE_STRUCT in indicate we are marshalling a struct
715
716         * python/service.py (Object::_message_cb): handle exceptions correctly
717         by sending them over the wire to the calling app.  This makes sure
718         the client returns immediately instead of waiting the 15 seconds to
719         timeout.
720
721         * test/python/test-client.py (TestDBusBindings::testBenchmarkIntrospect): 
722         Add a test to benchmark how long it takes to introspect a service and 
723         call a method which returns a large element (pretty fast)
724
725         * test/python/test-service.py (TestObject::GetComplexArray): new test 
726         method which pushes a lot of data
727
728 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
729
730         * python/service.py(ObjectType::_reflect_on_signal, _reflect_on_method):        
731         reclaim memory outside of the loop and use del istead of just setting
732         the key to None
733
734 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
735
736         * python/service.py (ObjectType::_reflect_on_signal): Always close
737         signal tag even when there are no arguments
738
739 2005-10-13  John (J5) Palmieri  <johnp@redhat.com>
740
741         * configure.in: Set mono, mono-docs and Qt3 to default
742         to no instead of auto when building.  These bindings do not
743         have full time maintainers and will not be supported for the
744         1.0 release.
745
746 2005-10-12  John (J5) Palmieri  <johnp@redhat.com>
747
748         patches from Michael Krivoruchko <misha at sun.com>: 
749         
750         * dbus/dbus-connection.c (_dbus_connection_queue_received_message_link,
751         _dbus_connection_message_sent, 
752         _dbus_connection_send_preallocated_unlocked_no_update, 
753         _dbus_connection_pop_message_link_unlocked): handle the case when path 
754         is NULL when calling _dbus_verbose
755
756         * configure.in: check for functions getpeerucred and getpeereid
757
758         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): provides 
759         support of auth EXTERNAL on Solaris 10+ (getpeerucred), FreeBSD 4.6+, 
760         OpenBSD 3.0+ and FreeBSD 5.0+ as well as MacOSX 10.2+ (getpeereid). 
761         Patch was only tested on Solaris 10 x86 so it might be issues
762         with other platforms (i.e. BSDs and MacOSX)
763         
764
765 2005-10-05  John (J5) Palmieri  <johnp@redhat.com>
766
767         * glib/dbus-gvalue.c (marshal_variant): call _dbus_gvalue_marshal 
768         instead of marshal basic so we can handle recursive types in a variant
769
770         * test/glib/test-dbus-glib.c: Add test for marshaling recurive types
771         in variants
772
773         * test/glib/test-service-glib.c, test-service-glib.xml
774         (my_object_echo_variant [EchoVariant], 
775         my_object_process_variant_of_array_of_ints123
776         [ProcessVariantOfArrayOfInts123]): 
777         Add two test methods
778
779         * python/introspect_parser.py: New module for parsing introspect
780         data.
781
782         * python/dbus_bindings.pyx:
783         (various places): when throwing errors fix to use errormsg instead 
784         of message local variable because Pyrex can get confused with other 
785         message variables (initial patch by Robert McQueen 
786         <robert.mcqueen at collabora.co.uk>)
787         (MessageIter::parse_signature_block): new method for getting the next
788         block in a signiture.
789         (MessageIter::append_strict): new method for appending values strictly
790         using the passed in signature instead of guessing at the type
791         (MessageItter:: append_dict, append_struct, append_array): use 
792         signatures to marshal children if the signature is available
793         
794         * python/exceptions.py (IntrospectionParserException): new exception
795
796         * python/proxies.py (ProxyMethod::__call__): Marshal args with 
797         introspected signatures if available, else we fall back to the
798         old way of doing things.
799         (ProxyObject::_introspect_reply_handler ): parse introspection data
800         
801         * python/service.py (ObjectType::_reflect_on_method): Properly
802         terminate <method> if there are no args in the reflection data
803
804         * test/python/test-client.py: add tests for talking with the GLib
805         test server.  This gives us better coverage for introspection since
806         python to python will always generate arguments as variants.  It also
807         allows us to test the robustness of the GLib bindings and interlanguage
808         communications.
809
810         
811 2005-10-03  John (J5) Palmieri  <johnp@redhat.com>
812
813         * bus/driver.c (bus_driver_handle_introspect): Add signals
814         to the introspect data. (patch from Daniel P. Berrange 
815         <dan at berrange.com>)
816
817         * bus/dispatch.c (check_existent_ping): Add testcase for Ping
818         
819         * dbus/dbus-connection.c (_dbus_connection_peer_filter,
820         _dbus_connection_run_builtin_filters): Changed these to
821         be unlock_no_update functions and call 
822         _dbus_connection_send_unlocked_no_update instead of
823         dbus_connection_send to avoid locking errors.
824         
825         * doc/TODO: Removed the make Ping test TODO
826         
827 2005-09-26  John (J5) Palmieri  <johnp@redhat.com>
828
829         * dbus/Python.pyx: Fixed memory leaks when throwing errors.
830         We now copy the message from a DBusError and then free 
831         the error object befor throwing the error
832
833         * glib/dbus-glib-tool.c: removed extra comma at the end of the
834         DBusBindingOutputMode enum which was causing a warning.
835         #include <time.h> so using time_t is explicitly defined
836
837 2005-09-26  John (J5) Palmieri  <johnp@redhat.com>
838
839         * Integrate patches from Lennart Poettering <mzsqb at 0pointer.de>:
840         - dbus/dbus-bus.c
841         (internal_bus_get): new method that take over the heavy lifting
842         of dbus_bus_get and adds the ability to get a private connection
843         to the bus
844         (dbus_bus_get): wrapper to internal_bus_get that provides the same
845         interface as in previous versions
846         (dbus_bus_get_private): new method that is a wrapper to 
847         internal_bus_get to get a private connection to the bus
848
849         - dbus/dbus-bus.h
850         (dbus_bus_get_private): add as a public libdbus interface
851
852         - dbus-1.pc.in: output system_bus_default_address and 
853         sysconfdir variables so apps can use them when compiling
854
855 2005-09-23  Harald Fernengel  <harry@kdevelop.org>
856         * dbus/qt: New Qt bindings
857
858 2005-09-12  Waldo Bastian  <bastian@kde.org>
859
860         * dbus/dbus-marshal-validate.c,
861         doc/dbus-specification.xml, test/Makefile.am,
862         test/test-names.c: allow hyphens in bus names.
863
864 2005-09-11  Mark McLoughlin  <mark@skynet.ie>
865
866         * test/data/auth/fallback.auth-script: we don't
867         retry the EXTERNAL method when we know its going
868         to fail anymore.
869
870 2005-09-11  Mark McLoughlin  <mark@skynet.ie>
871
872         * dbus/dbus-connection-internal.h: rename
873         (add|remove|toggle)_(watch|timeout) to unlocked()
874         
875         * dbus/dbus-connection.c: ditto.
876         
877         * dbus/dbus-timeout.c, dbus/dbus-transport-unix.c:
878         Update some callers for the renaming.
879
880 2005-09-10  Mark McLoughlin  <mark@skynet.ie>
881
882         * dbus/dbus-auth.c: (record_mechanisms): don't
883         retry the first auth mechanism because we know
884         we're just going to get rejected again.
885         
886         * dbus/dbus-keyring.c: (_dbus_keyring_reload):
887         Fix thinko ... and what a nasty little bugger to
888         track down you were ...
889
890         * dbus/dbus-connection.c:
891         (_dbus_connection_add_watch),
892         (_dbus_connection_remove_watch): add note about
893         these needing the connection to be locked.
894         (_dbus_connection_get_dispatch_status_unlocked):
895         set status to DATA_REMAINS when we queue the
896         disconnected message.
897         
898         * bus/dispatch.c:
899         (bus_dispatch): fix warning.
900         (check_existent_service_no_auto_start):
901         Expect ChildSignaled error too.
902         (check_existent_hello_from_self): fix another
903         couple of warnings.
904         
905 2005-09-08  Joe Shaw  <joeshaw@novell.com>
906
907         Patches from James Willcox <snorp@snorp.net>
908
909         * mono/Makefile.am: Add Int16.cs and UInt16.cs
910
911         * mono/DBusType/Array.cs: Handle multidimensional arrays, and
912         support array "out" parameters.
913
914         * mono/DBusType/Int16.cs, mono/DBusType/UInt16.cs: New files,
915         for 16-bit int support.
916
917 2005-09-06  John (J5) Palmieri  <johnp@redhat.com>
918
919         * Released 0.50
920
921         * Patch from Steve Grubb:
922         - bus/activation.c (bus_activation_service_reload_test): clean up
923         some indentation
924         - dbus/dbus-keyring.c (_dbus_keyring_reload): fix conditional 
925         - dbus/dbus-message-factory.c (generate_special): fix a couple of
926         buffer overflows in the test suite.  This is non critical because
927         it can not be exploited and this code is only run when doing a 
928         make check.
929
930         * Patch from Yaakov Selkowitz: Build fixes for Cygwin
931         - configure.in: Don't check and link against kdecore, only qt headers
932         - dbus/Makefile.am: Add -no-undefined to libdbus_1_la_LDFLAGS
933         - gcj/org/freedesktop/dbus/Makefile.am:
934         add libdbus_gcj_1_la_LDFLAGS = -no-undefined
935         - glib/Makefile.am: Add -no-undefined to libdbus_glib_1_la_LDFLAGS
936         and $(DBUS_GLIB_LIBS) to dbus_binding_tool_LDADD
937         - qt/Makefile.am: Add -no-undefined to libdbus_qt_1_la_LDFLAGS
938         - tools/Makefile.am: Add platform extentions to binaries 
939         (i.e. .exe on windows)
940
941         * configure.in: 
942         - Make it so if no suitable version of python is found we only 
943         disable building python instead of exiting the configure script
944         - Require version 2.4 of glib for glib bindings
945         - Up version to 0.50
946
947         * python/__init__.py: Sync version with libdbus to (0,50,0)
948         
949 2005-09-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
950
951         * dbus/dbus-object-tree.c (find_subtree_recurse):
952         a couple of optimizations (bug #710):
953         - do a binary search in the tree
954         - insert a new child at the right place directly, no need for
955           qsort anymore
956         - do the "double alloc" thing when allocating children
957
958 2005-08-31  John (J5) Palmieri  <johnp@redhat.com>
959
960         * python/Makefile.am: Break on pyrexc errors instead of ignoring them
961
962         * python/dbus_bindings.pyx: Memory management foo
963         (global): remove hacky _user_data_references global list
964         (GIL_safe_cunregister_function_handler): userdata now stuffed into
965         tuples. Unref user_data
966         (GIL_safe_cmessage_function_handler): userdata now stuffed into tuples
967         (Connection::__del__): Remove and replace with __dealloc__ method
968         (Connection::add_filter): Stuff user_data into a tuple.  Use Py_INCREF
969         to keep tuple from being deallocated instead of the global var hack
970         (Connection::register_object_path): Stuff user_data into a tuple.
971         Use Py_INCREF to keep tuple from being deallocated instead of the 
972         global var hack
973         (Connection::register_fallback): Stuff user_data into a tuple.
974         Use Py_INCREF to keep tuple from being deallocated instead of the 
975         global var hack
976         (GIL_safe_pending_call_notification): Don't unref the message
977         because it gets unreffed when going out of scope.  Py_XDECREF
978         the user_data
979         (PendingCall::__del__): Remove and replace with __dealloc__ method
980         (PendingCall::set_notify): ref the pending call because we will
981         need it to stick around for when the notify callback gets called
982         (Message::__del__): Remove and replace with __dealloc__ method
983
984         * python/dbus_glib_bindings.pyx (init_gthreads): Changed to 
985         gthreads_init to match up with the dbus call
986
987         * python/glib.py (init_threads): Changed to threads_init to match
988         up with gobject.threads_init().  init_threads is kept for backwards
989         compat but will most likely be deprecated in the future
990
991         * test/python/test-client.py: 
992         - revamp to use Python's unittest functionality
993         - add async call tests
994         - setup threads in glib and dbus so we make sure locks are working
995         
996 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
997
998         * python/dbus_bindings.pyx 
999         (_pending_call_notification, cunregister_function_handler, 
1000         cmessage_function_handler): All callback functions have been rearranged 
1001         to workaround a bug in Pyrex when working with the GIL which is Python's 
1002         global lock when dealing with threads.  They have been split into
1003         a wrapper function (which assumes the name of the old function) and
1004         a _GIL_safe_<function name> function which contains the functionality
1005         of the old function.  This ensures that Pyrex does not write code
1006         the lock is released.
1007         
1008
1009 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
1010
1011         * python/dbus_bindings.pyx (_pending_call_notification): Obtain the
1012         GIL global lock when calling back into Python
1013
1014 2005-08-29  John (J5) Palmieri  <johnp@redhat.com>
1015
1016         * Release 0.36.2
1017
1018         * Add Havoc's patch that never got applied to HEAD (Bug #2436):
1019
1020         * bus/policy.c (bus_policy_allow_user): change default "user is
1021         allowed" to be "user has same uid as the bus itself"; any
1022         allow/deny rules will override.
1023
1024         * bus/session.conf.in: don't allow all users, since now by default
1025         the user that ran the bus can connect.
1026
1027 2005-08-26  Colin Walters  <walters@verbum.org>
1028
1029         * tools/dbus-print-message.c (print_message): Flush stdout
1030         after printing a message, so that redirecting to a file, then
1031         hitting Ctrl-C works.
1032
1033 2005-08-25  John (J5) Palmieri  <johnp@redhat.com>
1034
1035         * python/dbus_bindings.pyx: Tracked down a major memleak and fixed it
1036         (EmptyMessage): new class that subclasses Message.  This is a workaround
1037         to a Pyrex bug that fails to call __del__ when the Message object goes out
1038         of scope.  For some reason subclassing Message fixes this bug
1039         (Bus::send_with_reply_and_block): use EmptyMessage instead of Message
1040         - s/Message(_create=0)/EmptyMessage everywhere else
1041         
1042         * test/python/test-{server|client}.py: add the python/.libs directory
1043         to the lookup path so dbus_bindings and dbus_glib_bindings don't
1044         get picked up from the system
1045
1046 2005-08-25  Colin Walters  <walters@verbum.org>
1047
1048         * glib/dbus-gproxy.c (dbus_g_proxy_call): Doc update, thanks
1049         to Ryan Lortie for the suggestion.
1050
1051 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
1052
1053         * test/python: Add python regression test
1054
1055         * configure.in: Add test/python/Makefile
1056
1057         * test/Makefile.am: Add the python directory to SUBDIRS
1058
1059 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
1060
1061         * Release 0.36.1
1062
1063         * python/_dbus.py: 
1064         (Interface::connect_to_signal): propigate keywords for match on args
1065         (Bus::add_signal_receiver): Fix typo s/dbus_inteface/dbus_interface
1066
1067         * python/proxies.py (ProxyObject::connect_to_signal):
1068         propigate keywords for match on args
1069
1070         * Makefile.am: point everything to pyexecdir since python borks
1071         on multilib
1072
1073 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
1074
1075         * Release 0.36
1076
1077 2005-08-23  Colin Walters  <walters@verbum.org>
1078
1079         * test/glib/Makefile.am: Don't multiply-define EXTRA_DIST.
1080
1081 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
1082
1083         * python/dbus_glib_bindings.pyx: reorder imports and c definitions
1084         to fix some wranings. We now use dbus_bindings.DBusConnection instead
1085         of defining DBusConnection ourselves.
1086
1087 2005-08-18  John (J5) Palmieri  <johnp@redhat.com>
1088
1089         * python/dbus.pth: New path file to fix up problems when installing
1090         c libraries to lib64 and python files to lib.
1091
1092         * python/Makefile.am: install dbus.pth in the correct spot
1093
1094 2005-08-17  John (J5) Palmieri  <johnp@redhat.com>
1095         * ChangeLog: clean up my last entry a bit
1096
1097         * doc/introspect.xsl: New stylesheet for converting introspection data
1098         into browser renderable xhtml. Contributed by Lennart Poettering.
1099
1100         * doc/introspect.dtd: Fixups in the introspect format from Lennart
1101         Poettering.
1102
1103         * doc/dbus-tutorial.xml: 
1104         - Add Colin Walter to the Authors section for authoring the GLib
1105         section
1106         - Add descriptions of the new signature and type functionality
1107         in the Python complex type mapping section
1108         - Add a sidenote on the new args matching functionality in 
1109         the Python bindings
1110         - Fixed up some of the examples to use the gobject.MainLoop
1111         instead of gtk.main
1112         
1113         * python/_dbus.py:
1114         (Bus::_create_args_dict): New. Converts a hash of arg matches
1115         to a more useable format
1116         (Bus::add_signal_receiver): add a **keywords parameter for catching
1117         arg match parameters
1118         (Bus::remove_signal_receiver): add a **keywords parameter for catching
1119         arg match parameters
1120         
1121         * python/matchrules.py:
1122         (MatchTree::exec_matches): Check for arg matches
1123         (SignalMatchRule::add_args_match): New method
1124         (SignalMatchRule::execute): Added args_list parameter as an optimization
1125         so we don't have to marshal the args more than once
1126         (SignalMatchRule::match_args_from_list): New method that checks to see
1127         if the rule's arg matches match an argument list.  Only arguments
1128         set in the rule are checked.
1129         (SignalMatchRule::match_args_from_rule): New method that checks to see
1130         if the rule's arg matches match another rule's.  All args have to match
1131         in order for this method to return true.  If either rule has more args
1132         then it is not a match.
1133         (SignalMatchRule::is_match): Add args match
1134         (SignalMatchRule::repr): Add args to the final output if they exist
1135
1136 2005-08-17  Ross Burton  <ross@burtonini.com>
1137
1138         * glib/dbus-gproxy.c:
1139         (dbus_g_proxy_call_no_reply): unref the message once sent.
1140         (dbus_g_proxy_call): protect against NULL proxy.
1141
1142 2005-08-16  John (J5) Palmieri  <johnp@redhat.com>
1143
1144         * python/__init__.py: Version updated (0, 43, 0)
1145         
1146         * python/dbus_bindings.pyx: 
1147         - Fixed type objects to have self passed into __init__
1148         - Added the Variant type
1149         - Add the ability to specify types or signatures for Array, Variant 
1150         and Dictionary
1151         (Connection::send_with_reply_handlers): return a PendingCall object
1152         (_pending_call_notification): handle the case when an error is returned 
1153         without an error message in the body
1154         (MessageIter::get_boolean): return True or False instead of an integer
1155         (MessageIter::python_value_to_dbus_sig): add direct checking of types 
1156         and add checks for objects with embeded signatures or types (Array, 
1157         Variant and Dictionary)
1158         (MessageIter::append_byte): handle case when the value is a dbus.Byte
1159         (MessageIter::append_dict): handle embeded types or signatures
1160         (MessageIter::append_array): handle embeded types or signatures
1161         (MessageIter::append_variant): new method
1162         
1163         * python/proxies.py:
1164         (DeferedMethod): New. Dummy executable object used when queuing calls 
1165         blocking on introspection data
1166         (ProxyMethod::__call__): add the timeout keyword for specifying longer 
1167         or shorter timeouts for method calls
1168         (ProxyObject): Add first pass at an introspection state machine
1169         (ProxyObject::__init__): Add introspect keyword for turing off an on 
1170         introspection. 
1171         (ProxyObject::_Introspect): Internal Introspect call that bypasses 
1172         the usual mechanisms for sending messages.  This is to avoid a deadlock
1173         where the Intospect call would be queued waiting for the Introspect 
1174         call to finish ;-)
1175         (ProxyObject::_introspect_reply_handler): New.  This method is called 
1176         when introspection returns with no error
1177         (ProxyObject::_introspect_error_handler): New.  This method is called 
1178         when introspection encounters an error
1179         (ProxyObject::__getattr__): Code to handle different introspection 
1180         states.  Queue async calls or block blocking calls if we are 
1181         introspecting.  Pass through as normal if we are not or are done with 
1182         introspecting.
1183         
1184         * python/service.py: Import signal and method from decorators.py
1185
1186         * python/types.py: Add Variant type
1187
1188 2005-08-16  Colin Walters  <walters@verbum.org>
1189
1190         * glib/dbus-gobject.c (dbus_set_g_error): Don't lose if the
1191         DBusError message is NULL.
1192
1193 2005-08-09  Havoc Pennington  <hp@redhat.com>
1194
1195         * dbus/dbus-errors.c: apply patch from Timo Teras to make a
1196         malloc'd copy of the name parameter
1197
1198 2005-08-09  Havoc Pennington  <hp@redhat.com>
1199
1200         * dbus/dbus-message.c (dbus_message_set_reply_serial): print
1201         warning if the reply serial is set to 0
1202
1203 2005-08-04  Colin Walters  <walters@verbum.org>
1204
1205         * glib/dbus-gvalue-utils.h (_dbus_g_type_specialized_builtins_init)
1206         (dbus_g_type_is_fixed, dbus_g_type_fixed_get_size)
1207         (dbus_gvalue_set_from_pointer, dbus_g_hash_table_value_foreach)
1208         (dbus_g_hash_table_insert_values, dbus_g_hash_table_insert_steal_values)
1209         (dbus_gtype_is_valid_hash_key, dbus_gtype_is_valid_hash_value)
1210         (dbus_g_hash_func_from_gtype, dbus_g_hash_free_from_gtype)
1211         (dbus_g_hash_equal_from_gtype, dbus_gvalue_stor, dbus_gvalue_take):
1212         * glib/dbus-gvalue.h (dbus_g_value_types_init)
1213         (dbus_gvalue_demarshal, dbus_gvalue_demarshal_variant)
1214         (dbus_gvalue_demarshal_message, dbus_gvalue_marshal):
1215         
1216         Prefix name with _ to ensure they're not exported.  All callers
1217         updated.
1218
1219         * glib/dbus-gvalue.c (typecode_to_gtype)
1220         (dbus_typecode_maps_to_basic, basic_typecode_to_gtype)
1221         (signature_iter_to_g_type_dict)
1222         (signature_iter_to_g_type_array)
1223         (dbus_gtype_from_signature_iter, dbus_gtype_from_signature)
1224         (dbus_gtypes_from_arg_signature):
1225         Move to dbus-gsignature.c.
1226
1227         * glib/dbus-binding-tool-glib.c (dbus_binding_tool_output_glib_server): Call
1228         dbus_g_type_specialized_builtins_init instead of dbus_g_value_types_init.
1229         (dbus_binding_tool_output_glib_client): Ditto.
1230
1231         * glib/Makefile.am (DBUS_GLIB_INTERNALS): Add dbus-gsignature.c
1232         and dbus-gsignature.h
1233
1234         * test/glib/test-service-glib.c (my_object_rec_arrays): Delete
1235         unused variable.
1236
1237 2005-08-03  Colin Walters  <walters@verbum.org>
1238
1239         * glib/dbus-gobject.c: Add tests on hardcoded object info; this should
1240         catch any incompatible changes accidentally made.
1241
1242 2005-08-03  Havoc Pennington  <hp@redhat.com>
1243
1244         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): fix
1245         typo, from Julien Puydt
1246
1247         * bus/connection.c (bus_connection_disconnected): we were always
1248         doing a wait_for_memory due to a buggy loop, found by Timo Hoenig
1249
1250 2005-08-01  Colin Walters  <walters@verbum.org>
1251
1252         Patch from Joe Markus Clarke:   
1253         
1254         * glib/dbus-gidl.c (property_info_unref, arg_info_unref): Fix
1255         use-after-free.
1256
1257 2005-08-01  Colin Walters  <walters@verbum.org>
1258         
1259         Patch from Joe Markus Clarke:   
1260         
1261         * tools/dbus-send.c (main): 
1262         
1263         Don't use C99 style initializers (bug #3933).
1264         
1265 2005-08-01  Colin Walters  <walters@verbum.org>
1266
1267         Patch from Joe Markus Clarke:   
1268
1269         * glib/dbus-gvalue.c (dbus_g_value_types_init): 
1270         * glib/dbus-gvalue-utils.c (dbus_g_type_specialized_builtins_init) 
1271         * glib/dbus-gobject.c (write_interface):
1272
1273         Don't use C99 style initializers (bug #3933).
1274
1275 2005-07-31  Havoc Pennington  <hp@redhat.com>
1276
1277         * tools/dbus-viewer.c (load_child_nodes): fix invocation of
1278         dbus_g_proxy_call, fix from Piotr Zielinski bug #3920
1279
1280 2005-07-30  Havoc Pennington  <hp@redhat.com>
1281
1282         * fix a bunch of Doxygen warnings and mistakes
1283
1284 2005-07-30  Havoc Pennington  <hp@redhat.com>
1285
1286         * dbus/dbus-sysdeps.c (_dbus_string_parse_uint): remove #ifdef
1287         DBUS_BUILD_TESTS since it's now used in production code
1288
1289 2005-07-29  Havoc Pennington  <hp@redhat.com>
1290
1291         * test/glib/test-profile.c (write_junk): initialize the junk
1292         buffer so valgrind doesn't have a breakdown
1293
1294 2005-07-29  Havoc Pennington  <hp@redhat.com>
1295
1296         * bus/signals.c (bus_signals_test): add match_rule_equal() tests
1297         (match_rule_matches): remove unused arg
1298         (test_matching): add tests for match_rule_matches()
1299
1300         * bus/signals.c (bus_match_rule_parse_arg_match): add ability to
1301         do arg0='foo' arg5='bar' in the match rules
1302         (match_rule_matches): don't match if the arg0='foo' doesn't match.
1303
1304         * dbus/dbus-protocol.h (DBUS_MAXIMUM_MATCH_RULE_ARG_NUMBER): add this
1305
1306 2005-07-29  Ross Burton  <ross@openedhand.com>
1307
1308         * dbus/dbus-connection.c:
1309         Don't create a DBusCondVar which is never used.
1310
1311 2005-07-27  Ross Burton  <ross@openedhand.com>
1312
1313         * dbus/dbus-message.c:
1314         Reduce the size of the maximum cached message to 10K.
1315
1316 2005-07-25  Ross Burton  <ross@openedhand.com>
1317
1318         * glib/dbus-gproxy.c:
1319         Remove matches when all proxies are unregistered.
1320
1321 2005-07-24  Colin Walters  <walters@verbum.org>
1322
1323         * glib/dbus-gvalue.c (signature_iter_to_g_type_array): Don't require
1324         typedata; recursive arrays won't have it.
1325
1326         * test/glib/test-dbus-glib.c:
1327         * test/glib/test-service-glib.c:
1328         * test/glib/test-service-glib.xml: Add recursive arrays tests.
1329         
1330 2005-07-20  John (J5) Palmieir  <johnp@redhat.com>
1331
1332         * python/_dbus.py, _util.py, decorators.py, extract.py, matchrules.py.
1333         proxies.py, service.py: Cleanup of code after running it through the
1334         pyflakes code checker mostly dealing with undefined names.  
1335         (Bug #3828, Patch from Anthony Baxter <anthony@interlink.com.au>)
1336
1337 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
1338
1339         * NEWS: Update to 0.35.2
1340
1341 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
1342
1343         * python/_dbus.py: Remove import of the dbus.services
1344         module as it no longer exists (patch from Dimitur Kirov)
1345
1346         * python/service.py (Object::__init__): Fixed typo
1347         s/name/bus_name (patch from Dimitur Kirov)
1348
1349         * python/examples/example-signal-emitter.py: import dbus.glib
1350         to get the main loop and use glib mainloop instead of gtk so
1351         X doesn't have to be running.
1352
1353         * python/examples/example-signal-recipient.py: import dbus.glib
1354         to get the main loop and use glib mainloop instead of gtk so
1355         X doesn't have to be running. Import the decorators module
1356         directly.
1357
1358         * test/glib/Makefile.am:  Added DIST_EXTRA files that distcheck
1359         didn't pick up on but are needed to build
1360
1361         * configure.in: upped version to 0.35.2
1362
1363         * bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h:
1364         added Colin Walters' SELinux API rename patch from head 
1365         s/unix sercurity context/selinux security context/
1366
1367 2005-07-16  John (J5) Palmieri  <johnp@redhat.com>
1368
1369         * python/Makefile.am: dbus_binding.pxd.in should be included 
1370         in EXTRA_DIST not dbus_binding.pxd
1371         fix up $(srcdir) hopefully for the last time
1372
1373         * NEWS: Update to 0.35.1
1374
1375 2005-07-16  Colin Walters  <walters@verbum.org>
1376
1377         * bus/driver.c (bus_driver_handle_get_connection_selinux_security_context): Renamed
1378         from bus_driver_handle_get_connection_unix_security_context.  Update for
1379         error usage.
1380         (message_handlers): Update for renames.
1381
1382         * bus/selinux.c (bus_selinux_allows_send): Handle OOM on
1383         _dbus_string_init failure correctly.
1384         (bus_selinux_append_context): Convert SID to context.  Append it
1385         as a byte array.
1386         (bus_selinux_shutdown): Handle the case where bus_selinux_full_init
1387         hasn't been called.
1388
1389         * bus/selinux.h: Update prototype.
1390
1391         * dbus/dbus-protocol.h (DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN): Renamed
1392         from DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN.
1393
1394 2005-07-15  Colin Walters  <walters@verbum.org>
1395
1396         * doc/TODO: Add note about convenience wrappers.
1397
1398 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1399
1400         * NEWS: Update to 0.35
1401
1402 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1403
1404         * glib/Makefile.am: Add make-dbus-glib-error-switch.sh to EXTRA_DIST
1405         so distcheck doesn't fail
1406
1407         * glib/examples/Makefile.am: Add example-service.xml and 
1408         example-signal-emitter.xml to EXTRA_DIST so distcheck doesn't fail
1409
1410         * glib/examples/statemachine/Makefile.am: Add statemachine.xml and
1411         statemachine-server.xml to EXTRA_DIST so distcheck doesn't fail
1412
1413         * python/Makefile.am: Preprend $(srcdir)/ to source files so the
1414         compiler looks in the right places during distcheck
1415
1416 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1417
1418         * glib/example/Makefile.am: Fix a typo which cause make distcheck
1419         to fail
1420
1421 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1422
1423         * python/examples/example-service.py,
1424         python/examples/example-signal-emitter.py: Fixed up examples
1425         for API changes
1426
1427 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1428
1429         * python/__init__.py: Upped to version (0,42,0) because of
1430         the API change
1431
1432 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1433
1434         * ChangeLog: fix date in last entry
1435
1436         * configure.in, bus/system.conf.in: add the ability to configure 
1437         the system bus user at compiletime with the --with-dbus-user flag
1438         (patch from Kristof Vansant)
1439
1440 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
1441
1442         * bus/dispatch.c, test/test-service.c: Add testcase
1443         for sending messages to oneself (TODO item).
1444
1445         * python/service.py (class Object): Swap ordering of bus_name 
1446         and object_path parameters to better support inheritance.
1447
1448         * doc/dbus-tutorial.xml: change Python docs to reflect change
1449         in parameter ordering and fix the inheritance section.
1450
1451         * doc/TODO: remove sending message to oneself TODO item
1452
1453 2005-07-15  Ross Burton  <ross@openedhand.com>
1454
1455         * glib/dbus-gproxy.c:
1456         Fix a leak when calling methods via the proxy.
1457
1458 2005-07-15  Colin Walters  <walters@verbum.org>
1459
1460         * bus/selinux.c (bus_selinux_append_context): Wrap in
1461         HAVE_SELINUX.
1462
1463 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
1464
1465         * python/_dbus.py (Bus::remove_signal_receiver):
1466         don't add a callback to the match if none has been passed in
1467         
1468         * python/matchrules.py (SignalMatchTree::remove): if the rule
1469         being matched does not have a callback treat it as a wildcard
1470         fix matching logic
1471
1472         * doc/dbus-tutorial.xml: Add Python tutorial
1473
1474 2005-07-14  Colin Walters  <walters@verbum.org>
1475
1476         * bus/driver.c
1477         (bus_driver_handle_get_connection_unix_security_context): New function.
1478         (message_handlers): Add.
1479
1480         * bus/selinux.c (bus_selinux_append_context): New function; appends
1481         security context to message.
1482
1483         * bus/selinux.h: Prototype.
1484
1485         * dbus/dbus-protocol.h (DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN): New.
1486
1487 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
1488
1489         * bus/activation.c: clean up all tabs to be 8 spaces 
1490         (bus_activation_activate_service): make sure we clean up
1491         if activation fails
1492
1493         * bus/dispatch.c: clean up all tabs to be 8 spaces 
1494         (check_shell_fail_service_auto_start): New function
1495         tests to make sure we get fail properly when trying to auto start a service
1496         with a faulty command line
1497         (check_shell_service_success_auto_start): New function tests to make sure
1498         auto started services get the arguments on the command line
1499
1500         * test/test-shell-service.c: Added service for testing auto-starting with 
1501         command line arguments
1502
1503         * test/data/valid-service-files/debug-shell-echo-fail.service.in, 
1504         test/data/valid-service-files/debug-shell-echo-success.service.in:
1505         Added service files for testing auto-starting with command line arguments
1506
1507         * */.cvsignore: added a bunch of generated files to various .cvsignore files
1508
1509 2005-07-14  Rodrigo Moya  <rodrigo@novell.com>
1510
1511         * dbus/dbus-shell.[ch]: copy/pasted code from GLib.
1512         
1513         * dbus/Makefile.am: added new files to build.
1514
1515         * bus/activation.c (bus_activation_activate_service): support
1516         activation commands with parameters.
1517
1518         * test/shell-test.c: added test program for the shell parsing
1519         code.
1520
1521 2005-07-13  David Zeuthen  <davidz@redhat.com>
1522
1523         * tools/dbus-send.c (append_arg, type_from_name): Also support 16 and
1524         64 bit signed and unsigned parameters
1525
1526 2005-07-13  John (J5) Palmieri  <johnp@redhat.com>
1527
1528         * python/.cvsignore: remove dbus_bindings.pyx, add dbus_bindings.pxd
1529
1530         * python/service.py (class Name): renamed BusName to make it clearer
1531         what the object is for (a name on the bus)
1532
1533         * python/examples/example-service.py,
1534         python/examples/example-signal-emitter.py: change the Name object to
1535         BusName
1536
1537 2005-07-12  Colin Walters  <walters@verbum.org>
1538
1539         Patch from Jim Gettys <Jim.Gettys@hp.com>.
1540
1541         * tools/dbus-launch.c: Include sys/select.h.
1542
1543 2005-07-12  John (J5) Palmieri  <johnp@redhat.com>
1544         * python/dbus_bindings.pyx.in: removed
1545
1546         * python/dbus_bindings.pyx: Added.
1547         - Fixed some memleaks (patch from 
1548         Sean Meiners <sean.meiners@linspireinc.com>)
1549         - Broke out the #include "dbus_h_wrapper.h" and put it in its
1550         own pxd file (Pyrex definition)
1551         - Broke out glib dependancies into its own pyx module
1552         
1553         * python/dbus_bindings.pdx: Added.
1554         - Defines C class Connection for exporting to other modules
1555
1556         * python/dbus_glib_bindings.pyx: Added.
1557         - New module to handle lowlevel dbus-glib mainloop integration
1558
1559         * python/glib.py: Added.
1560         - Registers the glib mainloop when you import this module
1561
1562         * python/services.py: Removed (renamed to service.py)
1563         
1564         * python/service.py: Added.
1565         - (class Server): renamed Name
1566
1567         * python/__init__.py: Bump ro version (0,41,0)
1568         -don't import the decorators or service module
1569         by default.  These now reside in the dbus.service namespace
1570
1571         * python/_dbus.py (Bus::__init__): Add code run the main loop 
1572         setup function on creation 
1573
1574         * python/examples/example-service.py,
1575         python/examples/example-signal-emitter.py: update examples
1576
1577         * python/examples/gconf-proxy-service.py,
1578         python/examples/gconf-proxy-service2.py: TODO fix these up
1579
1580         * doc/TODO: Addition
1581         - Added a Python Bindings 1.0 section
1582         - added "Add match on args or match on details to match rules"
1583
1584
1585 2005-07-12  Colin Walters  <walters@verbum.org>
1586
1587         * glib/examples/statemachine/Makefile.am (statemachine-server-glue.h) 
1588         (statemachine-glue.h): 
1589         * glib/examples/Makefile.am (example-service-glue.h) 
1590         (example-signal-emitter-glue.h): 
1591         * glib/Makefile.am (dbus-glib-error-switch.h): 
1592         Add libtool --mode=execute so we use the built library instead
1593         of any installed one.
1594
1595 2005-07-11  Colin Walters  <walters@verbum.org>
1596
1597         * glib/dbus-gvalue.c (struct _DBusGValue): Delete.
1598         (dbus_g_value_types_init): Remove assertion.
1599         (dbus_g_value_get_g_type, dbus_g_value_open)
1600         (dbus_g_value_iterator_get_values, dbus_g_value_get_signature)
1601         (dbus_g_value_copy, dbus_g_value_free): Delete unimplemented
1602         functions related to DBusGValue.  Now we marshal/demarshal
1603         structures as GValueArray.
1604         (dbus_gtype_from_signature_iter): Return G_TYPE_VALUE_ARRAY for
1605         structures.
1606         (signature_iter_to_g_type_array): Don't call
1607         signature_iter_to_g_type_struct.
1608         (signature_iter_to_g_type_struct): Delete.
1609         (dbus_gvalue_to_signature): Delete.
1610         (dbus_gvalue_to_signature): New function with same name as other
1611         one; we can convert structures to signatures.
1612         (demarshal_valuearray): New function.
1613         (get_type_demarshaller): Use it.
1614         (demarshal_recurse): Delete.
1615         (marshal_proxy): New function.
1616         (marshal_map): Warn if we can't determine signature from type.
1617         (marshal_collection_ptrarray): Ditto.
1618         (marshal_collection_array): Ditto.
1619         (get_type_marshaller): Use marshal_valuearray.
1620         (marshal_recurse): Delete.
1621         (_dbus_gvalue_test): Add some tests.
1622
1623         * dbus/dbus-glib.h (struct _DBusGValueIterator): 
1624         (dbus_g_value_get_g_type, DBUS_TYPE_G_VALUE)
1625         (dbus_g_value_open, dbus_g_value_iterator_get_value)
1626         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
1627         (dbus_g_value_free): Remove prototypes.
1628
1629         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_lookup_function): Handle
1630         G_TYPE_VALUE_ARRAY.
1631
1632         * glib/examples/example-service.c:
1633         * glib/examples/example-client.c: Implement GetTuple.
1634
1635         * test/glib/test-dbus-glib.c:
1636         * test/glib/test-service-glib.c:
1637         * test/glib/test-service-glib.xml: Add structure tests.
1638
1639 2005-07-10  Colin Walters  <walters@verbum.org>
1640
1641         * doc/TODO: Knock off some GLib items with this patch.
1642
1643         * glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error) 
1644         (_dbus_gvalue_signals_error): New functions.
1645
1646         * glib/dbus-gvalue-utils.h: Prototype them.
1647
1648         * glib/dbus-gobject.c (arg_iterate): Update to handle return vals
1649         and change to not output const/retval flags for input args.  All
1650         callers updated.
1651         (invoke_object_method): Refactor to handle return values.  Add
1652         some more comments in various places.  Remove debug g_print.
1653
1654         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New.
1655
1656         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name):
1657         Handle G_TYPE_NONE.
1658         (compute_gsignature): New function; refactored from code from
1659         compute_marshaller and compute_marshaller_name.  Enhance to
1660         handle return values and async ops more cleanly.  Update for
1661         async ops returning NONE instead of BOOLEAN.
1662         (compute_marshaller, compute_marshaller_name): Call compute_gsignature
1663         and output appropriate string.
1664         (generate_glue): Handle return value annotation.  Also don't dump
1665         constness flag for input arguments.
1666
1667         * glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains
1668         files shared between installed library and utilities.
1669         (libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS.
1670         (libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the
1671         binding tool can access gtype utility functions.
1672
1673         * test/glib/test-service-glib.c: 
1674         * test/glib/test-service-glib.xml: 
1675         * test/glib/test-dbus-glib.c: Add some tests for return values.
1676
1677 2005-07-09  Colin Walters  <walters@verbum.org>
1678
1679         * glib/dbus-gparser.c (parse_annotation): Add annotations to
1680         argument if available, not method.
1681
1682         * glib/dbus-gobject.c (arg_iterate): More verbose warnings.
1683         (invoke_object_method): First, remove some redundant
1684         GValues (object_value, error_value) in favor of working on
1685         array directly.  Second, rework constness to be less buggy.
1686         Now we iterate directly over the argument metadata instead
1687         of parallel iterating over output signature and metadata.
1688
1689         * glib/dbus-glib-tool.h: Add INVALID_ANNOTATION error.
1690
1691         * glib/dbus-binding-tool-glib.c (generate_glue): Barf on const
1692         annotation on input args.
1693         
1694 2005-07-09  Colin Walters  <walters@verbum.org>
1695
1696         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
1697         Define.
1698
1699         * glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
1700         annotation.
1701
1702         * glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
1703         (method_dir_signature_from_object_info): Handle arg_iterate change.
1704         (write_interface): Ditto.
1705         (lookup_object_info): Don't barf if format_version is > 0.
1706         (invoke_object_method): Handle arg constness.
1707
1708         * glib/dbus-gidl.c (struct ArgInfo): Add annotations.
1709         (arg_info_new): Create.
1710         (arg_info_unref): Destroy.
1711         (arg_info_get_annotations, arg_info_get_annotation) 
1712         (arg_info_add_annotation): New functions.
1713
1714         * glib/dbus-gidl.h: Prototype them.
1715
1716         * glib/dbus-gparser.c (parse_annotation): Allow annotations in
1717         args, disallow them in properties.
1718         (parse_annotation): Handle arg annotations.
1719
1720         * test/glib/test-service-glib.xml: 
1721         * test/glib/test-service-glib.c: Update to make some methods
1722         const.
1723
1724 2005-07-08  Colin Walters  <walters@verbum.org>
1725
1726         * test/glib/test-service-glib.xml: 
1727         * test/glib/test-service-glib.c:
1728         * test/glib/test-dbus-glib.c: Test a{sv}.
1729
1730         * glib/examples/statemachine/statemachine.c:
1731         * glib/examples/statemachine/statemachine-server.c:
1732         * glib/examples/statemachine/statemachine-client.c: Fix some bugs,
1733         add progress bar, etc.
1734
1735         * glib/dbus-gvalue.c (register_array, register_dict): Delete; not
1736         needed anymore due to generic array/map marshalling.
1737         (dbus_g_value_types_init): Don't register basic arrays or the
1738         string/string hash.
1739         (dbus_gtype_from_signature_iter): Don't try to recurse into
1740         variants.
1741         (dbus_gtype_to_signature): Check collection/map before type
1742         metadata.
1743         (demarshal_garray_basic): Renamed to demarshal_collection_array.
1744         (demarshal_ghashtable): Renamed to demarshal_map; fix to use new
1745         generic map creation/append functions instead of hash table
1746         specifically.
1747         (get_type_demarshaller): Handle maps.
1748         (demarshal_collection): Dispatch on collection type to either
1749         demarshal_collection_ptrarray or demarshal_collection_array.
1750         (get_type_marshaller): Handle maps.
1751         (marshal_collection): Dispatch collection type to either
1752         marshal_collection_ptrarray or marshal_collection_array.
1753         (_dbus_gvalue_test): New test.
1754
1755         * glib/dbus-gvalue-utils.c (unset_and_free_g_value): New function.
1756         (hash_free_from_gtype): Use it to free GValues.
1757         (hashtable_append): New function.
1758         (ptrarray_append): Fix prototype.
1759         (slist_append): Ditto.
1760         (_dbus_gvalue_utils_test): Extend tests.
1761
1762         * glib/dbus-gtype-specialized.c
1763         (dbus_g_type_specialized_init_append): Renamed from
1764         dbus_g_type_specialized_collection_init_append.  Remove const from
1765         value, since we steal it.
1766         (dbus_g_type_specialized_map_append): New function.
1767
1768         * glib/dbus-gtype-specialized.h: Update prototypes.
1769         Add DBusGTypeSpecializedMapAppendFunc.
1770
1771         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
1772         _dbus_gvalue_test.
1773         
1774         * glib/dbus-gtest.h: Prototype it.
1775
1776 2005-07-08  Ross Burton  <ross@openedhand.com>
1777
1778         * dbus/dbus-glib.h:
1779         Add DBysGAsyncData for the async bindings.
1780
1781         * glib/dbus-binding-tool-glib.c:
1782         Re-enable the async bindings.
1783
1784         * test/glib/test-dbus-glib.c:
1785         Add a test for the generated async bindings.
1786
1787 2005-07-08  Colin Walters  <walters@verbum.org>
1788
1789         * doc/TODO: Update GLib todo bits, also add a post-1.0 TODO for a
1790         connection concept.
1791         
1792 2005-07-08  Colin Walters  <walters@verbum.org>
1793         
1794         * tools/Makefile.am: Kill of print-introspect in favor of using
1795         dbus-send --print-reply=literal.
1796
1797         * test/glib/test-service-glib.xml: 
1798         * test/glib/test-service-glib.c (my_object_get_objs): New test
1799         for "ao".
1800
1801         * test/glib/test-dbus-glib.c (echo_received_cb): Free echo data.
1802         (main): Test GetObjs.
1803
1804         * glib/examples/statemachine/Makefile.am:
1805         * glib/examples/statemachine/sm-marshal.list:
1806         * glib/examples/statemachine/statemachine-client.c:
1807         * glib/examples/statemachine/statemachine-server.c:
1808         * glib/examples/statemachine/statemachine-server.xml:
1809         * glib/examples/statemachine/statemachine.c:
1810         * glib/examples/statemachine/statemachine.h:
1811         * glib/examples/statemachine/statemachine.xml:
1812
1813         New example.
1814
1815         * glib/examples/example-service.c (main): Move invocation
1816         of dbus_g_object_type_install_info earlier, to emphasize it
1817         should only be done once.
1818
1819         * glib/examples/example-signal-emitter.c (main): Ditto.
1820
1821         * glib/examples/Makefile.am (SUBDIRS): Include statemachine.
1822
1823         * glib/dbus-gvalue.h (dbus_gtype_to_signature)
1824         (dbus_gvalue_marshal): Update prototypes.
1825
1826         * glib/dbus-gvalue.c: Update all marshalling functions to take
1827         const GValue instead of GValue.
1828         (signature_iter_to_g_type_array): Return a GPtrArray for nonfixed
1829         types.
1830         (dbus_gvalue_to_signature): Update for dbus_gtype_to_signature
1831         change.
1832         (dbus_gtype_to_signature): Handle generic collecitons and maps.
1833         Return a newly-allocated string.
1834         (demarshal_proxy, demarshal_object_path, demarshal_object)
1835         (demarshal_strv, demarshal_ghashtable): Set error, don't assert if
1836         we get the wrong types from message.
1837         (get_type_demarshaller): New function, extracted from
1838         dbus_gvalue_demarshal.
1839         (demarshal_collection): New function, demarshals generic
1840         collection.
1841         (dbus_gvalue_demarshal): Just invoke result of
1842         get_type_demarshaller.  Throw error if we don't have one.
1843         (marshal_garray_basic): Abort on OOM.
1844         (get_type_marshaller): New function, extracted from
1845         dbus_gvalue_marshal.
1846         (collection_marshal_iterator, marshal_collection): New functions;
1847         implements generic marshalling for an iteratable specialized
1848         collection.
1849         (dbus_gvalue_marshal): Just invoke result of get_type_marshaller.
1850
1851         * glib/dbus-gvalue-utils.c (gvalue_from_ptrarray_value): Handle
1852         G_TYPE_STRING.
1853         (ptrarray_value_from_gvalue): Ditto.
1854         (ptrarray_append, ptrarray_free): New functions.
1855         (slist_constructor, slist_iterator, slist_copy_elt, slist_copy) 
1856         (slist_append, slist_end_append, slist_free): New functions.
1857         (dbus_g_type_specialized_builtins_init): Add append fuctions
1858         for GPtrArray and GSList.  Register GSList.
1859         (test_specialized_hash, _dbus_gvalue_utils_test): New functions.
1860
1861         * glib/dbus-gtype-specialized.h (DBusGTypeSpecializedAppendContext):
1862         New.
1863         (dbus_g_type_specialized_collection_init_append)
1864         (dbus_g_type_specialized_collection_append)
1865         (dbus_g_type_specialized_collection_end_append): Prototype.
1866         (DBusGTypeSpecializedCollectionVtable): Add append_func and
1867         end_append_func.
1868
1869         * glib/dbus-gtype-specialized.c (dbus_g_type_specialized_collection_init_append) 
1870         (dbus_g_type_specialized_collection_append) 
1871         (dbus_g_type_specialized_collection_end_append): New functions.
1872         (dbus_g_type_map_value_iterate): Take const GValue.
1873         (dbus_g_type_collection_value_iterate): Ditto.
1874
1875         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
1876         _dbus_gvalue_utils_test.
1877         
1878         * glib/dbus-gtest.h: Prototype it.
1879
1880         * glib/dbus-gproxy.c (dbus_g_proxy_manager_filter): Avoid
1881         using uninitialized owner_list.
1882         (dbus_g_proxy_begin_call_internal): Move return_if_fail to
1883         public API.
1884         (dbus_g_proxy_end_call_internal): Update to use error set
1885         from dbus_gvalue_demarshal instead of setting it here.
1886         (dbus_g_proxy_begin_call): Move return_if_fail here.
1887
1888         * glib/dbus-gobject.c (write_interface): Update for
1889         dbus_gtype_to_signature returning new string.
1890
1891         * configure.in: Add glib/examples/statemachine.
1892
1893 2005-07-08  Joe Shaw  <joeshaw@novell.com>
1894
1895         * configure.in: Add a configure option, --with-console-auth-dir
1896         
1897         * dbus/dbus-sysdeps-util.c (_dbus_user_at_console): Use the
1898         new setting.  Patch from Kay Sievers.
1899
1900 2005-07-06  Colin Walters  <walters@verbum.org>
1901
1902         * dbus/dbus-glib.h (DBusGPendingCall, DBusGPendingCallNotify)
1903         (DBUS_TYPE_G_PENDING_CALL, dbus_g_pending_call_get_g_type)
1904         (dbus_g_pending_call_ref, dbus_g_pending_call_unref): Delete.
1905         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel):
1906         Delete in favor of dbus_g_proxy_begin_call and
1907         dbus_g_proxy_cancel_call.
1908         (DBusGProxyCall, DBusGProxyCallNotify): New.
1909         (dbus_g_proxy_begin_call): Change prototype to take callback, user
1910         data, and destroy function.  This replaces
1911         dbus_g_pending_call_set_notify.
1912         (dbus_g_proxy_cancel_call): Prototype.
1913         (DBusGAsyncData): Delete, shouldn't be needed anymore.
1914
1915         * glib/dbus-gproxy.c (struct _DBusGProxy): Add call_id_counter and
1916         pending_calls map.
1917         (struct _DBusGProxyManager): Add bus_proxy member, which is an
1918         internal proxy for calls to the bus. Remove
1919         pending_nameowner_calls, now the internal proxy keeps track.
1920         (dbus_g_proxy_manager_unref): Unref bus proxy, remove reference to
1921         pending_nameowner_calls.
1922         (got_name_owner_cb): Update prototype, and use
1923         dbus_g_proxy_end_call.
1924         (got_name_owner_cb): Remove reference to pending_nameowner_calls.
1925         (dbus_g_proxy_manager_register): Delete directly libdbus code in
1926         favor of using internal proxy.
1927         (dbus_g_proxy_manager_unregister): Update to use
1928         dbus_g_proxy_cancel_call for any pending GetNameOwner call.
1929         (dbus_g_proxy_init): Initialize pending calls map.
1930         (dbus_g_proxy_constructor): New.
1931         (dbus_g_proxy_class_init): Add get/set property functions,
1932         constructor, and add NAME, PATH, and INTERFACE properties.
1933         (cancel_pending_call): New function.
1934         (dbus_g_proxy_dispose): Iterate over any outstanding calls and
1935         cancel them.
1936         (dbus_g_proxy_set_property, dbus_g_proxy_get_property): New.
1937         (GPendingNotifyClosure): New structure.
1938         (d_pending_call_notify, d_pending_call_free): Moved here from
1939         dbus-glib.c.
1940         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Moved around to satisfy function
1941         ordering.
1942         (manager_begin_bus_call): New internal function for talking to
1943         internal bus proxy.
1944         (dbus_g_proxy_new): Construct object using GObjet properties.
1945         (dbus_g_proxy_begin_call_internal): Update to take user data, etc.
1946         Create closure of same, and insert call into map of pending calls.
1947         (dbus_g_proxy_end_call_internal): Take call id instead of pending
1948         call.  Look up pending call in current set.  Remove it when we've
1949         completed.
1950         (dbus_g_pending_call_end, dbus_g_proxy_end_call_internal): Delete.
1951         (dbus_g_proxy_begin_call): Change API to take callback, user data,
1952         and destroy function directly.
1953         (dbus_g_proxy_end_call): Update to take DBusGProxyCall.
1954         (dbus_g_proxy_call): Invoke with NULL callback.
1955         (dbus_g_proxy_cancel_call): New function, replaces
1956         dbus_g_pending_call_cancel.
1957
1958         * glib/dbus-gparser.c (validate_signature): Fix call to
1959         dbus_set_g_error.
1960
1961         * glib/dbus-gobject.c (dbus_g_object_type_dbus_metadata_quark):
1962         New quark for attaching metadata to GType.
1963         (info_hash): Delete.
1964         (lookup_object_info): Look up using quark.
1965         (dbus_g_object_type_install_info): Check that a type is classed,
1966         not that it's an object.  Also just install type data using quark
1967         instead of using global hash.
1968
1969         * glib/dbus-glib.c (dbus_g_pending_call_ref) 
1970         (dbus_g_pending_call_unref, dbus_pending_call_get_g_type)
1971         (GPendingNotifyClosure): Delete.
1972         (d_pending_call_notify, d_pending_call_free): Move to dbus-gproxy.c.
1973         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel): Delete.
1974
1975         * glib/dbus-binding-tool-glib.c (generate_client_glue): Disable async
1976         client method generation until we can fix it...
1977         
1978         * tools/dbus-viewer.c (load_child_nodes): Use dbus_g_proxy_call.
1979         (load_from_service_thread_func): Ditto.
1980
1981         * tools/dbus-names-model.c (struct NamesModel): Hold
1982         DBusGProxyCall.
1983         (have_names_notify): Update prototype, use
1984         dbus_g_proxy_cancel_call.
1985         (names_model_reload): Update for new dbus_g_proxy_begin_call API.
1986
1987         * tools/dbus-monitor.c (filter_func): Update for print_message
1988         API change.
1989
1990         * test/glib/test-dbus-glib.c: Add more tests for async
1991         invocations.  Update many begin_call/end_call pairs to just use
1992         dbus_g_proxy_call.
1993
1994         * tools/dbus-send.c (main): Add --print-reply=literal mode.  This
1995         allows us to dump print-introspect.c.
1996
1997         * tools/dbus-print-message.h (print_message): Add literal argument
1998         to print_message which is intended to allow printing arguments without
1999         metadata like "string=".
2000
2001         * tools/dbus-print-message.c (print_iter): Add literal argument.
2002         (print_message): Allow printing string messages literally.
2003
2004 2005-07-05  Colin Walters  <walters@verbum.org>
2005
2006         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
2007         Remove value refcount leak, original patch from Jorn Baayen
2008         <jorn@openedhand.com>.  Also remove useless extra value in favor
2009         of prepending to value array directly.
2010
2011 2005-07-02  Colin Walters  <walters@verbum.org>
2012
2013         * glib/dbus-gmain.c (_dbus_gmain_test): Fix test.
2014
2015 2005-07-01  Colin Walters  <walters@verbum.org>
2016
2017         Patch from Jonathan Matthew <jonathan@kaolin.hn.org>
2018         
2019         * glib/dbus-gvalue.c (basic_typecode_to_gtype): Fix return type.
2020         (dbus_g_value_types_init): Marshal G_TYPE_CHAR as DBUS_TYPE_BYTE,
2021         G_TYPE_LONG as DBUS_TYPE_INT32, G_TYPE_ULONG as DBUS_TYPE_UINT32,
2022         and G_TYPE_FLOAT as DBUS_TYPE_DOUBLE.
2023
2024 2005-06-30  Colin Walters  <walters@verbum.org>
2025
2026         * test/glib/test-dbus-glib.c:
2027         * test/glib/test-service-glib.c:
2028         * test/glib/test-service-glib.xml: Update tests for new error
2029         setting bits, also add async tests (patch from Ross Burton).
2030
2031         * test/glib/Makefile.am (test_service_glib_LDADD): Add
2032         DBUS_GLIB_THREADS_LIBS.
2033
2034         * glib/dbus-gproxy.c (get_name_owner)
2035         (dbus_g_pending_call_end_valist): Ditto.
2036
2037         * glib/dbus-gobject.c (error_metadata): New mapping from GError
2038         domain (GQuark) to DBusGErrorInfo.  
2039         (gerror_domaincode_to_dbus_error_name): Attempt to look up error
2040         quark in error_metadata.  Take message interface as default
2041         error message interface.
2042         (gerror_to_dbus_error_message): Pass message interface.
2043         (dbus_set_g_error): Resurrected.
2044         (dbus_g_error_info_free): New function.
2045         (dbus_g_object_type_install_info): Use g_type_class_ref instead
2046         of _peek to actually create the object class if it hasn't been
2047         created yet.
2048         (dbus_g_error_domain_register): New function.
2049
2050         * glib/dbus-gmain.c (dbus_g_bus_get): Switch to dbus_set_g_error.
2051
2052         * glib/dbus-gparser.c (validate_signature): Ditto.
2053
2054         * dbus/dbus-glib.h (dbus_g_error_set): Delete.
2055         (dbus_g_error_domain_register): Prototype.
2056
2057         * glib/dbus-glib.c (dbus_g_error_set): Delete.
2058         Update tests.
2059
2060 2005-06-29  Colin Walters  <walters@verbum.org>
2061
2062         * dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY.  Add
2063         DBUS_TYPE_G_OBJECT_PATH.
2064
2065         * glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers
2066         for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should
2067         be handled more generically).  Add DBUS_TYPE_G_OBJECT_PATH.
2068         (dbus_g_object_path_get_g_type): New function.
2069         (dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH
2070         to DBUS_TYPE_G_OBJECT_PATH by default.
2071         (demarshal_proxy): Remove unused name variable.
2072         (demarshal_object_path, marshal_object_path): New functions.
2073         (demarshal_proxy_array, marshal_proxy_array): Delete.
2074         
2075         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map
2076         DBUS_TYPE_G_OBJECT_PATH to char *.
2077         (dbus_g_type_get_lookup_function): Map builtin
2078         DBUS_TYPE_G_OBJECT_PATH.
2079
2080         * test/glib/test-dbus-glib.c
2081         * test/glib/test-service-glib.c (my_object_objpath): 
2082         Adapt tests to new object path marshalling.
2083
2084 2005-06-29  John (J5) Palmieri  <johnp@redhat.com>
2085
2086         * configure.in: force check for Python >= 2.4
2087
2088 2005-06-29  Colin Walters  <walters@verbum.org>
2089         
2090         Patch from Ross Burton <ross@openedhand.com>
2091         
2092         * glib/dbus-gobject.c (invoke_object_method): Unset object
2093         value in all cases, not only in async case.
2094
2095 2005-06-29  Colin Walters  <walters@verbum.org>
2096
2097         * glib/dbus-gproxy.c (struct _DBusGProxy): Add new member
2098         name_call for keeping track of any outgoing GetNameOwner call.
2099         Also add for_owner and associated.
2100         (struct _DBusGProxyManager): Add owner_names, which is hash table
2101         that maps a base name to a list of names it owns (that we're
2102         interested in).  Add pending_nameowner_calls which is a list of
2103         all outstanding GetNameOwner; avoids us having to iterate over
2104         every proxy.  Add unassociated_proxies which keeps track of name
2105         proxies with no associated name owner.
2106         (dbus_g_proxy_manager_unref): Destroy owner_names.
2107         (struct DBusGProxyNameOwnerInfo): New struct for keeping track of
2108         name refcounts.
2109         (find_name_in_info, name_owner_foreach)
2110         (dbus_g_proxy_manager_lookup_name_owner, insert_nameinfo)
2111         (dbus_g_proxy_manager_monitor_name_owner)
2112         (dbus_g_proxy_manager_unmonitor_name_owner)
2113         (unassociate_proxies, dbus_g_proxy_manager_replace_name_owner):
2114         New functions; they manipulate the owner_names mapping.
2115         (got_name_owner_cb): New function.
2116         (get_name_owner): New function, extracted from
2117         dbus_g_proxy_new_for_name_owner.
2118         (dbus_g_proxy_manager_register): For now we need to keep track of
2119         all NameOwnerChanged.  Also if the proxy is for a name, if we
2120         don't already know the name owner, queue a new GetNameOwner
2121         request and add it to our list of unassociated proxies.  Otherwise
2122         inc the refcount.
2123         (dbus_g_proxy_manager_unregister): If this proxy is for a name,
2124         cancel any pending GetNameOwner call, etc.
2125         (dbus_g_proxy_manager_filter): Handle NameOwnerChanged.  Also use
2126         the owner_names mapping to look up the current names for the
2127         signal source, and dispatch to any proxies for that name.
2128         (dbus_g_proxy_new): Initialize new members.
2129         (dbus_g_proxy_new_for_name): Delete unused proxy variable.
2130         (dbus_g_proxy_new_for_name_owner): Use get_name_owner.
2131         (dbus_g_pending_call_end_valist): New function, extracted from
2132         dbus_g_proxy_end_call_internal.  Useful when we don't have a proxy
2133         but want to use the GLib infrastructure.  Also note how many
2134         arguments in reply were over.
2135         (dbus_g_pending_call_end): New function, just call
2136         dbus_g_pending_call_end_valist.
2137         (dbus_g_proxy_end_call_internal): Just call
2138         dbus_g_pending_call_end_valist.
2139
2140         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Fix lookup
2141         of builtin marshaller for STRING_STRING_STRING.
2142
2143         * test/glib/test-dbus-glib.c: 
2144         * test/glib/test-service-glib.c:
2145         * test/glib/test-service-glib.xml:
2146         Extend tests to cover name proxies, destruction of owner proxies,
2147         etc.
2148         
2149         * glib/examples/example-signal-recipient.c
2150         (dbus_g_proxy_new_for_name_owner): Create a name proxy.
2151         
2152         * tools/dbus-send.c (main): Print D-BUS error name in addition
2153         to message.
2154
2155 2005-06-28  John (J5) Palmieri  <johnp@redhat.com>
2156
2157         * python/dbus_bindings.pyx.in (cunregister_function_handler,
2158         cmessage_function_handler): Patch from 
2159         Anthony Baxter <anthony@interlink.com.au> fixes threading problems
2160         by using the Py_GILState_Ensure/Release to synchronize with the
2161         python runtime.
2162         
2163 2005-06-28  Ray Strode  <rstrode@redhat.com>
2164
2165         *  dbus/dbus-spawn.c (_dbus_babysitter_unref): kill
2166         babysitter helper process on last unref, bug #2813.
2167
2168 2005-06-27  Colin Walters  <walters@verbum.org>
2169
2170         * test/glib/test-dbus-glib.c: 
2171         * test/glib/test-service-glib.c:
2172         * test/glib/test-service-glib.xml:
2173         Test hash table signal emitting.
2174
2175         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Convert
2176         types to their fundamental basis types, since this is what
2177         marshallers operate on.  Also add an entry for VOID__BOXED.
2178         (dbus_g_object_register_marshaller_array): Convert to fundamental.
2179
2180 2005-06-26  Havoc Pennington  <hp@redhat.com>
2181
2182         * doc/dbus-tutorial.xml: fix names of interface/service/path, fix
2183         from Don Park
2184
2185 2005-06-26  Colin Walters  <walters@verbum.org>
2186
2187         * glib/dbus-glib.c (dbus_set_g_error): Delete.
2188         (dbus_g_error_set): New public function from its ashes; used by
2189         both service-side method implementation and GLib bindings
2190         internals.
2191         (dbus_g_error_has_name, dbus_g_error_get_name): New function.
2192         (_dbus_glib_test): Add some tests.
2193
2194         * test/glib/test-dbus-glib.c (main): Test dbus_g_error_has_name.
2195
2196         * test/glib/test-service-glib.c (my_object_throw_error): Use
2197         dbus_g_error_set.
2198
2199         * glib/dbus-gobject.c (gerror_to_dbus_error_message): Handle
2200         errors thrown by dbus_g_error_set.
2201
2202         * glib/dbus-gmain.c (dbus_g_bus_get): Change to dbus_g_error_set.
2203
2204         * glib/dbus-gparser.c (validate_signature): Ditto.
2205
2206         * glib/dbus-gproxy.c (dbus_g_proxy_new_for_name_owner) 
2207         (dbus_g_proxy_end_call_internal): Ditto.
2208
2209         * glib/Makefile.am: Generate dbus-glib-error-switch.h, which
2210         converts DBUS_ERROR_x to DBUS_GERROR_x.
2211         (libdbus_glib_1_la_SOURCES, BUILT_SOURCES, CLEANFILES): Add it.
2212
2213         * doc/TODO: Remove error TODO.
2214
2215         * doc/dbus-tutorial.xml: Update with documentation about error
2216         handling.
2217
2218         * dbus/make-dbus-glib-error-enum.sh: Tighten up regexp to make
2219         sure we only change DBUS_ERROR to DBUS_GERROR, not all ERROR to
2220         GERROR.  Also add DBUS_GERROR_REMOTE_EXCEPTION.
2221
2222 2005-06-22  Colin Walters  <walters@verbum.org>
2223         
2224         Patch from Ross Burton <ross@openedhand.com>
2225
2226         * glib/dbus-gobject.c (dbus_g_method_return): Free out_sig.
2227
2228 2005-06-20  Colin Walters  <walters@verbum.org>
2229
2230         * configure.in: Add glib/examples.
2231
2232         * glib/Makefile.am: Add examples/
2233
2234         * glib/examples/.cvsignore
2235         * glib/examples/Makefile.am
2236         * glib/examples/example-client.c
2237         * glib/examples/example-service.c
2238         * glib/examples/example-service.xml
2239         * glib/examples/example-signal-emitter.c
2240         * glib/examples/example-signal-emitter.xml
2241         * glib/examples/example-signal-recipient.c:
2242         New files; GLib binding examples, ported from
2243         python/examples.
2244
2245 2005-06-20  Colin Walters  <walters@verbum.org>
2246
2247         * dbus/dbus-glib.h: 
2248         * glib/dbus-gproxy.c: Rename dbus_g_proxy_invoke to
2249         dbus_g_proxy_call.
2250
2251         * glib/dbus-binding-tool-glib.c: 
2252         * doc/dbus-tutorial.xml: 
2253         * test/glib/test-dbus-glib.c: Update for rename.
2254         
2255 2005-06-20  Colin Walters  <walters@verbum.org>
2256
2257         Patch suggested by Ross Burton <ross@openedhand.com>
2258
2259         * glib/dbus-gobject.c (export_signals): Free signal name.
2260         (g_value_init): Use G_VALUE_NOCOPY_CONTENTS to plug
2261         memory leak.  Add a bit of documentation.
2262         (dbus_g_method_return_error): Free context, and note we do
2263         so.
2264
2265 2005-06-18  Murray Cumming  <murrayc@murrayc.com>
2266
2267         * dbus/dbus-glib.h:
2268         * glib/dbus-gobject.c:
2269         * glib/dbus-gproxy.c:
2270         * glib/dbus-gvalue.c: Predeclare structs as 
2271         typedef struct _Something Something instead of 
2272         typedef struct Something Something, so we can 
2273         redeclare the prototypes. Other GNOME libraries 
2274         do this already.
2275
2276 2005-06-17  Colin Walters  <walters@verbum.org>
2277
2278         * tools/dbus-names-model.c (have_names_notify): Fix call
2279         to dbus_g_proxy_end_call.
2280         
2281 2005-06-17  Colin Walters  <walters@verbum.org>
2282
2283         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): Don't
2284         spew warnings if we get malformed remote signals.
2285
2286         * glib/dbus-gobject.c (propsig_iterate): New function.
2287         (lookup_object_info): New function, extracted from
2288         lookup_object_and_method.
2289         (introspect_properties, introspect_signals): Delete; these
2290         are merged into write_interface.
2291         (write_interface): Write out signals and properties here;
2292         dump the org.gtk.object stuff and use the interface given
2293         in the introspection data blob.  Also fix up property XML.
2294         (lookup_values): New function.
2295         (introspect_interfaces): Gather a mapping from interface to a
2296         list of its methods, signals, and properties, then write out
2297         each interface.
2298         (lookup_object_and_method): Use lookup_object_info.
2299         (struct DBusGSignalClosure): Add interface.
2300         (dbus_g_signal_closure_new): Add interface. Don't dup signame;
2301         we can just use the constant data.
2302         (dbus_g_signal_closure_finalize): Don't free signal name.
2303         (signal_emitter_marshaller): Use interface from signal closure.
2304         (export_signals): Only export signals mentioned in introspection
2305         blob.
2306         (dbus_g_connection_register_g_object): Warn if we have no
2307         introspection data for an object.
2308         (funcsig_equal): Remove unused variable.
2309         (dbus_g_object_register_marshaller): Take varargs instead of
2310         list.
2311         (dbus_g_object_register_marshaller_array): New function,
2312         extracted from old dbus_g_object_register_marshaller.
2313
2314         * glib/dbus-binding-tool-glib.c (struct DBusBindingToolCData): Add
2315         signals and property data.
2316         (write_quoted_string): New function, extracted from generate_glue.
2317         (generate_glue): Write signals and properties to introspection
2318         blob.
2319
2320         * dbus/dbus-glib.h (struct DBusGObjectInfo): Include
2321         exported_signals and exported_properties.
2322         (dbus_g_object_register_marshaller): Update prototype.
2323         (dbus_g_object_register_marshaller_array): Prototype.
2324         
2325         * test/glib/test-dbus-glib.c: Extend testing to cover new signals.
2326
2327         * test/glib/test-service-glib.c: Add new test signals and method
2328         to emit them.
2329
2330         * test/glib/test-service-glib.xml: Add some test signals.
2331
2332         * test/glib/Makefile.am (BUILT_SOURCES): Add my-object-marshal.c
2333         and my-object-marshal.h
2334         (test_service_glib_SOURCES, test_dbus_glib_SOURCES): Add
2335         my-object-marshal.c.
2336         (my-object-marshal.c, my-object-marshal.h): Implement.
2337
2338         * test/glib/.cvsignore: Update.
2339
2340         * doc/TODO: Remove two GLib TODO items fixed by this
2341         patch.
2342
2343 2005-06-16  Colin Walters  <walters@verbum.org>
2344
2345         * doc/TODO: Update for GLib bindings.
2346         
2347 2005-06-16  Colin Walters  <walters@verbum.org>
2348
2349         * glib/dbus-binding-tool-glib.c:
2350         * glib/dbus-gobject.c:
2351         * glib/dbus-gproxy.c:  Add Nokia copyright; Patch
2352         from Ross Burton, for his GLib bindings work.
2353
2354 2005-06-16  Colin Walters  <walters@verbum.org>
2355
2356         * glib/dbus-gobject.c (funcsig_hash, funcsig_equal): Use n_params
2357         to iterate instead of walking to G_TYPE_INVALID.
2358
2359         Patch based on a patch from Ryan Gammon.
2360
2361 2005-06-16  Colin Walters  <walters@verbum.org>
2362
2363         * bus/bus.c (bus_context_new): Set parser to NULL
2364         after we unref it (Patch from Chris Boscolo, #2174).
2365         
2366 2005-06-16  Colin Walters  <walters@verbum.org>
2367
2368         * python/dbus_bindings.pyx.in: Import size_t,
2369         __int64_t, __uint64_t, and __signed.
2370
2371         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (write_credentials_byte):
2372         Define cmsg struct, output it.
2373         (_dbus_read_credentials_unix_socket):
2374         Use cmsg struct.
2375         
2376         Patch from Joe Markus Clarke for FreeBSD support.
2377         
2378 2005-06-16  Colin Walters  <walters@verbum.org>
2379
2380         * tools/dbus-send.c (append_array): Use strtok.
2381         (append_dict): New function.
2382         (type_from_name): New function, extracted from main.
2383         (main): Handle sending dicts.
2384
2385         * tools/dbus-print-message.c (print_iter): Print dict
2386         entries.
2387         
2388 2005-06-16  Colin Walters  <walters@verbum.org>
2389
2390         * glib/dbus-gvalue.c (marshal_basic): Marshal NULL string
2391         values as the empty string (#2948).
2392         
2393 2005-06-16  Colin Walters  <walters@verbum.org>
2394
2395         * dbus/Makefile.am:
2396         * mono/doc/Makefile.am:
2397         * test/glib/Makefile.am:
2398
2399         Fix srcdir != builddir issues (Patch from Chris Wilson, #3477)
2400
2401 2005-06-16  Colin Walters  <walters@verbum.org>
2402
2403         * dbus/dbus-marshal-header.c (_dbus_header_load): Set
2404         header byte order from expected byte order (Patch from Chris Wilson, #3475).
2405
2406         * dbus/dbus-marshal-byteswap.c (byteswap_body_helper): 
2407         Increment pointer after swapping fixed array.  Add assertion
2408         for array length.
2409                 
2410 2005-06-15  Colin Walters  <walters@verbum.org>
2411
2412         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
2413         Fix call to dbus_set_error.  (Patch from Michael Banck, #3461)
2414         
2415 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2416
2417         * NEWS: Update to 0.34
2418
2419 2005-06-15  David Zeuthen  <davidz@redhat.com>
2420
2421         * configure.in (LT_CURRENT): Revert back to 1 as the library
2422         hasn't changed and we've certainly not committed to protocol
2423         stability yet.  All this does is to break ABI. See commit note
2424         from hp@redhat.com 2005-05-05 for details.
2425         
2426 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2427
2428         * dbus/dbus-connection.c (_dbus_connection_peer_filter): New method 
2429         (_dbus_connection_run_builtin_filters): New method
2430         (dbus_connection_dispatch): Run the builtin filters which in turn
2431         runs the peer filter which handles Ping messages.
2432
2433         * doc/TODO: 
2434          - Ping isn't handled: This patch fixes it
2435          
2436          - Add a test case for the Ping message: added TODO item
2437
2438 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2439
2440         * dbus/dbus-message.c:
2441         (dbus_message_has_path): New method
2442         (dbus_message_has_interface): New method
2443         (dbus_message_has_member): New method
2444
2445         * dbus/dbus/dbus-sysdeps.c (_dbus_check_dir_is_private_to_user):
2446         New method
2447
2448         * dbus/dbus-keyring.c (_dbus_keyring_reload): Check to see that 
2449         the keyring directory is private to the user
2450
2451         * doc/TODO:
2452          - The convenience functions in dbus-bus.h should perhaps have
2453          the signatures that they would have if they were autogenerated
2454          stubs. e.g. the acquire service function. We should also evaluate
2455          which of these functions to include, in light of the fact that
2456          GLib/Qt native stubs will probably also exist.: Punted
2457
2458          - add dbus_message_has_path(), maybe has_member/interface:
2459          fixed in this patch
2460
2461          - in dbus-keyring.c, enforce that the keyring dir is not
2462          world readable/writable: Fixed in this patch
2463
2464 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
2465
2466         * dbus/dbus-marshal-validate.h: Added a new validation
2467         error code DBUS_VALIDITY_UNKNOWN_OOM_ERROR = -4 for 
2468         out of memory errors when validating signitures
2469
2470         * dbus/dbus-marshal-header.c: use DBUS_VALIDITY_UNKNOWN_OOM_ERROR
2471         in places where we previously used DBUS_VALID and a FALSE return 
2472         value to indicate OOM
2473         
2474         * dbus/dbus-marshal-validate.c (_dbus_validate_signature_with_reason):
2475         Use a stack to track the number of elements inside containers.  The 
2476         stack values are then used to validate that dict entries have only two
2477         elements within them.
2478         (validate_body_helper): check the reason for failure when validating
2479         varients
2480         
2481         * dbus/dbus-message.c (load_message): use 
2482         DBUS_VALIDITY_UNKNOWN_OOM_ERROR in places where we previously used 
2483         DBUS_VALID and a FALSE return value to indicate OOM
2484
2485         * doc/TODO: remove "- validate dict entry number of fields" as this
2486         patch fixes it
2487
2488 2005-06-14  David Zeuthen  <davidz@redhat.com>
2489
2490         * bus/bus.c (process_config_every_time): Drop existing conf-dir
2491         watches (if applicable) and add new watches
2492
2493         * bus/main.c (signal_handler): Handle SIGIO if using D_NOTIFY
2494         (main): Setup SIGIO signal handler if using D_NOTIFY
2495
2496         * bus/config-parser.h: Add prototype bus_config_parser_get_conf_dirs
2497
2498         * bus/config-parser.c (struct BusConfigParser): Add conf_dirs list
2499         (merge_included): Also merge conf_dirs list
2500         (bus_config_parser_unref): Clear conf_dirs list
2501         (include_dir): Add directory to conf_dirs list
2502         (bus_config_parser_get_conf_dirs): New function
2503
2504         * bus/dir-watch.[ch]: New files
2505
2506         * bus/Makefile.am (BUS_SOURCES): Add dir-watch.[ch]
2507
2508         * configure.in: Add checks for D_NOTIFY on Linux
2509
2510 2005-06-14  Colin Walters  <walters@verbum.org>
2511
2512         * glib/dbus-binding-tool-glib.c:
2513         * glib/dbus-gobject.c:
2514         * glib/dbus-gvalue.c: Fix indentation and brace style.
2515         
2516 2005-06-14  Ross Burton <ross@openedhand.com>.
2517
2518         * glib/dbus-glib.h: Make DBusGMethodInvocation
2519         a private structure.  Rearrange prototypes a bit.
2520         
2521         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): Add
2522         documentation for first_arg_type.
2523         
2524         * glib/dbus-gobject.c: Move DBusGMethodInvocation
2525         here, add documentation.  Move dbus_g_method_return
2526         and dbus_g_method_return_error into public API
2527         section.
2528
2529 2005-06-14  Colin Walters  <walters@verbum.org>
2530
2531         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller):
2532         Add missing return statements, noticed by Ross Burton.
2533         
2534 2005-06-13  Ross Burton <ross@openedhand.com>.
2535
2536         * glib/dbus-gobject.c: Handle errors on message
2537         demarshalling by sending error message back.
2538         * glib/dbus-gvalue.c: Initialize return variables.
2539
2540 2005-06-13  Colin Walters  <walters@verbum.org>
2541
2542         * glib/Makefile.am: Fix thinko in last patch.
2543
2544 2005-06-13  Colin Walters  <walters@verbum.org>
2545
2546         * glib/Makefile.am: Move dbus-gtype-specialized.c
2547         and dbus-gtype-specialized.h into a _HEADERS variable,
2548         install them.
2549
2550 2005-06-12  Colin Walters  <walters@verbum.org>
2551
2552         Async signals and various bugfixes and testing by
2553         Ross Burton <ross@openedhand.com>.
2554
2555         * glib/dbus-gvalue.h: (struct DBusBasicGValue): Delete.
2556         (dbus_gvalue_genmarshal_name_from_type)
2557         (dbus_gvalue_ctype_from_type): Moved to dbus-binding-tool-glib.c.
2558         (dbus_gtype_to_dbus_type): Renamed to dbus_gtype_from_signature.
2559         (dbus_g_value_types_init, dbus_gtype_from_signature)
2560         (dbus_gtype_from_signature_iter, dbus_gtype_to_signature)
2561         (dbus_gtypes_from_arg_signature): New function prototypes.
2562         (dbus_gvalue_demarshal): Take context and error arguments.
2563         (dbus_gvalue_demarshal_variant): New function.
2564         (dbus_gvalue_demarshal_message): New function.
2565         (dbus_gvalue_store): Delete.
2566
2567         * glib/dbus-gvalue.c:
2568
2569         File has been almost entirely rewritten; now we special-case
2570         more types such as DBUS_TYPE_SIGNATURE, handle arrays and
2571         hash tables correctly, etc.  Full support for recursive values
2572         is not yet complete.
2573
2574         * glib/dbus-gproxy.c (dbus_g_proxy_class_init): Change last
2575         argument of signal to G_TYPE_POINTER since we now pass a
2576         structure.
2577         (lookup_g_marshaller): Delete in favor of
2578         _dbus_gobject_lookup_marshaller.
2579         (marshal_dbus_message_to_g_marshaller): Use
2580         _dbus_gobject_lookup_marshaller and dbus_gvalue_demarshal_message
2581         to handle remote signal callbacks.
2582         (dbus_g_proxy_new_from_proxy): New function; creates a new
2583         DBusGProxy by copying an existing one.
2584         (dbus_g_proxy_get_interface, dbus_g_proxy_set_interface)
2585         (dbus_g_proxy_get_path): New functions.
2586         (dbus_g_proxy_marshal_args_to_message): New function;
2587         factored out of existing code.
2588         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Collect all arguments
2589         from a varargs array.
2590         (dbus_g_proxy_begin_call_internal): New function.
2591         (dbus_g_proxy_end_call_internal): New function.
2592         (dbus_g_proxy_begin_call): Take GTypes instead of DBus types
2593         as arguments; simply invoke dbus_g_proxy_begin_call_internal
2594         after collecting args into value array.
2595         (dbus_g_proxy_end_call): Take GTypes instead of DBus types;
2596         invoke dbus_g_proxy_end_call_internal.
2597         (dbus_g_proxy_invoke): Simply invoke begin_call_interanl and
2598         end_call_internal.
2599         (dbus_g_proxy_call_no_reply): Take GTypes instead of DBus
2600         types.
2601         (array_free_all): New function.
2602         (dbus_g_proxy_add_signal): Take GTypes.
2603
2604         * glib/dbus-gobject.h:
2605         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
2606         (_dbus_gobject_get_path, _dbus_gobject_lookup_marshaller):
2607         Prototype.
2608
2609         * glib/dbus-gobject.c: Add a global marshal_table hash which
2610         stores mappings from type signatures to marshallers.  Change lots
2611         of invocations of dbus_gtype_to_dbus_type to
2612         dbus_gtype_to_signature.
2613         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
2614         (introspect_signals): Fix test for query.return_type.
2615         (set_object_property): Update invocation of dbus_gvalue_demarshal.
2616         (invoke_object_method): Many changes.  Handle asynchronous
2617         invocations.  Convert arguments with
2618         dbus_gvalue_demarshal_message.  Handle errors.  Use
2619         DBusSignatureIter instead of strlen on args. Handle all arguments
2620         generically.  Special-case variants.
2621         (dbus_g_method_return, dbus_g_method_return_error): New function.
2622         (DBusGSignalClosure): New structure, closes over signal
2623         information.
2624         (dbus_g_signal_closure_new): New function.
2625         (dbus_g_signal_closure_finalize): New function.
2626         (signal_emitter_marshaller): New function; is special marshaller
2627         which emits signals on bus.
2628         (export_signals): New function; introspects object signals and
2629         connects to them.
2630         (dbus_g_object_type_install_info): Take GType instead of
2631         GObjectClass.
2632         (dbus_g_connection_register_g_object): Invoke export_signals.
2633         (dbus_g_connection_lookup_g_object): New function.
2634         (DBusGFuncSignature) New structure; used for mapping type
2635         signatures to marshallers.
2636         (funcsig_hash): New function; hashes DBusGFuncSignature.
2637         (funcsig_equal): New function; compares DBusGFuncSignature.
2638         (_dbus_gobject_lookup_marshaller): New function.
2639         (dbus_g_object_register_marshaller): New function; used to
2640         register a marshaller at runtime for a particular signature.
2641
2642         * glib/dbus-gmain.c (_dbus_gmain_test): Add various tests.
2643
2644         * glib/dbus-binding-tool-glib.h: Add DBUS_GLIB_ANNOTATION_ASYNC
2645         which notes a server method implementation should be
2646         asynchronous.
2647
2648         * glib/dbus-binding-tool-glib.c
2649         (dbus_binding_tool_output_glib_server): Call
2650         dbus_g_value_types_init.
2651         (write_formal_parameters): Use dbus_gtype_from_signature.  Handle
2652         variants specially.
2653         (dbus_g_type_get_lookup_function): Turn GType into an invocation
2654         of a lookup function.
2655         (write_args_for_direction): Use dbus_g_type_get_lookup_function.
2656         (write_untyped_out_args): New method; write output arguments.
2657         (write_formal_declarations_for_direction): Function for
2658         writing prototypes.
2659         (write_formal_parameters_for_direction): Function for
2660         writing implementations.
2661         (write_typed_args_for_direction): Function for writing
2662         arguments prefixed with GTypes.
2663         (write_async_method_client): Write out async version
2664         of method.
2665
2666         * glib/dbus-binding-tool-glib.c: Include dbus-gvalue-utils.h.
2667         (dbus_g_type_get_marshal_name): Move mapping from GType
2668         to marshal name into here.
2669         (dbus_g_type_get_c_name): Move into here.
2670         (compute_marshaller): Convert signature to type with
2671         dbus_gtype_from_signature, use dbus_g_type_get_marshal_name.
2672         (compute_marshaller_name): Ditto.
2673         (compute_marshaller): Handle async signal annotations.
2674         (gather_marshallers): Return if we don't have a known
2675         prefix.
2676         (generate_glue): Collect introspection blob here, and
2677         write all of the blob at the end.  This allows an object
2678         with multiple interfaces to work.
2679         Mark async methods in introspection blob.
2680
2681         * glib/Makefile.am (libdbus_glib_1_la_SOURCES): Add
2682         dbus-gtype-specialized.c, dbus-gtype-specialized.h,
2683         dbus-gvalue-utils.h, dbus-gvalue-utils.c.
2684
2685         * dbus/dbus-glib.h: Don't include dbus-protocol.h; this
2686         avoids people accidentally using DBUS_TYPE_* which should
2687         not be necessary anymore.
2688         Do include dbus-gtype-specialized.h, which are utilities
2689         for GLib container types.
2690         Add various #defines for types such as
2691         DBUS_TYPE_G_BOOLEAN_ARRAY.
2692         (DBusGValueIterator, DBusGValue): Define, not fully used
2693         yet.
2694         (dbus_g_value_get_g_type): Type for recursive value.
2695         (dbus_g_value_open, dbus_g_value_iterator_get_value)
2696         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
2697         (dbus_g_value_free): Prototypes.
2698         (dbus_g_object_register_marshaller, dbus_g_proxy_new_from_proxy): Prototype.
2699         (dbus_g_proxy_set_interface): Prototype.
2700         (dbus_g_proxy_begin_call, dbus_g_proxy_end_call)
2701         (dbus_g_proxy_call_no_reply): Take GLib types instead of DBus
2702         types.
2703         (dbus_g_proxy_get_path, dbus_g_proxy_get_interface):
2704         Accessors.
2705         (DBusGAsyncData, DBusGMethodInvocation): Structures for
2706         doing async invocations.
2707         (dbus_g_method_return, dbus_g_method_return_error):
2708         Prototypes.
2709         * doc/dbus-tutorial.xml: Update GLib section.
2710         
2711         * tools/dbus-viewer.c (load_child_nodes): Update
2712         for new invocation type of dbus_g_proxy_end_call.
2713         (load_from_service_thread_func): Ditto.
2714
2715         * tools/print-introspect.c (main): Ditto.
2716
2717         * tools/dbus-names-model.c (have_names_notify)
2718         (names_model_reload, names_model_set_connection)
2719         Use GTypes.
2720
2721         * python/Makefile.am (INCLUDES): Define DBUS_COMPILATION,
2722         needed since Python bindings use GLib bindings.
2723
2724         * test/glib/Makefile.am (INCLUDES): Define DBUS_COMPILATION.
2725         Add --prefix argument.
2726
2727         * tools/Makefile.am: Define DBUS_COMPILATION.  Remove
2728         unneeded --ignore-unsupported arg.
2729         
2730         * test/glib/test-service-glib.c: 
2731         * test/glib/test-service-glib.xml:
2732         * test/glib/test-dbus-glib.c: Add many more tests.
2733
2734 2005-06-06  David Zeuthen  <davidz@redhat.com>
2735
2736         * doc/TODO: Add item about need to remove deprecated functions.
2737
2738         * dbus/dbus-connection.h: Add prototype for dbus_connection_disconnect
2739
2740         * dbus/dbus-connection.c (dbus_connection_disconnect): New function
2741         to repair the ABI which was broken with the last commit.
2742
2743 2005-06-02  John (J5) Palmieri <johnp@redhat.com>
2744
2745         *  dbus/dbus-connection.c, dbus/dbus-connection.h 
2746         (dbus_connection_disconnect): renamed to dbus_connection_close 
2747         for API symmetry with dbus_connection_open
2748         (_dbus_connection_open_internal): 
2749         s/dbus_connection_disconnect/dbus_connection_close
2750
2751         * dbus/dbus-bus.c (dbus_bus_get):
2752         s/dbus_connection_disconnect/dbus_connection_close
2753
2754         * bus/connection.c (bus_connections_unref, 
2755         bus_connections_setup_connection, bus_connections_expire_incomplete):
2756         s/dbus_connection_disconnect/dbus_connection_close
2757
2758         * bus/dispatch.c (bus_dispatch, kill_client_connection, 
2759         kill_client_connection_unchecked, check_hello_connection):
2760         s/dbus_connection_disconnect/dbus_connection_close
2761
2762         * bus/bus.c (new_connection_callback):
2763         s/dbus_connection_disconnect/dbus_connection_close
2764
2765         * tools/dbus-send.c (main):
2766         s/dbus_connection_disconnect/dbus_connection_close
2767
2768         * test/glib/test-profile.c (no_bus_thread_func, with_bus_thread_func):
2769         s/dbus_connection_disconnect/dbus_connection_close
2770         
2771         * test/test-service.c (path_message_func, filter_func):
2772         s/dbus_connection_disconnect/dbus_connection_close
2773         
2774         * doc/TODO: remove connection_open/connection_disconnect lacks symmetry         item that was just fixed
2775         
2776 2005-05-25  Colin Walters  <walters@verbum.org>
2777
2778         * dbus/dbus-protocol.h: Move various bus service #defines such
2779           as DBUS_SERVICE_DBUS and DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT to
2780           dbus/dbus-shared.h.
2781         * dbus/dbus-shared.h: Various defines moved here.
2782         * dbus/dbus-marshal-header.c: Include dbus-shared.h.
2783
2784 2005-05-25  John (J5) Palmieri  <johnp@redhat.com>
2785
2786         * python/__init__.py: Python bindings deserve a minor version
2787         update.  Upped to (0, 40, 2)
2788
2789 2005-05-24  John (J5) Palmieri  <johnp@redhat.com>
2790
2791         * python/decorators.py: add explicitly_pass_message decorator
2792         for passing in the dbus message as keyword for edge case signal
2793         handling
2794
2795         * python/matchrules.py (SignalMatchRule.__repr__): fix output
2796         to conform with what dbus expects for match rules
2797         (SignalMatchRule.execute): add the dbus message as a keyword
2798         if the signal handler has requested it
2799
2800         * python/examples/example/signal-recipient.py: added some more
2801         examples on how to hook up to signals
2802
2803 2005-05-23  John (J5) Palmieri  <johnp@redhat.com>
2804
2805         * python/decorators.py: import dbus_bindings
2806
2807         * python/matchrules.py (SignalMatchRule, SignalMatchTree, 
2808         SignalMatchNode): new classes that implement wildcard signal
2809         callback matching using a tree lookup. Heavily modified from a
2810         patch sent by Celso Pinto (fd.o bug #3241)
2811
2812         * _dbus.py (add_signal_receiver, remove_signal_receiver, _signal_func):
2813         use new match classes to handle signals.
2814
2815 2005-05-19  John (J5) Palmieri  <johnp@redhat.com>
2816         
2817         * python/dbus_bindings.pyx.in: s/TYPE_PATH/TYPE_OBJECT_PATH
2818
2819 2005-05-18  Havoc Pennington  <hp@redhat.com>
2820
2821         * configure.in: use GLIB_GNU_GETTEXT to get INTLLIBS and require
2822         gettext. Not really worth requiring yet perhaps, but any
2823         production quality 1.0 would require it so we should go ahead and
2824         get things set up. We do have a couple token calls to
2825         bindtextdomain in the code already.
2826
2827 2005-05-16  John (J5) Palmieri  <johnp@redhat.com>
2828
2829         * glib/dbus-gmain.c (io_handler_dispatch): fix deadlock
2830         when using recursive g_main_loops
2831
2832         * python/_dbus.py (class Bus): add the ProxyObjectClass
2833         alias for ProxyObject to make it easier for the Twisted 
2834         networking framework to integrate dbus.
2835
2836         * python/proxies.py (class ProxyObject): add the ProxyMethodClass
2837         alias for ProxyMethod to make it easier for the Twisted 
2838         networking framework to integrate dbus. 
2839
2840 2005-05-11  Ross Burton  <ross@openedhand.com>
2841
2842         * glib/dbus-glib-tool.c: Add --prefix argument.
2843         * glib/dbus-binding-tool-glib.h: Add prefix argument.
2844         * glib/dbus-binding-tool-glib.c (compute_marshaller_name):
2845         Add prefix argument.
2846         (generate_glue): Pass prefix argument down.
2847         (dbus_binding_tool_output_glib_server): Pass prefix to
2848         glib-genmarshal.
2849         
2850 2005-05-11  Colin Walters  <walters@verbum.org>
2851
2852         * tools/dbus-send.c (append_array): New function.
2853         (append_arg): Broken out from main.
2854         (main): Add cheesy hack to send arrays and variants.
2855         (usage): Update.
2856         * tools/dbus-print-message.c (print_iter): Broken out
2857         from main.
2858
2859 2005-05-11  Colin Walters  <walters@verbum.org>
2860
2861         * dbus/dbus-signature.c (dbus_signature_iter_get_signature):
2862         New function, returns signature string for signature iter.
2863         * dbus/dbus-signature.h: Prototype it.
2864         * dbus/dbus-message.c (dbus_message_iter_get_signature):
2865         New function, returns signature string for message iter.
2866         (dbus_message_iter_get_array_len): New function, returns
2867         length of array.
2868         (dbus_message_iter_get_fixed_array): Fix assertion; this
2869         function should be used when the iter is pointing to the
2870         contents of an array
2871         * dbus/dbus-message.h: Prototypes.
2872         * dbus/dbus-marshal-recursive.c (_dbus_type_reader_get_array_length):
2873         New function; returns length of an array.
2874         * dbus/dbus-marshal-recursive.h: Prototype it.
2875         
2876 2005-05-11  Colin Walters  <walters@verbum.org>
2877
2878         * dbus/dbus-sysdeps-util.c <!HAVE_POSIX_GETPWNAM_R>: Fix
2879         compilation error.
2880         
2881 2005-05-08  Havoc Pennington  <hp@redhat.com>
2882
2883         * dbus/dbus-sysdeps-util.c (_dbus_become_daemon): write the
2884         daemon's pid, not the parent's pid, to the file descriptor.
2885         Reported by Taj Morton.
2886
2887 2005-05-05  Havoc Pennington  <hp@redhat.com>
2888
2889         * configure.in (LT_*): add notes on how the libtool versioning
2890         works to save thinking. Increment soname to indicate protocol
2891         breakage (though really the library interface hasn't changed I
2892         guess)
2893
2894         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
2895         verify the GUID received from server matches what we were
2896         expecting, if we had an expectation
2897
2898         * dbus/dbus-auth.c (send_ok): send GUID along with the OK command
2899         (_dbus_auth_get_guid_from_server): new function
2900         (send_begin): parse the OK args
2901
2902         * doc/dbus-specification.xml: add GUID to the auth protocol
2903
2904 2005-05-05  John (J5) Palmieri  <johnp@redhat.com>
2905
2906         * Fix my name in previous changelog ;)
2907
2908         * python/proxies.py (ProxyObject.__getattr__): add further patch
2909         from Anthony Baxter to throw an AttributeError when python 
2910         __special__ functions are called instead of marshling them over 
2911         the bus (Bug#1685 comment 3).
2912
2913 2005-05-04  John (J5) Palmieri  <johnp@redhat.com>
2914
2915         * python/Makefile.am: changed to use pyexecdir for the binding
2916         shared libraries (Bug#2494)
2917
2918         * python/exceptions.py: bring exceptions over from the bindings
2919         so they can be used in applications (Bug#2036)
2920         Make all exceptions derive from DBusException
2921
2922         * python/_dbus.py, python/proxies.py: implement __repr__ in a couple
2923         of classes so that print obj doesn't throw an exception (Bug #1685)
2924
2925 2005-05-03  Ross Burton  <ross@openedhand.com>
2926
2927         * glib/dbus-gobject.c (dbus_g_connection_register_g_object):
2928         Return if we get an error during registration.  Set up a
2929         weak reference on object to unregister if object is destroyed.
2930         (unregister_gobject): New function.
2931         
2932 2005-05-01  John (J5) Palmieri  <johnp@redhat.com>
2933
2934         * python/dbus_bindings.pyx.in: 
2935         - added new type classes for hinting to the marashaler what type 
2936         to send over the wire
2937         - added int16 and uint16 marshalers
2938         - Fixed a bug in the type constants that caused int32 to go out
2939         as uint16 over the wire
2940         * python/dbus.py: split up into different files and renamed _dbus.py
2941         * python/__init__.py, python/_util.py, python/decorators.py, 
2942         python/exceptions.py, python/proxies.py, python/services.py,
2943         python/types.py: new files split off from dbus.py
2944         * python/Makefile.am: Add new files, remove dbus.py and 
2945         install all python files to <python module dir>/dbus
2946         * python/examples/*: Added #!/usr/bin/env python to the top of
2947         every example.  Patch provided by Tatavarty Kalyan
2948
2949 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
2950
2951         * NEWS: Update to 0.33
2952
2953 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
2954
2955         * python/dbus_bindings.pyx.in (send_with_reply_handlers): New send
2956         method for doing async calls
2957         (_pending_call_notification): New C function for handling pendning call
2958         callbacks
2959         (set_notify): New method for setting pending call notification
2960         
2961         * python/dbus.py: new version tuple "version" is set at (0, 40, 0)
2962         Async capabilities added to remote method calls
2963         (Sender): class removed
2964         (RemoteService): class removed
2965         (ObjectTree): class removed for now
2966         (RemoteObject): Renamed to ProxyObject
2967         (RemoteMethod): Renamed to ProxyMethod
2968         (method): Decorator added for decorating python methods as dbus methods
2969         (signal): Decorator added for decorating python methods as signal emitters
2970         (ObjectType): Metaclass added for generating introspection data and the
2971         method callback vtable
2972         (Interface): Wrapper class added to wrap objects in a dbus interface
2973         (Object): Uses ObjectType as its metaclass and exports Introspect
2974         of the org.freedesktop.DBus.Introspectable interface
2975         (ValidationException, UnknownMethodException): new exceptions
2976
2977         * python/examples/*: Modified to fit with the new bindings
2978
2979 2005-04-23  Havoc Pennington  <hp@redhat.com>
2980
2981         * dbus/dbus-message.c (dbus_message_append_args): fix doc comment,
2982         reported by Tony Houghton
2983
2984         * test/test-service.c (main): test
2985         dbus_connection_get_object_path_data()
2986
2987         * dbus/dbus-object-tree.c (find_handler): be sure we always init
2988         the exact_match
2989         (_dbus_object_tree_get_user_data_unlocked): new function used by
2990         dbus_connection_get_object_path_data()
2991         (do_register): add assertion test for get_user_data_unlocked
2992         (object_tree_test_iteration): more tests
2993
2994         * dbus/dbus-connection.c (dbus_connection_get_object_path_data):
2995         new function from Dan Reed to let you get the user data from 
2996         dbus_connection_register_object_path()
2997
2998 2005-04-23  John (J5) Palmieri  <johnp@redhat.com>
2999
3000         * dbus/dbus-marshal-recursive-util.c: Fixed buffer overflow
3001         in numerous places that did not account for the NULL terminator
3002         (signature_from_seed): changed the manual string copy loop to 
3003         just use strcpy instead
3004         make check should now pass
3005
3006 2005-04-19  John (J5) Palmieri  <johnp@redhat.com>
3007
3008         * dbus/dbus-marshal-header.c (_dbus_header_create): Fix assert
3009         so that it allows messages that are not signals to pass in 
3010         NULL as the interface.
3011
3012 2005-04-18  David Zeuthen  <davidz@redhat.com>
3013
3014         * glib/dbus-gmain.c (io_handler_destroy_source): 
3015         (timeout_handler_destroy_source, connection_setup_free): 
3016         Also unref the source to avoid memory leaks.
3017
3018 2005-04-13  David Zeuthen  <davidz@redhat.com>
3019
3020         * bus/config-parser.c (bus_config_parser_new): Bump this to a
3021         more reasonable, yet still totally arbitrary, value :-). 
3022
3023 2005-04-13  David Zeuthen  <davidz@redhat.com>
3024
3025         * doc/TODO: Added an "important for 1.0" item about selinux
3026         allow/deny messages
3027
3028 2005-04-13  David Zeuthen  <davidz@redhat.com>
3029
3030         * bus/selinux.c: Add c-file-style to top of file
3031         (log_audit_callback): Don't free the data here anymore
3032         (bus_selinux_check): Don't take spid and tpid since appending
3033         that to auxdata may OOM.
3034         (bus_selinux_allows_acquire_service): Handle OOM and signal back
3035         to the caller if we are OOM by taking an error object.
3036         (bus_selinux_allows_send): -do-
3037
3038         * bus/selinux.h: Fix prototypes for bus_selinux_allows_acquire_service
3039         and bus_selinux_allows_send
3040
3041         * bus/bus.c (bus_context_check_security_policy): Pass error and
3042         pass on OOM thrown by bus_selinux_allows_send()
3043
3044         * bus/services.c (bus_registry_acquire_service): Pass error and
3045         pass on OOM thrown by bus_selinux_allows_acquire_service()
3046
3047 2005-04-13  Havoc Pennington  <hp@redhat.com>
3048
3049         * glib/dbus-gmain.c (message_queue_dispatch): only dispatch one
3050         message at a time to avoid monopolizing the main loop, bug 
3051         #2953 from Benjamin Otte
3052
3053 2005-04-09  Havoc Pennington  <hp@redhat.com>
3054
3055         * dbus/dbus-string.c (copy): change a memcpy to memmove due to
3056         possible overlap, fix from Daniel Reed
3057         (fixup_alignment): fix signedness warnings
3058         (_dbus_string_append_unichar): ditto
3059
3060 2005-04-09  Havoc Pennington  <hp@redhat.com>
3061
3062         * dbus/dbus-message-util.c (_dbus_message_test): fix signedness warning
3063
3064         * glib/dbus-glib-tool.c (main): fix warning
3065
3066         * glib/dbus-binding-tool-glib.c (generate_glue): fix warning
3067
3068         * dbus/dbus-connection.c (dbus_connection_read_write_dispatch):
3069         add a new function that can be used in simple applications that
3070         don't have a main loop and are willing to block
3071
3072 2005-04-05  David Zeuthen  <davidz@redhat.com>
3073
3074         Fix https://bugs.freedesktop.org/show_bug.cgi?id=2889
3075
3076         * glib/dbus-gmain.c:
3077         (io_handler_destroy_source): Remove from list of IO handlers
3078         of the ConnectionSetup object
3079         (timeout_handler_destroy_source): -do- for timeout handlers
3080         (io_handler_source_finalized): Don't remove from list since
3081         we now do that in io_handler_destroy_source(). Renamed from
3082         io_handler_source_destroyed
3083         (timeout_handler_source_destroyed): -do- for timeout handlers
3084         (connection_setup_free): It is now safe to iterate over all
3085         IO and timeout handlers as the _destroy_source removes them
3086         from the list synchronously
3087
3088 2005-03-30  Havoc Pennington  <hp@redhat.com>
3089
3090         * configure.in: change check to gtk 2.4
3091
3092         * tools/dbus-viewer.c (name_combo_changed_callback): remove
3093         gtk_combo_box_get_active_text() usage to decrement GTK requirement
3094         to 2.4
3095
3096 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
3097
3098         * News: Update 0.32
3099
3100         * HACKING: Fixed realease instructions.  configure.in should be updated to
3101           the next release by the person who made the last release.
3102
3103 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
3104
3105         * python/lvalue_cast_post_process.py - removed.  Patch has been
3106           submitted to Pyrex maintainers that fixes gcc4.0 errors
3107
3108         * python/Makefile.am: removed refrences to lvalue_cast_post_process.py
3109
3110 2005-03-24  Daniel Reed  <n@ml.org>
3111
3112         * tools/Makefile.am: Make print-introspect and
3113         dbus-bus-introspect.xml building conditional on HAVE_GLIB.
3114
3115 2005-03-22  John (J5) Palmieri  <johnp@redhat.com>
3116
3117         * tools/Makefile.am: Patch by Colin Walters that fixes distcheck
3118
3119         * dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have 
3120           had in Red Hat packages for a while but for some reason never 
3121           got merged upstream
3122           (_dbus_is_a_number): New checks if a string
3123           can be converted to a number and does the conversion if it can
3124           (_dbus_user_database_lookup): Add check to see if the given username
3125           is a udi.  This allows udi's to be used instead of usernames in the
3126           config file.
3127           (_dbus_user_database_lookup_group): Add check to see if the given groupname
3128           is a gdi.  This allows gdi's to be used instead of groupnames in the
3129           config file.
3130
3131 2005-03-21  John (J5) Palmieri  <johnp@redhat.com>
3132
3133         * python/lvalue_cast_post_process.py - added post processor to fix Pyrex
3134           code so that it compiles with gcc4.0
3135
3136         * python/Makefile.am: Added lvalue_cast_post_process.py to EXTRA_DIST
3137           run dbus_bindings.c through lvalue_cast_post_process.py and copy the
3138           results back to dbus_binding.c
3139
3140 2005-03-20  Colin Walters  <walters@verbum.org>
3141
3142         Patch suggested by Inguva Rajasekhar <ringuva@novell.com>.
3143
3144         * configure.in: Require GTK+ 2.6.
3145         
3146 2005-03-20  Colin Walters  <walters@verbum.org>
3147
3148         * Makefile.am (SUBDIRS, DIST_SUBDIRS): Build tools before test.
3149
3150 2005-03-17  Tom Parker  <palfrey@tevp.net>
3151
3152         * dbus/dbus-userdb.c (_dbus_user_database_lookup): Don't
3153         print DBUS_UID_UNSET; instead print passed username.  Also
3154         be sure to actually use gid looked up in cache.
3155         
3156         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group): Ditto
3157         for DBUS_GID_UNSET and groupname.
3158
3159 2005-03-17  Colin Walters  <walters@verbum.org>
3160
3161         * bus/print-introspect.c: Move to tools/.
3162         * bus/run-with-tmp-session-bus.sh: Ditto.
3163         
3164         * glib/Makefile.am (dbus-glib-bindings.h): Move
3165         generation to tools/Makefile.am.
3166
3167         * test/glib/run-test.sh: Update to handle move
3168         of run-with-tmp-session-bus.sh.
3169
3170         * test/glib/test-service-glib.c: Update to handle
3171         move of dbus-glib-bindings.h.
3172
3173         * tools/print-introspect.c: Moved here
3174         from bus/, and ported to GLib bindings.
3175
3176         * tools/run-with-tmp-session-bus.sh: Moved here
3177         from bus/.
3178
3179         * tools/Makefile.am: Generate dbus-glib-bindings.h
3180         and dbus-bus-introspect.xml here.
3181
3182         * tools/.cvsignore, glib/.cvsignore, bus/.cvsignore:
3183         Update.
3184
3185 2005-03-17  Colin Walters  <walters@verbum.org>
3186
3187         * bus/driver.c (write_args_for_direction): Use
3188         _dbus_string_get_const_data to retrieve string;
3189         _dbus_string_get_const_data_len doesn't actually return
3190         a NULL-terminated substring.
3191
3192         * test/glib/test-service-glib.c: Include dbus-glib-bindings.h.
3193         (main): Change to use org_freedesktop_DBus_request_name
3194         instead of using g_proxy_begin_call/end_call.
3195
3196 2005-03-15  Joe Shaw  <joeshaw@novell.com>
3197
3198         * mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when
3199         generating the finalizer.  Fixes from Ben Maurer.
3200
3201 2005-03-12  Joe Shaw  <joeshaw@novell.com>
3202
3203         * mono/BusDriver.cs: Update method names: ListServices
3204         becomes ListNames; GetOwner becomes GetNameOwner.
3205
3206         * mono/ProxyBuilder.cs (BuildFinalizer): Need to load arg 0
3207         onto the eval stack when removing the delegate.
3208
3209 2005-03-12  Joe Shaw  <joeshaw@novell.com>
3210
3211         * mono/dbus-sharp.dll.config.in: Don't hardcode 0 for
3212         LT_CURRENT.  Set it to the autoconf variable.
3213                                                                                 
3214         * mono/ProxyBuilder.cs: Add a finalizer to the generated proxy
3215         classes that disconnects the signal handler delegate from the
3216         service object.  Fixes a big leak of proxy objects on the
3217         client side of things.  Patch from Ben Maurer
3218         <bmaurer@ximian.com>
3219
3220 2005-03-12  Colin Walters  <walters@verbum.org>
3221
3222         * bus/driver.c (write_args_for_direction): New function,
3223         parses a type signature into arguments and outputs to
3224         XML.
3225         (bus_driver_handle_introspect): Use it instead of
3226         hardcoding XML for certain signatures.
3227         
3228         * bus/Makefile.am (dbus-bus-introspect.xml): Add
3229         dependency on dbus-daemon.
3230
3231         * glib/dbus-glib-tool.c (main): Parse ignore_unsupported
3232         argument, pass it to dbus_binding_tool_output_glib_client.
3233
3234         * glib/dbus-binding-tool-glib.c
3235         (generate_client_glue): Protect against multiple inclusion.
3236         (dbus_binding_tool_output_glib_client): Add
3237         G_BEGIN_DECLS/G_END_DECLS.
3238
3239         * glib/dbus-binding-tool-glib.c (compute_client_method_name):
3240         Change to just take iface prefix directly.
3241         (write_formal_parameters): Clarify error message.
3242         (check_supported_parameters): New function; checks to see type
3243         signatures of method parameters are supported.
3244         (generate_client_glue): Handle ignore_unsupported flag.
3245         (dbus_binding_tool_output_glib_client): Handle ignore_unsupported
3246         parameter.
3247
3248         * glib/Makefile.am (dbus-glib-bindings.h): Pass
3249         --ignore-unsupported by default until glib bindings
3250         support arrays.
3251
3252 2005-03-11  Colin Walters  <walters@verbum.org>
3253
3254         * glib/Makefile.am: Generate dbus-glib-bindings.h and
3255         install it.
3256
3257         * bus/print-introspect.c: New file; prints introspection
3258         data for a given name and object path.
3259
3260         * bus/run-with-tmp-session-bus.sh: New file, refactored
3261         from test/glib/run-test.sh.  Creates a temporary session
3262         bus and runs another program.
3263
3264         * test/glib/run-test.sh: Refactor to invoke
3265         run-with-tmp-session-bus.sh.
3266
3267         * bus/driver.c (bus_driver_handle_introspect): Fix to print new
3268         introspection format.  Also change to use DBUS_TYPE_x_AS_STRING
3269         macros instead of hardcoding.
3270
3271         * glib/.cvsignore, bus/.cvsignore, test/glib/.cvsignore: Update.
3272
3273 2005-03-11  Joe Shaw  <joeshaw@novell.com>
3274
3275         * dbus/dbus-connection.c (dbus_connection_send_with_reply): Remove
3276         this unref; it doesn't match up evenly in some codepaths.
3277         (_dbus_connection_block_pending_call): Unref at every exitpoint;
3278         this evenly matches with the ref near the top of this function.
3279
3280 2005-03-09  Joe Shaw  <joeshaw@novell.com>
3281
3282         * dbus/dbus-object-tree.c
3283         (_dbus_object_tree_unregister_and_unlock): If checks are enabled
3284         and we try to unregister a path that's not registered, still go
3285         through the process of unlocking and don't just return.
3286
3287 2005-03-09  Colin Walters  <walters@verbum.org>
3288
3289         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): New method; calls
3290         to this are generated for client-side wrappers.  Invokes a
3291         D-BUS method and returns reply values.  
3292
3293         * glib/dbus-binding-tool-glib.c (write_args_sig_for_direction): New
3294         function; writes signature string for argument direction.
3295         (write_args_for_direction): Change to pass input values directly
3296         instead of via address, and fix indentation.
3297         (generate_client_glue): Change to invoke dbus_g_proxy_invoke.  Also
3298         make generated wrappers inlineable.
3299
3300         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array): Add
3301         note about using dbus_type_is_fixed.
3302
3303         * dbus/dbus-marshal-basic.c (_dbus_type_is_fixed): Moved to
3304         dbus/dbus-signature.c as dbus_type_is_fixed.
3305
3306         All callers updated.
3307
3308         * dbus/dbus-signature.c (dbus_type_is_fixed): Moved here
3309         from dbus/dbus-marshal-basic.c:_dbus_type_is_fixed.
3310
3311         * dbus/dbus-signature.h: Prototype.
3312
3313         * glib/dbus-binding-tool-glib.c (compute_marshaller_name): Fix
3314         error printf code.
3315
3316         * test/glib/test-dbus-glib.c (main): Be sure to clear error as
3317         appropriate instead of just freeing it.
3318         (main): Free returned strings using g_free.
3319
3320         * test/glib/Makefile.am (test-service-glib-glue.h)
3321         (test-service-glib-bindings.h): Add dependency on dbus-binding-tool.
3322
3323         * glib/dbus-gvalue.c (MAP_BASIC): Refactored from MAP_BASIC_INIT;
3324         simply maps a simple D-BUS type to GType.
3325         (dbus_dbus_type_to_gtype): Function which maps D-BUS type to
3326         GType.
3327         (dbus_gvalue_init): Just invoke dbus_dbus_type_to_gtype and
3328         initialize the value with it.
3329         (dbus_gvalue_binding_type_from_type): Unused, delete.
3330         (dbus_gvalue_demarshal): Switch to hardcoding demarshalling for
3331         various types instead of unmarshalling to value data directly.
3332         Remove can_convert boolean.
3333         (dbus_gvalue_marshal): Remove duplicate initialization; switch to
3334         returning directly instead of using can_convert boolean.
3335         (dbus_gvalue_store): New function; not related to D-BUS per-se.
3336         Stores a GValue in a pointer to a value of its corresponding C
3337         type.
3338
3339         * glib/dbus-gvalue.h: Remove dbus_gvalue_binding_type_from_type,
3340         add dbus_gvalue_store.
3341
3342 2005-03-08  Joe Shaw  <joeshaw@novell.com>
3343
3344         Fix a bunch of lifecycle and memory management problems
3345         in the mono bindings.
3346
3347         * mono/Arguments.cs (Arguments): Implement IDisposable
3348
3349         * mono/Bus.cs (Bus): Don't allow public instantiation.  This is
3350         strictly a static class.
3351
3352         * mono/Connection.cs: Move the DBusObjectPathVTable and associated
3353         delegates into this file.
3354         (Connection): Implement IDisposable.
3355         (Dispose): Disconnect the connection and set the raw connection
3356         pointer to IntPtr.Zero.
3357         (~Connection): Call Dispose().
3358         (RegisterObjectPath): Added.  Manages the registration of object
3359         paths so we can cleanly disconnect them at dispose/finalize time.
3360         (UnregisterObjectPath): Ditto.
3361         (set_RawConnection): Unregister all of the object paths when
3362         changing the underlying DBusConnection.  Add them back onto the
3363         new connection, if any.
3364
3365         * mono/Handler.cs: Don't implement IDisposable; it doesn't use any
3366         more unmanaged resources anymore, so it's not necessary.  Move all
3367         the DBusObjectPathVTable stuff out of here.
3368         (Handler): Save references to our delegates so that they don't get
3369         finalized.  Call Connection.RegisterObjectPath() instead of
3370         dbus_connection_register_object_path() directly.
3371         (Message_Called): Dispose the message after we're finished with
3372         it.
3373
3374         * mono/Message.cs (Message): Implement IDisposable.
3375         (Dispose): Dispose the Arguments, and set the RawMessage to
3376         IntPtr.Zero.
3377         (SendWithReplyAndBlock): We own the ref to the reply that comes
3378         back from dbus_connection_send_with_reply_and_block() so add a
3379         comment about that and unref it after we've constructed a managed
3380         MethodReturn class around it.  Fixes a big, big leak.
3381
3382         * mono/ProxyBuilder.cs: Reflect into Message to get the Dispose
3383         method.
3384         (BuildSignalHandler): After we've sent the Signal message, dispose
3385         of it.
3386         (BuildMethod): Dispose of the method call and reply messages after
3387         we've sent the message and extracted the data we want from the
3388         reply.
3389
3390         * mono/Service.cs (UnregisterObject): Don't call handler.Dispose()
3391         anymore.
3392         (Service_FilterCalled): Dispose of the message after we're
3393         finished with it.
3394
3395 2005-03-08  Joe Shaw  <joeshaw@novell.com>
3396
3397         * dbus/dbus-connection.c (dbus_connection_send_with_reply):
3398         After we attach our pending call to the connection, unref
3399         it.  Fixes a leak.
3400  
3401         * mono/Connection.cs (set_RawConnection): Disconnect our
3402         filter and match callbacks from the old connection and
3403         reconnect them to the new connection, if any.
3404
3405         * mono/DBusType/Array.cs: "Code" is a static member, so
3406         don't use "this" to refer to it.  Fix for stricter checking
3407         in Mono 1.1.4.
3408  
3409         * mono/DBusType/ObjectPath.cs (Append): Don't leak the
3410         object path that we pass into unmanaged code.
3411  
3412         * mono/DBusType/String.cs (Append): Don't leak the string
3413         that we pass into unmanged code.
3414
3415 2005-03-07  John (J5) Palmieri  <johnp@redhat.com>
3416         * NEWS: Update for 0.31
3417
3418         * configure.in: Release 0.31
3419         add LT_CURRENT, LT_REVISION, LT_AGE for easy soname bumping
3420
3421         * qt/Makefile.am: fixed build
3422
3423         * dbus/Makefile.am: soname bump for libdbus
3424
3425         * glib/Makefile.am: soname bump for libdbus-glib
3426
3427 2005-03-05  Havoc Pennington  <hp@redhat.com>
3428
3429         * dbus/dbus-sysdeps.c:
3430         (pseudorandom_generate_random_bytes_buffer): fix to have no return
3431         value
3432         (_dbus_generate_random_bytes_buffer): fix return value
3433
3434         * dbus/dbus-sysdeps-util.c: s/GETPWNAME/GETPWNAM/ so configure
3435         checks actually work, from Tom Parker <fdo@tevp.net>
3436
3437 2005-03-01  Colin Walters  <walters@verbum.org>
3438
3439         * test/glib/test-dbus-glib.c (lose, lose_gerror): Utility
3440         functions copied from dbus-glib-tool.c.
3441         (main): Convert lots of error code to use them.
3442         Also add some testing for introspection bits.
3443
3444 2005-03-01  Colin Walters  <walters@verbum.org>
3445         
3446         * doc/TODO: Remove introspection signature TODO.
3447
3448 2005-02-27  Colin Walters  <walters@verbum.org>
3449
3450         * glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
3451         Change return value to const char * instead of int so we can do
3452         full signatures.
3453         (struct PropertyInfo, struct ArgInfo): Store char *.
3454         (property_info_new, arg_info_new): Update parameters, strdup.
3455         (property_info_unref, arg_info_unref): Free.
3456
3457         * glib/dbus-gidl.h: Update prototypes.
3458
3459         * glib/dbus-gparser.c (basic_type_from_string): Delete.
3460         (validate_signature): New function, just validates signature and
3461         sets GError.
3462         (parse_property, parse_arg): Invoke validate_signature.  Store
3463         signature instead of just type code.
3464
3465         * glib/dbus-gvalue.c (base_type_from_signature): New utility
3466         function to return a primary type for a signature, dropping
3467         information about types in container types.
3468         (dbus_gvalue_genmarshal_name_from_type)
3469         (dbus_gvalue_binding_type_from_type)
3470         (dbus_gvalue_ctype_from_type): Update to take full signature
3471          instead of type code.
3472         (dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.
3473
3474         * glib/dbus-gvalue.h: Update prototypes for above.
3475
3476         * glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
3477         glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
3478         (introspect_properties, introspect_signals, write_interface):
3479         Update to handle signatures, and remove usage of
3480         _dbus_gutils_type_to_string.
3481         (handle_introspect): Print out type codes instead of e.g. "string"
3482         in hardcoded introspection XML; also use x_AS_STRING constants
3483         instead of hardcoding in string.
3484
3485         * glib/dbus-glib-tool.c (pretty_print): Handle signature change
3486         to string.  Remove usage of _dbus_gutils_type_to_string.
3487
3488         * glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.
3489
3490         * glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
3491         deletion.
3492         
3493         * glib/dbus-binding-tool-glib.c (compute_marshaller)
3494         (compute_marshaller_name, generate_glue): Handle signature change
3495         to string.
3496         (write_formal_parameters, write_args_for_direction): Ditto, and
3497         remove FIXME.
3498
3499         * tools/dbus-tree-view.c (type_to_string): Delete.
3500         (info_set_func_text): Update to print full signatures.
3501
3502         * test/glib/test-service-glib.xml: Change types to new
3503         introspection format.
3504
3505 2005-02-26  Havoc Pennington  <hp@redhat.com>
3506
3507         * doc/TODO: remove the "guid" item
3508
3509         * test/glib/test-profile.c (no_bus_thread_func): use open_private
3510         (with_bus_thread_func): use open_private
3511
3512         * dbus/dbus-connection.c (dbus_connection_open_private): new
3513         function that works like the old dbus_connection_open()
3514         (dbus_connection_open): now returns an existing connection if
3515         possible
3516
3517         * dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
3518         through the GUID to the transport
3519
3520         * dbus/dbus-server.c (_dbus_server_init_base): keep around the
3521         GUID in hex-encoded form.
3522
3523         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
3524         pass GUID argument in to the transport
3525
3526         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
3527         guid argument
3528
3529         * dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument
3530
3531         * dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument
3532
3533 2005-02-25  Havoc Pennington  <hp@redhat.com>
3534
3535         * doc/dbus-specification.xml: document the GUID thing
3536
3537         * dbus/dbus-server.c (_dbus_server_init_base): initialize a
3538         globally unique ID for the server, and put a "guid=hexencoded"
3539         field in the address
3540
3541         * dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h
3542
3543         * dbus/dbus-message.c: ditto
3544
3545         * dbus/dbus-dataslot.c: ditto
3546
3547         * dbus/dbus-list.c: ditto
3548
3549         * dbus/dbus-internals.h: wait, just include
3550         dbus-threads-internal.h here
3551         
3552         * dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
3553         use in main library
3554
3555         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function
3556
3557 2005-02-24  Colin Walters  <walters@verbum.org>
3558
3559         * test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml
3560
3561 2005-02-24  John (J5) Palmieir  <johnp@redhat.com>
3562
3563         * glib/Makefile.am: added dbus-gobject.h to sources list
3564         so distcheck doesn't fail
3565         
3566 2005-02-24  Havoc Pennington  <hp@redhat.com>
3567
3568         * dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
3569         you must disconnect before unref, since locking and other things
3570         are screwed up otherwise. Fix assorted other locking stuff.
3571
3572         * dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
3573         fix compilation
3574
3575         * dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
3576         into a private header and don't export from the library
3577
3578         * throughout - call _dbus_thread_stuff vs. dbus_thread_stuff
3579
3580 2005-02-24  Colin Walters  <walters@verbum.org>
3581         
3582         * dbus/dbus-signature.c: New file; implements various functions
3583         related to type signatures.  Includes an interator for parsing,
3584         validation functions.
3585         (dbus_type_is_basic): Moved here from
3586         dbus-marshal-basic.c:_dbus_type_is_basic.
3587         (dbus_type_is_container): Moved here from
3588         dbus-marshal-basic.c:_dbus_type_is_container.
3589
3590         All callers of _dbus_type_is_container and _dbus_type_is_basic
3591         updated, and include dbus-signature.h.
3592
3593         * dbus/dbus-signature.h: New file; prototypes for the above.
3594
3595         * dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
3596         dbus-signature.h.
3597
3598         * dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
3599         function factored out of _dbus_first_type_in_signature.
3600         (_dbus_first_type_in_signature_c_str): New function; returns first
3601         type code for a type signature character.
3602
3603         * dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
3604         handle function moves.
3605
3606         * dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.
3607
3608         * dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
3609         function; skips to next complete type in type signature.
3610         Implemented using previous skip_one_complete_type.  Now
3611         skip_one_complete_type just delegates to
3612         _dbus_type_signature_next.
3613
3614         * dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
3615         to dbus-signature.c
3616         (_dbus_type_is_container): Ditto.
3617
3618         * doc/dbus-specification.xml: Update introspection sample to
3619         use real type signatures.
3620
3621         * dbus/dbus-test.h: Prototype signature test.
3622
3623         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
3624         signature tests.
3625
3626         * dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.
3627
3628 2005-02-23  John (J5) Palmieri  <johnp@redhat.com>
3629
3630         * python/dbus_bindings.pyx.in (PendingCall::get_reply):
3631         s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply
3632
3633 2005-02-21  Colin Walters  <walters@verbum.org>
3634
3635         * dbus/dbus-test-main.c (main): Take optional specific test
3636         argument.
3637
3638         * dbus/dbus-test.c (run_test): New function, runs a test function
3639         with no data directory.
3640         (run_data_test): Like above, but takes data directory.
3641         (dbus_internal_do_not_use_run_tests): Take
3642         specific test argument.  Replace lots of cut n' paste code
3643         with run_test and run_data_test.
3644
3645         * dbus/dbus-test.h: Update prototype for
3646         dbus_internal_do_not_use_run_tests.
3647
3648 2005-02-20  Havoc Pennington  <hp@redhat.com>
3649
3650         Fix bugs reported by Daniel P. Berrange
3651         
3652         * dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
3653         (protected_change_watch): new function
3654         (_dbus_server_toggle_watch, _dbus_server_remove_watch)
3655         (_dbus_server_add_watch): change to work like the
3656         dbus-connection.c equivalents; like those, probably kind of
3657         busted, but should at least mostly work for now
3658         (dbus_server_disconnect): drop the lock if we were already
3659         disconnected, patch from Daniel P. Berrange
3660
3661         * dbus/dbus-server.c (_dbus_server_toggle_timeout) 
3662         (_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
3663         same stuff
3664
3665         * doc/TODO: todo about unscrewing this mess
3666
3667 2005-02-19  Colin Walters  <walters@verbum.org>
3668
3669         * glib/dbus-binding-tool-glib.c
3670         (dbus_binding_tool_output_glib_server): Fix iochannel refcounting.
3671
3672         * glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
3673         as errno.h and sys/stat.h.
3674         (lose): New function, prints error with
3675         newline and exits.
3676         (lose_gerror): Similar, but takes GError for message.
3677         (main): Add --output argument to specify output file to write to,
3678         instead of always printing to stdout.  In this mode, determine
3679         timestamps on source files to see whether any are newer than the
3680         target file.  If not, exit.  Also convert a number of error
3681         messages to use lose (since it's shorter), and switch to using
3682         g_io_channel_shutdown.
3683
3684 2005-02-19  Havoc Pennington  <hp@redhat.com>
3685
3686         * glib/dbus-gobject.c
3687         (_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs
3688
3689         * glib/dbus-glib.c: fix doxygen warnings
3690
3691         * glib/dbus-gparser.c (parse_annotation): error if an annotation
3692         is found on an <arg>
3693
3694 2005-02-17  Colin Walters  <walters@verbum.org>
3695
3696         * glib/dbus-gobject.h: Don't export
3697         _dbus_glib_marshal_dbus_message_to_gvalue_array.
3698         
3699         * glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
3700         (invoke_object_method): Handle it.
3701
3702         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
3703         Handle rename.
3704         
3705 2005-02-17  Colin Walters  <walters@verbum.org>
3706
3707         * bus/.cvsignore, doc/.cvsignore
3708         * test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
3709         Update.
3710
3711 2005-02-17  Colin Walters  <walters@verbum.org>
3712         
3713         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
3714         Rename to DBUS_SERVICE_DBUS.
3715         (DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
3716         (DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
3717         Change the value from "org.freedesktop.Local"
3718         to "org.freedesktop.DBus.Local".
3719         (DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
3720         (DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
3721         DBUS_INTERFACE_INTROSPECTABLE.
3722         Change the value from "org.freedesktop.Introspectable"
3723         to "org.freedesktop.DBus.Introspectable".
3724         (DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
3725         DBUS_INTERFACE_PROPERTIES.
3726         Change the value from "org.freedesktop.Properties"
3727         to "org.freedesktop.DBus.Properties".
3728         (DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
3729         DBUS_INTERFACE_PEER.
3730         Change the value from "org.freedesktop.Peer"
3731         to "org.freedesktop.DBus.Peer".
3732         (DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL): 
3733         DBUS_INTERFACE_LOCAL.
3734         Change the value from "org.freedesktop.Local"
3735         to "org.freedesktop.DBus.Local".
3736
3737         All other users of those constants have been changed.
3738
3739         * bus/driver.c (bus_driver_handle_introspect): Use constants.
3740
3741         * glib/dbus-gobject.c (handle_introspect): Use constants.
3742
3743         * doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.
3744
3745 2005-02-17  Colin Walters  <walters@verbum.org>
3746
3747         * glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
3748         (parse_node, parse_interface, parse_method, parse_signal)
3749         (parse_property, parse_annotation): Lose if we're currently in an
3750         annotation.
3751         (parse_annotation): New function.
3752         (parser_start_element, parser_end_element): Handle annotation.
3753         (parse_method, parse_interface): Remove support for c_name attribute,
3754         switch to annotations.
3755
3756         * glib/dbus-gidl.h (interface_info_get_binding_names)
3757         (method_info_get_binding_names)
3758         (interface_info_get_binding_name, method_info_get_binding_name)
3759         (interface_info_set_binding_name, method_info_set_binding_name):
3760         Remove.
3761         (interface_info_get_annotations, method_info_get_annotations)
3762         (interface_info_get_annotation, method_info_get_annotation)
3763         (interface_info_add_annotation, method_info_add_annotation):
3764         Prototype.
3765
3766         * glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
3767         for "bindings".
3768         (struct MethodInfo): Ditto.
3769         Straightfoward conversion of binding methods into annotation methods
3770         as prototyped.
3771
3772         * glib/dbus-glib-tool.c (pretty_print): Print annotations.
3773
3774         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.
3775
3776         * glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
3777         Use new annotation API.
3778
3779         * doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
3780         annotation element.
3781         
3782         * doc/dbus-specification.xml: Discuss introspection annotations,
3783         include list of well-known annotations.
3784
3785         * test/glib/test-service-glib.xml: Make validate against new DTD.
3786
3787 2005-02-17  Colin Walters  <walters@verbum.org>
3788
3789         This patch is based on initial work from
3790         Paul Kuliniewicz <kuliniew@purdue.edu>.
3791
3792         * glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
3793         initialization of GValue from dbus type to here.
3794         (dbus_gvalue_genmarshal_name_from_type): New function; generates a string
3795         for the "glib-genmarshal" program from a DBus type.
3796         (dbus_gvalue_binding_type_from_type): New function; turns a DBus type
3797         into the C name for it we use in the glib bindings.
3798         (dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
3799         glib C type (not GValue).
3800         (dbus_gvalue_demarshal): invoke dbus_gvalue_init.
3801
3802         * glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
3803         from dbus-gobject.c.
3804
3805         * glib/dbus-gutils.h: Prototype it.
3806
3807         * glib/dbus-gproxy.c: Include new dbus-gobject.h.
3808         (marshal_dbus_message_to_g_marshaller): Use new shared function
3809         dbus_glib_marshal_dbus_message_to_gvalue_array.
3810
3811         * glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
3812         Will be changed once we have annotations.
3813
3814         * glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
3815         GStaticRWLock.  Callers updated.
3816         (wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
3817         (string_table_next): New function for iterating over zero-terminated
3818         string value array.
3819         (string_table_lookup): New function; retrieves specific entry in
3820         array.
3821         (get_method_data): New function; look up method data in object data chunk.
3822         (object_error_domain_prefix_from_object_info)
3823         (object_error_code_from_object_info): New functions, but not implemented yet.
3824         (method_interface_from_object_info): New function; retrieve interface name.
3825         (method_name_from_object_info): New function; retrieve method name.
3826         (method_arg_info_from_object_info): New function; retrieve argument data.
3827         (arg_iterate): New function; iterates over serialized argument data.
3828         (method_dir_signature_from_object_info): New function; returns a
3829         GString holding type signature for arguments for just one
3830         direction (input or output).
3831         (method_input_signature_from_object_info)
3832         (method_output_signature_from_object_info): New functions.
3833         (dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
3834         converts dbus message arguments into a GValue array.  Used for both
3835         signal handling and method invocation.
3836         (struct DBusGlibWriteIterfaceData): New utility structure.
3837         (write_interface): New function; generate introspection XML for
3838         an interface.
3839         (introspect_interfaces): New function; gathers all interface->methods,
3840         generates introspection XML for them.
3841         (handle_introspect): Invoke introspect_interfaces.
3842         (get_object_property): Be sure to zero-initalize stack-allocated GValue.
3843         (lookup_object_and_method): New function; examines an incoming message
3844         and attempts to match it up (via interface, method name, and argument
3845         signature) with a known object and method.
3846         (gerror_domaincode_to_dbus_error_name): New function; converts a
3847         GError domain and code into a DBus error name.  Needs GError data
3848         added to object introspection to work well.
3849         (gerror_to_dbus_error_message): Creates a DBusMessage error return from
3850         GError.
3851         (invoke_object_method): New function to invoke an object method
3852         looked up via lookup_object_and_method.  Parses the incoming
3853         message, turns it into a GValue array, then invokes the marshaller
3854         specified in the DBusGMethodInfo.  Creates a new message with
3855         either return values or error message as appropriate.
3856         (gobject_message_function): Invoke lookup_object_and_method and
3857         invoke_object_method.
3858
3859         * glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
3860         (enum DBusBindingOutputMode): New enum for binding output modes.
3861         (pretty_print): Print binding names.
3862         (dbus_binding_tool_error_quark): GError bits.
3863         (version): Fix typo.
3864         (main): Create GIOChannel for output.  Parse new --mode argument,
3865         possible values are "pretty-print", "glib-server", "glib-client".
3866         Use mode to invoke appropriate function.
3867         
3868         * glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.
3869
3870         * glib/dbus-glib-tool.h: New header, just includes GError bits
3871         for now.
3872
3873         * glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
3874         maps binding style to name.
3875         (struct MethodInfo): Ditto.
3876         (get_hash_keys, get_hash_key): Utility function, returns keys for
3877         a GHashTable.
3878         (interface_info_new, method_info_new): Initialize bindings.
3879         (interface_info_unref, method_info_unref): Destroy bindings.
3880         (method_info_get_binding_names, method_info_get_binding_name)
3881         (interface_info_get_binding_names, interface_info_get_binding_name):
3882         Functions for retrieving binding names.
3883         (method_info_set_binding_name, interface_info_set_binding_name):
3884         Functions for setting binding names.
3885
3886         * glib/dbus-binding-tool-glib.h: New file, has prototypes
3887         for glib binding generation.
3888
3889         * glib/dbus-binding-tool-glib.c: New file, implements server-side
3890         and client-side glib glue generation.
3891
3892         * glib/Makefile.am (dbus_binding_tool_SOURCES): Add
3893         dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
3894         dbus-glib-tool.h.
3895
3896         * dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
3897         of using GClosureMarshal directly.
3898         (struct DBusGObjectInfo): Add n_infos member.
3899
3900         * test/glib/test-service-glib.xml: New file; contains introspection data
3901         for MyTestObject used in test-service-glib.c.
3902
3903         * test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
3904         (my_object_do_nothing, my_object_increment, my_object_throw_error)
3905         (my_object_uppercase, my_object_many_args): New test methods.
3906         (main): Use dbus_g_object_class_install_info to include generated object
3907         info.
3908
3909         * test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
3910         as well as client-side bindings.
3911
3912         * test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
3913         (main): Activate TestSuiteGLibService; test invoke a bunch of its methods
3914         using both the dbus_gproxy stuff directly as well as the generated bindings.
3915
3916 2005-02-15  Havoc Pennington  <hp@redhat.com>
3917
3918         * dbus/dbus-connection.c (dbus_connection_dispatch): always
3919         complete a pending call, don't run filters first.
3920
3921         * glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
3922         dbus_pending_call_steal_reply
3923
3924         * dbus/dbus-pending-call.c (dbus_pending_call_block): just call
3925         _dbus_connection_block_pending_call
3926         (dbus_pending_call_get_reply): change to steal_reply and return a
3927         ref
3928
3929         * dbus/dbus-connection.c
3930         (dbus_connection_send_with_reply_and_block): port to work in terms
3931         of DBusPendingCall
3932         (_dbus_connection_block_pending_call): replace block_for_reply
3933         with this
3934
3935 2005-02-14  Havoc Pennington  <hp@redhat.com>
3936
3937         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
3938         properly handle looking up group information by name; fix 
3939         from j@bootlab.org
3940
3941 2005-02-13  Havoc Pennington  <hp@redhat.com>
3942
3943         * dbus/dbus-connection.c (dbus_connection_return_message) 
3944         (dbus_connection_borrow_message): hold dispatch lock while message
3945         is outstanding
3946         (_dbus_connection_block_for_reply): hold dispatch lock while we
3947         block for the reply, so nobody steals our reply
3948         (dbus_connection_pop_message): hold the dispatch lock while we
3949         pluck the message
3950
3951 2005-02-13  Havoc Pennington  <hp@redhat.com>
3952
3953         * dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
3954         (_dbus_connection_release_dispatch)
3955         (_dbus_connection_acquire_io_path)
3956         (_dbus_connection_release_io_path): make the mutex and condvar
3957         control access to the "acquired" flag. Drop the connection lock
3958         while waiting on the condvar. Hopefully these are baby steps in
3959         roughly the right direction.
3960
3961 2005-02-13  Havoc Pennington  <hp@redhat.com>
3962
3963         * dbus/dbus-connection.c: use separate mutexes for the condition
3964         variables; this is some kind of baseline for sanity, but the
3965         condition variables still aren't used correctly afaict
3966
3967 2005-02-13  Havoc Pennington  <hp@redhat.com>
3968
3969         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
3970         fix a double-unlock
3971
3972         * dbus/dbus-connection.c
3973         (_dbus_connection_detach_pending_call_unlocked): add this
3974
3975         Initial semi-correct pass through to fix thread locking; there are
3976         still some issues with the condition variable paths I'm pretty
3977         sure
3978         
3979         * dbus/dbus-server.c: add a mutex on DBusServer and appropriate
3980         lock/unlock calls
3981
3982         * dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
3983         rename to add _unlocked
3984         (struct DBusConnection): move "dispatch_acquired" and
3985         "io_path_acquired" to use only one bit each.
3986         (CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
3987         (dbus_connection_set_watch_functions): hacky fix to reentrancy
3988         (_dbus_connection_add_watch, _dbus_connection_remove_watch) 
3989         (_dbus_connection_toggle_watch, _dbus_connection_add_timeout) 
3990         (_dbus_connection_remove_timeout) 
3991         (_dbus_connection_toggle_timeout): drop lock when calling out to
3992         user functions; done in a hacky/bad way.
3993         (_dbus_connection_send_and_unlock): add a missing unlock
3994         (_dbus_connection_block_for_reply): add a missing unlock
3995
3996         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
3997         drop lock in a hacky probably unsafe way to call out to user
3998         function
3999
4000 2005-02-12  Havoc Pennington  <hp@redhat.com>
4001
4002         * tools/dbus-tree-view.c (info_set_func_text): display more
4003         details on args
4004
4005         * bus/driver.c (bus_driver_handle_list_services): list the bus
4006         driver
4007
4008         * glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied
4009
4010         * glib/dbus-gidl.c (signal_info_get_n_args): new function
4011         (method_info_get_n_args): new function
4012
4013 2005-02-12  Havoc Pennington  <hp@redhat.com>
4014
4015         * bus/driver.c (bus_driver_handle_introspect): add introspection
4016         for bus driver
4017
4018 2005-02-12  Havoc Pennington  <hp@redhat.com>
4019
4020         * bus/driver.c: put the signature of each bus driver method in the
4021         table of handlers and check it on incoming calls; this isn't
4022         really useful, but going to add introspect support in a minute.
4023
4024 2005-02-11  Joe Shaw  <joeshaw@novell.com>
4025
4026         * mono/Connection.cs: The unpredictability of finalizers in mono
4027         prevents us from deterministically disconnecting the filters from
4028         the Service class's finalizer, so move tracking of filters and
4029         matches here.  Add API for that.
4030
4031         * mono/Service.cs: Remove the code, add code which calls the
4032         methods now on the Connection class.
4033
4034 2005-02-11  John (J5) Palmieri  <johnp@redhat.com>
4035
4036         * python/dbus.py (class Sender): added to support dbus signals better
4037         (Bus::add_signal_receiver): added expand_args parameter which defaults
4038         to True.  When expand args is True the signal handler will pass the 
4039         message arguments as parameters to the signal handler.  If False
4040         revert to previous behavior where the signal handler must get the
4041         argument list from the message.  This is to help port applications
4042         like HAL that have a tendancy to send variable length argument lists.
4043         self._match_rule_to_receivers is now a dict of dicts.
4044         (Bus::remove_signal_receiver): pop handler off the dict intead of 
4045         removing it from a list
4046         (Bus::_signal_func): change signal handlers so that interface,
4047         signal_name, service, path and message are packed into a Sender
4048         object and that is passed to the handler.  If expand_args is True
4049         extract the args list from the message and append it to the parameter
4050         list
4051         
4052         * python/dbus_bindings.pyx.in (class Signature): added to support 
4053         signiature types
4054         (MessageIter::__init__): changed iteration limit to match D-BUS
4055         (MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY, 
4056         STRUCT and VARIENT type support
4057         (MessageIter::python_value_to_dbus_sig): made recursive to support
4058         recursive types
4059         (MessageIter::append*): added Signature, dict, tuple 
4060         support
4061
4062         * python/examples/example-client.py: added examples of getting tuples
4063         and dicts
4064
4065         * python/examples/example-service.py: added examples of sending tuples
4066         and dicts
4067
4068         * python/examples/example-signal-recipient.py: Fixed to handle new
4069         signal callback format
4070
4071 2005-02-10  Havoc Pennington  <hp@redhat.com>
4072
4073         * test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
4074         (call dbus_g_proxy_add_signal)
4075
4076         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
4077         escape the hostname
4078         (_dbus_server_new_for_domain_socket): escape the path
4079
4080         * dbus/dbus-address.c (dbus_address_escape_value): new
4081         (dbus_address_unescape_value): new
4082         (dbus_parse_address): unescape values
4083
4084         * dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function
4085
4086         * doc/dbus-specification.xml: explain how to escape values in
4087         addresses
4088
4089 2005-02-10  Havoc Pennington  <hp@redhat.com>
4090
4091         * dbus/dbus-message-factory.c (generate_special): modify test to
4092         avoid using a non-basic dict key
4093
4094         * dbus/dbus-marshal-validate-util.c: add test for the below
4095
4096         * doc/dbus-specification.xml: require that dict keys are a basic
4097         type
4098
4099         * dbus/dbus-marshal-validate.c
4100         (_dbus_validate_signature_with_reason): require that dict key is a
4101         basic type
4102
4103 2005-02-10  Havoc Pennington  <hp@redhat.com>
4104
4105         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
4106         change to be _and_unlock instead of _unlocked
4107
4108         * dbus/dbus-connection.c
4109         (_dbus_connection_send_preallocated_unlocked_no_update): rename to
4110         have no_update so we can find this bug quickly in future
4111
4112 2005-02-10  Havoc Pennington  <hp@redhat.com>
4113
4114         * dbus/dbus-message-util.c (verify_test_message): tests for string
4115         array
4116
4117         * dbus/dbus-message.c (dbus_message_append_args_valist): add
4118         support for arrays of string/signature/path
4119
4120 2005-02-10  Joe Shaw  <joeshaw@novell.com>
4121
4122         * dbus/dbus-connection.c
4123         (_dbus_connection_queue_received_message_link,
4124         _dbus_connection_message_sent): Add the path to
4125         the verbose output.
4126         (_dbus_connection_send_preallocated_and_unlock): Added.  Calls
4127         _dbus_connection_send_preallocated_unlocked(), updated the
4128         dispatch status, and unlocks.  Fixes a bug where certain
4129         situations (like a broken pipe) could cause a Disconnect message
4130         to not be sent, tricking the bus into thinking a service was still
4131         there when the process had quit.
4132         (_dbus_connection_send_preallocated): Call
4133         _dbus_connection_send_preallocated_and_unlock().
4134         (_dbus_connection_send_and_unlock): Added.  Calls
4135         _dbus_connection_send_preallocated_and_unlock().
4136         (dbus_connection_send): Call _dbus_connection_send_and_unlock().
4137         (dbus_connection_send_with_reply): Update the dispatch status and
4138         unlock.
4139
4140         * mono/Service.cs (~Service): Added.  Removes the filter so that
4141         we don't get unmanaged code calling back into a GCed delegate.
4142         (RemoveFilter); Added.
4143
4144 2005-02-09  John (J5) Palmieri  <johnp@redhat.com>
4145
4146         * dbus/dbus-message.c (dbus_message_iter_open_container):
4147         - Removed check for iterator type being an array because
4148         get_arg_type does not work with writer iterators
4149         - Pass NULL to _dbus_type_writer_recurse if signiture is NULL
4150
4151 2005-02-07  Havoc Pennington  <hp@redhat.com>
4152
4153         * doc/dbus-specification.xml: some more language cleanups; add
4154         stuff about how to deal with invalid protocol and extension
4155         points; add _ to allowed chars in auth commands; add EXTENSION_
4156         auth command prefix
4157
4158 2005-02-06  Havoc Pennington  <hp@redhat.com>
4159
4160         * s/expected/required/ in a couple places for clarity
4161
4162 2005-02-07  Colin Walters  <walters@verbum.org>
4163
4164         * bus/selinux.c (bus_selinux_allows_send): Handle NULL for
4165         sender or proposed_recipient.
4166
4167 2005-02-06  Havoc Pennington  <hp@redhat.com>
4168
4169         * dbus/dbus-message-factory.c (generate_special): more tests
4170
4171         * dbus/dbus-marshal-validate.c (validate_body_helper): detect
4172         array length that exceeds the maximum
4173
4174 2005-02-05  Havoc Pennington  <hp@redhat.com>
4175
4176         * dbus/dbus-message-factory.c (generate_special): more test cases,
4177         increasing coverage
4178
4179         * dbus/dbus-marshal-validate.c (validate_body_helper): return the
4180         reason why a signature was invalid
4181
4182         * dbus/dbus-marshal-header.c (load_and_validate_field): fix to
4183         skip the length of the string before we look at it in validation
4184
4185         * dbus/dbus-string-util.c (_dbus_string_test): add tests for
4186         equal_substring
4187
4188         * dbus/dbus-message.c (_dbus_message_loader_new): default
4189         max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH
4190
4191 2005-02-05  Havoc Pennington  <hp@redhat.com>
4192
4193         * dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
4194         if the signature of a variant was empty
4195         (_dbus_validate_signature_with_reason): catch "(a)" (array inside
4196         struct with no element type)
4197
4198         * dbus/dbus-message-factory.c (generate_uint32_changed): add more
4199         mangled messages to break things
4200
4201 2005-02-04  Havoc Pennington  <hp@redhat.com>
4202
4203         * glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
4204         g_quark_try_string() so it actually can return 0
4205         (dbus_g_proxy_connect_signal): ditto
4206
4207 2005-02-04  Havoc Pennington  <hp@redhat.com>
4208
4209         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
4210         bogus warning
4211         (tristring_from_message): assert cleanly on null path/interface
4212         (should not be possible though I decided later)
4213         (dbus_g_proxy_dispose): move proxy manager unregistration here
4214         (DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
4215         g_return_if_fail() checks
4216
4217 2005-02-04  Havoc Pennington  <hp@redhat.com>
4218
4219         * doc/Makefile.am (EXTRA_DIST): add DTDs to makefile
4220
4221         * doc/introspect.dtd: add introspect.dtd from David A. Wheeler
4222         (with some minor changes)
4223
4224         * doc/dbus-specification.xml: add deprecated attribute to
4225         introspection format
4226
4227 2005-01-31  Havoc Pennington  <hp@redhat.com>
4228
4229         * glib/dbus-gproxy.c: rewrite how signals work again, this time I
4230         think it's sort of right
4231
4232 2005-01-30  Havoc Pennington  <hp@redhat.com>
4233
4234         * tools/dbus-viewer.c: kind of half-ass hook up the option menu.
4235
4236 2005-01-30  Havoc Pennington  <hp@redhat.com>
4237
4238         * tools/dbus-names-model.c: dynamically watch NameOwnerChanged
4239
4240         * autogen.sh: change to autotools 1.9
4241
4242         * glib/dbus-gproxy.c: completely change how signals work
4243         (dbus_g_proxy_add_signal): new function to specify signature of a
4244         signal
4245         (dbus_g_proxy_emit_received): marshal the dbus message to GValues,
4246         and g_warning if the incoming message has the wrong signature.
4247
4248 2005-01-30  Havoc Pennington  <hp@redhat.com>
4249
4250         * tools/dbus-names-model.c (have_names_notify): fix this
4251
4252         * dbus/dbus-message.c (_dbus_message_iter_get_args_valist): clean
4253         up the string array handling a bit 
4254
4255 2005-01-30  Havoc Pennington  <hp@redhat.com>
4256
4257         * glib/dbus-glib.c (dbus_g_pending_call_set_notify): new function
4258         (dbus_g_pending_call_cancel): new function
4259
4260         * dbus/dbus-glib.h: move GType decls for connection/message here;
4261         * dbus/dbus-glib.c: move all the g_type and ref/unref stuff in
4262         here, just kind of rationalizing how we handle all that
4263
4264         * tools/dbus-names-model.c: new file for a tree model listing the
4265         services on a bus
4266
4267         * tools/dbus-tree-view.c (model_new): use proper typing on the
4268         model rows
4269
4270 2005-01-30  Havoc Pennington  <hp@redhat.com>
4271
4272         * glib/dbus-gmain.c: add a custom GSource back that just checks
4273         whether the message queue has anything in it; otherwise, there are 
4274         cases where we won't see messages in the queue since there was no 
4275         IO visible to the glib main loop
4276
4277         * dbus/dbus-connection-internal.h (_DBUS_DEFAULT_TIMEOUT_VALUE):
4278         increase default message timeout to 25 seconds
4279
4280 2005-01-30  Havoc Pennington  <hp@redhat.com>
4281
4282         * test/glib/test-profile.c (no_bus_stop_server): remove the
4283         warning about the g_warning that I just fixed
4284
4285         * glib/dbus-gmain.c: rewrite the main loop stuff to avoid the
4286         custom source, seems to be a lot easier to understand and work
4287         better.
4288
4289 2005-01-30  Havoc Pennington  <hp@redhat.com>
4290
4291         I think this main loop thing is conceptually broken, but here are 
4292         some band aids. I'll maybe rewrite it in a minute.
4293         
4294         * glib/dbus-gmain.c (add_timeout): timeout stuff doesn't use the
4295         custom GSource, so don't pass it in; confusing
4296         (gsource_server_finalize, gsource_connection_finalize): add
4297         finalize handlers that remove all the watches.  
4298
4299 2005-01-30  Havoc Pennington  <hp@redhat.com>
4300
4301         * glib/dbus-gobject.c (introspect_properties): fix the XML
4302         generated
4303
4304         * dbus/dbus-message.c (dbus_message_unref): add an in_cache flag
4305         which effectively detects the use of freed messages
4306
4307         * glib/dbus-gobject.c (handle_introspect): modify and return the
4308         reply message instead of the incoming message
4309
4310         * dbus/dbus-object-tree.c (handle_default_introspect_unlocked):
4311         gee, maybe it should SEND THE XML instead of just making a string
4312         and freeing it again ;-)
4313
4314         * tools/dbus-print-message.c (print_message): improve printing of
4315         messages
4316
4317         * configure.in: add debug-glib.service to the output
4318
4319 2005-01-30  Havoc Pennington  <hp@redhat.com>
4320
4321         dbus-viewer introspected and displayed the bus driver
4322         
4323         * dbus/dbus-object-tree.c 
4324         (object_tree_test_iteration): add tests for a handler registered on "/"
4325
4326         * dbus/dbus-object-tree.c
4327         (_dbus_decompose_path): fix to handle path "/" properly
4328         (run_decompose_tests): add tests for path decomposition
4329         
4330         * glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
4331         properly
4332
4333         * glib/dbus-gobject.c (handle_introspect): fix quotes
4334
4335         * test/glib/run-test.sh: support launching the bus, then running
4336         dbus-viewer
4337
4338         * test/glib/test-service-glib.c (main): put in a trivial gobject
4339         subclass and register it on the connection
4340
4341         * bus/driver.c (bus_driver_handle_introspect): implement
4342         introspection of the bus driver service
4343
4344         * dbus/dbus-protocol.h: add #defines for the XML namespace,
4345         identifiers, doctype decl
4346
4347         * bus/driver.c (bus_driver_handle_get_service_owner): handle
4348         attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by 
4349         returning the service unchanged.
4350         (bus_driver_handle_message): remove old check for reply_serial in
4351         method calls, now the message type deals with that
4352         (bus_driver_handle_message): handle NULL interface
4353
4354         * glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function
4355
4356         * glib/dbus-gloader-expat.c (description_load_from_string): allow
4357         -1 for len
4358
4359         * tools/dbus-viewer.c: add support for introspecting a service on
4360         a bus
4361
4362         * glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
4363         (dbus_g_pending_call_unref): add
4364
4365 2005-01-29  Havoc Pennington  <hp@redhat.com>
4366
4367         * tools/dbus-tree-view.c: add support for displaying properties.
4368         (run dbus-viewer with an introspect xml file as arg, then resize
4369         the window so the tree elements show up, not sure what that is)
4370
4371         * glib/dbus-gobject.c (handle_introspect): return
4372         org.freedesktop.Properties and org.freedesktop.Introspectable
4373         interfaces when we are introspected.
4374
4375         * doc/dbus-specification.xml: allow empty interface name when 
4376         Get/Set a property
4377
4378 2005-01-29  Havoc Pennington  <hp@redhat.com>
4379
4380         * glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
4381         though it uses glib, it could be extended for any binding in
4382         principle
4383
4384         * glib/dbus-gobject.c (gobject_message_function): change to the
4385         new way properties work
4386
4387         * dbus/dbus-protocol.h: add the new interfaces
4388
4389         * doc/dbus-specification.xml: document the introspection format,
4390         Introspectable interface, and add an org.freedesktop.Properties
4391         interface.
4392
4393         * glib/dbus-gparser.c: add support for a <property> element
4394
4395         * glib/dbus-gidl.c: add PropertyInfo
4396
4397         * glib/dbus-gobject.c (handle_introspect): put the outermost
4398         <node> outside the signal and property descriptions.
4399         (introspect_properties): export properties as <property> rather
4400         than as method calls
4401
4402 2005-01-28  Havoc Pennington  <hp@redhat.com>
4403
4404         * doc/TODO, doc/dbus-specification.xml: spec and TODO tweaks
4405         related to authentication protocol
4406
4407 2005-01-28  John (J5) Palmieri  <johnp@redhat.com>
4408
4409         * python/dbus_bindings.pyx.in: Updated to handle new D-BUS type system
4410                 - BUS_ACTIVATION -> BUS_STARTER
4411                 - DBUS_BUS_ACTIVATION -> DBUS_BUS_STARTER
4412                 - class MessageIter (__init__): Added recursion checking 
4413                 so we throw a nice error instead of just disconnecting from the
4414                 bus.
4415                 (get): Added arg_type parameter for recursion.
4416                 Removed the nil type
4417                 Added signiture type placeholder (not implemented)
4418                 Added struct type placeholder (not implemented)
4419                 Added varient type placeholder (not implemented)
4420                 Commented out dict type for now     
4421                 (get_element_type): renamed from get_array_type
4422                 (get_*): changed to use the dbus_message_iter_get_basic API
4423                 (get_*_array): removed in favor of recursive get_array method
4424                 (get_array): new recursive method which calls get to marshal
4425                 the elements of the array
4426                 (value_to_dbus_sig): New method returns the corrasponding
4427                 dbus signiture to a python value
4428                 (append): Comment out dict handling for now
4429                 Handle lists with the new recursive API
4430                 Comment out None handling for now
4431                 (append_nil): removed
4432                 (append_*): changed to use dbus_message_iter_append_basic API
4433                 (append_*_array): removed in favor of recursive append_array 
4434                 method
4435                 (__str__): Make it easier to print out recursive iterators
4436                 for debugging
4437                 - class Message (__str__): moved type inspection to the
4438                 MessageIter class' __str__ method
4439                 (get_iter): Added an append parameter wich defaults to False
4440                 If True use the new API's to create an append iterator
4441
4442         * python/dbus.py: Update to use new bindings API
4443                 - TYPE_ACTIVATION -> TYPE_STARTER
4444                 - class Bus (_get_match_rule): GetServiceOwner -> GetNameOwner
4445                 - class ActivationBus -> class StarterBus
4446                 - class RemoteObject (__call__): get an append iterator
4447                 - (_dispatch_dbus_method_call): get an append iterator
4448                 - class Object (emit_signal): get an append iterator
4449
4450         * python/examples/: Fixed up the examples to work with the new API
4451                 
4452 2005-01-28  Joe Shaw  <joeshaw@novell.com>
4453
4454         * configure.in: Bump version up to 0.30.
4455
4456         * HACKING: Add a release item to bump the version number up after 
4457         a release.
4458
4459 2005-01-28  Havoc Pennington  <hp@redhat.com>
4460
4461         * doc/dbus-specification.xml: update to describe 16-bit types and
4462         dict entries
4463
4464         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint16): fix broken
4465         assertion
4466
4467         * dbus/dbus-protocol.h (DBUS_TYPE_DICT_ENTRY): add DICT_ENTRY as a
4468         type
4469
4470         * dbus/dbus-marshal-recursive.c: implement
4471
4472 2005-01-27  Havoc Pennington  <hp@redhat.com>
4473
4474         * dbus/dbus-arch-deps.h.in: add 16/32-bit types
4475
4476         * configure.in: find the right type for 16 and 32 bit ints as well
4477         as 64
4478
4479         * dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add
4480         the 16-bit types so people don't have to stuff them in 32-bit or
4481         byte arrays.
4482
4483 2005-01-27  Havoc Pennington  <hp@redhat.com>
4484
4485         * dbus/dbus-message.c: byteswap the message if you init an
4486         iterator to read/write from it
4487         
4488         * dbus/dbus-marshal-byteswap.c: new file implementing 
4489         _dbus_marshal_byteswap()
4490
4491         * dbus/dbus-marshal-basic.c: add _dbus_swap_array()
4492
4493 2005-01-26  Havoc Pennington  <hp@redhat.com>
4494         
4495         * dbus/dbus-marshal-validate-util.c: break this out (and fix
4496         build, apparently - nobody noticed?)
4497         
4498 2005-01-26  Havoc Pennington  <hp@redhat.com>
4499
4500         * dbus/dbus-marshal-recursive.h: remove todo comment
4501
4502 2005-01-25  Joe Shaw  <joeshaw@novell.com>
4503
4504         * Land the mono binding changes to conform to the new APIs.
4505
4506         * mono/Makefile.am: Remove Custom.cs, DBusType/Custom.cs,
4507         DBusType/Dict.cs, and DBusType/Nil.cs from the build.
4508
4509         * mono/Arguments.cs (GetCodeAsString): Added.  Returns the dbus
4510         type code as a string.
4511         (InitAppending): Rename dbus_message_append_iter_init() to
4512         dbus_message_iter_init_append().
4513
4514         * mono/BusDriver.cs: Rename ServiceEventHandler to
4515         NameOwnerChangedHandler.  Rename GetServiceOwner to GetOwner.
4516         Rename ServiceOwnerChanged to NameOwnerChanged.
4517
4518         * mono/Connection.cs: Rename BaseService to UniqueName, and the
4519         underlying C call.
4520
4521         * mono/Custom.cs: Removed.  The CUSTOM type has been removed.
4522
4523         * mono/Service.cs: Rename Exists to HasOwner, internally rename
4524         dbus_bus_acquire_service() to dbus_bus_request_name().
4525
4526         * mono/DBusType/Array.cs (ctor): Use Type.GetElementType() instead
4527         of Type.UnderlyingSystemType to get the correct element type for
4528         the array.
4529         (ctor): Update code for new APIs: use dbus_message_iter_recurse(),
4530         dbus_message_get_{element|arg}_type() instead of
4531         dbus_message_iter_init_array_iterator().
4532         (Append): Replace dbus_message_iter_append_array() with
4533         dbus_message_iter_open_container() and
4534         dbus_message_iter_close_container().
4535
4536         * mono/DBusType/Custom.cs, mono/DBusType/Nil.cs: Removed.  These
4537         types have been removed.
4538         
4539         * mono/DBusType/*.cs: Replace calls of
4540         dbus_message_iter_get_[type]() to dbus_message_iter_get_basic(),
4541         but specify the type in the DllImport extern declaration.  Ditto
4542         for dbus_message_iter_append_[type]() ->
4543         dbus_message_iter_append_basic().
4544
4545         * mono/example/BusListener.cs: Update for ServiceEventHandler ->
4546         NameOwnerChangedHandler.
4547
4548 2005-01-25  John (J5) Palmieri  <johnp@redhat.com>
4549
4550         * python/dbus_bindings.pyx.in: Rename of methods and bindings
4551                 - get_base_service -> get_unique_name
4552                 - bus_get_base_service -> bus_get_unique_name
4553                 - dbus_bus_get_base_service -> dbus_bus_get_unique_name
4554                 - ACTIVATION_REPLY_ACTIVATED -> DBUS_START_REPLY_SUCCESS 
4555                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> DBUS_START_REPLY_ALREADY_RUNNING
4556                 - bus_activate_service -> bus_start_service_by_name
4557                 - dbus_bus_activate_service -> dbus_bus_start_service_by_name
4558                 - bus_acquire_service -> bus_request_name
4559                 - dbus_bus_acquire_service -> dbus_bus_request_name
4560                 - bus_service_exists -> bus_name_has_owner
4561                 - dbus_bus_service_exists -> dbus_bus_name_has_owner
4562
4563         * python/dbus.py: Rename of methods
4564                 - activate_service -> start_service_by_name
4565                 - bus_acquire_service -> bus_request_name
4566                 - ACTIVATION_REPLY_ACTIVATED -> START_REPLY_SUCCESS 
4567                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> START_REPLY_ALREADY_RUNNING
4568
4569         
4570 2005-01-24  Joe Shaw  <joeshaw@novell.com>
4571
4572         * dbus/dbus-connection.c (dbus_connection_dispatch): Print out the
4573         signature for the method that can't be found.
4574
4575         * dbus/dbus-message.c (dbus_message_iter_init): To check to see if
4576         the message has any arguments, we need to call
4577         _dbus_type_reader_get_current_type(), not
4578         _dbus_type_reader_has_next().
4579
4580 2005-01-24  Havoc Pennington  <hp@redhat.com>
4581
4582         * dbus/dbus-message-factory.c: more testing of message validation
4583
4584         * dbus/dbus-protocol.h (DBUS_MINIMUM_HEADER_SIZE): move to this
4585         header
4586
4587 2005-01-23  Havoc Pennington  <hp@redhat.com>
4588
4589         * dbus/dbus-message-factory.c, dbus/dbus-message-util.c: 
4590         get this all working, not many tests in the framework yet though
4591
4592 2005-01-22  Havoc Pennington  <hp@redhat.com>
4593
4594         * doc/dbus-faq.xml, doc/dbus-tutorial: add a FAQ and update
4595         tutorial, based on work from David Wheeler.
4596
4597 2005-01-21  Havoc Pennington  <hp@redhat.com>
4598
4599         * dbus/dbus-bus.c: add more return_if_fail checks
4600
4601         * dbus/dbus-message.c (load_message): have the "no validation"
4602         mode (have to edit the code to toggle the mode for now though)
4603
4604         * dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that
4605         skips all validation; I want to use this at least for benchmark
4606         baseline, I'm not sure if it should be a publicly-available switch.
4607
4608 2005-01-21  Havoc Pennington  <hp@redhat.com>
4609
4610         * glib/dbus-gmain.c: don't put the GLib bindings in the same
4611         toplevel doxygen group as the low-level API stuff
4612
4613         * dbus/dbus.h: note that libdbus is the low-level API
4614
4615 2005-01-20  Havoc Pennington  <hp@redhat.com>
4616
4617         * update-dbus-docs.sh: script to update docs on the web site, only
4618         works for me though. neener.
4619
4620 2005-01-20  Havoc Pennington  <hp@redhat.com>
4621
4622         * dbus/dbus-sysdeps.c (_dbus_poll): amazingly, trying to compile
4623         code can reveal bugs in it
4624
4625 2005-01-20  Havoc Pennington  <hp@redhat.com>
4626
4627         * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
4628         select() version, patches from Tor Lillqvist
4629
4630 2005-01-20  Havoc Pennington  <hp@redhat.com>
4631
4632         * doc/dbus-tutorial.xml: replace > with &gt;
4633
4634         * bus/services.c (bus_registry_acquire_service): validate the name
4635         and return a better error if it's no good.
4636
4637         * doc/dbus-specification.xml: note NO_AUTO_START change
4638
4639         * dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
4640         from AUTO_START, we're toggling the default
4641
4642         * bus/dispatch.c: adapt the tests to change of auto-start default
4643
4644 2005-01-18  Havoc Pennington  <hp@redhat.com>
4645
4646         * rename dbus-daemon-1 to dbus-daemon throughout
4647
4648 2005-01-18  Havoc Pennington  <hp@redhat.com>
4649
4650         * Throughout, grand renaming to strip out the use of "service",
4651         just say "name" instead (or "bus name" when ambiguous).  Did not
4652         change the internal code of the message bus itself, only the
4653         programmer-facing API and messages.
4654         
4655         * doc/dbus-specification.xml: further update the message bus section
4656         
4657         * bus/config-parser.c (all_are_equiv): fix bug using freed string
4658         in error case
4659
4660 2005-01-17  Havoc Pennington  <hp@redhat.com>
4661
4662         * dbus/dbus-types.h: remove 16-bit types since we don't use them
4663         ever
4664
4665         * dbus/dbus-marshal-validate.c (_dbus_validate_path): disallow any
4666         "invalid name character" not only non-ASCII
4667
4668         * doc/dbus-specification.xml: further update spec, message bus 
4669         parts are still out-of-date but the marshaling etc. stuff is now
4670         accurate-ish
4671
4672 2005-01-17  Havoc Pennington  <hp@redhat.com>
4673
4674         * doc/dbus-specification.xml: partially update spec
4675
4676 2005-01-17  Havoc Pennington  <hp@redhat.com>
4677
4678         * Throughout, align variant bodies according to the contained
4679         type, rather than always to 8. Should save a fair bit of space in
4680         message headers.
4681         
4682         * dbus/dbus-marshal-validate.c (_dbus_validate_body_with_reason):
4683         fix handling of case where p == end
4684
4685         * doc/TODO: remove the dbus_bool_t item and variant alignment items
4686
4687 2005-01-17  Havoc Pennington  <hp@redhat.com>
4688
4689         * dbus/dbus-types.h: hardcode dbus_bool_t to 32 bits
4690
4691         * Throughout: modify DBUS_TYPE_BOOLEAN to be a 32-bit type instead
4692         of an 8-bit type. Now dbus_bool_t is the type to use whenever you 
4693         are marshaling/unmarshaling a boolean.
4694
4695 2005-01-16  Havoc Pennington  <hp@redhat.com>
4696
4697         This is about it on what can be disabled/deleted from libdbus
4698         easily, back below 150K anyhow. Deeper cuts are more work than 
4699         just turning the code off as I've done here.
4700         
4701         * dbus/dbus-marshal-basic.c (_dbus_pack_int32): we don't need the
4702         signed int convenience funcs
4703
4704         * dbus/dbus-internals.c (_dbus_verbose_real): omit when not in
4705         verbose mode
4706
4707         * dbus/dbus-string-util.c, dbus/dbus-string.c: more breaking
4708         things out of libdbus
4709
4710         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-util.c: same
4711         
4712         * dbus/dbus-hash.c: purge the TWO_STRINGS crap (well, make it
4713         tests-enabled-only, though it should probably be deleted)
4714
4715         * dbus/dbus-message-util.c: same stuff
4716
4717         * dbus/dbus-auth-util.c: same stuff
4718
4719 2005-01-16  Havoc Pennington  <hp@redhat.com>
4720
4721         * dbus/dbus-userdb-util.c: split out part of dbus-userdb.c
4722
4723         * dbus/dbus-sysdeps.c (_dbus_uid_from_string): move here to pave
4724         way for stripping down dbus-userdb.c stuff included in libdbus.
4725         Rename _dbus_parse_uid for consistency.
4726
4727 2005-01-16  Havoc Pennington  <hp@redhat.com>
4728
4729         * dbus/dbus-internals.c (_dbus_real_assert): print the function
4730         name the assertion failed in
4731
4732         * dbus/dbus-internals.h (_dbus_return_if_fail) 
4733         (_dbus_return_val_if_fail): assert that the name of the function
4734         containing the check doesn't start with '_', since we only want to 
4735         use checks on public functions
4736         
4737         * dbus/dbus-connection.c (_dbus_connection_ref_unlocked): change
4738         checks to assertions
4739
4740         * dbus/dbus-marshal-header.c (_dbus_header_set_field_basic):
4741         change checks to asserts for private function
4742
4743         * dbus/dbus-message.c (_dbus_message_set_serial): checks
4744         to asserts for private function
4745
4746         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): remove
4747         broken assertion that was breaking make check
4748         (_dbus_type_reader_array_is_empty): remove this rather than fix
4749         it, was only used in assertions
4750
4751 2005-01-16  Havoc Pennington  <hp@redhat.com>
4752
4753         * test/unused-code-gc.py: hacky script to find code that's used
4754         only by the bus (not libdbus) or used only by tests or not used at
4755         all. It has some false alarms, but looks like we can clean up a
4756         lot of size from libdbus.
4757
4758         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
4759         dbus/Makefile.am: initially move 10K of binary size out of libdbus
4760         
4761 2005-01-16  Havoc Pennington  <hp@redhat.com>
4762
4763         * Add and fix docs according to Doxygen warnings throughout
4764         source.
4765         
4766         * dbus/dbus-marshal-recursive.c
4767         (_dbus_type_reader_array_is_empty): change this to just call
4768         array_reader_get_array_len() and make it static
4769
4770         * dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
4771         from get_array_type
4772         (dbus_message_iter_init_append): rename from append_iter_init
4773
4774         * dbus/dbus-marshal-recursive.c
4775         (_dbus_type_reader_get_element_type): rename from
4776         _dbus_type_reader_get_array_type
4777
4778 2005-01-15  Havoc Pennington  <hp@redhat.com>
4779
4780         * test/glib/test-profile.c (with_bus_server_filter): fix crash
4781
4782         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
4783         when DBUS_DISABLE_ASSERT
4784         (_dbus_marshal_set_basic): be sure we align for the string length
4785
4786         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
4787         this look faster
4788
4789         * dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
4790         inline macro version
4791         (_dbus_string_set_byte): provide inline macro version
4792
4793 2005-01-15  Havoc Pennington  <hp@redhat.com>
4794
4795         * Land the new message args API and type system.
4796
4797         This patch is huge, but the public API change is not 
4798         really large. The set of D-BUS types has changed somewhat, 
4799         and the arg "getters" are more geared toward language bindings;
4800         they don't make a copy, etc.
4801
4802         There are also some known issues. See these emails for details
4803         on this huge patch:
4804         http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
4805         http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
4806         
4807         * dbus/dbus-marshal-*: all the new stuff
4808
4809         * dbus/dbus-message.c: basically rewritten
4810
4811         * dbus/dbus-memory.c (check_guards): with "guards" enabled, init
4812         freed blocks to be all non-nul bytes so using freed memory is less
4813         likely to work right
4814
4815         * dbus/dbus-internals.c (_dbus_test_oom_handling): add
4816         DBUS_FAIL_MALLOC=N environment variable, so you can do
4817         DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
4818         DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
4819         thorough.
4820
4821         * qt/message.cpp: port to the new message args API
4822         (operator<<): use str.utf8() rather than str.unicode()
4823         (pretty sure this is right from the Qt docs?)
4824
4825         * glib/dbus-gvalue.c: port to the new message args API
4826
4827         * bus/dispatch.c, bus/driver.c: port to the new message args API
4828
4829         * dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
4830         "locked" flag to TRUE and align_offset to 0; I guess we never
4831         looked at these anyhow, but seems cleaner.
4832
4833         * dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
4834         move allocation padding macro to this header; use it to implement
4835         (_DBUS_STRING_STATIC): ability to declare a static string.
4836
4837         * dbus/dbus-message.c (_dbus_message_has_type_interface_member):
4838         change to return TRUE if the interface is not set.
4839
4840         * dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
4841         to dbus-marshal-validate.[hc]
4842
4843         * dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
4844         dbus-internals.c
4845
4846         * dbus/Makefile.am: cut over from dbus-marshal.[hc]
4847         to dbus-marshal-*.[hc]
4848
4849         * dbus/dbus-object-tree.c (_dbus_decompose_path): move this
4850         function here from dbus-marshal.c
4851
4852 2005-01-12  Joe Shaw  <joeshaw@novell.com>
4853
4854         * NEWS: Update for 0.23.
4855
4856         * configure.in: Release 0.23.
4857
4858 2005-01-12  Joe Shaw  <joeshaw@novell.com>
4859
4860         * mono/Makefile.am, mono/example/Makefile.am: Always build the 
4861         dbus DLL with --debug.  Clean up after the .mdb files this leaves
4862         behind.
4863
4864         * mono/doc/Makefile.am: Need to uninstall the docs on "make
4865         uninstall"
4866
4867         * mono/Arguments.cs (GetDBusTypeConstructor): If the type
4868         is an enum, get the enum's underlying type.  Another mono
4869         1.1.3 fix.
4870
4871 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4872
4873         Patch from Sjoerd Simons <sjoerd@luon.net>
4874
4875         * mono/Makefile.am, mono/example/Makefile.am: Don't redefine
4876         DESTDIR.  It breaks stuff.
4877
4878 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4879
4880         Patch from Tambet Ingo <tambet@ximian.com>
4881
4882         * mono/DBusType/Array.cs (Get): Get the underlying element type by
4883         calling type.GetElementType().  The code previously depended on
4884         broken Mono behavior, which was fixed in Mono 1.1.3.
4885
4886         * mono/DBusType/Dict.cs (constructor): Fix the parameters for
4887         Activator.CreateInstance() so that the class's constructor is
4888         called with the right parameters.
4889
4890 2005-01-11  Joe Shaw  <joeshaw@novell.com>
4891
4892         Patch from Timo Teräs <ext-timo.teras@nokia.com>
4893
4894         * dbus/dbus-connection.c
4895         (_dbus_connection_queue_received_message_link): Call
4896         _dbus_connection_remove_timeout() instead of the _locked()
4897         variant, since it's always called from
4898         _dbus_connection_handle_watch(), which handles the locking.
4899         Removed the _locked() variant since it's no longer used.
4900
4901 2005-01-03  Havoc Pennington  <hp@redhat.com>
4902
4903         * dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
4904         return
4905         
4906 2004-12-26  Havoc Pennington  <hp@redhat.com>
4907
4908         * dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert
4909
4910 2005-01-03  Havoc Pennington  <hp@redhat.com>
4911
4912         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
4913         floating point
4914
4915         * dbus/dbus-string.c (_dbus_string_insert_alignment): new function
4916
4917 2005-01-02  Havoc Pennington  <hp@redhat.com>
4918
4919         * dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro
4920
4921 2005-01-01  Havoc Pennington  <hp@redhat.com>
4922
4923         * configure.in: add -Wfloat-equal
4924
4925 2005-01-01  Havoc Pennington  <hp@redhat.com>
4926
4927         * dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
4928         for a variety of reasons '==' doesn't do this.
4929
4930 2004-12-31  Havoc Pennington  <hp@redhat.com>
4931
4932         * dbus/dbus-string.c (_dbus_string_equal_substrings): new function
4933         I keep wishing I had
4934
4935 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
4936
4937         * python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED
4938
4939 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
4940
4941         * python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
4942         and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
4943         dbus-protocol.h.  Because they are defines and not enums they are not
4944         autogenerated.
4945
4946 2004-12-26  John (J5) Palmieri  <johnp@redhat.com>
4947
4948         * python/dbus_bindings.pyx.in (bus_activate_service): Bind
4949         dbus_bus_activate_service
4950
4951         * python/dbus.py (Bus.activate_service): activate a service on the
4952         bus.
4953
4954 2004-12-24  Havoc Pennington  <hp@redhat.com>
4955
4956         * test/decode-gcov.c: change to use .gcno and .gcda files, but the
4957         file format has also changed and I haven't adapted to that yet
4958         
4959         * Makefile.am: load .gcno files from latest gcc
4960
4961 2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
4962         * Patch from Rob Taylor <robtaylor@fastmail.fm>
4963
4964         * python/dbus_bindings.pyx.in (bus_get_unix_user): New
4965         lowlevel binding
4966
4967         * python/dbus.py (get_unix_user): Added binding to 
4968         call dbus_bindings.bus_get_unix_user
4969
4970         * python/extract.py: Modified the proto_pat regex to
4971         handle unsigned long
4972
4973 2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4974
4975         * dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
4976         better POSIX compliance.
4977
4978 2004-12-19  Havoc Pennington  <hp@redhat.com>
4979
4980         * dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
4981         (_dbus_string_insert_8_aligned): new functions
4982
4983         * dbus/dbus-string.c (_dbus_string_alloc_space): new function
4984
4985 2004-12-18  Havoc Pennington  <hp@redhat.com>
4986
4987         * dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
4988         macro
4989
4990         * dbus/dbus-message.c: fix a comment, and add a still-unused
4991         not-implemented function
4992
4993         * dbus/dbus-marshal.h: fix comment
4994
4995         * dbus/dbus-internals.h (_DBUS_ISASCII): new macro
4996
4997 2004-12-17  Joe Shaw  <joeshaw@novell.com>
4998
4999         * mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
5000         mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
5001         mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
5002         Type.UnderlyingSystemType to get the actual system type
5003         underneath.  This code previously depended on the broken Mono
5004         behavior, which was fixed in 1.1.3.
5005
5006 2004-11-27  Havoc Pennington  <hp@redhat.com>
5007
5008         * dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
5009         are disabled
5010         (_dbus_string_get_const_data): inline when asserts are disabled
5011
5012         * dbus/dbus-message.c: record the _dbus_current_generation of
5013         creation so we can complain if dbus_shutdown() is used improperly.
5014         Do this only if checks are enabled.
5015
5016         * dbus/dbus-connection.c: ditto
5017         
5018 2004-11-26  Havoc Pennington  <hp@redhat.com>
5019
5020         * test/glib/test-profile.c: add with_bus mode to profile echoes
5021         that go through the bus.
5022
5023         * test/glib/run-test.sh: add ability to run test-profile
5024
5025         * bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
5026         config file reload.
5027
5028 2004-11-26  Havoc Pennington  <hp@redhat.com>
5029
5030         * test/glib/test-profile.c: clean up how the fake_malloc_overhead
5031         thing was implemented
5032
5033 2004-11-26  Havoc Pennington  <hp@redhat.com>
5034
5035         * test/glib/test-profile.c: tweak a bit, add support for some
5036         made-up minimal malloc overhead with plain sockets, since in 
5037         real life some sort of buffers are unavoidable thus we could 
5038         count them in the theoretical best case
5039
5040 2004-11-26  Havoc Pennington  <hp@redhat.com>
5041
5042         * dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
5043         where I was trying to cache one too many messages
5044
5045 2004-11-26  Havoc Pennington  <hp@redhat.com>
5046
5047         * dbus/dbus-message.c: reimplement message cache as an array which 
5048         makes the cache about twice as fast and saves maybe 1.5% overall
5049
5050 2004-11-26  Havoc Pennington  <hp@redhat.com>
5051
5052         * dbus/dbus-threads.c (init_global_locks): forgot to put the
5053         message cache lock here
5054
5055 2004-11-26  Havoc Pennington  <hp@redhat.com>
5056
5057         * dbus/dbus-message.c (struct DBusMessage): put the locked bit and
5058         the "char byte_order" next to each other to save 4 bytes
5059         (dbus_message_new_empty_header): reduce preallocation, since the
5060         message cache should achieve a similar effect
5061         (dbus_message_cache_or_finalize, dbus_message_get_cached): add a
5062         message cache that keeps a few DBusMessage around in a pool,
5063         another 8% speedup or so.
5064
5065         * dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function
5066
5067 2004-11-25  Havoc Pennington  <hp@redhat.com>
5068
5069         * dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
5070         to write, without reading or blocking, try it before the poll()
5071         and skip the poll() if nothing remains to write. This is about a
5072         3% speedup in the echo client/server
5073
5074 2004-11-25  Havoc Pennington  <hp@redhat.com>
5075
5076         The primary change here is to always write() once before adding
5077         the write watch, which gives us about a 10% performance increase.
5078         
5079         * dbus/dbus-transport-unix.c: a number of modifications to cope
5080         with removing messages_pending
5081         (check_write_watch): properly handle
5082         DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
5083         messages_pending stuff
5084         (check_read_watch): properly handle WAITING_FOR_MEMORY and
5085         AUTHENTICATED cases
5086         (unix_handle_watch): after writing, see if the write watch can be
5087         removed
5088         (unix_do_iteration): assert that write_watch/read_watch are
5089         non-NULL rather than testing that they aren't, since they 
5090         aren't allowed to be NULL. check_write_watch() at the end so 
5091         we add the watch if we did not finish writing (e.g. got EAGAIN)
5092
5093         * dbus/dbus-transport-protected.h: remove messages_pending call,
5094         since it resulted in too much inefficient watch adding/removing; 
5095         instead we now require that the transport user does an iteration 
5096         after queueing outgoing messages, and after trying the first
5097         write() we add a write watch if we got EAGAIN or exceeded our 
5098         max bytes to write per iteration setting
5099
5100         * dbus/dbus-string.c (_dbus_string_validate_signature): add this
5101         function
5102
5103         * dbus/dbus-server-unix.c (unix_finalize): the socket name was
5104         freed and then accessed, valgrind flagged this bug, fix it
5105
5106         * dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
5107         as the last valid field plus 1, where really it is equal to the
5108         last valid field. Corrects some message corruption issues.
5109
5110         * dbus/dbus-mainloop.c: verbosity changes
5111
5112         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
5113         instead of aborting in one of the test codepaths
5114
5115         * dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
5116         caused not printing the pid ever again if a verbose was missing
5117         the newline at the end
5118         (_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE
5119
5120         * dbus/dbus-connection.c: verbosity changes; 
5121         (dbus_connection_has_messages_to_send): new function
5122         (_dbus_connection_message_sent): no longer call transport->messages_pending
5123         (_dbus_connection_send_preallocated_unlocked): do one iteration to
5124         try to write() immediately, so we can avoid the write watch. This
5125         is the core purpose of this patchset
5126         (_dbus_connection_get_dispatch_status_unlocked): if disconnected,
5127         dump the outgoing message queue, so nobody will get confused
5128         trying to send them or thinking stuff is pending to be sent
5129
5130         * bus/test.c: verbosity changes
5131
5132         * bus/driver.c: verbosity/assertion changes
5133
5134         * bus/dispatch.c: a bunch of little tweaks to get it working again
5135         because this patchset changes when/where you need to block.
5136
5137 2004-11-23  Havoc Pennington  <hp@redhat.com>
5138
5139         * test/glib/test-profile.c: modify to accept a plain_sockets
5140         argument in which case it will bench plain sockets instead of
5141         libdbus, for comparison purposes.
5142
5143 2004-11-22  Havoc Pennington  <hp@redhat.com>
5144
5145         * test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
5146         threads for more time, so sysprof can get a grip on it.
5147
5148         * dbus/dbus-string.c (_dbus_string_validate_utf8): remove
5149         pointless variable
5150
5151 2004-11-13  Havoc Pennington  <hp@redhat.com>
5152
5153         * test/glib/test-profile.c: fix this thing up a bit
5154
5155         * dbus/dbus-message.c (dbus_message_new_empty_header): increase
5156         preallocation sizes by a fair bit; not sure if this will be an
5157         overall performance win or not, but it does reduce reallocs.
5158
5159         * dbus/dbus-string.c (set_length, reallocate_for_length): ignore
5160         the test hack that forced constant realloc if asserts are
5161         disabled, so we can profile sanely. Sprinkle in some
5162         _DBUS_UNLIKELY() which are probably pointless, but before I
5163         noticed the real performance problem I put them in.
5164         (_dbus_string_validate_utf8): micro-optimize this thing a little
5165         bit, though callgrind says it didn't help; then special-case
5166         ascii, which did help a lot; then be sure we detect nul bytes as
5167         invalid, which is a bugfix.
5168         (align_length_then_lengthen): add some more _DBUS_UNLIKELY
5169         superstition; use memset to nul the padding instead of a manual
5170         loop.
5171         (_dbus_string_get_length): inline this as a
5172         macro; it showed up in the profile because it's used for loop
5173         tests and so forth
5174
5175 2004-11-10  Colin Walters  <walters@verbum.org>
5176
5177         * dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
5178         for extra paranoia.
5179
5180 2004-11-09  Colin Walters  <walters@verbum.org>
5181
5182         * dbus/dbus-string.c (_dbus_string_get_length): New
5183         function, writes DBusString to C buffer.
5184
5185         * dbus/dbus-string.h: Prototype it.
5186
5187         * dbus/dbus-message.c (dbus_message_type_to_string): New
5188         function, converts message type into C string.
5189
5190         * dbus/dbus-message.h: Prototype it.
5191
5192         * bus/selinux.c (bus_selinux_check): Take source pid,
5193         target pid, and audit data.  Pass audit data to
5194         avc_has_perm.
5195         (log_audit_callback): New function, appends extra
5196         audit information.
5197         (bus_selinux_allows_acquire_service): Also take
5198         service name, add it to audit data.
5199         (bus_selinux_allows_send): Also take message
5200         type, interface, method member, error name,
5201         and destination, and add them to audit data.
5202         (log_cb): Initialize func_audit.
5203         
5204         * bus/selinux.h (bus_selinux_allows_acquire_service)
5205         (bus_selinux_allows_send): Update prototypes 
5206
5207         * bus/services.c (bus_registry_acquire_service): Pass
5208         service name to bus_selinux_allows_acquire_service.
5209
5210         * bus/bus.c (bus_context_check_security_policy): Pass
5211         additional audit data.  Move assignment of dest
5212         to its own line.
5213
5214 2004-11-07  Colin Walters  <walters@verbum.org>
5215
5216         * dbus/dbus-transport-unix.c (do_authentication): Always
5217         initialize auth_completed.
5218         
5219 2004-11-07  Colin Walters  <walters@verbum.org>
5220
5221         * bus/bus.c (load_config): Break into three
5222         separate functions: process_config_first_time_only,
5223         process_config_every_time, and process_config_postinit.
5224         (process_config_every_time): Move call of
5225         bus_registry_set_service_context_table into
5226         process_config_postinit.
5227         (process_config_postinit): New function, does
5228         any processing that needs to happen late
5229         in initialization (and also on reload).
5230         (bus_context_new): Instead of calling load_config,
5231         open config parser here and call process_config_first_time_only
5232         and process_config_every_time directly.  Later, after
5233         we have forked but before changing UID,
5234         invoke bus_selinux_full_init, and then call
5235         process_config_postinit.
5236         (bus_context_reload_config): As in bus_context_new,
5237         load parse file inside here, and call process_config_every_time
5238         and process_config_postinit.
5239
5240         * bus/services.h, bus/services.c
5241         (bus_registry_set_service_context_table): Rename
5242         from bus_registry_set_sid_table.  Take string hash from config
5243         parser, and convert them here into SIDs.
5244
5245         * bus/config-parser.c (struct BusConfigParser): Have
5246         config parser only store a mapping of service->context
5247         string.
5248         (merge_service_context_hash): New function.
5249         (merge_included): Merge context string hashes instead
5250         of using bus_selinux_id_table_union.
5251         (bus_config_parser_new): Don't use bus_selinux_id_table_new;
5252         simply create a new string hash.
5253         (bus_config_parser_unref): Unref it.
5254         (start_selinux_child): Simply insert strings into hash,
5255         don't call bus_selinux_id_table_copy_over.
5256
5257         * bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
5258         (bus_selinux_id_table_copy_over): Delete.
5259
5260 2004-11-03  Colin Walters  <walters@verbum.org>
5261
5262         * bus/selinux.c (bus_selinux_pre_init): Kill some unused
5263         variables.
5264         
5265 2004-11-03  Colin Walters  <walters@verbum.org>
5266
5267         * bus/test-main.c (test_pre_hook): Fix test logic,
5268         thanks Joerg Barfurth <Joerg.Barfurth@Sun.COM>.
5269
5270 2004-11-02  Colin Walters  <walters@redhat.com>
5271
5272         * bus/selinux.c (bus_selinux_init): Split into two functions,
5273         bus_selinux_pre_init and bus_selinux_post_init.
5274         (bus_selinux_pre_init): Just determine whether SELinux is
5275         enabled.
5276         (bus_selinux_post_init): Do everything else.
5277
5278         * bus/main.c (main): Call bus_selinux_pre_init before parsing
5279         config file, and bus_selinux_post_init after.  This ensures that
5280         we don't lose the policyreload notification thread that
5281         bus_selinux_init created before forking previously.
5282         
5283         * bus/test-main.c (test_pre_hook): Update for split.
5284
5285 2004-10-31  Owen Fraser-Green  <owen@discobabe.net>
5286
5287         Patch from Johan Fischer <linux@fischaz.com>
5288         
5289         * mono/doc/Makefile.am (install-data-local): Added directory
5290         install for DESTDIR
5291
5292 2004-10-29  Colin Walters  <walters@redhat.com>
5293
5294         * dbus/dbus-sysdeps.h (_dbus_become_daemon): Also take
5295         parameter for fd to write pid to.       
5296
5297         * dbus/dbus-sysdeps.c (_dbus_become_daemon): Implement it.
5298         
5299         * bus/bus.c (bus_context_new): Pass print_pid_fd
5300         to _dbus_become_daemon (bug #1720)
5301
5302 2004-10-29  Colin Walters  <walters@redhat.com>
5303
5304         Patch from Ed Catmur <ed@catmur.co.uk>
5305
5306         * mono/doc/Makefile.am (install-data-local): Handle
5307         DESTDIR.
5308
5309 2004-10-29  Colin Walters  <walters@redhat.com>
5310
5311         * bus/.cvsignore, qt/.cvsignore: Update.
5312
5313 2004-10-29  Colin Walters  <walters@redhat.com>
5314
5315         Patch from Kristof Vansant <de_lupus@pandora.be>
5316
5317         * configure.in: Detect Slackware.
5318         * bus/Makefile.am (SCRIPT_IN_FILES): Add rc.messagebus.in.
5319         * bus/rc.messagebus.in: New file.
5320
5321 2004-10-29  Colin Walters  <walters@redhat.com>
5322
5323         * tools/dbus-monitor.c (filter_func): Return
5324         DBUS_HANDLER_RESULT_HANDLED in filter function
5325         for now.  See:
5326         http://freedesktop.org/pipermail/dbus/2004-August/001433.html
5327
5328 2004-10-29  Colin Walters  <walters@redhat.com>
5329
5330         Patch from Matthew Rickard <mjricka@epoch.ncsc.mil>
5331
5332         * bus/services.c (bus_registry_acquire_service): 
5333         Correctly retrieve service name from DBusString
5334         for printing.
5335
5336 2004-10-29  Colin Walters  <walters@redhat.com>
5337
5338         * dbus/dbus-glib.h: Update documentation to not
5339         refer to internal APIs.
5340
5341 2004-10-27  Joe Shaw  <joeshaw@novell.com>
5342
5343         * mono/Arguments.cs (GetDBusTypeConstructor):
5344         type.UnderlyingSystemType will return "System.Byte" if you do it
5345         on "byte[]", which is not what we want.  So check the type.IsArray
5346         property and use System.Array instead.
5347
5348 2004-10-25  John (J5) Palmieri  <johnp@redhat.com>
5349
5350         * dbus/dbus-sysdeps.c (fill_user_info): On errors do not free
5351         the DBusUserInfo structure since this is passed into the function.
5352         This would cause a double free when the function that allocated
5353         the structure would try to free it when an error occured.
5354
5355         * (bus/session.conf.in, bus/Makefile.am, dbus/configure.in):
5356         use /usr/share/dbus-1/services instead of /usr/lib/dbus-1.0/services
5357         for service activation to avoid 32bit/64bit parallel install issues
5358
5359 2004-10-21  Colin Walters  <walters@verbum.org>
5360
5361         * AUTHORS: Fix my email address, the @gnu.org one
5362         has been bouncing for some time.  Also add J5.
5363         
5364 2004-10-21  Colin Walters  <walters@verbum.org>
5365
5366         * dbus/dbus-transport-unix.c (do_authentication): Return
5367         authentication status to callers.
5368         (unix_handle_watch): If we completed authentication this round,
5369         don't do another read.  Instead wait until the next iteration,
5370         after we've read any pending data in the auth buffer.
5371         (unix_do_iteration): Ditto.
5372         (unix_handle_watch): Updated for new do_authentication prototype.
5373
5374 2004-10-18  Colin Walters  <walters@verbum.org>
5375
5376         * bus/selinux.c (bus_selinux_enabled): Handle
5377         --disable-selinux case.
5378         
5379 2004-10-18  Colin Walters  <walters@verbum.org>
5380
5381         * bus/selinux.h: Add bus_selinux_enabled.
5382         
5383         * bus/selinux.c (bus_selinux_enabled): Implement it.
5384         
5385         * bus/config-parser.c (struct include): Add
5386         if_selinux_enabled member.
5387         (start_busconfig_child): Parse if_selinux_enabled
5388         attribute for include.
5389         (bus_config_parser_content): Handle it.
5390
5391         * bus/session.conf.in, bus/system.conf.in: Add
5392         inclusion of context mapping to default config files;
5393         conditional on SELinux being enabled.
5394         
5395         * doc/busconfig.dtd: Add to if_selinux_enabled to default DTD.
5396         
5397         * test/data/invalid-config-files/badselinux-1.conf, 
5398         test/data/invalid-config-files/badselinux-2.conf:
5399         Test files for bad syntax.
5400         
5401 2004-10-17  Colin Walters  <walters@verbum.org>
5402
5403         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug, check_guards)
5404         (dbus_malloc, dbus_malloc0, dbus_realloc): Fix up printf
5405         format specifier mismatches.
5406
5407 2004-10-07  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5408
5409         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): fix an incorrect
5410         format string.
5411
5412         * glib/dbus-dbus-gmain.c (dbus_g_bus_get): do not mangle NULL
5413         pointer (bug #1540, Leonardo Boiko).
5414
5415 2004-09-28  Jon Trowbridge  <trow@ximian.com>
5416
5417         * mono/BusDriver.cs: Changed BusDriver struct to remove
5418         the ServiceCreated and ServiceDeleted events and replace them
5419         with the new ServiceOwnerChanged event.
5420
5421         * mono/example/BusListener.cs: Added a new example program,
5422         which listens for and reports any ServiceOwnerChanged events
5423         on the bus driver.
5424
5425         * mono/example/Makefile.am (DESTDIR): Build changes for the
5426         new BusListener.cs example.
5427
5428 2004-09-27  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5429
5430         * bus/signals.c (bus_match_rule_parse): validate the components of
5431         match rules (bug #1439).
5432
5433         * dbus/dbus-bus.c (dbus_bus_add_match): add a missing OOM test.
5434
5435 2004-09-24  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5436
5437         * doc/dbus-specification.xml: document ServiceOwnerChanged
5438         signal.
5439         
5440         * bus/driver.c, bus/driver.h, bus/services.c: Use
5441         ServiceOwnerChanged signal instead of ServiceCreated and
5442         ServiceDeleted.
5443         
5444         * bus/dispatch.c: update testcase for the new signal.
5445
5446 2004-09-20  Jon Trowbridge  <trow@ximian.com>
5447
5448         Patch from Nat Friedman <nat@novell.com>
5449
5450         * mono/Makefile.am: A number of small build fixes to allow "make
5451         distcheck" to succeed.
5452
5453         * mono/example/Makefile.am: "make distcheck" fixes.
5454
5455         * mono/AssemblyInfo.cs.in: When signing the assembly, look for the
5456         key in @srcdir@.
5457
5458         * test/Makefile.am: "make distcheck" fixes.
5459
5460 2004-09-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5461
5462         * dbus/dbus-sysdeps.c (_dbus_user_at_console): fix memleak in OOM.
5463
5464         * doc/busconfig.dtd: update the DTD for the at_console attribute.
5465
5466         * bus/driver.c (bus_driver_handle_hello): correctly handle Hello
5467         messages after the first one (bug #1389).
5468         
5469         * bus/dispatch.c (check_double_hello_message): add a test case for
5470         the double hello message bug.
5471         (check_existent_service_activation): fix check of spawning error.
5472         
5473 2004-09-16  David Zeuthen  <david@fubar.dk>
5474
5475         * python/dbus_bindings.pyx.in: Add support for int64 and uint64
5476
5477 2004-09-12  David Zeuthen  <david@fubar.dk>
5478
5479         Patch from Kay Sievers <kay.sievers@vrfy.org>
5480
5481         * bus/bus.c (bus_context_new):
5482         * bus/bus.h:
5483         * bus/main.c (usage)
5484         (main):
5485         Add commandline option --nofork to override configuration file
5486         setting.
5487
5488 2004-09-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5489
5490         * dbus/dbus-*.h: remove the ; after DBUS_(BEGIN|END)_DECLS. Some C
5491         compilers don't like it (bug #974).
5492
5493 2004-09-04  Harald Fernengel  <harry@kdevelop.org>
5494
5495         * qt/connection.*: Applied patch by Jérôme Lodewyck
5496         <lodewyck@clipper.ens.fr> to integrate an existing
5497         connection into the Qt eventloop
5498
5499 2004-08-30  Jon Trowbridge  <trow@ximian.com>
5500
5501         * mono/BusDriver.cs: Added.  This is a class for interacting with
5502         the org.freedesktop.DBus service.
5503
5504         * mono/Message.cs: Added a mechanism to expose the message that is
5505         currently being dispatched via the static Message.Current
5506         property.  Added Message.Sender and Message.Destination
5507         properties.
5508
5509         * mono/Handler.cs: Expose the dispatched message via
5510         Message.Current when handling method calls.
5511
5512         * mono/Service.cs: Expose the dispatched message via
5513         Message.Current when handling signal emissions.
5514         
5515         * mono/Connection.cs: Bind dbus_bus_get_base_service via the
5516         Connection.BaseService property.
5517
5518 2004-08-28  Havoc Pennington  <hp@redhat.com>
5519
5520         * dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable
5521
5522         More fixes from Steve Grubb
5523         
5524         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix fd leak
5525         (_dbus_listen_tcp_socket): fix fd leak
5526
5527         * dbus/dbus-spawn.c (read_pid, read_ints): move the "again:" for
5528         EINTR to a bit lower in the code
5529
5530 2004-08-26  Jon Trowbridge  <trow@ximian.com>
5531
5532         * bus/driver.c (bus_driver_handle_service_exists): Respond with
5533         TRUE if we are inquiring about the existence of the built-in
5534         org.freedesktop.DBus service.
5535
5536 2004-08-25  John Palmieri  <johnp@redhat.com>
5537         * bus/config-parser.c:
5538         (struct PolicyType): Add POLICY_CONSOLE
5539         (struct Element.d.policy): s/gid_or_uid/gid_uid_or_at_console
5540         (start_busconfig_child): Sets up console element when
5541         <policy at_console=""> is encountered in a policy file
5542         (append_rule_from_element): Convert console elements to console
5543         rules.
5544
5545         * bus/policy.c: 
5546         (bus_policy_create_client_policy): Add console rules to the client
5547         policy based on if the client is at the console
5548         (bus_policy_append_console_rule): New function for adding a
5549         console rule to a policy
5550         (bus_policy_merge): Handle console rule merging
5551
5552         * dbus/dbus-sysdeps.h: Added the DBUS_CONSOLE_DIR constant
5553         where we check for console user files
5554         
5555         * dbus/dbus-sysdeps.c:
5556         (_dbus_file_exists): New function which checks if the given
5557         file exists
5558         (_dbus_user_at_console): New function which does the system
5559         specific process of checking if the user is at the console
5560
5561         * dbus/dbus-userdb.c:
5562         (_dbus_is_console_user): New function converts a UID to user name
5563         and then calls the system specific _dbus_user_at_console to 
5564         see if the user is at the console and therefor a console user
5565
5566 2004-08-25  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5567
5568         * bus/config-parser.c (set_limit):
5569         * bus/dbus-daemon-1.1.in:
5570         * test/data/valid-config-files/many-rules.conf: set the
5571         max_match_rules_per_connection limt from the config file. 
5572
5573         * doc/busconfig.dtd: update the DTD.
5574
5575         * bus/driver.c: remove some unused variables.
5576
5577 2004-08-24  Mikael Hallendal  <micke@imendio.com>
5578
5579         * dbus/dbus-glib-lowlevel.h: Removed dbus_bus_get_with_g_main since 
5580         it's been replaced by dbus_g_bus_get
5581
5582 2004-08-23  Colin Walters  <walters@redhat.com>
5583
5584         Updated SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
5585
5586         * bus/selinux.h: Prototype bus_selinux_get_policy_root.
5587
5588         * bus/selinux.c: Create a thread for policy reload notification.
5589         (bus_selinux_get_policy_root): Implement.
5590
5591         * bus/config-parser.c (start_busconfig_child)
5592         (bus_config_parser_content): Support SELinux-root relative
5593         inclusion.
5594
5595         * configure.in <HAVE_SELINUX>: Add -lpthread.
5596         
5597         * bus/test-main.c (test_pre_hook, test_post_hook): New.
5598         (test_post_hook): Move memory checking into here.
5599         (test_pre_hook, test_post_hook): Move SELinux checks in
5600         here, but conditional on a DBUS_TEST_SELINUX environment
5601         variable.  Unfortunately we can't run the SELinux checks
5602         as a normal user, since they won't have any permissions
5603         for /selinux.  So this will have to be tested manually
5604         for now, until we have virtualization for most of
5605         libselinux.
5606         
5607 2004-08-23  Havoc Pennington  <hp@redhat.com>
5608
5609         * dbus/dbus-sysdeps.c (_dbus_change_identity): add setgroups() to
5610         drop supplementary groups, suggested by Steve Grubb
5611
5612 2004-08-20  Colin Walters  <walters@redhat.com>
5613
5614         * bus/config-parser.c (start_busconfig_child): Remove some unused
5615         variables.
5616         
5617         * bus/selinux.c (bus_selinux_id_table_insert): Avoid compiler
5618         warning.
5619
5620 2004-08-17  Joe Shaw  <joeshaw@novell.com>
5621
5622         * configure.in: If --enable-mono is passed in, if we can't find
5623         mono error out.
5624
5625         * mono/Makefile.am: Use /gacutil to install assemblies into the
5626         GAC and not /root.
5627
5628 2004-08-12  Havoc Pennington  <hp@redhat.com>
5629
5630         * NEWS: update for 0.22
5631
5632         * configure.in: release 0.22
5633
5634 2004-08-11  Colin Walters  <walters@redhat.com>
5635
5636         * tools/dbus-send.c (main, usage): Add --reply-timeout
5637         argument.
5638
5639 2004-08-10  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5640
5641         * bus/bus.c (process_config_first_time_only): get rid of an unused
5642         DBusError that was causing a memoy leak (bug #989).
5643
5644         * dbus/dbus-keyring.c, dbus/dbus-message.c:
5645         fix compilation on Solaris/Forte C (bug #974)
5646
5647         * bus/main.c (main): plug two minuscule memleaks.
5648
5649 2004-08-10  Havoc Pennington  <hp@redhat.com>
5650
5651         * doc/dbus-tutorial.xml: add some more info on GLib bindings
5652
5653 2004-08-09  Havoc Pennington  <hp@redhat.com>
5654
5655         * COPYING: switch to Academic Free License version 2.1 instead of
5656         2.0, to resolve complaints about patent termination clause.
5657
5658 2004-07-31  John (J5) Palmieri  <johnp@redhat.com>
5659
5660         * README: added documentation for the --enable-python 
5661         configure switch.
5662
5663 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5664
5665         * bus/config-parser.c (bus_config_parser_new): fix an invalid
5666         _unref in the SELinux support.
5667
5668         * doc/busconfig.dtd: update DTD for SELinux support.
5669
5670         * bus/config-loader-libxml.c: fix error handler and parser
5671         initialisation/cleanup. OOM test now works with libxml2 HEAD.
5672
5673         * configure.in: remove the warning about libxml2.
5674
5675         * dbus/dbus-bus.c: silence doxygen warning.
5676
5677 2004-07-31  Colin Walters  <walters@redhat.com>
5678
5679         * configure.in: Move #error in SELinux check to its own line.
5680
5681 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5682
5683         * dbus/dbus-internals.h (_DBUS_SET_OOM):
5684         * bus/utils.h (BUS_SET_OOM): use dbus_error_set_const instead of
5685         dbus_error_set.
5686
5687         * bus/dispatch.c (check_send_exit_to_service): fix the test case,
5688         broken by the change in the _SET_OOM macros.
5689
5690 2004-07-31  Colin Walters  <walters@redhat.com>
5691
5692         * bus/selinux.c <HAVE_SELINUX>: Include utils.h to get
5693         BUS_SET_OOM.
5694
5695 2004-07-31  Colin Walters  <walters@redhat.com>
5696
5697         * configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER
5698         to correctly detect DBUS__ACQUIRE_SVC.  Also add an
5699         AC_MSG_CHECKING.
5700
5701 2004-07-24  Havoc Pennington  <hp@redhat.com>
5702
5703         SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
5704
5705         * bus/selinux.c, bus/selinux.h: new file encapsulating selinux
5706         functionality
5707
5708         * configure.in: add --enable-selinux
5709         
5710         * bus/policy.c (bus_policy_merge): add FIXME to a comment
5711
5712         * bus/main.c (main): initialize and shut down selinux
5713
5714         * bus/connection.c: store SELinux ID on each connection, to avoid 
5715         repeated getting of the string context and converting it into 
5716         an ID
5717
5718         * bus/bus.c (bus_context_get_policy): new accessor, though it
5719         isn't used
5720         (bus_context_check_security_policy): check whether the security
5721         context of sender connection can send to the security context of
5722         recipient connection
5723
5724         * bus/config-parser.c: add parsing for <selinux> and <associate>
5725         
5726         * dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
5727         implement dbus_connection_get_unix_fd()
5728
5729         * dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
5730         function, used by the selinux stuff
5731         
5732 2004-07-29  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5733
5734         * bus/config-loader-libxml.c: complete the implementation of
5735         libxml backend for config file loader. Doesn't work with full OOM
5736         test yet. 
5737         
5738         * configure.in: change error when selecting libxml into a warning.
5739         
5740         * test/data/invalid-config-files: add two non-well-formed XML
5741         files. 
5742         
5743         * glib/Makefile.am: libdbus_gtool always uses expat, not libxml.
5744         
5745         * dbus/dbus-transport-unix.c (unix_handle_watch): do not
5746         disconnect in case of DBUS_WATCH_HANGUP, several do_reading() may
5747         be necessary to read all the buffer. (bug #894)
5748
5749         * bus/activation.c (bus_activation_activate_service): fix a
5750         potential assertion failure (bug #896). Small optimization in the
5751         case of auto-activation messages.
5752
5753         * dbus/dbus-message.c (verify_test_message, _dbus_message_test):
5754         add test case for byte-through-vararg bug (#901). patch by Kimmo
5755         Hämäläinen. 
5756
5757 2004-07-28  Anders Carlsson  <andersca@gnome.org>
5758
5759         * python/dbus.py:
5760         * python/dbus_bindings.pyx.in:
5761         Add dbus.init_gthreads (), allow emit_signal to pass
5762         arguments to the signal.
5763         
5764 2004-07-24  Havoc Pennington  <hp@redhat.com>
5765
5766         * AUTHORS: add some people, not really comprehensively, let me
5767         know if I missed you
5768
5769 2004-07-24  Havoc Pennington  <hp@redhat.com>
5770
5771         * Makefile.am (DIST_SUBDIRS): add DIST_SUBDIRS, problem solved by
5772         Owen
5773
5774         * test/Makefile.am (DIST_SUBDIRS): here also
5775
5776 2004-07-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5777
5778         * dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
5779         breaking build on Solaris, reported by Farhad Saberi on the ML.
5780
5781         * dbus/dbus-message.c (dbus_message_append_args_valist): fix the
5782         va_arg invocation to account for integer promotion in the case of
5783         DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)
5784
5785         * bus/services.c (bus_service_remove_owner): fix bug #902, use
5786         _dbus_list_get_first_link, not _dbus_list_get_first.
5787
5788         * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.
5789
5790         * dbus/dbus-object-tree.c (free_subtree_recurse): always null
5791         handler functions so that the asserts in _dbus_object_subtree_unref
5792         do not fail.
5793
5794         * dbus/dbus-transport-unix.c (do_reading):
5795         _dbus_transport_queue_messages return value is of type
5796         dbus_bool_t, not DBusDispatchStatus.
5797         
5798 2004-07-19  David Zeuthen  <david@fubar.dk>
5799
5800         * dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
5801
5802         * bus/dispatch.c:
5803         (check_get_connection_unix_user): Debug says GetProperty; but the
5804         method is called GetConnectionUnixUser
5805         (check_get_connection_unix_process_id): New function
5806         (bus_dispatch_test): Actually call check_get_connection_unix_user();
5807         also call check_get_connection_unix_process_id()
5808         
5809         * bus/driver.c:
5810         (bus_driver_handle_get_connection_unix_process_id): New function,
5811         handles GetConnectionUnixProcessID on the org.freedesktop.DBus
5812         interface
5813         
5814         * dbus/dbus-auth.c:
5815         (handle_server_data_external_mech): Set pid from the credentials
5816         obtained from the socket
5817         
5818         * dbus/dbus-connection.c:
5819         (dbus_connection_get_unix_process_id): New function
5820         
5821         * dbus/dbus-connection.h: 
5822         Add prototype for dbus_connection_get_unix_process_id
5823         
5824         * dbus/dbus-transport.c:
5825         (_dbus_transport_get_unix_process_id): New function
5826         
5827         * dbus/dbus-transport.h:
5828         Add prototype for _dbus_transport_get_unix_process_id
5829         
5830 2004-07-19  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5831
5832         * dbus/dbus-message.c: Message counter fix, patch by Christian
5833         Hammond <chipx86@gnupdate.org>
5834
5835 2004-07-18  Seth Nickell  <seth@gnome.org>
5836
5837         * python/dbus.py:
5838         * python/dbus_bindings.pyx.in:
5839         * python/tests/test-client.py:
5840
5841         Add dbus.ByteArray and dbus_bindings.ByteArray
5842         types so that byte streams can be passed back.
5843
5844         Give jdahlin the heaps of credit that are so
5845         rightfully his.
5846         
5847 2004-07-12  Seth Nickell  <seth@gnome.org>
5848
5849         * python/dbus.py:
5850
5851         Add message argument to the default object_method_handler
5852         function.
5853         
5854         * python/dbus_bindings.pyx.in:
5855
5856         Automatically return NIL when passed an empty list
5857         (we can't pass back a list since lists are typed
5858         and we don't have any idea what type the the client
5859         intended the list to be... :-( )
5860         
5861 2004-07-10  Seth Nickell  <seth@gnome.org>
5862
5863         * python/examples/Makefile.am:
5864
5865         Fix distcheck breakage caused by new examples.
5866
5867 2004-07-10  Seth Nickell  <seth@gnome.org>
5868
5869         * python/dbus.py:
5870
5871         Add "message" argument to service-side dbus.Object
5872         methods. This will break existing services written
5873         using the python bindings, but will allow extraction
5874         of all the message information (e.g. who its from).
5875
5876         Add improved "object oriented" signal handling/emission.
5877         
5878         * python/examples/example-service.py:
5879
5880         Nix this example.
5881         
5882         * python/examples/example-signal-emitter.py:
5883         * python/examples/example-signal-recipient.py:
5884
5885         Two new examples that show how to emit and receive
5886         signals using the new APIs.
5887         
5888         * python/examples/example-signals.py:
5889         * python/examples/gconf-proxy-service.py:
5890         * python/examples/gconf-proxy-service2.py:
5891
5892         Add "message" argument to service methods.
5893
5894 2004-06-28  Kay Sievers <kay.sievers@vrfy.org>
5895
5896         * bus/driver.c (bus_driver_handle_get_connection_unix_user)
5897         * dbus/bus.c (dbus_bus_get_unix_user)
5898         * doc/dbus-specification.xml: implement GetConnectionUnixUser
5899         method of org.freedesktop.DBus interface.
5900
5901         * bus/dispatch.c: test case
5902
5903 2004-06-23  John (J5) Palmieri  <johnp@redhat.com>
5904
5905         * python/Makefile.am: switched include directory from glib/ to dbus/
5906         since dbus-glib.h moved
5907  
5908 2004-06-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5909
5910         * configure.in: prevent building the gcj stuff and libxml loader
5911         since they are broken.
5912
5913 2004-06-20  Havoc Pennington  <hp@redhat.com>
5914
5915         * dbus/dbus-glib-error-enum.h: autogenerate the GError enum 
5916         codes from the dbus error names
5917         
5918         * glib/dbus-glib.h: move to subdir dbus/ since it's included 
5919         as dbus/dbus-glib.h and that breakage is now visible due to 
5920         including dbus/dbus-glib.h in dbus-glib-lowlevel.h
5921         
5922         * glib/dbus-glib.h: s/gproxy/g_proxy/
5923
5924         * dbus/dbus-shared.h: new header to hold stuff shared with
5925         binding APIs
5926         
5927         * dbus/dbus-protocol.h (DBUS_ERROR_*): move errors here rather
5928         than dbus-errors.h
5929
5930         * glib/dbus-glib.h (dbus_set_g_error): move to
5931         dbus-glib-lowlevel.h
5932
5933         * glib/dbus-glib.h: remove dbus/dbus.h from here; change a bunch
5934         of stuff to enable this
5935
5936         * dbus/dbus-glib-lowlevel.h: put dbus/dbus.h here
5937
5938         * a bunch of other changes with the same basic "separate glib 
5939         bindings from dbus.h" theme
5940         
5941 2004-06-10  Owen Fraser-Green  <owen@discobabe.net>
5942
5943         * dbus-sharp.pc.in: Removed glib-sharp inclusion in Libs.
5944
5945         * python/examples/Makefile.am: Fixed typo in EXTRA_DIST.
5946
5947 2004-06-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5948
5949         * bus/driver.c, dbus/dbus-bus.c: use BOOLEAN instead of UINT32 for
5950         the reply value of the ServiceExists message.
5951
5952 2004-06-07  John (J5) Palmieri  <johnp@redhat.com>
5953
5954         * python/dbus_bindings.pyx.in: No longer need to parse path
5955         elements and pass them as arrays of strings.  The C API now
5956         accepts plain path strings.
5957         (_build_parsed_path): removed 
5958
5959 2004-06-07  Havoc Pennington  <hp@redhat.com>
5960
5961         * doc/TODO: remove auto-activation item since it's done; sort
5962         items by importance/milestone
5963
5964 2004-06-07  Havoc Pennington  <hp@redhat.com>
5965
5966         * dbus/dbus-message-builder.c (_dbus_message_data_load): append
5967         random signature when using REQUIRED_FIELDS (this hack won't work
5968         in the long term)
5969
5970         * dbus/dbus-message.c: change the signature to be a header field,
5971         instead of message->signature special-case string. Incremental
5972         step forward. Then we can fix up code to send the signature in the
5973         message, then fix up code to validate said signature, then fix up
5974         code to not put the typecodes inline, etc.
5975         (load_one_message): don't make up the signature after the fact
5976         (decode_header_data): require signature field for the known
5977         message types
5978
5979         * dbus/dbus-marshal.c (_dbus_marshal_string_len): new
5980
5981         * dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE
5982
5983 2004-06-07  Owen Fraser-Green  <owen@discobabe.net>
5984
5985         * mono/DBusType/ObjectPath.cs: Renamed PathName argument to Path
5986
5987         * mono/Handler.cs: Updated to follow new path argument for
5988         (un-)registering objects.
5989
5990         * mono/example/Makefile.am:
5991         * mono/Makefile.am:
5992         * configure.in: Bumped required version for mono and use new -pkg
5993         syntax for deps
5994
5995 2004-06-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5996
5997         * dbus/dbus-connection.h, dbus/dbus-connection.c: have object path
5998         registration functions take the path argument as char* instead of
5999         char**.
6000
6001         * dbus/dbus-marshal.h, dbus/dbus-marshal.c (_dbus_decompose_path):
6002         split off the path decompostion part of
6003         _dbus_demarshal_object_path. Some misc. fixes to silence compiler
6004         warnings. 
6005
6006         * glib/dbus-gobject.c, test/test-service.c: update accordingly.
6007         
6008 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
6009  
6010         * dbus/dbus-auth.c: Rewrite auth protocol handling to use a state
6011         machine approach.  A state is implemented as a function that
6012         handles incoming events as specified for that state.
6013         
6014         * doc/dbus-specification.xml: Update auth protocol state machine
6015         specification to match implementation.  Remove some leftover
6016         base64 examples.
6017
6018 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
6019
6020         * glib/dbus-gproxy.c, glib/dbus-gmain.c, dbus/dbus-string.c,
6021         dbus/dbus-object-tree.c, dbus/dbus-message.c: add comments to
6022         quiet doxygen.
6023
6024         * Doxyfile.in: remove deprecated options.
6025
6026         * dbus/dbus-message-handler.c, dbus/dbus-message-handler.h,
6027         glib/test-thread.h, glib/test-thread-client.c,
6028         glib/test-thread-server.c, glib/test-profile.c,
6029         glib/test-dbus-glib.c: remove these unused files.
6030
6031 2004-06-01  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6032
6033         * dbus/dbus-object-tree.c
6034         (_dbus_object_tree_dispatch_and_unlock): fix dispatch for
6035         non-fallback handlers (bug #684).
6036         (_dbus_object_subtree_new): initialize invoke_as_fallback field.
6037         (find_subtree_recurse): report wether the returned subtree is an
6038         exact match or a "fallback" match higher up in the tree.
6039         (object_tree_test_iteration): update test case.
6040
6041 2004-06-01  Seth Nickell  <seth@gnome.org>
6042
6043         * python/dbus_bindings.pyx.in:
6044         * python/tests/test-client.py:
6045
6046         Round off basic type support. Add dicts (yay!), and 
6047         remaining array types.
6048
6049         Make MessageIter more general so it works for dicts too.
6050
6051         Mark all loop variables as C integers.
6052         
6053 2004-05-31  Havoc Pennington  <hp@redhat.com>
6054
6055         * glib/dbus-gidl.c (method_info_add_arg): keep args sorted with
6056         "in" before "out"
6057
6058         * glib/dbus-gobject.c (dbus_type_to_string): move to dbus-gutils.c
6059
6060         * glib/dbus-glib-tool.c (main): set up to have a --self-test
6061         option that runs the tests, and start filling in some code
6062         including for starters just dumping the interfaces to stdout
6063
6064         * glib/Makefile.am (INCLUDES): define DBUS_LOCALEDIR
6065
6066         * test/data/valid-introspection-files/lots-of-types.xml: test of
6067         an example introspection file
6068
6069         * glib/dbus-gparser.c (parser_check_doctype): doctype should be
6070         "node" (I think...)
6071
6072 2004-05-31  Seth Nickell  <seth@gnome.org>
6073
6074         * python/dbus_bindings.pyx.in:
6075         * python/tests/test-client.py:
6076
6077         Test Suite: 1
6078         Python Bindings: 0
6079
6080         Fix string array memory trashing bug... oops...
6081
6082 2004-05-30  Seth Nickell  <seth@gnome.org>
6083
6084         * python/dbus.py:
6085
6086         Add a nicer-but-less-flexible alternate API for handling 
6087         calls to virtual objects in dbus.ObjectTree.
6088
6089         Screw up the argument order to the dbus.Object constructor
6090         for consistency with dbus.ObjectTree (and to make dbus_methods
6091         optional for future extension)
6092         
6093         * python/examples/Makefile.am:
6094         * python/examples/gconf-proxy-service.py:
6095         * python/examples/gconf-proxy-service2.py:
6096
6097         Alternate implementation of gconf-proxy-service using the
6098         nicer dbus.ObjectTree API.
6099         
6100         * python/examples/example-service.py:
6101         * python/tests/test-server.py
6102
6103         Reverse the argument order to deal with dbus.Object constructor
6104         changes.
6105         
6106 2004-05-30  Seth Nickell  <seth@gnome.org>
6107
6108         * python/examples/example-client.py:
6109         * python/examples/example-service.py:
6110
6111         Take it back. Lists seem to work but they're broken
6112         in the test suite. Make the base examples use
6113         lists (works fine).
6114
6115 2004-05-30  Seth Nickell  <seth@gnome.org>
6116
6117         * python/dbus_bindings.pyx.in:
6118         * python/tests/test-client.py:
6119
6120         Add some more tests and fix errors that crop up.
6121         Unfortunately, currently it seems like marshalling
6122         and unmarshalling of lists is completely broken :-(
6123
6124 2004-05-30  Seth Nickell  <seth@gnome.org>
6125
6126         * python/dbus_bindings.pyx.in:
6127
6128         Add support for ObjectPath type.
6129
6130         * python/dbus.py:
6131
6132         Refactor message handling code to a common function.
6133         
6134         * python/tests/test-client.py:
6135         * python/tests/test-server.py:
6136
6137         Add tests that check to make sure values of all types
6138         can be echoed from a service w/o mangling.
6139         
6140 2004-05-29  Seth Nickell  <seth@gnome.org>
6141
6142         * python/dbus.py:
6143
6144         Add ObjectTree class which allows implementation
6145         of trees of "virtual" objects. Basically the python
6146         wrapper for "register_fallback".
6147         
6148         * python/examples/Makefile.am
6149         * python/examples/gconf-proxy-client.py:
6150         * python/examples/gconf-proxy-service.py:
6151
6152         Implement a simple GConf proxy service that supports
6153         get/set on string and int GConf keys using the ObjectTree.
6154         
6155 2004-05-29  Seth Nickell  <seth@gnome.org>
6156
6157         * python/dbus.py:
6158         * python/examples/example-client.py:
6159         * python/examples/example-service.py:
6160         * python/examples/list-system-services.py:
6161
6162         Add SessionBus, SystemBus and ActivationBus classes
6163         so you don't need to know the special little BUS_TYPE
6164         flag.
6165         
6166 2004-05-29  Havoc Pennington  <hp@redhat.com>
6167
6168         * bus/config-parser.c (process_test_valid_subdir): temporarily
6169         stop testing config parser OOM handling, since expat has issues
6170         http://freedesktop.org/pipermail/dbus/2004-May/001153.html
6171
6172         * bus/dbus-daemon-1.1.in: change requested_reply to
6173         send_requested_reply/receive_requested_reply so we can send the
6174         replies, not just receive them.
6175
6176         * bus/config-parser.c: parse the new
6177         send_requested_reply/receive_requested_reply
6178
6179         * bus/policy.c (bus_client_policy_check_can_send): add
6180         requested_reply argument and use it
6181
6182         * bus/bus.c (bus_context_check_security_policy): pass through
6183         requested_reply status to message send check
6184
6185         * bus/system.conf.in: adapt to requested_reply change
6186         
6187 2004-05-28  Havoc Pennington  <hp@redhat.com>
6188
6189         * test/glib/test-service-glib.c (main): remove unused variable
6190
6191         * glib/dbus-gidl.c (base_info_ref): fix a silly compiler warning
6192
6193         * dbus/dbus-auth.h (enum): remove AUTHENTICATED_WITH_UNUSED_BYTES
6194         from the enum, no longer in use.
6195
6196         * dbus/dbus-sysdeps.h: include config.h so DBUS_VA_COPY actually
6197         works right.
6198
6199         * dbus/dbus-message.c: add various _dbus_return_val_if_fail for
6200         whether error_name passed in is a valid error name.
6201
6202 2004-05-28  John (J5) Palmieri  <johnp@redhat.com>
6203
6204         * dbus/dbus-message.c (dbus_message_get_args): Added support for
6205         OBJECT_PATH and OBJECT_PATH_ARRAY
6206
6207 2004-05-28  Seth Nickell  <seth@gnome.org>
6208
6209         * python/examples/Makefile.am:
6210
6211         Forget to add Makefile.am. Do not pass go.
6212
6213 2004-05-28  Michael Meeks  <michael@ximian.com>
6214
6215         * glib/dbus-gvalue.c (dbus_gvalue_marshal, dbus_gvalue_demarshal): 
6216         fix no int64 case.
6217
6218         * dbus/dbus-string.c (_dbus_string_parse_basic_type): impl.
6219
6220         * dbus/dbus-message.c (_dbus_message_iter_get_basic_type),
6221         (_dbus_message_iter_get_basic_type_array): impl.
6222         drastically simplify ~all relevant _get methods to use these.
6223         (_dbus_message_iter_append_basic_array),
6224         (dbus_message_iter_append_basic): impl
6225         drastically simplify ~all relevant _append methods to use these.
6226
6227         * dbus/dbus-message-builder.c (parse_basic_type) 
6228         (parse_basic_array, lookup_basic_type): impl.
6229         (_dbus_message_data_load): prune scads of duplicate /
6230         cut & paste coding.
6231
6232         * dbus/dbus-marshal.c (_dbus_demarshal_basic_type_array) 
6233         (_dbus_demarshal_basic_type): implement,
6234         (demarshal_and_validate_len/arg): beef up debug.
6235         (_dbus_marshal_basic_type, _dbus_marshal_basic_type_array): impl.
6236
6237 2004-05-27  Seth Nickell  <seth@gnome.org>
6238
6239         * configure.in:
6240         * python/Makefile.am:
6241
6242         Include the example python apps in the tarball.
6243         
6244         * python/examples/list-system-services.py
6245
6246         Add a python new example that fetches the list of services
6247         from the system bus.
6248         
6249 2004-05-27  Seth Nickell  <seth@gnome.org>
6250
6251         * python/dbus.py:
6252         * python/dbus_bindings.pyx.in:
6253
6254         Fix failure to notify that a signal was not handled,
6255         resulted in hung functions.
6256         
6257 2004-05-25  Colin Walters  <walters@redhat.com>
6258
6259         * tools/dbus-monitor.c (main): Monitor all types of messages.
6260
6261 2004-05-23  Owen Fraser-Green  <owen@discobabe.net>
6262
6263         * mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
6264         which unregisters the object path and disposes the handler.
6265
6266 2004-05-23  Kristian Høgsberg  <krh@redhat.com>
6267  
6268         Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
6269          
6270         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): Swap
6271         operands to && so we call dbus_message_iter_next () for the last
6272         argument also.
6273
6274 2004-05-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6275
6276         * dbus/dbus-object-tree.c
6277         (_dbus_object_tree_list_registered_unlock, lookup_subtree): return
6278         children even if the requested path isn't registered.
6279         (object_tree_test_iteration): test object_tree_list_registered.
6280
6281         * configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
6282         it to 0.
6283         
6284 2004-05-20  Kristian Høgsberg  <krh@redhat.com>
6285
6286         * doc/TODO: Remove resolved items.
6287
6288         * bus/expirelist.h (struct BusExpireList): remove unused n_items
6289         field.
6290         
6291         * bus/connection.c (bus_connections_expect_reply): Enforce the
6292         per-connection limit on pending replies.
6293         
6294         Patch from Jon Trowbridge <trow@ximian.com>:
6295  
6296         * bus/main.c (setup_reload_pipe): Added.  Creates a pipe and sets
6297         up a watch that triggers a config reload when one end of the pipe
6298         becomes readable.
6299         (signal_handler): Instead of doing the config reload in our SIGHUP
6300         handler, just write to the reload pipe and let the associated
6301         watch handle the reload when control returns to the main loop.
6302  
6303         * bus/driver.c (bus_driver_handle_reload_config): Added.
6304         Implements a ReloadConfig method for requesting a configuration
6305         file reload via the bus driver.
6306  
6307 2004-05-19  Owen Fraser-Green  <owen@discobabe.net>
6308
6309         * HACKING: Updated release instructions concerning the wiki page.
6310
6311 2004-05-18  Kristian Høgsberg  <krh@redhat.com>
6312
6313         * dbus/dbus-auth.c (client_try_next_mechanism): Remove logic to
6314         filter against auth->allowed_mechs; we only add allowed mechs in
6315         record_mechanisms().
6316  
6317         * dbus/dbus-auth-script.c (_dbus_auth_script_run): Add an
6318         ALLOWED_MECHS to auth-script format so we can set the list of
6319         allowed mechanisms.
6320  
6321         * data/auth/client-out-of-mechanisms.auth-script: New test to
6322         check client disconnects when it is out of mechanisms to try.
6323  
6324         * dbus/dbus-auth.c (process_command): Remove check for lines
6325         longer that 1 MB; we only buffer up maximum 16 kB.
6326  
6327         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
6328         dbus/dbus-auth-script.c, dbus/dbus-auth.c, dbus/dbus-auth.h:
6329         Remove auth state AUTHENTICATED_WITH_UNUSED_BYTES, instead always
6330         assume there might be unused bytes.
6331  
6332         * dbus/dbus-auth.c (_dbus_auth_do_work): Remove check for
6333         client-out-of-mechs, it is handled in process_reject(). Move check
6334         for max failures to send_rejected(), as it's a server-only thing.
6335
6336         * dbus/dbus-auth.c: Factor out protocol reply code into functions
6337         send_auth(), send_data(), send_rejected(), send_error(),
6338         send_ok(), send_begin() and send_cancel().
6339
6340 2004-05-17  Kristian Høgsberg  <krh@redhat.com>
6341
6342         Remove base64 encoding, replace with hex encoding. Original patch
6343         from trow@ximian.com, added error handling.
6344
6345         * dbus/dbus-string.c (_dbus_string_base64_encode)
6346         (_dbus_string_base64_decode): Remove.
6347         (_dbus_string_hex_decode): Add end_return argument so we can
6348         distinguish between OOM and invalid hex encoding.
6349         (_dbus_string_test): Remove base64 tests and add test case for
6350         invalid hex.
6351
6352         * dbus/dbus-keyring.c, dbus/dbus-auth-script.c, dbus/dbus-auth.c:
6353         Replace base64 with hex.
6354
6355         * test/data/auth/invalid-hex-encoding.auth-script: New test case
6356         for invalid hex encoded data in auth protocol.
6357
6358 2004-05-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6359
6360         * dbus/dbus-connection.c (check_for_reply_unlocked): plug a memory
6361         leak.
6362
6363 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
6364
6365         * mono/dbus-sharp.dll.config.in: Added for GAC
6366         * mono/dbus-sharp.snk: Added for GAC
6367         * mono/Assembly.cs.in: Added for GAC
6368         * mono/Makefile.am: Changes for GAC installation        
6369         * configure.in: Added refs for dbus-sharp.dll.config.in and
6370         Assembly.cs.in. More fixes for mono testing
6371         * mono/example/Makefile.am: Changed var to CSC
6372         * Makefile.am: Changed flag name to DBUS_USE_CSC
6373
6374 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
6375
6376         * mono/Makefile.am: Added SUBDIRS for docs. Changed SUBDIRS order
6377         * mono/doc/*: Added documentation framework
6378         * configure.in: Added monodoc check
6379         * README: Added description of mono configure flags
6380
6381 2004-05-11  John (J5) Palmieri  <johnp@redhat.com>:
6382
6383         * doc/dbus-specification.xml: Added a "Required" column to the 
6384         header fields table and changed the "zero or more" verbage in
6385         the above paragraph to read "The header must contain the required 
6386         named header fields and zero or more of the optional named header 
6387         fields".
6388         * test/data/invalid-messages/*.message: Added the required PATH 
6389         named header field to the tests so that they don't fail on 
6390         'Missing path field'
6391
6392 2004-05-07  John (J5) Palmieri  <johnp@redhat.com>
6393
6394         * python/dbus-bindings.pyx.in: Stopped the bindings from trashing
6395         the stack by implicitly defining variable and parameter types and
6396         removing the hack of defining C pointers as python objects and later
6397         casting them.
6398
6399 2004-05-02  Owen Fraser-Green  <owen@discobabe.net>
6400
6401         * mono/Makefile.am: Removed test-dbus-sharp.exe from all target
6402
6403 2004-05-01  Owen Fraser-Green  <owen@discobabe.net>
6404
6405         * mono/DBusType/Dict.cs: Handle empty dicts
6406         * mono/DBusType/Array.cs: Handle empty arrays
6407         * mono/Arguments.cs: Handle empty arguments
6408
6409 2004-04-30  Owen Fraser-Green  <owen@discobabe.net>
6410
6411         * dbus-sharp.pc.in: Modified to include include Libs and Requires
6412         field
6413
6414 2004-04-25  Kristian Høgsberg  <krh@redhat.com>
6415
6416         * test/data/valid-messages/standard-*.message: Update message
6417         test scripts to new header field names.
6418
6419 2004-04-22  John (J5) Palmieri  <johnp@redhat.com>
6420
6421         * test/break-loader.c (randomly_do_n_things): tracked down buffer
6422         overflow to times_we_did_each_thing array which would chop off the
6423         first character of the failure_dir string. Increased the size of
6424         the array to 7 to reflect the number of random mutation functions
6425         we have.
6426
6427 2004-04-21  Kristian Høgsberg  <krh@redhat.com>
6428
6429         * dbus/dbus-server-unix.c (unix_finalize): Don't unref
6430         unix_server->watch here, it is unreffed in disconnect.
6431         (_dbus_server_new_for_tcp_socket): convert NULL host to
6432         "localhost" here so we don't append NULL to address.
6433         
6434         * dbus/dbus-server.c (_dbus_server_test): Add test case for
6435         various addresses, including tcp with no explicit host.
6436
6437 2004-04-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6438
6439         * dbus/dbus-message.c (decode_header_data, decode_string_field):
6440         fix incorrect setting of .name_offset in the HeaderField (it was
6441         off by two bytes, positioned right after the name and typecode)
6442
6443         * bus/bus.c (bus_context_new, bus_context_unref): test before
6444         calling dbus_server_free_data_slot and _dbus_user_database_unref
6445         in case of an error.
6446
6447         * tools/Makefile.am: add $(DBUS_GLIB_TOOL_LIBS), xml libs needed
6448         by libdbus-gtool.
6449
6450 2004-04-19  Kristian Høgsberg  <krh@redhat.com>
6451
6452         * dbus/dbus-transport-unix.c (unix_do_iteration): Rewrite to use
6453         _dbus_poll() instead of select().
6454
6455 2004-04-15  Jon Trowbridge  <trow@ximian.com>
6456
6457         * bus/main.c (signal_handler): Reload the configuration files
6458         on SIGHUP.
6459         (main): Set up our SIGHUP handler.
6460
6461         * bus/bus.c (struct BusContext): Store the config file, user and
6462         fork flag in the BusContext.
6463         (process_config_first_time_only): Added.  Contains the code
6464         (previously in bus_context_new) for setting up the BusContext from
6465         the BusConfigParser that should only be run the first time the
6466         config files are read.
6467         (process_config_every_time): Added.  Contains the code (previously
6468         in bus_context_new) for setting up the BusContext from the
6469         BusConfigParser that should be run every time the config files are
6470         read.
6471         (load_config): Added.  Builds a BusConfigParser from the config
6472         files and passes the resulting structure off to
6473         process_config_first_time_only (assuming this is the first time)
6474         and process_config_every_time.
6475         (bus_context_new): All of the config-related code has been moved
6476         to process_config_first_time_only and process_config_every_time.
6477         Now this function just does the non-config-related initializations
6478         and calls load_config.
6479         (bus_context_reload_config): Added.
6480
6481 2004-04-15  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6482
6483         * bus/driver.c (bus_driver_handle_get_service_owner):
6484         implement a GetServiceOwner method.
6485         * doc/dbus-specification.xml: document it.
6486         * dbus/dbus-errors.h: add a 'ServiceHasNoOwner' error.
6487         
6488         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service_owner):
6489         implement, using the bus GetServiceOwner method.
6490
6491         * test/glib/test-dbus-glib.c:
6492         use dbus_gproxy_new_for_service_owner so that we can receive the
6493         signal. 
6494
6495 2004-04-15  John (J5) Palmieri  <johnp@redhat.com>
6496
6497         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
6498         dbus/dbus-message.c, dbus/dbus-protocol.h
6499         (DBUS_HEADER_FIELD_SERVICE): renamed DBUS_HEADER_FIELD_DESTINATION
6500
6501         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
6502         dbus/dbus-message.c, dbus/dbus-protocol.h
6503         (DBUS_HEADER_FIELD_SENDER_SERVICE): renamed DBUS_HEADER_FIELD_SENDER
6504
6505         * dbus/dbus-internals.c (_dbus_header_field_to_string):
6506         DBUS_HEADER_FIELD_DESTINATION resolves to "destination"
6507         DBUS_HEADER_FIELD_SENDER resolves to "sender"
6508
6509         * doc/dbus-specification.xml (Header Fields Table):
6510         s/SERVICE/DESTINATION
6511         s/SENDER_SERVICE/SENDER
6512
6513
6514 2004-04-14  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6515
6516         * test/glib/test-dbus-glib.c (timed_exit): fail the test after
6517         a few seconds.
6518
6519 2004-04-13  Michael Meeks  <michael@ximian.com>
6520
6521         * glib/dbus-gobject.c (handle_introspect): split out
6522         (introspect_properties): this.
6523         (handle_introspect): implement this.
6524
6525         * test/glib/Makefile.am: use the absolute path so the bus
6526         daemon's chdir ("/") doesn't kill us dead.
6527
6528         * configure.in: subst ABSOLUTE_TOP_BUILDDIR
6529
6530 2004-04-12  Jon Trowbridge  <trow@ximian.com>
6531
6532         * bus/config-parser.c (struct BusConfigParser): Added
6533         included_files field.
6534         (seen_include): Added.  Checks whether or not a file has already
6535         been included by any parent BusConfigParser.
6536         (bus_config_parser_new): Copy the parent's included_files.
6537         (include_file): Track which files have been included, and fail on
6538         circular inclusions.
6539         (process_test_valid_subdir): Changed printf to report if we are
6540         testing valid or invalid conf files.
6541         (all_are_equiv): Changed printf to be a bit clearer about
6542         what we are actually doing.
6543         (bus_config_parser_test): Test invalid configuration files.
6544
6545 2004-04-09  Jon Trowbridge  <trow@ximian.com>
6546
6547         * bus/config-parser.c (bus_config_parser_new): Added a 'parent'
6548         argument.  If non-null, the newly-constructed BusConfigParser will
6549         be initialized with the parent's BusLimits instead of the default
6550         values.
6551         (include_file): When including a config file, pass in
6552         the current parser as the parent and then copy the BusLimits
6553         from the included BusConfigParser pack to the current parser.
6554         (process_test_valid_subdir): Renamed from process_test_subdir.
6555         (process_test_equiv_subdir): Added.  Walks through a directory,
6556         descending into each subdirectory and loading the config files
6557         it finds there.  If any subdirectory contains two config files
6558         that don't produce identical BusConfigParser structs, fail.
6559         For now, the BusConfigParser's BusPolicies are not compared.
6560         (bus_config_parser_test): Call both process_test_valid_subdir and
6561         process_test_equiv_subdir.
6562
6563         * bus/config-loader-libxml.c (bus_config_load): Take a parent
6564         argument and pass it along to the call to bus_config_parser_new.
6565         Also made a few small changes to allow this code to compile.
6566
6567         * bus/config-loader-expat.c (bus_config_load): Take a parent
6568         argument and pass it along to the call to bus_config_parser_new.
6569
6570         * bus/bus.c (bus_context_new): Load the config file
6571         with a NULL parent argument.
6572
6573 2004-03-29  Michael Meeks  <michael@ximian.com>
6574
6575         * glib/dbus-gobject.c (introspect_properties): split
6576         out, fix mangled 'while' flow control.
6577         (introspect_signals): implement.
6578         (handle_introspect): update.
6579
6580 2004-03-29  Michael Meeks  <michael@ximian.com>
6581
6582         * glib/dbus-gobject.c (set_object_property): split out / 
6583         re-work, use the property type, and not the message type(!)
6584         (get_object_property): ditto.
6585
6586         * glib/dbus-gvalue.c (dbus_gvalue_demarshal),
6587         (dbus_gvalue_marshal): make this code re-usable, needed
6588         for signals too, also on both proxy and server side.
6589         Re-write for more efficiency / readability.
6590
6591 2004-03-29  Michael Meeks  <michael@ximian.com>
6592
6593         * dbus/dbus-message.c
6594         (dbus_message_new_error_printf): impl.
6595
6596         * dbus/dbus-connection.c
6597         (dbus_connection_unregister_object_path): fix warning.
6598
6599         * configure.in: fix no-mono-installed situation.
6600
6601 2004-03-27  Havoc Pennington  <hp@redhat.com>
6602
6603         Patch from Timo Teräs:
6604         
6605         * tools/dbus-send.c (main): if --print-reply, assume type is
6606         method call; support boolean type args
6607         
6608         * dbus/dbus-connection.c (dbus_connection_send_with_reply): fix a
6609         bunch of memleak and logic bugs
6610         
6611 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
6612
6613         * mono/Arguments.cs:
6614         * mono/Introspector.cs:
6615         * mono/Handler.cs:
6616         * mono/InterfaceProxy.cs:
6617         * mono/Message.cs
6618         * mono/ProxyBuilder.cs:
6619         * mono/Service.cs:
6620         Added InterfaceProxy class to avoid building proxies for every
6621         object.
6622
6623         * dbus-message.h:
6624         * dbus-message.c (dbus_message_append_args_valist)
6625         (dbus_message_iter_get_object_path)
6626         (dbus_message_iter_get_object_path_array)
6627         (dbus_message_iter_append_object_path)
6628         (dbus_message_iter_append_object_path_array):
6629         Added object_path iter functions to handle OBJECT_PATH arguments
6630         
6631 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
6632
6633         First checkin of mono bindings.
6634         * configure.in:
6635         * Makefile.am:
6636         Build stuff for the bindings
6637         * dbus-sharp.pc.in: Added for pkgconfig
6638         
6639 2004-03-21  Havoc Pennington  <hp@redhat.com>
6640
6641         * test/test-service.c (main): remove debug spew
6642
6643 2004-03-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6644
6645         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): accept empty
6646         arrays
6647
6648         * dbus/dbus-message.h, bus/dbus-message.c (dbus_message_iter_init)
6649         (dbus_message_iter_init_array_iterator)
6650         (dbus_message_iter_init_dict_iterator): return a dbus_bool_t to
6651         indicate whether the iterator is empty
6652
6653         * dbus/dbus-pending-call.c, dbus/dbus-server.c: silence compiler
6654         warnings
6655
6656 2004-03-19  Havoc Pennington  <hp@redhat.com>
6657
6658         * NEWS: 0.21 updates
6659
6660         * configure.in: 0.21
6661
6662         * doc/Makefile.am: add all XMLTO usage to DBUS_XML_DOCS_ENABLED
6663         
6664         * python/Makefile.am: change to avoid dist of dbus_bindings.c so
6665         you don't need pyrex to make dist
6666
6667         * qt/Makefile.am (libdbus_qt_1_la_SOURCES): add integrator.h to
6668         sources; run moc
6669         
6670 2004-03-18  Richard Hult  <richard@imendio.com>
6671
6672         * dbus/dbus-message.c (dbus_message_get_auto_activation) 
6673         (dbus_message_set_auto_activation): Add doxygen docs.
6674
6675 2004-03-16  Richard Hult  <richard@imendio.com>
6676
6677         * bus/activation.c: (bus_activation_service_created),
6678         (bus_activation_send_pending_auto_activation_messages),
6679         (bus_activation_activate_service):
6680         * bus/activation.h:
6681         * bus/dispatch.c: (bus_dispatch),
6682         (check_nonexistent_service_auto_activation),
6683         (check_service_auto_activated),
6684         (check_segfault_service_auto_activation),
6685         (check_existent_service_auto_activation), (bus_dispatch_test):
6686         * bus/driver.c: (bus_driver_handle_activate_service):
6687         * bus/services.c: (bus_registry_acquire_service):
6688         * dbus/dbus-message.c: (dbus_message_set_auto_activation),
6689         (dbus_message_get_auto_activation):
6690         * dbus/dbus-message.h:
6691         * dbus/dbus-protocol.h: Implement auto-activation.
6692         
6693         * doc/dbus-specification.xml: Add auto-activation to the spec.
6694
6695 2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net>
6696
6697         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos):
6698         fix a bug with CUSTOM types.
6699
6700         * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add
6701         a unit test for this bug (used to fail).
6702
6703 2004-03-12  Mikael Hallendal  <micke@imendio.com>
6704
6705         * bus/activation.c:
6706         (babysitter_watch_callback): notify all pending activations waiting for
6707           the same exec that the activation failed.
6708         (bus_activation_activate_service): shortcut the activation if we 
6709           already waiting for the same executable to start up.
6710
6711 2004-03-12  Mikael Hallendal  <micke@imendio.com>
6712
6713         * bus/activation.c: 
6714         - Added service file reloading. 
6715           Each service files directory is kept in an hash table in 
6716           BusActivation and each BusActivationEntry knows what .service-file it
6717           was read from. So when you try to activate a service the bus will 
6718           check if it's been updated, removed or if new .service-files has 
6719           been installed.
6720         - Test code at the bottom for the service file reloading.
6721         * bus/test-main.c: (main):
6722         * bus/test.h:
6723         - added service reloading test.
6724         * dbus/dbus-sysdeps.c: 
6725         * dbus/dbus-sysdeps.h: (_dbus_delete_directory): Added.
6726
6727 2004-03-08  Michael Meeks  <michael@ximian.com>
6728
6729         * dbus/dbus-connection.c (_dbus_connection_block_for_reply): 
6730         bail immediately if disconnected, to avoid busy loop.
6731
6732         * dbus/dbus-message.c (dbus_message_iter_get_args_valist):
6733         cleanup cut/paste/inefficiency.
6734
6735 2004-03-01  David Zeuthen  <david@fubar.dk>
6736
6737         * dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
6738         bug where args were used twice. This bug resulted in a segfault
6739         on a Debian/PPC system when starting the messagebus daemon. Include
6740         dbus-sysdeps.h for DBUS_VA_COPY
6741
6742         * dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib
6743
6744         * configure.in: Check for va_copy; define DBUS_VA_COPY to the
6745         appropriate va_copy implementation. From GLib
6746         
6747 2004-02-24  Joe Shaw  <joe@ximian.com>
6748
6749         * bus/services.c (bus_registry_acquire_service): We need to pass
6750         in the service name to dbus_set_error() to prevent a crash.
6751
6752 2003-12-26  Anders Carlsson  <andersca@gnome.org>
6753
6754         * AUTHORS: Reveal my True identity.
6755
6756 2003-12-17  Mikael Hallendal  <micke@imendio.com>
6757
6758         * dbus/dbus-message.c: (dbus_message_append_args_valist): 
6759         - Added case for DBUS_TYPE_BYTE, patch from Johan Hedberg.
6760
6761 2003-12-13  Mikael Hallendal  <micke@imendio.com>
6762
6763         * doc/TODO: Added not about better error check of configuration files.
6764
6765 2003-12-02  Richard Hult  <richard@imendio.com>
6766
6767         * Update AFL version to 2.0 throughout the source files to reflect
6768         the update that was done a while ago.
6769
6770 2003-12-02  Richard Hult  <richard@imendio.com>
6771
6772         * dbus/dbus-message.c (dbus_message_iter_append_dict): Set
6773         wrote_dict_key to FALSE on the iter that the dict is appended to,
6774         just like when appending other types. Fixes a bug where a dict
6775         couldn't be put inside a dict.
6776         (dbus_message_iter_append_dict_key): Fix typo in warning message.
6777         (message_iter_test, _dbus_message_test): Add test case for dict
6778         inside dict.
6779
6780 2003-12-01  David Zeuthen  <david@fubar.dk>
6781
6782         * python/dbus.py: Add the actual message when calling the reciever
6783         of a signal such that parameters can be inspected. Add the method
6784         remove_signal_receiver
6785         
6786 2003-11-26  Mikael Hallendal  <micke@imendio.com>
6787
6788         * bus/*.[ch]:
6789         * dbus/*.[ch]:
6790         * glib/*.[ch]: Made ref functions return the pointer
6791
6792 2003-11-25  Zack Rusin  <zack@kde.org>
6793
6794         * qt/integrator.h, qt/integrator.cpp: Adding handling of DBusServer,
6795
6796         * qt/server.h, qt/server.cpp, qt/Makefile.am: Adding DBusServer 
6797         wrappers,
6798
6799         * qt/connection.h, qt/connection.cpp: Adjusting to changes in 
6800         the Integrator and to better fit with the server,
6801
6802 2003-11-24  Zack Rusin  <zack@kde.org>
6803
6804         * qt/connection.h, qt/connection.cpp: removing initDbus method since
6805         the integrator handles it now
6806
6807         * qt/integrator.h, qt/integrator.cpp: reworking handling of timeouts,
6808         since QTimer wasn't really meant to be used the way DBusTimeout is
6809
6810 2003-11-24  Zack Rusin  <zack@kde.org>
6811
6812         * qt/integrator.h, qt/integrator.cpp, Makefile.am: Adding 
6813         Integrator class which integrates D-BUS with the Qt event loop,
6814
6815         * qt/connection.h, qt/connection.cpp: Move all the code which
6816         was dealing with D-BUS integration to the Integrator class,
6817         and start using Integrator,
6818
6819 2003-11-23  Zack Rusin  <zack@kde.org>
6820
6821         * qt/connection.h, qt/connection.cpp: Adding the DBusConnection 
6822         wrapper
6823
6824         * qt/message.h, qt/message.cpp: updating to the current D-BUS api,
6825         switching namespaces to DBusQt, reworking the class,
6826
6827         * Makefile.cvs: switching dependencies so that it matches KDE 
6828         schematics,
6829         
6830         * qt/Makefile.am: adding connection.{h,cpp} and message.{h,cpp} to 
6831         the library
6832
6833 2003-11-19  Havoc Pennington  <hp@redhat.com>
6834
6835         * NEWS: update
6836
6837         * configure.in: bump version to 0.20
6838
6839         * configure.in (have_qt): add yet another place to look for qt
6840         (someone hand trolltech a .pc file...)
6841
6842 2003-11-01  Havoc Pennington  <hp@redhat.com>
6843
6844         * doc/dbus-specification.xml: add state machine docs on the auth
6845         protocol; just a first draft, I'm sure it's wrong.      
6846
6847 2003-10-28  David Zeuthen  <david@fubar.dk>
6848
6849         * python/dbus_bindings.pyx.in: add get_dict to handle dictionaries
6850         return types. Fixup TYPE_* to reflect changes in dbus/dbus-protocol.h
6851         
6852 2003-10-28  Havoc Pennington  <hp@redhat.com>
6853
6854         * dbus/dbus-message.c (get_next_field): delete unused function
6855
6856 2003-10-28  Havoc Pennington  <hp@redhat.com>
6857
6858         * bus/expirelist.c (do_expiration_with_current_time): detect
6859         failure of the expire_func due to OOM
6860
6861         * bus/connection.c (bus_pending_reply_expired): return FALSE on OOM
6862
6863         * bus/dispatch.c (check_send_exit_to_service): fix to handle the
6864         NoReply error that's now created by the bus when the service exits
6865
6866 2003-10-28  Havoc Pennington  <hp@redhat.com>
6867
6868         * dbus/dbus-message.c (_dbus_message_test): enable and fix the
6869         tests for set_path, set_interface, set_member, etc.
6870
6871         * dbus/dbus-string.c (_dbus_string_insert_bytes): allow 0 bytes
6872
6873         * dbus/dbus-message.c (set_string_field): always just delete and
6874         re-append the field; accept NULL for deletion
6875         (re_align_fields_recurse): reimplement
6876         
6877 2003-10-26  Havoc Pennington  <hp@redhat.com>
6878
6879         * dbus/dbus-connection.c: fix docs to properly describe the
6880         disconnected message
6881         (_dbus_connection_notify_disconnected): remove this function; 
6882         we can't synchronously add the disconnected message, we have to 
6883         do it after we've queued any remaining real messages
6884         (_dbus_connection_get_dispatch_status_unlocked): queue the
6885         disconnect message only if the transport has finished queueing all
6886         its real messages and is disconnected.
6887         (dbus_connection_disconnect): update the dispatch status here
6888
6889 2003-10-22  Havoc Pennington  <hp@redhat.com>
6890
6891         * bus/bus.c (bus_context_check_security_policy): fix up assertion
6892
6893         * bus/connection.c (bus_transaction_send_from_driver): set the
6894         destination to the connection's base service
6895
6896 2003-10-20  Havoc Pennington  <hp@redhat.com>
6897
6898         hmm, make check is currently not passing.
6899         
6900         * doc/dbus-specification.xml: add requirement that custom type
6901         names follow the same rules as interface names.
6902
6903         * dbus/dbus-protocol.h: change some of the byte codes, to avoid
6904         duplication and allow 'c' to be 'custom'; dict is now 'm' for
6905         'map'
6906
6907         * doc/dbus-specification.xml: update type codes to match
6908         dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
6909         CUSTOM. Add type OBJECT_PATH to the spec.
6910
6911 2003-10-17  Havoc Pennington  <hp@redhat.com>
6912
6913         * bus/driver.c (create_unique_client_name): use "." as separator
6914         in base service names instead of '-'
6915
6916         * dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
6917         byte at the end of the string
6918
6919         * dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
6920         optimization macros since string validation seems to be a slow
6921         point.
6922         
6923         * doc/dbus-specification.xml: restrict valid
6924         service/interface/member/error names. Add test suite code for the
6925         name validation.
6926
6927         * dbus/dbus-string.c: limit service/interface/member/error names 
6928         to [0-9][A-Z][a-z]_
6929
6930         * dbus/dbus-connection.c (dbus_connection_dispatch): add missing
6931         format arg to verbose spew
6932
6933         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
6934         memory, return instead of g_error
6935
6936         * test/test-service.c (path_message_func): support emitting a
6937         signal on request
6938
6939         * dbus/dbus-bus.c (init_connections_unlocked): only fill in
6940         activation bus type if DBUS_BUS_ACTIVATION was set; default to
6941         assuming the activation bus was the session bus so that services
6942         started manually will still register.
6943         (init_connections_unlocked): fix so that in OOM situation we get
6944         the same semantics when retrying the function
6945         
6946         * test/test-service.c (main): change to use path registration, to
6947         test those codepaths; register with DBUS_BUS_ACTIVATION rather
6948         than DBUS_BUS_SESSION
6949
6950 2003-10-16  Havoc Pennington  <hp@redhat.com>
6951
6952         * glib/dbus-gtest-main.c: bracket with #ifdef DBUS_BUILD_TESTS
6953
6954         * Makefile.am (GCOV_DIRS): remove "test", we don't care about test
6955         coverage of the tests
6956         (coverage-report.txt): don't move the .da and .bbg files around
6957
6958 2003-10-16  Havoc Pennington  <hp@redhat.com>
6959
6960         * bus/bus.c (struct BusContext): remove struct field I didn't mean
6961         to put there
6962
6963 2003-10-16  Havoc Pennington  <hp@redhat.com>
6964
6965         * bus/connection.c (bus_pending_reply_expired): either cancel or
6966         execute, not both
6967         (bus_connections_check_reply): use unlink, not remove_link, as we
6968         don't want to free the link; fixes double free mess
6969
6970         * dbus/dbus-pending-call.c (dbus_pending_call_block): fix in case
6971         where no reply was received
6972
6973         * dbus/dbus-connection.c (_dbus_pending_call_complete_and_unlock):
6974         fix a refcount leak
6975
6976         * bus/signals.c (match_rule_matches): add special cases for the
6977         bus driver, so you can match on sender/destination for it.
6978
6979         * dbus/dbus-sysdeps.c (_dbus_abort): print backtrace if
6980         DBUS_PRINT_BACKTRACE is set
6981
6982         * dbus/dbus-internals.c: add pid to assertion failure messages
6983
6984         * dbus/dbus-connection.c: add message type code to the debug spew
6985
6986         * glib/dbus-gproxy.c (gproxy_get_match_rule): match rules want
6987         sender=foo not service=foo
6988
6989         * dbus/dbus-bus.c (dbus_bus_get): if the activation bus is the
6990         session bus but DBUS_SESSION_BUS_ADDRESS isn't set, use 
6991         DBUS_ACTIVATION_ADDRESS instead
6992
6993         * bus/activation.c: set DBUS_SESSION_BUS_ADDRESS,
6994         DBUS_SYSTEM_BUS_ADDRESS if appropriate
6995
6996         * bus/bus.c (bus_context_new): handle OOM copying bus type into
6997         context struct
6998
6999         * dbus/dbus-message.c (dbus_message_iter_get_object_path): new function
7000         (dbus_message_iter_get_object_path_array): new function (half
7001         finished, disabled for the moment)
7002         
7003         * glib/dbus-gproxy.c (dbus_gproxy_end_call): properly handle
7004         DBUS_MESSAGE_TYPE_ERROR
7005
7006         * tools/dbus-launch.c (babysit): support DBUS_DEBUG_OUTPUT to
7007         avoid redirecting stderr to /dev/null
7008         (babysit): close stdin if not doing the "exit_with_session" thing
7009
7010         * dbus/dbus-sysdeps.c (_dbus_become_daemon): delete some leftover
7011         debug code; change DBUS_DEBUG_OUTPUT to only enable stderr, not
7012         stdout/stdin, so things don't get confused
7013         
7014         * bus/system.conf.in: fix to allow replies, I modified .conf
7015         instead of .conf.in again.
7016
7017 2003-10-14  David Zeuthen  <david@fubar.dk>
7018
7019         * python/dbus_bindings.pyx.in (MessageIter.get): fixed typo in
7020         argtype to arg_type when raising unknown arg type exception.
7021         Changed type list to reflect the changes in dbus-protocol.h so 
7022         the bindings actually work.
7023
7024 2003-10-14  Havoc Pennington  <hp@redhat.com>
7025
7026         * test/decode-gcov.c: support gcc 3.3 also, though gcc 3.3 seems
7027         to have a bug keeping it from outputting the .da files sometimes
7028         (string_get_string): don't append garbage nul bytes to the string.
7029
7030 2003-10-15  Seth Nickell  <seth@gnome.org>
7031
7032         * python/Makefile.am:
7033
7034         Include dbus_h_wrapper.h in the dist tarball.
7035
7036 2003-10-14  Havoc Pennington  <hp@redhat.com>
7037
7038         * bus/bus.c (bus_context_check_security_policy): revamp this to
7039         work more sanely with new policy-based requested reply setup
7040
7041         * bus/connection.c (bus_transaction_send_from_driver): set bus
7042         driver messages as no reply
7043
7044         * bus/policy.c (bus_client_policy_check_can_receive): handle a
7045         requested_reply attribute on allow/deny rules
7046
7047         * bus/system.conf: add <allow requested_reply="true"/>
7048
7049         * bus/driver.c (bus_driver_handle_message): fix check for replies
7050         sent to the bus driver, which was backward. How did this ever work
7051         at all though? I think I'm missing something.
7052
7053         * dbus/dbus-message.c (decode_header_data): require error and
7054         method return messages to have a reply serial field to be valid
7055         (_dbus_message_loader_queue_messages): break up this function;
7056         validate that reply serial and plain serial are nonzero; 
7057         clean up the OOM/error handling.
7058         (get_uint_field): don't return -1 from this
7059         (dbus_message_create_header): fix signed/unsigned bug
7060
7061         * bus/connection.c (bus_connections_expect_reply): save serial of
7062         the incoming message, not reply serial
7063
7064 2003-10-14  Havoc Pennington  <hp@redhat.com>
7065
7066         * bus/connection.c: implement pending reply tracking using
7067         BusExpireList
7068
7069         * bus/bus.c (bus_context_check_security_policy): verify that a
7070         reply is pending in order to allow a reply to be sent. Deny 
7071         messages of unknown type.
7072
7073         * bus/dbus-daemon-1.1.in: update to mention new resource limits
7074
7075         * bus/bus.c (bus_context_get_max_replies_per_connection): new
7076         (bus_context_get_reply_timeout): new
7077
7078 2003-10-13  Seth Nickell  <seth@gnome.org>
7079
7080         * python/Makefile.am:
7081
7082         Pass "make distcheck": remove a couple files from DIST_FILES
7083         that weren't included in the final version.
7084
7085 2003-10-12  Havoc Pennington  <hp@pobox.com>
7086
7087         Added test code that 1) starts an actual bus daemon and 2) uses
7088         DBusGProxy; fixed bugs that were revealed by the test. Lots 
7089         more testing possible, but this is the basic framework.
7090         
7091         * glib/dbus-gproxy.c (dbus_gproxy_manager_unregister): remove
7092         empty proxy lists from the proxy list hash
7093
7094         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): add a
7095         couple of return_if_fail checks
7096
7097         * dbus/dbus-pending-call.c (_dbus_pending_call_new): use dbus_new0
7098         to allocate, so everything is cleared to NULL as it should be.
7099
7100         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): pass
7101         source as data to dbus_connection_set_timeout_functions() as the 
7102         timeout functions expected
7103
7104         * test/glib/run-test.sh: add a little script to start up a message
7105         bus and run tests using it
7106
7107         * tools/dbus-launch.1: updates
7108
7109         * tools/dbus-launch.c (main): add --config-file option
7110
7111         * tools/dbus-launch.c (main): remove confusing else if (runprog)
7112         that could never be reached.
7113
7114         * dbus/dbus-message.c (dbus_message_new_method_return) 
7115         (dbus_message_new_error, dbus_message_new_signal): set the
7116         no-reply-expected flag on all these. Redundant, but may
7117         as well be consistent.
7118
7119 2003-10-11  Havoc Pennington  <hp@pobox.com>
7120
7121         * test/decode-gcov.c (function_solve_graph): make broken block
7122         graph a nonfatal error since it seems to be broken. Need to debug
7123         this.
7124
7125         * dbus/dbus-marshal.c (_dbus_type_is_valid): new function since we
7126         can't just check type > INVALID < LAST anymore
7127
7128         * dbus/dbus-message.c (dbus_message_get_signature): new function
7129         (dbus_message_has_signature): new function
7130         (struct DBusMessage): add signature field (right now it isn't sent
7131         over the wire, just generated on the fly)
7132         (dbus_message_copy): copy the signature, and init strings to
7133         proper length to avoid some reallocs
7134         (dbus_message_iter_init_array_iterator): return void, since it
7135         can't fail
7136         (dbus_message_iter_init_dict_iterator): return void since it can't fail
7137         (_dbus_message_loader_queue_messages): add silly temporary hack to
7138         fill in message->signature on load
7139
7140         * dbus/dbus-protocol.h: change DBUS_TYPE_* values to be ASCII
7141         characters, so they are relatively human-readable.
7142
7143 2003-10-11  Havoc Pennington  <hp@pobox.com>
7144
7145         * dbus/dbus-message.c (_dbus_message_test): add more test
7146         coverage, but #if 0 for now since they uncover a bug 
7147         not fixed yet; I think in re_align_field_recurse()
7148         (re_align_field_recurse): add FIXME about broken assertion
7149
7150         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage
7151
7152         * bus/connection.c: share a couple code bits with expirelist.c
7153
7154         * bus/expirelist.h, bus/expirelist.c: implement a generic
7155         expire-items-after-N-seconds facility, was going to share between
7156         expiring connections and replies, decided not to use for expiring
7157         connections for now.
7158
7159         * COPYING: include AFL 2.0 (still need to change all the file headers)
7160
7161 2003-10-09  Havoc Pennington  <hp@redhat.com>
7162
7163         * configure.in: define DBUS_HAVE_GCC33_GCOV if we have
7164         gcc 3.3. Not that we do anything about it yet.
7165
7166         * bus/signals.c (bus_match_rule_parse): impose max length on the
7167         match rule text
7168
7169         * dbus/dbus-protocol.h: add DBUS_MAXIMUM_MATCH_RULE_LENGTH
7170
7171 2003-10-09  Havoc Pennington  <hp@redhat.com>
7172
7173         Make matching rules theoretically work (add parser).
7174         
7175         * bus/bus.c (bus_context_check_security_policy): fix up to handle
7176         the case where destination is explicitly specified as bus driver
7177         and someone else is eavesdropping.
7178         
7179         * bus/policy.c (bus_client_policy_check_can_receive): fix up
7180         definition of eavesdropping and assertion
7181
7182         * tools/dbus-send.c (main): use dbus_message_type_from_string
7183
7184         * bus/signals.c (bus_match_rule_parse): implement
7185
7186         * dbus/dbus-message.c (dbus_message_type_from_string): new
7187
7188         * dbus/dbus-errors.h (DBUS_ERROR_MATCH_RULE_INVALID): add
7189
7190 2003-10-02  Havoc Pennington  <hp@pobox.com>
7191
7192         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): rename from
7193         dbus_gproxy_oneway_call
7194
7195         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main) 
7196         (dbus_server_setup_with_g_main): fix to allow calling them more
7197         than once on the same args
7198         (dbus_bus_get_with_g_main): new function
7199
7200 2003-10-02  Havoc Pennington  <hp@redhat.com>
7201
7202         * doc/dbus-tutorial.xml: write some stuff
7203
7204 2003-09-29  Havoc Pennington  <hp@pobox.com>
7205
7206         * configure.in: split checks for Doxygen from XML docs, check for
7207         xmlto
7208
7209         * doc/Makefile.am: XML-ify all the docs, and add a blank
7210         dbus-tutorial.xml
7211
7212 2003-09-29  Havoc Pennington  <hp@pobox.com>
7213
7214         * Merge dbus-object-names branch. To see the entire patch 
7215         do cvs diff -r DBUS_OBJECT_NAMES_BRANCHPOINT -r dbus-object-names,
7216         it's huuuuge though.
7217         To revert, I tagged DBUS_BEFORE_OBJECT_NAMES_MERGE.
7218         
7219 2003-09-28  Havoc Pennington  <hp@pobox.com>
7220
7221         * HACKING: update to reflect new server
7222
7223 2003-09-26  Seth Nickell  <seth@gnome.org>
7224
7225         * python/dbus.py:
7226         * python/examples/example-signals.py:
7227
7228         Start implementing some notions of signals. The API
7229         is really terrible, but they sort of work (with the
7230         exception of being able to filter by service, and to
7231         transmit signals *as* a particular service). Need to
7232         figure out how to make messages come from the service
7233         we registered :-(
7234         
7235         * python/dbus_bindings.pyx.in:
7236
7237         Removed duplicate message_handler callbacks.
7238         
7239 2003-09-25  Havoc Pennington  <hp@redhat.com>
7240
7241         * bus/session.conf.in: fix my mess
7242
7243 2003-09-25  Havoc Pennington  <hp@pobox.com>
7244
7245         * bus/session.conf.in: fix security policy, reported by Seth Nickell
7246
7247 2003-09-25  Seth Nickell  <seth@gnome.org>
7248
7249         * python/examples/example-service.py:
7250
7251         Johan notices complete wrong code in example-service, but
7252         completely wrong in a way that works exactly the same (!).
7253         Johan is confused, how could this possibly work? Example
7254         code fails to serve purpose of making things clear.
7255         Seth fixes.
7256
7257 2003-09-25  Mark McLoughlin  <mark@skynet.ie>
7258
7259         * doc/dbus-specification.sgml: don't require header fields
7260         to be 4-byte aligned and specify that fields should be
7261         distinguished from padding by the fact that zero is not
7262         a valid field name.
7263         
7264         * doc/TODO: remove re-alignment item and add item to doc
7265         the OBJECT_PATH type.
7266         
7267         * dbus/dbus-message.c:
7268         (HeaderField): rename the original member to value_offset
7269         and introduce a name_offset member to keep track of where
7270         the field actually begins.
7271         (adjust_field_offsets): remove.
7272         (append_int_field), (append_uint_field),
7273         (append_string_field): don't align the start of the header
7274         field to a 4-byte boundary.
7275         (get_next_field): impl finding the next marhsalled field
7276         after a given field.
7277         (re_align_field_recurse): impl re-aligning a number of
7278         already marshalled fields.
7279         (delete_field): impl deleting a field of any type and
7280         re-aligning any following fields.
7281         (delete_int_or_uint_field), (delete_string_field): remove.
7282         (set_int_field), (set_uint_field): no need to re-check
7283         that we have the correct type for the field.
7284         (set_string_field): ditto and impl re-aligning any
7285         following fields.
7286         (decode_header_data): update to take into account that
7287         the fields aren't 4-byte aligned any more and the new
7288         way to distinguish padding from header fields. Also,
7289         don't exit when there is too much header padding.
7290         (process_test_subdir): print the directory.
7291         (_dbus_message_test): add test to make sure a following
7292         field is re-aligned correctly after field deletion.
7293         
7294         * dbus/dbus-string.[ch]:
7295         (_dbus_string_insert_bytes): rename from insert_byte and
7296         allow the insert of multiple bytes.
7297         (_dbus_string_test): test inserting multiple bytes.
7298
7299         * dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
7300         warning note to docs about having to re-align any
7301         marshalled values following the string.
7302         
7303         * dbus/dbus-message-builder.c:
7304         (append_string_field), (_dbus_message_data_load):
7305         don't align the header field.
7306         
7307         * dbus/dbus-auth.c: (process_test_subdir): print the
7308         directory.
7309         
7310         * test/break-loader.c: (randomly_add_one_byte): upd. for
7311         insert_byte change.
7312         
7313         * test/data/invalid-messages/bad-header-field-alignment.message:
7314         new test case.
7315         
7316         * test/data/valid-messages/unknown-header-field.message: shove
7317         a dict in the unknown field.
7318
7319 2003-09-25  Seth Nickell  <seth@gnome.org>
7320
7321         * python/dbus.py:
7322         * python/dbus_bindings.pyx.in:
7323
7324         Handle return values.
7325         
7326         * python/examples/example-client.py:
7327         * python/examples/example-service.py:
7328
7329         Pass back return values from the service to the client.
7330         
7331 2003-09-24  Seth Nickell  <seth@gnome.org>
7332
7333         * python/dbus.py:
7334
7335         Connect Object methods (when you are sharing an object) up... pass
7336         in a list of methods to be shared. Sharing all the methods just
7337         worked out too weird. You can now create nice Services over the
7338         DBus in Python. :-)
7339         
7340         * python/dbus_bindings.pyx.in:
7341
7342         Keep references to user_data tuples passed into C functions so 
7343         Python doesn't garbage collect on us.
7344
7345         Implement MethodReturn and Error subclasses of Message for creating
7346         DBusMessage's of those types.
7347         
7348         * python/examples/example-client.py:
7349         * python/examples/example-service.py:
7350
7351         Simple example code showing both how create DBus services and objects,
7352         and how to use them.
7353
7354 2003-09-23  Havoc Pennington  <hp@pobox.com>
7355
7356         * glib/dbus-gproxy.c (dbus_gproxy_manager_filter): implement
7357
7358 2003-09-23  Havoc Pennington  <hp@redhat.com>
7359
7360         * glib/dbus-gproxy.c (dbus_gproxy_connect_signal): implement
7361         (dbus_gproxy_disconnect_signal): implement
7362         (dbus_gproxy_manager_remove_signal_match): implement
7363         (dbus_gproxy_manager_add_signal_match): implement
7364         (dbus_gproxy_oneway_call): implement
7365
7366 2003-09-23  Havoc Pennington  <hp@pobox.com>
7367
7368         * glib/dbus-gproxy.c (struct DBusGProxy): convert to a GObject
7369         subclass. This means dropping the transparent thread safety of the
7370         proxy; you now need a separate proxy per-thread, or your own
7371         locking on the proxy. Probably right anyway.
7372         (dbus_gproxy_ref, dbus_gproxy_unref): nuke, just use g_object_ref
7373
7374 2003-09-22  Havoc Pennington  <hp@redhat.com>
7375
7376         * glib/dbus-gproxy.c (dbus_gproxy_manager_get): implement
7377
7378 2003-09-21  Seth Nickell  <seth@gnome.org>
7379
7380         First checkin of the Python bindings.
7381         
7382         * python/.cvsignore:
7383         * python/Makefile.am:
7384         * python/dbus_bindings.pyx.in:
7385         * python/dbus_h_wrapper.h:
7386
7387         Pieces for Pyrex to operate on, building a dbus_bindings.so
7388         python module for low-level access to the DBus APIs.
7389         
7390         * python/dbus.py:
7391
7392         High-level Python module for accessing DBus objects.
7393
7394         * configure.in:
7395         * Makefile.am:
7396
7397         Build stuff for the python bindings.
7398
7399         * acinclude.m4:
7400
7401         Extra macro needed for finding the Python C header files.
7402
7403 2003-09-21  Havoc Pennington  <hp@pobox.com>
7404
7405         * glib/dbus-gproxy.c (dbus_gproxy_manager_new): start
7406         implementing the proxy manager, didn't get very far.
7407
7408         * dbus/dbus-bus.c (dbus_bus_add_match): new
7409         (dbus_bus_remove_match): new
7410
7411         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service): add a
7412         path_name argument; adjust the other not-yet-implemented 
7413         gproxy constructors to be what I think they should be.
7414
7415 2003-09-21  Havoc Pennington  <hp@pobox.com>
7416
7417         * dbus/dbus-bus.c (dbus_bus_get): set exit_on_disconnect to TRUE
7418         by default for message bus connections.
7419
7420         * dbus/dbus-connection.c (dbus_connection_dispatch): exit if
7421         exit_on_disconnect flag is set and we process the disconnected
7422         signal.
7423         (dbus_connection_set_exit_on_disconnect): new function
7424
7425 2003-09-21  Havoc Pennington  <hp@pobox.com>
7426
7427         Get matching rules mostly working in the bus; only actually
7428         parsing the rule text remains. However, the client side of
7429         "signal connections" hasn't been started, this patch is only the
7430         bus side.
7431         
7432         * dbus/dispatch.c: fix for the matching rules changes
7433         
7434         * bus/driver.c (bus_driver_handle_remove_match)
7435         (bus_driver_handle_add_match): send an ack reply from these
7436         method calls
7437
7438         * glib/dbus-gproxy.c (dbus_gproxy_begin_call): fix order of
7439         arguments, reported by Seth Nickell
7440
7441         * bus/config-parser.c (append_rule_from_element): support
7442         eavesdrop=true|false attribute on policies so match rules 
7443         can be prevented from snooping on the system bus.
7444
7445         * bus/dbus-daemon-1.1.in: consistently use terminology "sender"
7446         and "destination" in attribute names; fix some docs bugs; 
7447         add eavesdrop=true|false attribute
7448
7449         * bus/driver.c (bus_driver_handle_add_match)
7450         (bus_driver_handle_remove_match): handle AddMatch, RemoveMatch
7451         messages
7452
7453         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST): get
7454         rid of broadcast service concept, signals are just always broadcast
7455
7456         * bus/signals.c, bus/dispatch.c, bus/connection.c, bus/bus.c:
7457         mostly implement matching rules stuff (currently only exposed as signal
7458         connections)
7459
7460 2003-09-21  Mark McLoughlin  <mark@skynet.ie>
7461
7462         * doc/dbus-specification.sgml: Change the header field name
7463         to be an enum and update the rest of the spec to reference
7464         the fields using the conventinal name.
7465
7466         * dbus/dbus-protocol.h: update to reflect the spec.
7467
7468         * doc/TODO: add item to remove the 4 byte alignment requirement.
7469         
7470         * dbus/dbus-message.c: Remove the code to generalise the
7471         header/body length and serial number header fields as named
7472         header fields so we can reference field names using the 
7473         protocol values.
7474         (append_int_field), (append_uint_field), (append_string_field):
7475         Append the field name as a byte rather than four chars.
7476         (delete_int_or_uint_field), (delete_string_field): reflect the
7477         fact that the field name and typecode now occupy 4 bytes instead
7478         of 8.
7479         (decode_string_field), (decode_header_data): update to reflect
7480         protocol changes and move the field specific encoding from
7481         decode_string_field() back into decode_header_data().
7482         
7483         * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
7484         Add utility to aid debugging.
7485         
7486         * dbus/dbus-message-builder.c:
7487         (append_string_field), (_dbus_message_data_load): Update to
7488         reflect protocol changes; Change the FIELD_NAME directive
7489         to HEADER_FIELD and allow it to take the field's conventional
7490         name rather than the actual value.
7491         
7492         * test/data/*/*.message: Update to use HEADER_FIELD instead
7493         of FIELD_NAME; Always align the header on an 8 byte boundary
7494         *before* updating the header length.
7495
7496 2003-09-15  Havoc Pennington  <hp@pobox.com>
7497
7498         * dbus/dbus-pending-call.c: add the get/set object data
7499         boilerplate as for DBusConnection, etc. Use generic object data
7500         for the notify callback.
7501
7502         * glib/dbus-gparser.c (parse_node): parse child nodes
7503
7504         * tools/dbus-viewer.c: more hacking on the dbus-viewer
7505         
7506         * glib/dbus-gutils.c (_dbus_gutils_split_path): add a file to
7507         contain functions shared between the convenience lib and the
7508         installed lib
7509
7510         * glib/Makefile.am (libdbus_glib_1_la_LDFLAGS): add
7511         -export-symbols-regex to the GLib library
7512
7513         * dbus/dbus-object-tree.c (_dbus_object_tree_dispatch_and_unlock):
7514         fix the locking in here, and add a default handler for
7515         Introspect() that just returns sub-nodes.
7516
7517 2003-09-14  Havoc Pennington  <hp@pobox.com>
7518
7519         * glib/dbus-gthread.c (dbus_g_thread_init): rename to make g_foo
7520         rather than gfoo consistent
7521
7522         * glib/dbus-gproxy.h: delete for now, move contents to
7523         dbus-glib.h, because the include files don't work right since we
7524         aren't in the dbus/ subdir.
7525         
7526         * glib/dbus-gproxy.c (dbus_gproxy_send): finish implementing
7527         (dbus_gproxy_end_call): finish
7528         (dbus_gproxy_begin_call): finish
7529
7530         * glib/dbus-gmain.c (dbus_set_g_error): new
7531
7532         * glib/dbus-gobject.c (handle_introspect): include information
7533         about child nodes in the introspection
7534
7535         * dbus/dbus-connection.c (dbus_connection_list_registered): new
7536         function to help in implementation of introspection
7537
7538         * dbus/dbus-object-tree.c
7539         (_dbus_object_tree_list_registered_and_unlock): new function
7540
7541 2003-09-12  Havoc Pennington  <hp@pobox.com>
7542
7543         * glib/dbus-gidl.h: add common base class for all the foo_info
7544         types
7545
7546         * tools/dbus-viewer.c: add GTK-based introspection UI thingy
7547         similar to kdcop
7548
7549         * test/Makefile.am: try test srcdir -ef . in addition to test
7550         srcdir = ., one of them should work (yeah lame)
7551         
7552         * glib/Makefile.am: build the "idl" parser stuff as a convenience
7553         library
7554         
7555         * glib/dbus-gparser.h: make description_load routines return
7556         NodeInfo* not Parser*
7557
7558         * Makefile.am (SUBDIRS): build test dir after all library dirs
7559
7560         * configure.in: add GTK+ detection
7561
7562 2003-09-07  Havoc Pennington  <hp@pobox.com>
7563
7564         * Make Doxygen contented.
7565
7566 2003-09-07  Havoc Pennington  <hp@pobox.com>
7567
7568         * doc/dbus-specification.sgml: more updates
7569
7570 2003-09-06  Havoc Pennington  <hp@pobox.com>
7571
7572         * doc/dbus-specification.sgml: partial updates
7573
7574         * bus/dbus-daemon-1.1.in: fix the config file docs for the
7575         zillionth time; hopefully I edited the right file this time.
7576
7577         * bus/config-parser.c (append_rule_from_element): support
7578         send_type, send_path, receive_type, receive_path
7579
7580         * bus/policy.c: add message type and path to the list of things
7581         that can be "firewalled"
7582
7583 2003-09-06  Havoc Pennington  <hp@pobox.com>
7584
7585         * dbus/dbus-connection.c (dbus_connection_register_fallback): add this
7586         (dbus_connection_register_object_path): make this not handle
7587         messages to paths below the given path
7588
7589 2003-09-03  Havoc Pennington  <hp@pobox.com>
7590
7591         * test/glib/Makefile.am: add this with random glib-linked test
7592         programs
7593
7594         * glib/Makefile.am: remove the random test programs from here,
7595         leave only the unit tests
7596
7597         * glib/dbus-gobject.c (_dbus_gobject_test): add test for 
7598         uscore/javacaps conversion, and fix     
7599         (get_object_property, set_object_property): change to .NET
7600         convention for mapping props to methods, set_FooBar/get_FooBar, 
7601         since one language has such a convention we may as well copy it. 
7602         Plus real methods in either getFooBar or get_foo_bar style won't 
7603         collide with this convention.
7604
7605 2003-09-01  Havoc Pennington  <hp@pobox.com>
7606
7607         * glib/dbus-gparser.c: implement
7608
7609         * glib/dbus-gobject.c: start implementing skeletons support
7610
7611         * configure.in: when disabling checks/assert, also define
7612         G_DISABLE_ASSERT and G_DISABLE_CHECKS
7613
7614 2003-09-01  Havoc Pennington  <hp@pobox.com>
7615
7616         * glib/Makefile.am: rearrange a bunch of files and get "make
7617         check" framework set up
7618
7619 2003-08-31  Havoc Pennington  <hp@pobox.com>
7620
7621         * fix build with --disable-tests
7622
7623 2003-08-30  Havoc Pennington  <hp@pobox.com>
7624
7625         * dbus/dbus-connection.c: purge DBusMessageHandler
7626
7627         * dbus/dbus-message-handler.c: remove DBusMessageHandler, just 
7628         use callbacks everywhere
7629
7630 2003-08-30  Havoc Pennington  <hp@pobox.com>
7631
7632         * test/data/valid-config-files/system.d/test.conf: change to 
7633         root for the user so warnings don't get printed
7634
7635         * dbus/dbus-message.c: add dbus_message_get_path,
7636         dbus_message_set_path
7637         
7638         * dbus/dbus-object-tree.c (do_test_dispatch): add test of
7639         dispatching to a path
7640
7641         * dbus/dbus-string.c (_dbus_string_validate_path): add
7642
7643         * dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
7644         (_dbus_marshal_object_path): implement
7645
7646         * dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
7647         to contain the path to the target object
7648         (DBUS_HEADER_FIELD_SENDER_SERVICE): rename
7649         DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
7650
7651 2003-08-30  Havoc Pennington  <hp@pobox.com>
7652
7653         * dbus/dbus-object-tree.c: write tests and fix the discovered bugs
7654
7655 2003-08-29  Havoc Pennington  <hp@pobox.com>
7656
7657         * dbus/dbus-object-tree.c: modify to allow overlapping paths to be
7658         registered
7659         (struct DBusObjectSubtree): shrink this
7660         a lot, since we may have a lot of them
7661         (_dbus_object_tree_free_all_unlocked): implement
7662         (_dbus_object_tree_dispatch_and_unlock): implement
7663
7664 2003-08-29  Havoc Pennington  <hp@pobox.com>
7665
7666         * dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS
7667
7668 2003-08-28  Havoc Pennington  <hp@pobox.com>
7669
7670         purge DBusObjectID
7671         
7672         * dbus/dbus-connection.c: port to no ObjectID, create a
7673         DBusObjectTree, rename ObjectTree to ObjectPath in public API
7674
7675         * dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
7676         everything except UnregisterFunction and MessageFunction
7677         
7678         * dbus/dbus-marshal.c: port away from DBusObjectID, 
7679         add DBUS_TYPE_OBJECT_PATH
7680         
7681         * dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
7682         dbus/dbus-objectid.[hc]: remove these, we are moving to 
7683         path-based object IDs
7684
7685 2003-08-25  Havoc Pennington  <hp@pobox.com>
7686
7687         Just noticed that dbus_message_test is hosed, I wonder when I
7688         broke that. I thought make check was passing earlier...
7689         
7690         * dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
7691         container tree, will replace most of dbus-object-registry
7692
7693         * dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
7694         screwup
7695
7696 2003-08-19  Havoc Pennington  <hp@pobox.com>
7697
7698         * dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
7699         (dbus_message_is_error): fix this function
7700
7701         * bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
7702         match
7703
7704         * bus/policy.c (bus_client_policy_check_can_receive): fix code to
7705         reflect clarified man page
7706         (bus_client_policy_check_can_send): ditto
7707         
7708         * bus/session.conf.in: fixup
7709
7710         * bus/system.conf.in: fixup
7711
7712 2003-08-18  Havoc Pennington  <hp@redhat.com>
7713
7714         * dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix
7715
7716         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
7717         dumb bug created earlier (wrong order of args to
7718         decode_header_data())
7719         
7720         * tools/dbus-send.c: port
7721
7722         * tools/dbus-print-message.c (print_message): port
7723
7724         * test/data/*messages: port all messages over
7725         
7726         * dbus/dbus-message-builder.c: support including 
7727         message type
7728         
7729         * bus/driver.c: port over
7730         
7731         * bus/dispatch.c: port over to new stuff
7732
7733         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
7734         rename disconnect signal to "Disconnected"
7735
7736 2003-08-17  Havoc Pennington  <hp@pobox.com>
7737
7738         This doesn't compile yet, but syncing up so I can hack on it from
7739         work. What are branches for if not broken code? ;-)
7740         
7741         * dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
7742         DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
7743         DBUS_HEADER_FIELD_ERROR_NAME
7744         
7745         * dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
7746         for the interface+member pairs
7747         (string_hash): change to use g_str_hash algorithm
7748         (find_direct_function, find_string_function): refactor these to
7749         share most code.
7750         
7751         * dbus/dbus-message.c: port all of this over to support 
7752         interface/member fields instead of name field
7753
7754         * dbus/dbus-object-registry.c: port over
7755         
7756         * dbus/dbus-string.c (_dbus_string_validate_interface): rename
7757         from _dbus_string_validate_name
7758
7759         * bus/dbus-daemon-1.1: change file format for the 
7760         <deny>/<allow> stuff to match new message naming scheme
7761
7762         * bus/policy.c: port over
7763
7764         * bus/config-parser.c: parse new format
7765         
7766 2003-08-16  Havoc Pennington  <hp@pobox.com>
7767
7768         * dbus/dbus-object-registry.c (add_and_remove_objects): remove
7769         broken assertion
7770
7771         * glib/dbus-gproxy.c: some hacking
7772
7773 2003-08-15  Havoc Pennington  <hp@redhat.com>
7774
7775         * dbus/dbus-pending-call.c (dbus_pending_call_block): implement
7776
7777         * dbus/dbus-connection.c
7778         (dbus_connection_send_with_reply_and_block): factor out internals;
7779         change to convert any error replies to DBusError instead of 
7780         returning them as a message
7781
7782 2003-08-15  Havoc Pennington  <hp@pobox.com>
7783
7784         * dbus/dbus-connection.c, 
7785         dbus/dbus-pending-call.c: Finish the pending call stuff
7786
7787 2003-08-14  Havoc Pennington  <hp@redhat.com>
7788
7789         * dbus/dbus-pending-call.c: start on new object that will replace
7790         DBusMessageHandler and ReplyHandlerData for tracking outstanding
7791         replies
7792
7793         * dbus/dbus-gproxy.c: start on proxy object used to communicate
7794         with remote interfaces
7795
7796         * dbus/dbus-gidl.c: do the boring boilerplate in here
7797         
7798 2003-08-12  Havoc Pennington  <hp@pobox.com>
7799
7800         * bus/dispatch.c (bus_dispatch): make this return proper 
7801         DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD
7802
7803         * dbus/dbus-errors.c (dbus_set_error): use
7804         _dbus_string_append_printf_valist
7805
7806         * dbus/dbus-string.c (_dbus_string_append_printf_valist)
7807         (_dbus_string_append_printf): new
7808
7809         * dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
7810         UNKNOWN_METHOD
7811
7812         * dbus/dbus-connection.c (dbus_connection_dispatch): handle
7813         DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
7814         message is unhandled.
7815
7816 2003-08-11  Havoc Pennington  <hp@pobox.com>
7817
7818         * bus/test.c (client_disconnect_handler): change to return
7819         HANDLED (would have been REMOVE_MESSAGE)
7820
7821         * dbus/dbus-object.h (enum DBusHandlerResult): rename to
7822         HANDLED/NOT_YET_HANDLED instead of
7823         REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
7824         should be used.
7825
7826 2003-08-10  Havoc Pennington  <hp@pobox.com>
7827
7828         * tools/dbus-send.c (main): add --type argument, for now
7829         supporting only method_call and signal types.
7830
7831         * tools/dbus-print-message.c: print message type
7832
7833         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
7834         init connection->objects
7835
7836         * doc/dbus-specification.sgml: fix sgml
7837
7838         * bus/*.c: port over to object-instance API changes
7839
7840         * test/test-service.c: ditto
7841         
7842         * dbus/dbus-message.c (dbus_message_create_header): allow #NULL
7843         name, we will have to fix up the rest of the code to also handle
7844         this
7845         (dbus_message_new): generic message-creation call
7846         (set_string_field): allow appending name field
7847
7848 2003-08-06  Havoc Pennington  <hp@pobox.com>
7849
7850         * dbus/dbus-object-registry.c: implement signal connection 
7851         and dispatch
7852
7853         * dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new
7854
7855         * dbus/dbus-internals.c (_dbus_memdup): new function
7856
7857 2003-08-02  Havoc Pennington  <hp@pobox.com>
7858
7859         * dbus/dbus-message.c (dbus_message_get_no_reply)
7860         (dbus_message_set_no_reply): add these and remove
7861         set_is_error/get_is_error
7862
7863         * dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
7864         remove the ERROR flag, since there's now an ERROR type
7865
7866 2003-08-01  Havoc Pennington  <hp@pobox.com>
7867
7868         * dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
7869         implement
7870
7871         * dbus/dbus-message.c (dbus_message_get_type): new function
7872
7873         * doc/dbus-specification.sgml: add "type" byte to messages
7874
7875 2003-08-01  Havoc Pennington  <hp@pobox.com>
7876
7877         * dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
7878         a message type enum to distinguish kinds of message
7879         (DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
7880         that need not be replied to
7881
7882 2003-08-01  Havoc Pennington  <hp@pobox.com>
7883
7884         * dbus/dbus-marshal.c: adapt to DBusObjectID changes
7885         (unpack_8_octets): fix no-64-bit-int bug
7886
7887         * dbus/dbus-object-registry.c (validate_id): validate the 
7888         connection ID bits, not just the instance ID.
7889
7890         * dbus/dbus-connection.c (_dbus_connection_init_id): initialize
7891         the connection-global 33 bits of the object ID
7892
7893         * dbus/dbus-object-registry.c (info_from_entry): fill in 
7894         object ID in the new way
7895
7896         * dbus/dbus-objectid.h: rather than high/low bits, specifically 
7897         define server/client/instance bits.
7898
7899 2003-07-30  Havoc Pennington  <hp@pobox.com>
7900
7901         * dbus/dbus-connection.c (dbus_connection_register_object): fix
7902         build
7903
7904 2003-07-13  Havoc Pennington  <hp@pobox.com>
7905
7906         * dbus/dbus-object.h (struct DBusObjectVTable): add padding
7907         fields to DBusObjectVTable and DBusObjectInfo
7908
7909 2003-07-12  Havoc Pennington  <hp@pobox.com>
7910
7911         * dbus/dbus-object-registry.c: implement unit test,
7912         fix bugs discovered in process
7913
7914         * dbus/dbus-connection.c: remove handler_table and
7915         register_handler(), add DBusObjectRegistry usage
7916
7917         * dbus/dbus-objectid.c (dbus_object_id_is_null)
7918         (dbus_object_id_set_null): new functions
7919
7920 2003-07-08  Havoc Pennington  <hp@pobox.com>
7921
7922         * dbus/dbus-object.c: implement some of this
7923
7924         * dbus/dbus-object-registry.c
7925         (_dbus_object_registry_add_and_unlock): fill in the object_id out
7926         param
7927         (_dbus_object_registry_new): handle OOM
7928
7929 2003-07-08  Havoc Pennington  <hp@pobox.com>
7930
7931         * dbus/dbus-object.h: sketch out an API for registering objects
7932         with a connection, that allows us to use as little as 24 bytes
7933         per object and lets application code represent an object in 
7934         any conceivable way.
7935
7936         * dbus/dbus-object-registry.c: implement the hard bits of the
7937         DBusConnection aspect of object API. Not yet wired up.
7938         
7939 2003-07-06  Havoc Pennington  <hp@pobox.com>
7940
7941         * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function
7942         (_dbus_marshal_object_id): new
7943         (_dbus_demarshal_object_id): new
7944         (_dbus_marshal_get_arg_end_pos): support object ID type, and
7945         consolidate identical switch cases. Don't conditionalize handling
7946         of DBUS_TYPE_UINT64, need to handle the type always.
7947         (_dbus_marshal_validate_arg): consolidate identical cases, and
7948         handle DBUS_TYPE_OBJECT_ID
7949
7950         * dbus/dbus-objectid.c: new file with DBusObjectID data type.
7951
7952         * dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID
7953
7954 2003-09-28  Havoc Pennington  <hp@pobox.com>
7955
7956         * real 0.13 release
7957
7958 2003-09-28  Havoc Pennington  <hp@pobox.com>
7959
7960         * doc/Makefile.am (dbus-specification.html): testing a funky hack
7961         to work with Debian db2html
7962
7963 2003-09-28  Havoc Pennington  <hp@pobox.com>
7964
7965         * configure.in: 0.13
7966
7967         * doc/Makefile.am (dbus-test-plan.html): accept nonexistence of
7968         stylesheet-images for benefit of Debian
7969         
7970         Change back to using filesystem-linked sockets for the system
7971         bus, so only root can create the default system bus address.
7972         
7973         * bus/system.conf.in: change to use
7974         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
7975
7976         * dbus/Makefile.am (INCLUDES): remove DBUS_SYSTEM_BUS_PATH define
7977         from here.
7978
7979         * configure.in: define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
7980         here, and AC_DEFINE DBUS_SYSTEM_PATH
7981
7982 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
7983
7984         * doc/TODO:
7985         * doc/busconfig.dtd:
7986         Add busconfig DTD.
7987         
7988 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
7989
7990         * doc/dbus-specification.sgml:
7991         Add activation reply values.
7992         
7993 2003-08-05  Havoc Pennington  <hp@redhat.com>
7994
7995         * configure.in: 0.12
7996
7997 2003-08-05  Anders Carlsson  <andersca@codefactory.se>
7998
7999         * glib/dbus-gmain.c: (watch_fd_new), (watch_fd_ref),
8000         (watch_fd_unref), (dbus_gsource_check), (dbus_gsource_dispatch),
8001         (add_watch), (remove_watch), (create_source):
8002         Refcount fds, fixes some reentrancy issues.
8003         
8004 2003-07-30  Havoc Pennington  <hp@redhat.com>
8005
8006         * dbus/dbus-bus.c (init_connections_unlocked): fix default system
8007         bus address to be abstract if we have abstract sockets
8008
8009         * NEWS: update
8010
8011 2003-07-28  Havoc Pennington  <hp@redhat.com>
8012
8013         * bus/messagebus.in: fix to avoid processname/servicename 
8014         confusion, from Michael Kearey
8015         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100965
8016         
8017 2003-07-23  Havoc Pennington  <hp@pobox.com>
8018
8019         * dbus/dbus-message.c (dbus_message_iter_get_named): 
8020         fix from Andy Hanton to remove broken "+1"
8021
8022 2003-07-16  Havoc Pennington  <hp@pobox.com>
8023
8024         * tools/dbus-launch.c (babysit): close stdout/stderr in the
8025         babysitter process, as suggested by Thomas Leonard, so 
8026         an "eval `dbus-launch --exit-with-session`" will actually 
8027         return
8028
8029 2003-07-16  Havoc Pennington  <hp@pobox.com>
8030
8031         * configure.in: print out EXPANDED_* variables in the summary at
8032         the end; clean up the code that computes EXPANDED_ variables and
8033         get the ones using exec_prefix right. Should make things work
8034         when you build without --prefix
8035
8036 2003-06-29  Havoc Pennington  <hp@pobox.com>
8037
8038         * mono/Test.cs (class Test): fire up a main loop and run it
8039
8040         * mono/DBus.cs (DBus): don't g_thread_init since it can only be
8041         done once, the app has to do it
8042
8043 2003-06-26  Havoc Pennington  <hp@pobox.com>
8044
8045         * mono/Connection.cs: set up connection with the glib main loop
8046
8047 2003-07-01  Havoc Pennington  <hp@redhat.com>
8048
8049         * doc/dbus-specification.sgml: clarify the format of a type code,
8050         change suggested by Jim Blandy
8051
8052 2003-06-29  Miloslav Trmac  <mitr@volny.cz>
8053
8054         * doc/Makefile.am:
8055         * tools/Makefile.am: Don't assume srcdir == builddir.
8056
8057         * dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
8058         the allocated block.
8059         (_dbus_memory_test): New function.
8060         * dbus/dbus-test.h: Add _dbus_memory_test ().
8061         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.
8062
8063         * dbus/dbus-message.c (decode_header_data): Use %.4s instead
8064         of %c%c%c%c.
8065         (dbus_message_new): Remove obsolete @todo.
8066
8067         * dbus/dbus-marshal.c (_dbus_marshal_set_int64)
8068         (_dbus_marshal_set_uint64): Fix comment.
8069
8070         * dbus/dbus-message.c (append_int_field, append_uint_field): Don't
8071         hardcode FIELD_REPLY_SERIAL.
8072
8073         * dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
8074         (_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p
8075
8076         * configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
8077         and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used
8078
8079 2003-06-24  Havoc Pennington  <hp@pobox.com>
8080
8081         * mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)
8082
8083 2003-06-23  Anders Carlsson  <andersca@codefactory.se>
8084
8085         * configure.in:
8086         * gcj/.cvsignore:
8087         * gcj/Hello.java:
8088         * gcj/Makefile.am:
8089         * gcj/TestMessage.java: (TestMessage), (TestMessage.main):
8090         * gcj/org/.cvsignore:
8091         * gcj/org/Makefile.am:
8092         * gcj/org/freedesktop/.cvsignore:
8093         * gcj/org/freedesktop/Makefile.am:
8094         * gcj/org/freedesktop/dbus/.cvsignore:
8095         * gcj/org/freedesktop/dbus/Makefile.am:
8096         * gcj/org/freedesktop/dbus/Message.java: (Message),
8097         (Message.Message):
8098         * gcj/org/freedesktop/dbus/natMessage.cc:
8099         Fix the build system.
8100
8101 2003-06-22  Havoc Pennington  <hp@pobox.com>
8102
8103         * mono/Connection.cs: add more bindings
8104
8105         * dbus/dbus-threads.c (dbus_threads_init): allow calling this
8106         more than once.
8107
8108 2003-06-22  Havoc Pennington  <hp@pobox.com>
8109
8110         * mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
8111         Start wrapping more stuff.
8112
8113 2003-06-22  Havoc Pennington  <hp@pobox.com>
8114
8115         * mono/Message.cs: implement Message.Wrap() that ensures we only
8116         have a single C# wrapper per DBusMessage, assuming it works which
8117         it probably doesn't.
8118
8119         * dbus/dbus-message.c (dbus_message_allocate_data_slot): new
8120         (dbus_message_free_data_slot): new
8121         (dbus_message_set_data): new
8122         (dbus_message_get_data): new
8123
8124 2003-06-22  Havoc Pennington  <hp@pobox.com>
8125
8126         * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
8127         (_dbus_data_slot_allocator_alloc): rework these to keep a
8128         reference count on each slot and automatically manage a global
8129         slot ID variable passed in by address
8130
8131         * bus/bus.c: convert to new dataslot API
8132
8133         * dbus/dbus-bus.c: convert to new dataslot API
8134
8135         * dbus/dbus-connection.c: convert to new dataslot API
8136
8137         * dbus/dbus-server.c: convert to new dataslot API
8138
8139         * glib/dbus-gmain.c: ditto
8140
8141         * bus/test.c: ditto
8142
8143         * bus/connection.c: ditto
8144
8145 2003-06-22  Anders Carlsson  <andersca@codefactory.se>
8146
8147         * configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
8148         after the gcj checks so that the correct configuration tags
8149         will be added to libtool.
8150
8151         * dbus-glib-1.pc.in: No need to specify any includes since
8152         dbus-1.pc.in has those.
8153
8154 2003-06-22  Havoc Pennington  <hp@pobox.com>
8155
8156         * mono/*, gcj/*, configure.in, Makefile.am:
8157         Check in makefiles and subdirs for mono and gcj bindings.
8158         Neither binding actually exists, just trying to get through
8159         all the build and other boring bits.
8160
8161 2003-06-21  Philip Blundell  <philb@gnu.org>
8162
8163         * tools/dbus-monitor.1: Updated.
8164
8165         * tools/dbus-send.1: Likewise.
8166
8167 2003-06-20  Anders Carlsson  <andersca@codefactory.se>
8168
8169         * dbus/dbus-transport-unix.c (unix_handle_watch): Check
8170         for hangup and error after checking read so we won't discard
8171         pending data if both hangup and read are set.
8172
8173 2003-06-19  Philip Blundell  <philb@gnu.org>
8174
8175         * tools/dbus-print-message.c (print_message): Handle BOOLEAN.
8176
8177         * tools/dbus-send.c: Accept both --system and --session.
8178
8179         * tools/dbus-monitor.c: Same here.
8180
8181 2003-06-19  Anders Carlsson  <andersca@codefactory.se>
8182
8183         * glib/dbus-glib.h: Fix so that dbus-glib.h can be used
8184         from C++ (Patch by Miloslav Trmac).
8185
8186 2003-06-15  Joe Shaw  <joe@assbarn.com>
8187
8188         * configure.in: Check for socklen_t.
8189
8190         * dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.
8191
8192         * test/test-segfault.c: Add #include <sys/time.h>
8193
8194         * tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
8195         dbus-launch needs it.
8196
8197 2003-06-09  Havoc Pennington  <hp@redhat.com>
8198
8199         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
8200         SUN_LEN, it breaks abstract socket usage
8201
8202         * dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
8203         starts of lines.
8204
8205 2003-06-04  Havoc Pennington  <hp@pobox.com>
8206
8207         * dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
8208         using unix:abstract=/foo, and when listening in a tmpdir
8209         i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.
8210
8211         * dbus/dbus-transport.c (_dbus_transport_open): support
8212         unix:abstract=/foo
8213
8214         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
8215         support abstract sockets
8216
8217         * dbus/dbus-transport-unix.c
8218         (_dbus_transport_new_for_domain_socket): support abstract sockets
8219
8220         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
8221         toggle as an argument, implement abstract namespace support
8222         (_dbus_listen_unix_socket): ditto
8223
8224         * configure.in: add --enable-abstract-sockets and implement
8225         a configure check for autodetection of the right value.
8226
8227 2003-06-01  Havoc Pennington  <hp@pobox.com>
8228
8229         * tools/dbus-cleanup-sockets.c: add utility to clean up sockets
8230         in /tmp (though on Linux this will end up being useless,
8231         when we add abstract namespace support)
8232
8233         * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to
8234         subst'ing it
8235
8236 2003-05-28  Colin Walters  <walters@verbum.org>
8237
8238         * tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).
8239
8240 2003-05-18  Anders Carlsson  <andersca@codefactory.se>
8241
8242         * dbus/dbus-message.c (dbus_message_new): Remove @todo.
8243
8244 2003-05-17  Colin Walters  <walters@gnu.org>
8245
8246         * tools/dbus-send.c: Don't exit with an error code if --help was
8247         passed.  Default to using the session bus instead of the system
8248         one.
8249
8250         * tools/dbus-launch.c: Ditto.
8251
8252         * tools/dbus-monitor.c: Ditto.
8253
8254         * tools/dbus-send.1: Update with new arguments.
8255
8256         * tools/dbus-launch.c: Emit code to export variables.  New
8257         arguments -s and -c to specify shell syntax, and a bit of code to
8258         autodetect syntax.  Also, allow specifying a program to run.
8259
8260         * tools/dbus-launch.1: Update with new arguments.
8261
8262         * tools/dbus-send.1: Ditto.
8263
8264         * tools/dbus-monitor.1: Ditto.
8265
8266 2003-05-17  Havoc Pennington  <hp@pobox.com>
8267
8268         * bus/config-parser.c (merge_included): merge in policies from
8269         child configuration file.
8270
8271         * bus/policy.c (bus_policy_merge): function to merge two policies
8272         together
8273
8274 2003-05-16  Havoc Pennington  <hp@redhat.com>
8275
8276         * dbus/dbus-connection.c: disable verbose lock spew
8277
8278         * tools/dbus-send.c: add --print-reply command line option
8279
8280         * tools/dbus-print-message.h (print_message): new util function
8281         shared by dbus-send and dbus-monitor
8282
8283         * tools/dbus-monitor.c (handler_func): exit on disconnect
8284
8285         * dbus/dbus-transport-unix.c (do_reading): if the transport is
8286         disconnected, don't try to use the read_watch
8287
8288         * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
8289         so we can find this bug more easily
8290
8291 2003-05-16  Havoc Pennington  <hp@redhat.com>
8292
8293         * bus/policy.c (free_rule_list_func): avoid a crash when passed
8294         NULL as DBusHashTable is annoyingly likely to do.
8295
8296 2003-05-16  Colin Walters  <walters@verbum.org>
8297
8298         * tools/dbus-monitor.c: Add --session argument and usage()
8299         function.
8300
8301         * tools/dbus-monitor.1: Update with new --session arg.
8302
8303         * bus/Makefile.am (install-data-hook): Create
8304         $(libdir)/dbus-1.0/services so that the session bus is happy.
8305
8306 2003-05-15  Havoc Pennington  <hp@redhat.com>
8307
8308         * dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
8309         on non-x86. ifdef's are evil.
8310
8311 2003-05-15  Havoc Pennington  <hp@redhat.com>
8312
8313         * configure.in: 0.11
8314
8315         * NEWS: update
8316
8317         * bus/Makefile.am (initddir): apparently we are supposed to put
8318         init scripts in /etc/rc.d/init.d not /etc/init.d
8319
8320         * bus/Makefile.am: remove the "you must --enable-tests to make
8321         check" as it broke distcheck
8322
8323         * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d
8324
8325 2003-05-13  James Willcox  <jwillcox@gnome.org>
8326
8327         * configure.in:
8328         * bus/activation.c: (bus_activation_service_created),
8329         (bus_activation_activate_service):
8330         * bus/driver.c: (bus_driver_send_service_deleted),
8331         (bus_driver_send_service_created), (bus_driver_send_service_lost),
8332         (bus_driver_send_service_acquired),
8333         (bus_driver_send_welcome_message),
8334         (bus_driver_handle_list_services):
8335         * bus/session.conf.in:
8336         * dbus/dbus-bus.c: (dbus_bus_acquire_service),
8337         (dbus_bus_service_exists), (dbus_bus_activate_service):
8338         * dbus/dbus-bus.h:
8339
8340         Add some convenience API which lets you activate a service, and did a
8341         bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
8342         and dbus_message_get_args()
8343
8344 2003-05-11  Havoc Pennington  <hp@pobox.com>
8345
8346         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid
8347         calling _dbus_marshal_validate_arg() for every byte in a byte
8348         array, etc.
8349
8350         * dbus/dbus-message-handler.c: use atomic reference counting to
8351         reduce number of locks slightly; the global lock in here sucks
8352
8353         * dbus/dbus-connection.c
8354         (_dbus_connection_update_dispatch_status_and_unlock): variant of
8355         update_dispatch_status that can be called with lock held; then use
8356         in a couple places to reduce locking/unlocking
8357         (dbus_connection_send): hold the lock over the whole function
8358         instead of acquiring it twice.
8359
8360         * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM
8361
8362         * bus/connection.c (bus_connections_setup_connection): fix access
8363         to already-freed memory.
8364
8365         * dbus/dbus-connection.c: keep a little cache of linked list
8366         nodes, to avoid using the global linked list alloc lock in the
8367         normal send-message case. Instead we just use the connection lock
8368         that we already have to take.
8369
8370         * dbus/dbus-list.c (_dbus_list_find_last): new function
8371
8372         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec):
8373         change to use a struct for the atomic type; fix docs,
8374         they return value before increment, not after increment.
8375
8376         * dbus/dbus-string.c (_dbus_string_append_4_aligned)
8377         (_dbus_string_append_8_aligned): new functions to try to
8378         microoptimize this operation.
8379         (reallocate_for_length): break this out of set_length(), to
8380         improve profile info, and also so we can consider inlining the
8381         set_length() part.
8382
8383         * dbus/dbus-message.c (dbus_message_new_empty_header): init data
8384         strings with some preallocation, cuts down on our calls to realloc
8385         a fair bit. Though if we can get the "move entire string to empty
8386         string" optimization below to kick in here, it would be better.
8387
8388         * dbus/dbus-string.c (_dbus_string_move): just call
8389         _dbus_string_move_len
8390         (_dbus_string_move_len): add a special case for moving
8391         an entire string into an empty string; we can just
8392         swap the string data instead of doing any reallocs.
8393         (_dbus_string_init_preallocated): new function
8394
8395 2003-05-11  Havoc Pennington  <hp@pobox.com>
8396
8397         Write a "test-profile" that does echo client-server with threads;
8398         profile reveals lock contention, memcpy/realloc of buffers, and
8399         UTF-8 validation as hot spots. 20% of lock contention eliminated
8400         with dbus_atomic_inc/dec implementation on x86.  Much remaining
8401         contention is global mempool locks for GList and DBusList.
8402
8403         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add
8404         x86 implementation
8405
8406         * dbus/dbus-connection.c (struct DBusConnection): use
8407         dbus_atomic_t for the reference count
8408
8409         * dbus/dbus-message.c (struct DBusMessage): declare
8410         dbus_atomic_t values as volatile
8411
8412         * configure.in: code to detect ability to use atomic integer
8413         operations in assembly, from GLib patch
8414
8415         * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every
8416         time, tired of it being wrong in threads and forked processes
8417
8418         * glib/test-profile.c: a little program to bounce messages back
8419         and forth between threads and eat CPU
8420
8421         * dbus/dbus-connection.c: add debug spew macros for debugging
8422         thread locks; include config.h at top; fix deadlock in
8423         dbus_connection_flush()
8424
8425 2003-05-08  Havoc Pennington  <hp@pobox.com>
8426
8427         * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
8428         data from getting written, and there wasn't a good reason to
8429         use _exit really.
8430
8431         * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
8432         dbus_verbose lines in test coverage
8433         (main): add list of functions sorted by # of untested blocks
8434         to the coverage report
8435
8436         * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS
8437
8438         * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage
8439
8440         * dbus/dbus-message-handler.c (_dbus_message_handler_test):
8441         extend test coverage
8442
8443         * test/data/auth/cancel.auth-script: test canceling an
8444         authentication
8445
8446         * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
8447         aren't used. in CVS history if we end up needing them.
8448
8449 2003-05-04  Havoc Pennington  <hp@pobox.com>
8450
8451         * dbus/dbus-message-handler.c (_dbus_message_handler_test): add
8452         unit test
8453
8454         * dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
8455         function, which assumed length was in # of strings, not bytes
8456
8457         * dbus/dbus-message.c (_dbus_message_test): add tests for some
8458         missing coverage
8459
8460         * dbus/dbus-connection.c
8461         (_dbus_connection_queue_received_message): disable function for
8462         now, we are only using it in test mode
8463
8464         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
8465         remove a mistaken FIXME
8466
8467 2003-05-04  Havoc Pennington  <hp@pobox.com>
8468
8469         * dbus/dbus-connection.c (dbus_connection_preallocate_send):
8470         unlock mutex on successful return, patch from Anders Gustafsson
8471
8472 2003-05-04  Havoc Pennington  <hp@pobox.com>
8473
8474         * dbus-glib-1.pc.in (Requires): fix dependencies, from
8475         Anders Gustafsson
8476
8477 2003-05-04  Havoc Pennington  <hp@pobox.com>
8478
8479         * tools/dbus-launch.c: implement
8480
8481         * bus/main.c (main), bus/bus.c (bus_context_new):
8482         implement --print-pid and --fork
8483
8484 2003-05-03  Havoc Pennington  <hp@redhat.com>
8485
8486         * dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
8487         the address had no value, and add to test suite. Fix and
8488         regression test from Miloslav Trmac
8489
8490 2003-05-03  Havoc Pennington  <hp@pobox.com>
8491
8492         * dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
8493         watch is invalid when handled
8494
8495         * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add
8496         dbus-launch utility to launch the bus from a shell script.  Didn't
8497         actually implement dbus-launch yet, it's just a placeholder still.
8498
8499 2003-05-03  Havoc Pennington  <hp@pobox.com>
8500
8501         * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
8502         daemon; also documents daemon config file, so replaces
8503         doc/config-file.txt. Corrected some stuff from config-file.txt in
8504         the process of moving it.
8505
8506 2003-05-03  Havoc Pennington  <hp@pobox.com>
8507
8508         * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
8509         add some man pages
8510
8511 2003-05-03  Colin Walters  <walters@verbum.org>
8512
8513         * dbus/dbus-sysdeps.c (fill_user_info): Test against
8514         DBUS_UID_UNSET to determine whether to do a uid lookup or not.
8515
8516         * Makefile.am: Update to use new .pc versioning scheme.
8517
8518 2003-05-02  Havoc Pennington  <hp@redhat.com>
8519
8520         * bus/system.conf.in: allow send/receive to/from message bus
8521         service
8522
8523 2003-04-30  Havoc Pennington  <hp@redhat.com>
8524
8525         * configure.in: print a note when building with unit tests and
8526         without assertions
8527
8528 2003-04-30  Havoc Pennington  <hp@redhat.com>
8529
8530         * Makefile.am: add a check-local that complains if you didn't
8531         configure with --enable-tests
8532
8533 2003-04-29  Havoc Pennington  <hp@redhat.com>
8534
8535         * glib/dbus-gmain.c: docs cleanups
8536
8537         * dbus/dbus-types.h: add docs on int64 types
8538
8539         * dbus/dbus-memory.c: fix docs to avoid putting private API in
8540         public API docs section
8541
8542 2003-04-29  Havoc Pennington  <hp@redhat.com>
8543
8544         * dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
8545         dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
8546         parallel install API version, not with the D-BUS package version.
8547
8548         * HACKING: move some of README over here
8549
8550         * README: updates, and document API/ABI policy
8551
8552         * configure.in: reindentation
8553
8554 2003-04-29  Havoc Pennington  <hp@redhat.com>
8555
8556         * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE
8557         to use this library" to be sure people have the right
8558         expectations.
8559
8560 2003-04-28  Havoc Pennington  <hp@redhat.com>
8561
8562         * configure.in: add --enable-docs which by default is auto yes if
8563         doxygen and db2html found, no otherwise; but can be forced on/off
8564
8565         * doc/Makefile.am: conditionalize whether to build docs on
8566         --enable-docs
8567
8568 2003-04-28  Havoc Pennington  <hp@redhat.com>
8569
8570         * configure.in: 0.10
8571
8572         * NEWS: update
8573
8574         * bus/system.conf.in: add <includedir>system.d</includedir>
8575
8576         * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when
8577         username was provided but not uid
8578
8579         * bus/config-parser.c (struct BusConfigParser): keep track of
8580         whether the parser is toplevel or was included; change some
8581         of the error handling if it's included.
8582
8583 2003-04-27  Havoc Pennington  <hp@pobox.com>
8584
8585         Unbreak my code...
8586
8587         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
8588         report correct status if we finish processing authentication
8589         inside this function.
8590
8591         * bus/activation.c (try_send_activation_failure): use
8592         bus_transaction_send_error_reply
8593
8594         * bus/connection.c (bus_connection_get_groups): return an error
8595         explaining the problem
8596
8597         * bus/bus.c (bus_context_check_security_policy): implement
8598         restriction here that inactive connections can only send the
8599         hello message. Also, allow bus driver to send anything to
8600         any recipient.
8601
8602         * bus/connection.c (bus_connection_complete): create the
8603         BusClientPolicy here instead of on-demand.
8604         (bus_connection_get_policy): don't return an error
8605
8606         * dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
8607         sender field in message being replied to
8608
8609         * bus/bus.c (bus_context_check_security_policy): fix silly typo
8610         causing it to return FALSE always
8611
8612         * bus/policy.c (bus_client_policy_check_can_send): fix bug where
8613         we checked sender rather than destination
8614
8615 2003-04-25  Havoc Pennington  <hp@redhat.com>
8616
8617         test suite is slightly hosed at the moment, will fix soon
8618
8619         * bus/connection.c (bus_connections_expire_incomplete): fix to
8620         properly disable the timeout when required
8621         (bus_connection_set_name): check whether we can remove incomplete
8622         connections timeout after we complete each connection.
8623
8624         * dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
8625         probably still broken.
8626
8627         * bus/services.c (bus_registry_acquire_service): implement max
8628         number of services owned, and honor allow/deny rules on which
8629         services a connection can own.
8630
8631         * bus/connection.c (bus_connection_get_policy): report errors here
8632
8633         * bus/activation.c: implement limit on number of pending
8634         activations
8635
8636 2003-04-25  Havoc Pennington  <hp@redhat.com>
8637
8638         * dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
8639         where we used >= 0 instead of != DBUS_UID_UNSET.
8640
8641 2003-04-25  Havoc Pennington  <hp@redhat.com>
8642
8643         * glib/dbus-gmain.c (remove_watch): fix for a crash when watches
8644         were toggled without add/remove, fix from Anders Gustafsson
8645
8646 2003-04-24  Havoc Pennington  <hp@redhat.com>
8647
8648         * test/data/valid-config-files/basic.conf: add <limit> tags to
8649         this test
8650
8651         * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
8652         <limit> tag in configuration file.
8653
8654 2003-04-24  Havoc Pennington  <hp@redhat.com>
8655
8656         * bus/dispatch.c: somehow missed some name_is
8657
8658         * dbus/dbus-timeout.c (_dbus_timeout_set_enabled)
8659         (_dbus_timeout_set_interval): new
8660
8661         * bus/connection.c (bus_connections_setup_connection): record time
8662         when each connection is first set up, and expire them after the
8663         auth timeout passes.
8664
8665 2003-04-24  Havoc Pennington  <hp@redhat.com>
8666
8667         * dbus/dbus-message.c (dbus_message_name_is): rename
8668         (dbus_message_service_is): rename
8669         (dbus_message_sender_is): rename
8670         (dbus_message_get_service): rename
8671
8672 2003-04-24  Havoc Pennington  <hp@redhat.com>
8673
8674         * configure.in: add --enable-checks
8675
8676         * dbus/dbus-message.c (dbus_message_new): reverse name/service arguments
8677
8678         * dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
8679         to use thread locks.
8680         (_dbus_connection_handler_destroyed_locked): move some private
8681         functions into proper docs group
8682
8683         * dbus/dbus-internals.h: add _dbus_return_if_fail,
8684         _dbus_return_val_if_fail
8685
8686         Throughout: use dbus_return_if_fail
8687
8688 2003-04-23  James Willcox  <jwillcox@gnome.org>
8689
8690         * glib/dbus-glib.h:
8691         * glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
8692         (dbus_connection_setup_with_g_main),
8693         (dbus_server_setup_with_g_main):
8694         * glib/test-dbus-glib.c: (main):
8695         * glib/test-thread-client.c: (main):
8696         * glib/test-thread-server.c: (new_connection_callback), (main):
8697         * tools/dbus-monitor.c: (main):
8698
8699         Added a GMainContext argument to dbus_connection_setup_with_g_main()
8700         and dbus_server_setup_with_g_main().
8701
8702 2003-04-20  Havoc Pennington  <hp@pobox.com>
8703
8704         * doc/dbus-specification.sgml: document the restrictions on
8705         message and service names
8706
8707 2003-04-22  Havoc Pennington  <hp@redhat.com>
8708
8709         * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
8710         support, and do some code cleanups to share more code and
8711         speed up array marshal/demarshal.
8712
8713         * dbus-1.0.pc.in (Cflags): put libdir include file in cflags
8714
8715         * configure.in: generate dbus-arch-deps.h
8716
8717         * dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
8718         64-bit typecodes
8719
8720 2003-04-22  Havoc Pennington  <hp@redhat.com>
8721
8722         * test/data/valid-messages/opposite-endian.message: fix test
8723         to use proper type for rply field
8724
8725         * test/data/invalid-messages: add tests for below validation
8726
8727         * dbus/dbus-message.c (decode_header_data): validate field types,
8728         and validate that named fields are valid names
8729         (decode_name_field): consider messages in the
8730         org.freedesktop.Local. namespace to be invalid.
8731
8732         * dbus/dbus-string.c (_dbus_string_validate_name): new
8733
8734 2003-04-19  Havoc Pennington  <hp@pobox.com>
8735
8736         * bus/driver.c (bus_driver_handle_hello): check limits and
8737         return an error if they are exceeded.
8738
8739         * bus/connection.c: maintain separate lists of active and inactive
8740         connections, and a count of each. Maintain count of completed
8741         connections per user. Implement code to check connection limits.
8742
8743         * dbus/dbus-list.c (_dbus_list_unlink): export
8744
8745         * bus/bus.c (bus_context_check_security_policy): enforce a maximum
8746         number of bytes in the message queue for a connection
8747
8748 2003-04-18  Havoc Pennington  <hp@pobox.com>
8749
8750         * dbus/dbus-auth.c (record_mechanisms): memleak fixes
8751
8752         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
8753         memleaks
8754
8755         * dbus/dbus-keyring.c (add_new_key): fix a memleak, and
8756         on realloc be sure to update the pointer in the keyring
8757
8758         * dbus/dbus-string.c (_dbus_string_zero): compensate for align
8759         offset to avoid writing to unallocated memory
8760
8761         * dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
8762         try the next mechanism, so we properly handle OOM
8763
8764         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
8765         on OOM.
8766         (_dbus_keyring_new): fix OOM bug
8767         (_dbus_keyring_new_homedir): always set error; impose a maximum
8768         number of keys we'll load from the file, mostly to speed up the
8769         test suite and make its OOM checks more useful, but also for
8770         general sanity.
8771
8772         * dbus/dbus-auth.c (process_error_server): reject authentication
8773         if we get an error from the client
8774         (process_cancel): on cancel, send REJECTED, per the spec
8775         (process_error_client): send CANCEL if we get an error from the
8776         server.
8777
8778 2003-04-18  Havoc Pennington  <hp@pobox.com>
8779
8780         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
8781         debug spew
8782
8783         * dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
8784         handling problem
8785
8786         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
8787         about DBUS_TEST_HOMEDIR once
8788
8789         * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in
8790         the environment
8791
8792         * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1
8793         config file so we test the right thing
8794
8795         Throughout: assorted docs improvements
8796
8797 2003-04-18  Havoc Pennington  <hp@pobox.com>
8798
8799         * glib/dbus-gmain.c: adapt to watch changes
8800
8801         * bus/bus.c, bus/activation.c, etc.: adjust to watch changes
8802
8803         * dbus/dbus-server.h: remove dbus_server_handle_watch
8804
8805         * dbus/dbus-connection.h: remove dbus_connection_handle_watch
8806
8807         * dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
8808         like DBusTimeout, so we don't need dbus_connection_handle_watch
8809         etc.
8810
8811 2003-04-17  Havoc Pennington  <hp@redhat.com>
8812
8813         * dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
8814         database usage so it all goes via the DBusUserDatabase cache.
8815
8816 2003-04-17  Havoc Pennington  <hp@redhat.com>
8817
8818         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
8819         there was an OOM watch we skipped, we always return TRUE so we
8820         iterate again to have a look at it again. Fixes test suite hang.
8821         Code rearrangement also lets us lose some memset and only iterate
8822         over callbacks once.
8823
8824         * bus/driver.c (bus_driver_handle_message): sense of test for
8825         reply was backward
8826
8827 2003-04-16  Havoc Pennington  <hp@pobox.com>
8828
8829         * doc/dbus-specification.sgml: make spec say serials are unsigned
8830
8831         * dbus/dbus-message.h: change message serials to unsigned
8832
8833         * dbus/dbus-connection.c: adapt to message serials being unsigned
8834
8835 2003-04-15  Havoc Pennington  <hp@pobox.com>
8836
8837         * bus/bus.c: create and keep around a shared DBusUserDatabase
8838         object.
8839
8840         * bus/connection.c (bus_connection_get_groups): don't cache
8841         groups for user in the connection object, since user database
8842         object now does that.
8843
8844 2003-04-16  Havoc Pennington  <hp@redhat.com>
8845
8846         * dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
8847         list of size counters
8848         (_dbus_message_loader_putback_message_link): put back a popped link
8849
8850         * dbus/dbus-connection.c
8851         (dbus_connection_set_max_live_messages_size): rename
8852         max_received_size
8853         (dbus_connection_get_outgoing_size): get size of outgoing
8854         queue
8855         (_dbus_connection_set_connection_counter): remove this cruft
8856
8857 2003-04-14  Havoc Pennington  <hp@redhat.com>
8858
8859         * dbus/dbus-userdb.c: user database abstraction, mostly to get
8860         caching, but at some point we might want to be able to use a
8861         different database.
8862
8863         * bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
8864         SHA1 conf file to test the sha1 auth mechanism, since the regular
8865         test always uses EXTERNAL when available.
8866
8867         * configure.in,
8868         test/data/valid-config-files/debug-allow-all-sha1.conf.in:
8869         add conf file that requires use of sha1 auth
8870
8871 2003-04-13  Havoc Pennington  <hp@pobox.com>
8872
8873         * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs
8874         from Philip Blundell to send messages and monitor them.
8875
8876 2003-04-13  Havoc Pennington  <hp@pobox.com>
8877
8878         * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
8879         callbacks
8880
8881         * test/data/valid-config-files/debug-allow-all.conf.in: allow all
8882         users
8883
8884         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
8885         fix to only recover unused bytes if we're already authenticated
8886         (_dbus_transport_get_is_authenticated): fix to still mark us
8887         authenticated if there are unused bytes.
8888
8889         * bus/dispatch.c: implement security policy checking
8890
8891         * bus/connection.c (bus_transaction_send_from_driver): new
8892
8893         * bus/bus.c (bus_context_check_security_policy): new
8894
8895         * bus/dispatch.c (send_service_nonexistent_error): delete this,
8896         now we just set the DBusError and it gets converted to an error
8897         reply.
8898
8899         * bus/connection.c (allow_user_function): enable code using actual
8900         data from the config file
8901
8902         * bus/policy.c (list_allows_user): handle wildcard rules for
8903         user/group connection perms
8904
8905 2003-04-13  Havoc Pennington  <hp@pobox.com>
8906
8907         * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules
8908
8909         * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function
8910
8911         * bus/policy.c (bus_policy_append_mandatory_rule)
8912         (bus_policy_append_default_rule, bus_policy_append_user_rule)
8913         (bus_policy_append_group_rule): new functions
8914
8915 2003-04-12  Havoc Pennington  <hp@pobox.com>
8916
8917         * bus/config-parser.c (bus_config_parser_new): fix a memleak
8918
8919         * dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
8920         the pid/gid/uid, just for paranoia.
8921
8922         * test/break-loader.c (randomly_do_n_things): find a byte
8923         containing a type code, and randomly change it to a different
8924         type code.
8925
8926 2003-04-12  Havoc Pennington  <hp@pobox.com>
8927
8928         * bus/policy.h: change BusPolicy to be the thing from the config
8929         file, and rename old BusPolicy to BusClientPolicy
8930
8931         * bus/bus.c, bus/connection.c, bus/config-parser.c: change to
8932         match change in how policy works
8933
8934         * dbus/dbus-internals.h: mark assert_not_reached as
8935         __attribute((noreturn))__
8936
8937 2003-04-11  Havoc Pennington  <hp@redhat.com>
8938
8939         * doc/dbus-specification.sgml: fix a spot with the wrong name for
8940         the broadcast service. Use boolean return for ServiceExists.
8941
8942 2003-04-11  Havoc Pennington  <hp@redhat.com>
8943
8944         * configure.in: add another directory to look for qt in.
8945
8946 2003-04-11  Havoc Pennington  <hp@redhat.com>
8947
8948         * AUTHORS: add Colin Walters
8949
8950 2003-04-11  Havoc Pennington  <hp@redhat.com>
8951
8952         * NEWS: update
8953
8954         * configure.in: 0.9
8955
8956 2003-04-11  Havoc Pennington  <hp@redhat.com>
8957
8958         * bus/messagebus.in: remove pid file when stopping the
8959         message bus, since the bus won't have privileges to remove it
8960         itself.
8961
8962 2003-04-11  Havoc Pennington  <hp@redhat.com>
8963
8964         * bus/bus.c (bus_context_new): move credentials change after
8965         creating pidfile
8966
8967 2003-04-11  Havoc Pennington  <hp@pobox.com>
8968
8969         * test/decode-gcov.c: add "below average functions" to the
8970         coverage report, and change how some of the code works.
8971
8972         * bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
8973         not in the coverage stats.
8974
8975         * test/test-service.c (main): use _dbus_verbose not fprintf in a
8976         couple places so running the test suite doesn't result in megaspam.
8977
8978 2003-04-11  Havoc Pennington  <hp@pobox.com>
8979
8980         * bus/dispatch.c (check_existent_service_activation): accept a no
8981         memory error in a place we didn't before
8982
8983         * bus/test.c (bus_test_run_everything): remove hacky "do it twice
8984         in case the first one failed," since the test suite is less
8985         broken now.
8986
8987 2003-04-10  Havoc Pennington  <hp@pobox.com>
8988
8989         * bus/dispatch.c (check_segfault_service_activation): add test
8990         for launching an executable that just crashes.
8991
8992         * test/test-segfault.c (main): try setting coredumpsize to 0 so we
8993         don't leave a million cores. We'll see how portable this is.
8994
8995 2003-04-10  Havoc Pennington  <hp@pobox.com>
8996
8997         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
8998         the possible parent failures before we fork, so that we don't
8999         fail to create a babysitter after creating the child.
9000
9001         * bus/activation.c (bus_activation_activate_service): kill child
9002         if we don't successfully complete the activation.
9003
9004 2003-04-10  Havoc Pennington  <hp@redhat.com>
9005
9006         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
9007         the connection if it's disconnected
9008
9009         * bus/activation.c (bus_activation_service_created): use new
9010         transaction features to roll back removal of pending activation if
9011         we don't successfully create the service after all. Don't remove
9012         pending activation if the function fails.
9013
9014         * dbus/dbus-list.c (_dbus_list_insert_before_link)
9015         (_dbus_list_insert_after_link): new code to facilitate
9016         services.c fixes
9017
9018         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
9019         new functionality, so we can preallocate the ability to insert
9020         into a hash table.
9021
9022         * bus/connection.c (bus_transaction_add_cancel_hook): new function
9023         allowing us to put custom hooks in a transaction to be used for
9024         cancelling said transaction
9025
9026         * doc/dbus-specification.sgml: add some discussion of secondary
9027         service owners, and disallow zero-length service names
9028
9029         * bus/services.c (bus_registry_acquire_service): new function,
9030         splits out part of bus_driver_handle_acquire_service() and fixes
9031         a bug where we didn't remove the service doing the acquiring
9032         from the secondary queue if we failed to remove the current owner
9033         from the front of the queue.
9034
9035 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9036
9037         * doc/dbus-specification.sgml:
9038         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
9039
9040 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9041
9042         * bus/.cvsignore:
9043         * glib/.cvsignore:
9044         * test/.cvsignore:
9045         Added files to cvsignore
9046
9047         * dbus/dbus-message.h:
9048         * dbus/dbus-message.c: (dbus_message_iter_get_named):
9049         Make get_named() take two out argument and return a boolean.
9050         (dbus_message_iter_get_args_valist):
9051         Update usage of get_named().
9052         (dbus_message_iter_append_byte):
9053         Fix typo
9054         (dbus_message_iter_append_named)
9055         Fix typo
9056         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
9057         More tests.
9058
9059 2003-04-10  Alexander Larsson  <alexl@redhat.com>
9060
9061         * dbus/dbus-marshal.[ch]:
9062         Add array_type_pos argument to _dbus_marshal_validate_arg.
9063         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
9064
9065         * dbus/dbus-message.[ch]:
9066         Multi-dimensional arrays have full type specification in the
9067         outermost array. Iter code re-arranged to handle this.
9068         Added some more iter tests.
9069
9070         * doc/dbus-specification.sgml:
9071         Add me to authors.
9072         Remove old FIXME.
9073         Update new array encoding description.
9074         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
9075
9076         * test/data/invalid-messages/array-with-mixed-types.message:
9077         * test/data/valid-messages/array-of-array-of-uint32.message:
9078         Change to the new array format.
9079
9080         * test/data/invalid-messages/too-short-dict.message:
9081         Fix bug in test.
9082
9083         * test/data/valid-messages/recursive-types.message:
9084         Fix up and extend test.
9085
9086 2003-04-10  Havoc Pennington  <hp@pobox.com>
9087
9088         * bus/dispatch.c: lots of fixes
9089
9090         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
9091         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
9092         that was crack, broke the test service.
9093
9094         * dbus/dbus-transport.c (_dbus_transport_open): fix error
9095         handling to avoid piling up errors if we get a failure on the
9096         first address.
9097
9098         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
9099         pid in assertion failures.
9100
9101         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
9102         to some fixed size of file descriptor array. Don't return TRUE
9103         anytime a timeout exists, that led to lots of busy loop silliness
9104         in the tests.
9105
9106 2003-04-09  Havoc Pennington  <hp@redhat.com>
9107
9108         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
9109         I'd checked this in earlier but hadn't.
9110
9111 2003-04-09  Havoc Pennington  <hp@redhat.com>
9112
9113         * bus/dispatch.c (bus_dispatch_test): get a bit further through
9114         the activation test (man this is getting old!)
9115
9116 2003-04-09  Havoc Pennington  <hp@redhat.com>
9117
9118         * test/test-utils.c: use dispatch status function to fix this up
9119
9120         * bus/connection.c (connection_watch_callback): don't dispatch
9121         from here
9122         (connection_timeout_callback): don't dispatch from here
9123         (bus_connections_setup_connection): set the dispatch status function
9124         (bus_connection_disconnected): unset it
9125
9126         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
9127         used to add a connection to be dispatched
9128         (_dbus_loop_iterate): do the dispatching at the end of each
9129         iteration
9130
9131         * dbus/dbus-connection.c
9132         (dbus_connection_set_dispatch_status_function): new function
9133         allowing us to fix up main loop usage
9134         (_dbus_connection_last_unref): free all the various function
9135         user data
9136         (dbus_connection_dispatch): call the DispatchStatusFunction
9137         whenever this function returns
9138         (dbus_connection_handle_watch): call DispatchStatusFunction
9139         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
9140         (reply_handler_timeout): call DispatchStatusFunction
9141         (dbus_connection_flush): call DispatchStatusFunction
9142
9143 2003-04-09  Havoc Pennington  <hp@redhat.com>
9144
9145         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
9146         a memory leak
9147
9148         * bus/dispatch.c (check_service_activated): fix bug in test
9149
9150         * dbus/dbus-mainloop.c (check_timeout): fix this up
9151
9152         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
9153         verbose output so we can sort out output from different processes,
9154         e.g. in the activation case.
9155
9156 2003-04-08  Colin Walters  <walters@gnu.org>
9157
9158         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
9159         the pid file.
9160         (bus_context_new): Set it.
9161         (bus_context_unref): Use it to delete the pid file.
9162
9163 2003-04-08  Havoc Pennington  <hp@redhat.com>
9164
9165         * test/data/invalid-messages/array-with-mixed-types.message:
9166         regression test that fails for the moment
9167
9168         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
9169         tests for convenience
9170
9171         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
9172         array of nil, it broke things.
9173
9174         * test/data/invalid-messages/array-of-nil.message: regression test
9175
9176         * test/data/valid-messages/array-of-array-of-uint32.message:
9177         happened to write this so added it to suite
9178
9179 2003-04-08  Havoc Pennington  <hp@redhat.com>
9180
9181         * bus/driver.c (bus_driver_handle_acquire_service): init
9182         retval/reply before checking name
9183
9184         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
9185         recursion depth argument
9186
9187         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
9188         in the public struct for future extension
9189
9190         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
9191         typo
9192
9193         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
9194         message
9195
9196         * doc/dbus-specification.sgml: fix typo
9197
9198 2003-04-08  Alexander Larsson  <alexl@redhat.com>
9199
9200         Implemented recursive types, named types and new-style iters
9201
9202         * bus/driver.c:
9203         * glib/test-thread-client.c: (thread_func):
9204         * glib/test-thread-server.c: (handle_test_message):
9205         * test/test-service.c: (handle_echo):
9206         Update to new api
9207
9208         * dbus/Makefile.am:
9209         * dbus/dbus-dict.c:
9210         * dbus/dbus-dict.h:
9211         * dbus/dbus.h
9212         Remove DBusDict
9213
9214         * dbus/dbus-internals.c: (_dbus_type_to_string):
9215         Update for new types.
9216
9217         * dbus/dbus-marshal.[ch]:
9218         Implement recursive types and the new marshalling format.
9219         Remove hardcoded dict marshalling.
9220         Marshal named types.
9221
9222         * dbus/dbus-message-builder.c:
9223         Add BYTE_ARRAY.
9224         Remove references to old types
9225
9226         * dbus/dbus-message.[ch]:
9227         New non-refcounted iter API that supports recursive iters.
9228         Use iters for appending, including support for recursive
9229         iters.
9230         Add byte and named type support.
9231         Update everything to new marshalling formats.
9232         Add tests for new API.
9233
9234         * dbus/dbus-protocol.h:
9235         Remove old array types.
9236         Add types: BYTE, ARRAY, DICT, NAMED
9237
9238         * dbus/dbus-string.c:
9239         * dbus/dbus-sysdeps.c:
9240         Make parse_double locale safe.
9241
9242         * dbus/dbus-test-main.c:
9243         Call setlocale.
9244
9245         * dbus/dbus-test.c:
9246         Kill dict test
9247
9248         * doc/dbus-specification.sgml:
9249         Update spec
9250
9251         * test/data/incomplete-messages/missing-body.message:
9252         * test/data/invalid-messages/bad-boolean.message:
9253         * test/data/invalid-messages/bad-boolean-array.message:
9254         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
9255         * test/data/invalid-messages/boolean-has-no-value.message-raw:
9256         * test/data/invalid-messages/too-short-dict.message:
9257         * test/data/valid-messages/dict-simple.message:
9258         * test/data/valid-messages/dict.message:
9259         * test/data/valid-messages/emptiness.message:
9260         * test/data/valid-messages/lots-of-arguments.message:
9261         * test/data/valid-messages/no-padding.message:
9262         * test/data/valid-messages/recursive-types.message:
9263         Add missing NAME fields
9264         Fix up dicts & arrays
9265
9266         * test/data/invalid-messages/dict-with-nil-value.message:
9267         Removed, this is not invalid anymore.
9268
9269         * test/data/valid-messages/recursive-types.message:
9270         Add new test for deeply recursive types.
9271
9272 2003-04-07  Havoc Pennington  <hp@pobox.com>
9273
9274         * bus/driver.c (bus_driver_handle_acquire_service): return an
9275         error if you try to acquire a service that starts with ':'
9276
9277 2003-04-07  Havoc Pennington  <hp@redhat.com>
9278
9279         * doc/dbus-specification.sgml: require that base service names
9280         start with ':' and that the base service is created/deleted
9281         as first and last things a connection does on the bus
9282
9283         * bus/dispatch.c (check_existent_service_activation): lots more
9284         work on the activation test; it doesn't fully pass yet...
9285
9286         * test/test-service.c (main): fix so we don't memleak the
9287         connection to the message bus
9288         (filter_func): accept a message asking us to exit
9289
9290 2003-04-06  Havoc Pennington  <hp@pobox.com>
9291
9292         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
9293         from Colin Walters
9294
9295         * configure.in: fixes to Qt detection from Colin Walters
9296
9297         * doc/Makefile.am: Only remove generated docbook dirs if they
9298         exist, from Colin Walters
9299
9300         * dbus/dbus-bus.c: change how we set well-known connections to
9301         NULL, so that it works if a single connection is stored in
9302         two well-known array slots.
9303
9304         * test/Makefile.am: remove a lot of stuff that isn't immediately
9305         useful, it's in CVS history if we want it.
9306
9307         * test/test-service.c: use dbus-mainloop instead of that
9308         watch.[hc] crack
9309
9310 2003-04-06  Havoc Pennington  <hp@pobox.com>
9311
9312         * dbus/Makefile.am: split lists of sources into stuff that goes in
9313         the library, util functions that go in the lib and are also used
9314         elsewhere, and util functions that are used in tests/daemon but
9315         don't go in the lib.
9316
9317         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc]
9318         here so it can be used in test binaries also
9319
9320 2003-04-06  Havoc Pennington  <hp@pobox.com>
9321
9322         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
9323         here in the parent process, so we can return an error if it
9324         fails. Also, move some of the code into the child so the parent
9325         is less hosed if we fail midway through.
9326
9327         * bus/bus.c (bus_context_new): move pidfile detection further up
9328         in the function, before we start overwriting sockets and such.
9329
9330         * bus/messagebus.in: adjust this a bit, not sure if it will work.
9331
9332         * configure.in: add --with-system-pid-file and --with-system-socket
9333
9334 2003-04-06  Colin Walters  <walters@verbum.org>
9335
9336         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
9337
9338         * bus/system.conf.in: Declare a pidfile.
9339
9340         * bus/bus.c (bus_context_new): Test for an existing pid file, and
9341         create one (if appropriate).
9342
9343         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
9344         (struct BusConfigParser) [pidfile]: New.
9345         (element_type_to_name, merge_included, start_busconfig_child)
9346         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
9347         (bus_config_parser_unref): Free it.
9348         (bus_config_parser_get_pidfile): New function.
9349
9350         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
9351
9352         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
9353
9354         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
9355
9356         * dbus/dbus-sysdeps.h: Prototype it.
9357
9358 2003-04-06  Havoc Pennington  <hp@pobox.com>
9359
9360         * bus/bus.c (bus_context_new): print the address in here, rather
9361         than in main(), because we need to do it before forking the daemon
9362
9363         * bus/dispatch.c (send_service_nonexistent_error): set the sender
9364         on the service nonexistent error
9365
9366         * bus/driver.c (bus_driver_handle_acquire_service): set the
9367         sender on the AcquireService reply
9368
9369         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
9370         server also listen on a UNIX socket so services can connect to it.
9371
9372 2003-04-06  Havoc Pennington  <hp@pobox.com>
9373
9374         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done
9375         so it detects deadlocks and also we actually init threads when
9376         debugging.
9377
9378 2003-04-06  Havoc Pennington  <hp@pobox.com>
9379
9380         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
9381         save the domain socket name, and unlink it when we disconnect the
9382         server. Means that at least when we exit normally, we won't leave
9383         a bunch of junk in /tmp
9384
9385         * dbus/dbus-transport-unix.c
9386         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
9387         memory management). (I was making a real change here but then
9388         didn't)
9389
9390 2003-04-06  Havoc Pennington  <hp@pobox.com>
9391
9392         * bus/bus.c (bus_context_new): fix wrong handling of
9393         server_data_slot_unref() in the error case.
9394
9395         * dbus/dbus-internals.h (_dbus_assert): change so it passes
9396         "(condition) != 0" to _dbus_real_assert so that
9397         "_dbus_assert (pointer)" doesn't cause a warning
9398
9399         * bus/main.c (main): accept --print-address option to print out
9400         the message bus address
9401
9402         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
9403
9404         * dbus/dbus-transport.c (_dbus_transport_open): special error for
9405         "tmpdir" option to unix: address on client side
9406
9407         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option
9408         to unix: address
9409
9410         * configure.in (TEST_SOCKET_DIR): locate a temporary directory
9411         we can use to create sockets in the test suite.
9412
9413         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
9414         cleanly. To be used for testing.
9415
9416         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
9417
9418         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
9419
9420         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
9421         handle trying to call this when there's no servers active
9422
9423 2003-04-05  Havoc Pennington  <hp@pobox.com>
9424
9425         * NEWS: update
9426
9427         * configure.in: 0.8
9428
9429 2003-04-05  Havoc Pennington  <hp@pobox.com>
9430
9431         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't
9432         crash on startup. Need to get "try starting the daemon"
9433         in the test suite I guess. ;-)
9434
9435         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
9436         tracked the number of open connections; it's better done in
9437         application-specific code as you want it to span all servers etc.
9438
9439 2003-04-05  Havoc Pennington  <hp@pobox.com>
9440
9441         * bus/Makefile.am (install-data-hook): add missing DESTDIR,
9442         patch from Colin Walters
9443
9444 2003-04-05  Havoc Pennington  <hp@pobox.com>
9445
9446         * doc/config-file.txt (Elements): fix docs of <auth> to reflect
9447         reality; in fact multiple mechanisms are allowed.
9448
9449         * dbus/dbus-internals.c (_dbus_real_assert)
9450         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
9451         _dbus_assert_not_reached() into functions, so that they don't show
9452         up in basic block counts for test coverage, and don't use up as
9453         much disk space. Does mean slower execution speed though, so
9454         assumes --disable-asserts is the normal production case.
9455
9456 2003-04-05  Havoc Pennington  <hp@pobox.com>
9457
9458         * test/Makefile.am (dist-hook): also dist *.in files
9459
9460         * NEWS: update
9461
9462         * configure.in: 0.7
9463
9464 2003-04-05  Havoc Pennington  <hp@pobox.com>
9465
9466         * dbus/dbus-string.c: docs warning
9467
9468         * dbus/dbus-spawn.c: missing docs
9469
9470         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
9471
9472 2003-04-05  Havoc Pennington  <hp@pobox.com>
9473
9474         * bus/loop.c (bus_loop_iterate): fix the timeout code, using
9475         magic from GLib
9476
9477         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
9478         to -1 once we've reaped the babysitter
9479         (_dbus_babysitter_handle_watch): do as much work as we can, not
9480         just one go of it
9481
9482         * bus/activation.c: add code using DBusBabysitter so that we
9483         handle it when a service fails to start up properly.
9484         (bus_activation_service_created): don't remove the activation
9485         entries as we go, just let them get removed when we free the pending
9486         activation. Unref reply messages after sending them.
9487
9488 2003-04-05  Havoc Pennington  <hp@pobox.com>
9489
9490         * test/decode-gcov.c (main): print per-directory stats in the report
9491
9492         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
9493
9494 2003-04-05  Havoc Pennington  <hp@pobox.com>
9495
9496         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
9497
9498         * test/decode-gcov.c: hack up a little program to suck data
9499         out of gcov files. Yes this is sort of silly.
9500
9501         * configure.in: define something in config.h and do an
9502         AM_CONDITIONAL when gcov is enabled
9503
9504 2003-04-04  Havoc Pennington  <hp@redhat.com>
9505
9506         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
9507         return a "babysitter" object that is used to monitor the status of
9508         the spawned process and reap it when required.
9509
9510         * test/test-segfault.c, test/test-exit.c,
9511         test/test-sleep-forever.c: binaries that do various lame things,
9512         used in the test suite.
9513
9514         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
9515
9516 2003-04-03  Havoc Pennington  <hp@pobox.com>
9517
9518         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file
9519         in preparation for modifying it, dbus-sysdeps is getting
9520         a bit unmanageable.
9521
9522 2003-04-03  Havoc Pennington  <hp@redhat.com>
9523
9524         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
9525         have multiple ones
9526
9527         * bus/*.[hc]: adapt to mainloop change
9528
9529 2003-04-03  Havoc Pennington  <hp@redhat.com>
9530
9531         * bus/activation.c (load_directory): fix up memleaks
9532         (bus_activation_entry_free): free the entry
9533
9534         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
9535         we get one from the message bus; fix memleaks.
9536
9537         * dbus/dbus-message.c (dbus_set_error_from_message): new function
9538
9539 2003-04-03  Havoc Pennington  <hp@pobox.com>
9540
9541         * bus/config-parser.c (bus_config_parser_unref): free
9542         list of mechanisms, bug discovered by test suite enhancements
9543         (putting system.conf and session.conf into suite)
9544
9545         * test/Makefile.am, test/test-service.c: add placeholder for a
9546         test service that we'll activate as part of test suite. Doesn't
9547         do anything yet.
9548
9549         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by
9550         setting NULL value, and use system malloc not dbus_malloc()
9551         when we have unavoidable memleakage.
9552
9553         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
9554         didn't work, and support DBUS_BUS_ACTIVATION.
9555
9556         * bus/activation.c (child_setup): pass our well-known bus type to
9557         the child
9558
9559         * bus/config-parser.c: support <type> to specify well-known type
9560
9561         * doc/dbus-specification.sgml: document the env variables to
9562         locate well-known buses and find service activator
9563
9564 2003-04-02  Havoc Pennington  <hp@redhat.com>
9565
9566         * test/Makefile.am (all-local): add a rule to copy tests to
9567         builddir, so we can have generated tests. Use this to remove the
9568         silly hack for testing system.conf and session.conf. Will use this
9569         shortly to generate .service files pointing to test binaries.
9570
9571 2003-04-02  Havoc Pennington  <hp@redhat.com>
9572
9573         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
9574         current alloc and needed new length, not max of the doubled
9575         allocation and needed new length. Also, when building tests,
9576         don't do the double-allocation stuff, just realloc every time.
9577
9578 2003-04-02  Havoc Pennington  <hp@redhat.com>
9579
9580         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
9581         in error messages
9582         (_dbus_string_get_dirname): new
9583         (_dbus_sysdeps_test): new
9584         (_dbus_directory_open): include dirnames in error messages
9585
9586         * bus/config-parser.c: interpret <include> and <includedir> and
9587         <servicedir> relative to config file location if the given
9588         filename is not absolute.
9589
9590         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
9591
9592 2003-04-02  Havoc Pennington  <hp@redhat.com>
9593
9594         * bus/connection.c (bus_transaction_send_error_reply): set sender
9595         service for the error, and unref the reply on success
9596
9597         * bus/activation.c: convert to use BusTransaction so OOM can be
9598         handled correctly
9599         (bus_activation_service_created): set sender of the message
9600
9601 2003-04-01  Havoc Pennington  <hp@redhat.com>
9602
9603         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
9604         <includedir> (at least mostly)
9605
9606         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
9607         first, then the user ID
9608
9609 2003-04-01  Havoc Pennington  <hp@pobox.com>
9610
9611         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
9612         function
9613
9614         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
9615
9616         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
9617
9618         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
9619         socket 0777, and unlink any existing socket.
9620
9621         * bus/bus.c (bus_context_new): change our UID/GID and fork if
9622         the configuration file so specifies; set up auth mechanism
9623         restrictions
9624
9625         * bus/config-parser.c (bus_config_parser_content): add support
9626         for <fork> option and fill in code for <auth>
9627
9628         * bus/system.conf.in: add <fork/> to default configuration,
9629         and limit auth mechanisms to EXTERNAL
9630
9631         * doc/config-file.txt (Elements): add <fork>
9632
9633         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
9634         (_dbus_change_identity): new function
9635
9636 2003-03-31  Havoc Pennington  <hp@redhat.com>
9637
9638         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
9639         (_dbus_listen_unix_socket): fix off-by-one error in null
9640         termination spotted by Nalin
9641
9642 2003-03-31  Havoc Pennington  <hp@redhat.com>
9643
9644         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
9645         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
9646         having a real home directory available.
9647
9648 2003-03-31  Havoc Pennington  <hp@redhat.com>
9649
9650         * bus/Makefile.am (install-data-hook): create /var/run/dbus
9651
9652         * bus/messagebus.in: add init script for Red Hat /etc/init.d
9653
9654         * configure.in: add support for specifying a style of init script
9655         to install
9656
9657 2003-03-31  Havoc Pennington  <hp@redhat.com>
9658
9659         Fix some annoying DBusString API and fix all affected code.
9660
9661         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
9662         max_length argument
9663         (_dbus_string_get_data): change to return string instead of using
9664         an out param
9665         (_dbus_string_get_const_data): ditto
9666         (_dbus_string_get_data_len): ditto
9667         (_dbus_string_get_const_data_len): ditto
9668
9669 2003-03-31  Havoc Pennington  <hp@redhat.com>
9670
9671         * bus/main.c (main): fix up the command line arguments to be nicer
9672
9673 2003-03-31  Havoc Pennington  <hp@redhat.com>
9674
9675         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
9676         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same
9677         final location that lands in the config file
9678
9679         * bus/config-loader-expat.c (bus_config_load): fix type of
9680         XML_Parser variable
9681
9682         * doc/TODO: remove TODO item for dbus_bus_get()
9683
9684         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
9685
9686 2003-03-31  Havoc Pennington  <hp@pobox.com>
9687
9688         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
9689         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
9690         argument since they are always client side
9691
9692         * dbus/dbus-server.c (dbus_server_get_address): new function
9693
9694         * bus/main.c (main): take the configuration file as an argument.
9695
9696         * test/data/valid-config-files/debug-allow-all.conf: new file to
9697         use with dispatch.c tests for example
9698
9699         * bus/test-main.c (main): require test data dir
9700
9701         * bus/bus.c (bus_context_new): change this to take a
9702         configuration file name as argument
9703
9704         * doc/config-file.txt (Elements): add <servicedir>
9705
9706         * bus/system.conf, bus/session.conf: new files
9707
9708         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
9709         well-known socket if none set
9710
9711         * configure.in: create system.conf and session.conf
9712
9713 2003-03-30  Havoc Pennington  <hp@pobox.com>
9714
9715         * bus/config-parser.c: hacking
9716
9717         * dbus/dbus-memory.c: don't use DBusList for the list of stuff
9718         to shut down, since it could cause weirdness with the DBusList
9719         lock
9720
9721         * dbus/dbus-list.c (_dbus_list_test): add tests for the
9722         link-oriented stack routines
9723         (alloc_link): free the mempool if the first alloc from it fails
9724
9725         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
9726
9727         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
9728         from GLib
9729         (_dbus_string_skip_white): new
9730
9731         * doc/config-file.txt (Elements): add <includedir>
9732
9733 2003-03-28  Havoc Pennington  <hp@pobox.com>
9734
9735         * dbus/dbus-string.c (_dbus_string_copy_data_len)
9736         (_dbus_string_copy_data): new functions
9737
9738 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
9739
9740         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
9741         * dbus/dbus-bus.h:
9742         Add dbus_bus_get.
9743
9744         * dbus/dbus-memory.c:
9745         Fix a doc comment.
9746
9747 2003-03-28  Havoc Pennington  <hp@pobox.com>
9748
9749         * bus/test.c (bus_test_flush_bus): remove the sleep from here,
9750         I think it may have just been superstition. Not sure.
9751
9752         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
9753         failures that were not being handled.
9754
9755         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
9756
9757         * dbus/dbus-memory.c: add ability to set number of mallocs in a
9758         row that will fail on out-of-memory.
9759
9760         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
9761         function for testing out-of-memory handling.
9762
9763         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
9764         allocation functions, they do map exactly to the expat ones.
9765
9766 2003-03-27  Havoc Pennington  <hp@redhat.com>
9767
9768         * bus/config-loader-libxml.c (bus_config_load): add another error
9769         check
9770
9771 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
9772
9773         * doc/TODO:
9774         Add note about automatic service activation.
9775
9776         * doc/dbus-specification.sgml:
9777         Rename the specification and clarify a few things.
9778
9779 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
9780
9781         * Doxyfile.in:
9782         * dbus/dbus-address.c:
9783         * dbus/dbus-dict.c:
9784         * dbus/dbus-marshal.c:
9785         * dbus/dbus-server-debug-pipe.c:
9786         * dbus/dbus-transport-unix.c:
9787         Fix documentation warnings.
9788
9789 2003-03-26  Havoc Pennington  <hp@pobox.com>
9790
9791         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
9792         after every test so it's quick and easy to see which leaked, and
9793         so we test multiple dbus_shutdown() calls
9794
9795         * configure.in: change configure.in XML stuff to also support
9796         expat
9797
9798         * config-loader-libxml.c: some hacking
9799
9800         * config-loader-expat.c: some hacking
9801
9802         * config-parser.c: some hacking, plus tests
9803
9804 2003-03-25  Havoc Pennington  <hp@redhat.com>
9805
9806         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
9807
9808         * configure.in: add --with-xml option to specify XML library,
9809         right now only libxml is supported.
9810
9811         * bus/config-loader-libxml.c, config-parser.c: sync some minor
9812         nonworking code between home and work, still just stubs
9813
9814 2003-03-24  Havoc Pennington  <hp@redhat.com>
9815
9816         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
9817         file
9818
9819         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow
9820         NULL argument for "message" if the error is a well-known one,
9821         fill in a generic message in this case.
9822
9823         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
9824         favor of DBusError
9825
9826         * bus/test.c (bus_test_flush_bus): add
9827
9828         * bus/policy.c (bus_policy_test): test code stub
9829
9830 2003-03-24  Havoc Pennington  <hp@pobox.com>
9831
9832         * bus/connection.c (bus_connections_setup_connection): set up
9833         the "can this user connect" function, but it always returns
9834         TRUE until we have a config file parser so we can have a config
9835         file that allows connections.
9836
9837 2003-03-23  Havoc Pennington  <hp@pobox.com>
9838
9839         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with
9840         DBUS_BUILD_TESTS, actually alloc/free a block of memory for
9841         the mutex, so we can check for proper memory management
9842         and OOM handling.
9843
9844         * dbus/dbus-dataslot.c: remove the mutex from
9845         DBusDataSlotAllocator and lock it manually when using it,
9846         to simplify fitting it into the global slots framework.
9847
9848         * dbus/dbus-threads.c (init_static_locks): rework how we're
9849         handling global locks so they are easily shut down.
9850
9851         * bus/policy.c (bus_policy_append_rule): fix
9852
9853         * bus/test-main.c (main): check for memleaks
9854
9855         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make
9856         test suite check for memleaks
9857
9858         * dbus/dbus-memory.c: add support in test mode for tracking
9859         number of outstanding blocks
9860
9861 2003-03-23  Havoc Pennington  <hp@pobox.com>
9862
9863         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
9864         policies code
9865
9866         * dbus/dbus-hash.h: add ULONG hash keys
9867
9868         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
9869         (_dbus_get_group_id): new function
9870
9871 2003-03-20  Havoc Pennington  <hp@redhat.com>
9872
9873         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
9874         new function
9875         (dbus_connection_get_unix_user): new function
9876
9877 2003-03-20  Havoc Pennington  <hp@pobox.com>
9878
9879         * bus/connection.c (bus_connection_send_oom_error): assert that
9880         message has a sender
9881         (connection_execute_transaction): ditto
9882         (bus_connection_preallocate_oom_error): fix to set the sender, and
9883         set recipient to the destination service, not the bus driver
9884
9885         * bus/policy.c: hacking
9886
9887         * dbus/dbus-message.c (dbus_message_service_is): new function
9888         (dbus_message_sender_is): new
9889
9890 2003-03-19  Havoc Pennington  <hp@redhat.com>
9891
9892         * bus/policy.c: start sketching code for policy restrictions on
9893         what connections can do.
9894
9895 2003-03-18  Havoc Pennington  <hp@redhat.com>
9896
9897         * doc/TODO: some notes on high-level todo items. Little nitpick
9898         stuff is all in @todo, so no need to add it here.
9899
9900         * doc/config-file.txt: some notes on how config file might look
9901
9902 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
9903
9904         * configure.in: 0.6
9905
9906         * NEWS: Update.
9907
9908 2003-03-17  Havoc Pennington  <hp@redhat.com>
9909
9910         * dbus/dbus-internals.h: add gcc attributes so that
9911         our printf-style functions warn on bad arguments to
9912         format
9913
9914         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf
9915         format bug
9916
9917         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
9918         printf format bug
9919
9920 2003-03-17  Havoc Pennington  <hp@redhat.com>
9921
9922         * bus/test-main.c (main): make it print something as it runs
9923         so make check doesn't look stuck
9924
9925         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove
9926         from CVS, now obsolete
9927
9928 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
9929
9930         * bus/dispatch.c: (bus_dispatch):
9931         Refetch the service name since it may have been reallocated
9932         when dbus_message_set_sender was called.
9933
9934         * dbus/dbus-sysdeps.c: (_dbus_accept):
9935         Add address and address length variables and use them to stop
9936         valgrind from complaining.
9937
9938 2003-03-17  Havoc Pennington  <hp@pobox.com>
9939
9940         All tests pass, no memleaks, no valgrind complaints.
9941
9942         * bus/test.c: refcount handler_slot
9943
9944         * bus/connection.c (bus_connections_new): refcount
9945         connection_data_slot
9946
9947         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
9948         bytes so that auth scripts pass.
9949
9950         * bus/dispatch.c: init message_handler_slot so it gets allocated
9951         properly
9952
9953         * bus/dispatch.c (message_handler_slot_ref): fix memleak
9954
9955         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
9956         dealloc server_pipe_hash when no longer used for benefit of
9957         leak checking
9958
9959         * dbus/dbus-auth.c (process_command): memleak fix
9960
9961         * bus/dispatch.c (check_hello_message): memleak fix
9962
9963 2003-03-16  Havoc Pennington  <hp@pobox.com>
9964
9965         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
9966
9967 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
9968
9969         * bus/activation.c (bus_activation_activate_service): Append
9970         the pending activation entry to the list of pending activations.
9971
9972 2003-03-16  Havoc Pennington  <hp@pobox.com>
9973
9974         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
9975         connections
9976
9977         * dbus/dbus-address.c (create_entry): fix OOM handling when
9978         failing to alloc entry->method
9979
9980 2003-03-16  Havoc Pennington  <hp@pobox.com>
9981
9982         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
9983         the watch
9984
9985         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
9986         add some missing dbus_set_result
9987
9988         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to
9989         alloc the DBusMessageHandler
9990
9991         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
9992         the transport here, since we call this from the finalizer; it
9993         resulted in a double-finalize.
9994
9995         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
9996         where we tried to use transport->connection that was NULL,
9997         happened when transport was disconnected early on due to OOM
9998
9999         * bus/*.c: adapt to handle OOM for watches/timeouts
10000
10001         * dbus/dbus-transport-unix.c: port to handle OOM during
10002         watch handling
10003
10004         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
10005         reference to unused bytes instead of a copy
10006
10007         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
10008         out of memory
10009
10010         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
10011         FALSE on OOM
10012
10013         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
10014         of memory
10015
10016 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10017
10018         * doc/dbus-specification.sgml:
10019         Document reply message for ActivateService.
10020
10021 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10022
10023         * bus/activation.c: (bus_pending_activation_entry_free),
10024         (bus_pending_activation_free), (bus_activation_new),
10025         (bus_activation_unref), (bus_activation_service_created),
10026         (bus_activation_activate_service):
10027         * bus/activation.h:
10028         * bus/bus.c: (bus_context_new):
10029         * bus/desktop-file.c: (new_section):
10030         * bus/driver.c: (bus_driver_send_service_deleted),
10031         (bus_driver_handle_activate_service):
10032         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
10033         * bus/services.h:
10034         * dbus/dbus-connection.c:
10035         (dbus_connection_send_with_reply_and_block):
10036         * dbus/dbus-message.c: (dbus_message_append_args_valist):
10037         * dbus/dbus-protocol.h:
10038         Make activation work better. Now pending activations will be queued
10039         and the daemon won't try to activate services that are already registered.
10040
10041 2003-03-16  Havoc Pennington  <hp@pobox.com>
10042
10043         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
10044         connection data
10045
10046         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
10047         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
10048
10049 2003-03-16  Havoc Pennington  <hp@pobox.com>
10050
10051         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
10052         this. always run the test suite before commit...
10053
10054         * bus/*: adapt to DBusConnection API changes
10055
10056         * glib/dbus-gmain.c: adapt to DBusConnection API changes,
10057         requires renaming stuff to avoid dbus_connection_dispatch name
10058         conflict.
10059
10060         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
10061         function
10062
10063         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
10064         separate from _dbus_message_loader_return_buffer()
10065
10066         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
10067         this, because it's now always broken to use; the number of
10068         messages in queue vs. the number still buffered by the message
10069         loader is undefined/meaningless. Should use
10070         dbus_connection_get_dispatch_state().
10071         (dbus_connection_dispatch): rename from
10072         dbus_connection_dispatch_message
10073
10074 2003-03-16  Havoc Pennington  <hp@pobox.com>
10075
10076         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
10077         implementation
10078
10079 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
10080
10081         * dbus/dbus-connection.c:
10082         (dbus_connection_send_with_reply_and_block):
10083         Decrease connection->n_incoming when removing an entry
10084         from the list.
10085         * dbus/dbus-dict.c: (dbus_dict_entry_free),
10086         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
10087         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
10088         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
10089         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
10090         (dbus_dict_get_byte_array):
10091         Handle NULL arrays and strings. Also add support for byte arrays.
10092
10093         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
10094         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
10095         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
10096         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
10097         (_dbus_demarshal_dict), (demarshal_and_validate_len),
10098         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
10099         * dbus/dbus-marshal.h:
10100         Add support for marshalling and demarshalling empty arrays and strings.
10101
10102         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10103         (dbus_message_append_string_array),
10104         (dbus_message_iter_get_boolean),
10105         (dbus_message_iter_get_boolean_array),
10106         (dbus_message_iter_get_int32_array),
10107         (dbus_message_iter_get_uint32_array),
10108         (dbus_message_iter_get_double_array),
10109         (dbus_message_iter_get_byte_array),
10110         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
10111         (check_message_handling):
10112         Add support for getting empty arrays and dicts.
10113
10114         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
10115         Don't do any validation at all for now, that's better than just checking
10116         for ASCII.
10117
10118         * test/data/valid-messages/emptiness.message:
10119         New test message with lots of empty arrays.
10120
10121 2003-03-16  Havoc Pennington  <hp@pobox.com>
10122
10123         * dbus/dbus-connection.c
10124         (_dbus_connection_queue_received_message_link): new function that
10125         can't fail due to OOM
10126
10127         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
10128         new function pops a message together with a list link
10129         containing it.
10130
10131         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
10132         message queuing functions to avoid needing to alloc memory
10133
10134 2003-03-16  Havoc Pennington  <hp@pobox.com>
10135
10136         Oops - test code was only testing failure of around 30 of the
10137         mallocs in the test path, but it turns out there are 500+
10138         mallocs. I believe this was due to misguided linking setup such
10139         that there was one copy of dbus_malloc etc. in the daemon and one
10140         in the shared lib, and only daemon mallocs were tested. In any
10141         case, the test case now tests all 500+ mallocs, and doesn't pass
10142         yet, though there are lots of fixes in this patch.
10143
10144         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
10145         this so that it doesn't need to allocate memory, since it
10146         has no way of indicating failure due to OOM (and would be
10147         annoying if it did).
10148
10149         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
10150
10151         * bus/Makefile.am: rearrange to create two self-contained
10152         libraries, to avoid having libraries with overlapping symbols.
10153         that was resulting in weirdness, e.g. I'm pretty sure there
10154         were two copies of global static variables.
10155
10156         * dbus/dbus-internals.c: move the malloc debug stuff to
10157         dbus-memory.c
10158
10159         * dbus/dbus-list.c (free_link): free list mempool if it becomes
10160         empty.
10161
10162         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
10163
10164         * dbus/dbus-address.c (dbus_parse_address): free list nodes
10165         on failure.
10166
10167         * bus/dispatch.c (bus_dispatch_add_connection): free
10168         message_handler_slot when no longer using it, so
10169         memory leak checkers are happy for the test suite.
10170
10171         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
10172
10173         * bus/bus.c (new_connection_callback): disconnect in here if
10174         bus_connections_setup_connection fails.
10175
10176         * bus/connection.c (bus_connections_unref): fix to free the
10177         connections
10178         (bus_connections_setup_connection): if this fails, don't
10179         disconnect the connection, just be sure there are no side
10180         effects.
10181
10182         * dbus/dbus-string.c (undo_alignment): unbreak this
10183
10184         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
10185         leaking
10186         (_dbus_auth_new): fix the order in which we free strings
10187         on OOM failure
10188
10189         * bus/connection.c (bus_connection_disconnected): fix to
10190         not send ServiceDeleted multiple times in case of memory
10191         allocation failure
10192
10193         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
10194         get the base service name
10195         (dbus_bus_register_client): don't return base service name,
10196         instead store it on the DBusConnection and have an accessor
10197         function for it.
10198         (dbus_bus_register_client): rename dbus_bus_register()
10199
10200         * bus/dispatch.c (check_hello_message): verify that other
10201         connections on the bus also got the correct results, not
10202         just the one sending hello
10203
10204 2003-03-15  Havoc Pennington  <hp@pobox.com>
10205
10206         Make it pass the Hello handling test including all OOM codepaths.
10207         Now to do other messages...
10208
10209         * bus/services.c (bus_service_remove_owner): fix crash when
10210         removing owner from an empty list of owners
10211         (bus_registry_ensure): don't leave service in the list of
10212         a connection's owned services if we fail to put the service
10213         in the hash table.
10214
10215         * bus/connection.c (bus_connection_preallocate_oom_error): set
10216         error flag on the OOM error.
10217
10218         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
10219         handle _dbus_transport_set_connection failure
10220
10221         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
10222         to create watches up front and simply enable/disable them as
10223         needed.
10224         (unix_connection_set): this can now fail on OOM
10225
10226         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
10227         of enabling/disabling a watch or timeout.
10228
10229         * bus/loop.c (bus_loop_iterate): don't touch disabled
10230         watches/timeouts
10231
10232         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
10233
10234 2003-03-15  Havoc Pennington  <hp@pobox.com>
10235
10236         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
10237         write useful test code, after all that futzing around ;-)
10238
10239         Test does not yet pass because we can't handle OOM in
10240         _dbus_transport_messages_pending (basically,
10241         dbus_connection_preallocate_send() does not prealloc the write
10242         watch). To fix this, I think we need to add new stuff to
10243         set_watch_functions, namely a SetEnabled function so we can alloc
10244         the watch earlier, then enable it later.
10245
10246         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
10247         dbus-memory.c to the convenience lib
10248
10249         * bus/test.c: rename some static functions to keep them clearly
10250         distinct from stuff in connection.c. Handle client disconnection.
10251
10252 2003-03-14  Havoc Pennington  <hp@pobox.com>
10253
10254         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
10255         transport, tests more of the real codepath. Set up clients
10256         with bus_setup_debug_client.
10257
10258         * bus/test.c (bus_setup_debug_client): function to set up debug
10259         "clients" on the main loop
10260
10261         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
10262         support
10263
10264         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe
10265         server type
10266
10267         * dbus/dbus-server-debug.c: support a debug server based on pipes
10268
10269         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
10270         (_dbus_close): new function
10271
10272         * configure.in: check for socketpair
10273
10274 2003-03-14  Havoc Pennington  <hp@redhat.com>
10275
10276         * dbus/dbus-memory.c: add a "detect buffer overwrites on free"
10277         cheesy hack
10278
10279         * dbus/dbus-transport-debug.c: rework this a good bit to be
10280         less complicated. hopefully still works.
10281
10282         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
10283         manually
10284
10285         * glib/dbus-gmain.c (timeout_handler): don't remove timeout
10286         after running it
10287
10288         * dbus/dbus-message.c (dbus_message_copy): rename from
10289         dbus_message_new_from_message, fix it up to copy
10290         all the message fields, add test case
10291
10292         * bus/dispatch.c (bus_dispatch_test): add some more test code,
10293         not quite passing yet
10294
10295 2003-03-14  Havoc Pennington  <hp@pobox.com>
10296
10297         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
10298         until no work remains" in test code. (the large diff here
10299         is just code movement, no actual changes)
10300
10301         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
10302         1, no point waiting around for test code.
10303         (_dbus_server_debug_accept_transport): unref the timeout
10304         after adding it (right?)
10305
10306         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
10307
10308 2003-03-13  Havoc Pennington  <hp@redhat.com>
10309
10310         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
10311         out of memory
10312
10313         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
10314         of memory
10315
10316         * dbus/dbus-connection.h: Make AddWatchFunction and
10317         AddTimeoutFunction return a bool so they can fail on out-of-memory
10318
10319         * bus/bus.c (bus_context_new): set up timeout handlers
10320
10321         * bus/connection.c (bus_connections_setup_connection): set up
10322         timeout handlers
10323
10324         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
10325         can fail
10326
10327         * bus/bus.c (bus_context_new): adapt to changes
10328
10329         * bus/connection.c: adapt to changes
10330
10331         * test/watch.c: adapt to DBusWatch changes
10332
10333         * bus/dispatch.c (bus_dispatch_test): started adding this but
10334         didn't finish
10335
10336 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
10337
10338         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
10339
10340 2003-03-13  Havoc Pennington  <hp@pobox.com>
10341
10342         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
10343         set up a test framework as for the library
10344
10345 2003-03-12  Havoc Pennington  <hp@pobox.com>
10346
10347         Throughout: purge global variables, introduce BusActivation,
10348         BusConnections, BusRegistry, etc. objects instead.
10349
10350         * bus/bus.h, bus/bus.c: introduce BusContext as a global
10351         message bus object
10352
10353         * test/Makefile.am (TEST_BINARIES): disable bus-test for now,
10354         going to redo this a bit differently I think
10355
10356 2003-03-12  Havoc Pennington  <hp@redhat.com>
10357
10358         Mega-patch that gets the message bus daemon initially handling
10359         out-of-memory. Work still needed. Also lots of random
10360         moving stuff to DBusError instead of ResultCode.
10361
10362         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
10363
10364         * dbus/dbus-connection.c
10365         (dbus_connection_send_with_reply_and_block): use DBusError
10366
10367         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
10368         DBusResultCode
10369
10370         * dbus/dbus-connection.c (dbus_connection_send): drop the result
10371         code here, as the only failure possible is OOM.
10372
10373         * bus/connection.c (bus_connection_disconnect):
10374         rename bus_connection_disconnected as it's a notification only
10375
10376         * bus/driver.c (bus_driver_handle_acquire_service): don't free
10377         "name" on get_args failure, should be done by get_args;
10378         don't disconnect client for bad args, just return an error.
10379         (bus_driver_handle_service_exists): ditto
10380
10381         * bus/services.c (bus_services_list): NULL-terminate returned array
10382
10383         * bus/driver.c (bus_driver_send_service_lost)
10384         (bus_driver_send_service_acquired): send messages from driver to a
10385         specific client to the client's unique name, not to the broadcast
10386         service.
10387
10388         * dbus/dbus-message.c (decode_header_data): reject messages that
10389         contain no name field
10390         (_dbus_message_get_client_serial): rename to
10391         dbus_message_get_serial and make public
10392         (_dbus_message_set_serial): rename from set_client_serial
10393         (_dbus_message_set_reply_serial): make public
10394         (_dbus_message_get_reply_serial): make public
10395
10396         * bus/connection.c (bus_connection_foreach): allow stopping
10397         iteration by returning FALSE from foreach function.
10398
10399         * dbus/dbus-connection.c (dbus_connection_send_preallocated)
10400         (dbus_connection_free_preallocated_send)
10401         (dbus_connection_preallocate_send): new API for sending a message
10402         without possibility of malloc failure.
10403         (dbus_connection_send_message): rename to just
10404         dbus_connection_send (and same for whole function family)
10405
10406         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
10407
10408         * dbus/dbus-sysdeps.c (_dbus_exit): new function
10409
10410         * bus/activation.c: handle/return errors
10411
10412         * dbus/dbus-errors.h: add more DBUS_ERROR #define
10413
10414         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
10415         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
10416         (_dbus_result_from_errno): move to this file
10417
10418 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
10419
10420         * dbus/dbus-marshal.c:
10421         (_dbus_marshal_set_string):
10422         Take a length argument so we can marshal the correct string
10423         length.
10424
10425         (_dbus_marshal_dict), (_dbus_demarshal_dict),
10426         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
10427         (_dbus_marshal_test):
10428         * dbus/dbus-marshal.h:
10429         Add support for marshalling and demarshalling dicts.
10430
10431         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10432         Add support for TYPE DICT.
10433
10434         * dbus/dbus-message.c: (set_string_field):
10435         Adjust header padding.
10436
10437         (dbus_message_append_args_valist), (dbus_message_append_dict),
10438         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
10439         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
10440         (check_message_handling), (check_have_valid_message):
10441         * dbus/dbus-message.h:
10442         Add functions for setting and getting dicts.
10443
10444         * dbus/dbus-protocol.h:
10445         Add DBUS_TYPE_DICT.
10446
10447         * dbus/dbus.h:
10448         Add dbus-dict.h
10449
10450         * doc/dbus-specification.sgml:
10451         Add information about how dicts are marshalled.
10452
10453         * test/data/invalid-messages/dict-with-nil-value.message:
10454         * test/data/invalid-messages/too-short-dict.message:
10455         * test/data/valid-messages/dict-simple.message:
10456         * test/data/valid-messages/dict.message:
10457         Add sample messages containing dicts.
10458
10459 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
10460
10461         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
10462
10463 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
10464
10465         * dbus/Makefile.am:
10466         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
10467         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
10468         (dbus_dict_set_int32), (dbus_dict_set_uint32),
10469         (dbus_dict_set_double), (dbus_dict_set_string),
10470         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
10471         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
10472         (dbus_dict_set_string_array), (_dbus_dict_test):
10473         * dbus/dbus-dict.h:
10474         Fix according to comments from Havoc.
10475
10476 2003-03-06  Michael Meeks  <michael@server.home>
10477
10478         * configure.in: if we don't have kde-config, disable have_qt.
10479
10480 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
10481
10482         * dbus/Makefile.am:
10483         Add dbus-dict.[ch]
10484
10485         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
10486         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
10487         (dbus_dict_remove), (dbus_dict_get_value_type),
10488         (dbus_dict_get_keys), (dbus_dict_put_boolean),
10489         (dbus_dict_put_int32), (dbus_dict_put_uint32),
10490         (dbus_dict_put_double), (dbus_dict_put_string),
10491         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
10492         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
10493         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
10494         (dbus_dict_get_int32), (dbus_dict_get_uint32),
10495         (dbus_dict_get_double), (dbus_dict_get_string),
10496         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
10497         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
10498         (dbus_dict_get_string_array), (_dbus_dict_test):
10499         * dbus/dbus-dict.h:
10500         Add DBusDict implementation
10501
10502         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
10503         * dbus/dbus-test.h:
10504         Add _dbus_dict_test
10505
10506 2003-03-04  Havoc Pennington  <hp@pobox.com>
10507
10508         * test/data/auth/*: adapt to changes
10509
10510         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
10511         USERID_BASE64 and change USERNAME_BASE64 to put in username not
10512         userid
10513
10514         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
10515         more stuff from being in a context name, to make the protocol
10516         simpler to deal with
10517
10518         * dbus/dbus-errors.c (dbus_error_has_name): new function
10519         (dbus_error_is_set): new function
10520
10521         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
10522         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
10523
10524         * dbus/dbus-connection.c (dbus_connection_flush): also read
10525         messages during a flush operation
10526
10527         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
10528
10529 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10530
10531         * configure.in: Check for gethostbyname on Solaris.
10532
10533         * dbus/dbus-transport.c: (_dbus_transport_open):
10534         Remove duplicate "tcp" entry.
10535
10536         * doc/dbus-specification.sgml:
10537         Clarify some things.
10538
10539 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10540
10541         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
10542         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
10543         (_dbus_keyring_test):
10544         * dbus/dbus-md5.c: (_dbus_md5_compute):
10545         * dbus/dbus-sha.c: (_dbus_sha_compute):
10546         Plug memory leaks.
10547
10548 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
10549
10550         * README: Add some things.
10551
10552 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
10553
10554         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
10555         after case DBUS_TYPE_BOOELAN.
10556
10557 2003-03-02  Havoc Pennington  <hp@pobox.com>
10558
10559         * test/break-loader.c (randomly_set_extreme_ints): add test that
10560         sets really huge and small integers
10561
10562         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
10563         that length of boolean array fits in the string, and that
10564         string has room for boolean value in single-bool case.
10565
10566         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
10567         optional value to "ALIGN" command which is what to fill the
10568         alignment with.
10569
10570         * test/data/valid-messages/no-padding.message: add regression
10571         test for the message padding problem
10572
10573 2003-03-02  Havoc Pennington  <hp@pobox.com>
10574
10575         * dbus/dbus-message.c (decode_header_data): fix to always init
10576         message_padding, from Benjamin Dauvergne
10577
10578 2003-03-02  Havoc Pennington  <hp@pobox.com>
10579
10580         * configure.in: 0.5
10581
10582         * NEWS: Update.
10583
10584 2003-03-01  Joe Shaw  <joe@assbarn.com>
10585
10586         * configure.in: Check for "struct cmsgcred" and try to access its
10587         members for BSD-like unices.
10588
10589         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
10590         _dbus_read_credentials_unix_socket().
10591         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
10592         read() for reading the credential byte off the unix socket.  Use
10593         struct cmsgcred on systems that support it.
10594
10595 2003-02-27  Alexander Larsson  <alexl@redhat.com>
10596
10597         * glib/Makefile.am:
10598         * configure.in:
10599         Make gthreads-2.0 dependency optional. Don't build thread test if
10600         its not found.
10601
10602 2003-02-27  Havoc Pennington  <hp@pobox.com>
10603
10604         * dbus/dbus-connection.c
10605         (dbus_connection_send_message_with_reply_and_block): fix doh!
10606         doh! doh! bug that resulted in never removing a reply from the
10607         queue, no wonder we called get_reply_serial so much ;-)
10608
10609         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
10610         and client serial instead of demarshaling them every time
10611
10612 2003-02-27  Havoc Pennington  <hp@pobox.com>
10613
10614         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
10615         more inlined, using dbus-string-private.h, speeds things up
10616         substantially
10617
10618         * dbus/dbus-string.c (_dbus_string_free): apply align offset
10619         when freeing the string
10620         (_dbus_string_steal_data): fix for align offset
10621         (undo_alignment): new function
10622
10623 2003-02-26  Havoc Pennington  <hp@redhat.com>
10624
10625         All kinds of audit fixes from Owen, plus initial attempt to
10626         handle unaligned memory returned from malloc.
10627
10628         * dbus/dbus-string.c (_dbus_string_init): clamp max length to
10629         leave room for align_offset and nul byte
10630         (fixup_alignment): function to track an align_offset and
10631         ensure real->str is aligned
10632         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
10633         to allow a nul byte plus align offset
10634         (_dbus_string_lock): fix overflow issue
10635         (_dbus_string_init_const_len): add assertions on sanity of len,
10636         assign allocated to be ALLOCATION_PADDING larger than len
10637         (set_length): fixup the overflow handling
10638         (_dbus_string_get_data_len): fix overflow in assertion
10639         (open_gap): detect overflow in size of gap to be opened
10640         (_dbus_string_lengthen): add overflow check
10641         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
10642         (_dbus_string_append): add overflow check
10643         (_dbus_string_append_unichar): overflow
10644         (_dbus_string_delete): fix overflow in assertion
10645         (_dbus_string_copy_len): overflow in assertion
10646         (_dbus_string_replace_len): overflows in assertions
10647         (_dbus_string_find): change to implement in terms of
10648         _dbus_string_find_to
10649         (_dbus_string_find_to): assorted fixage
10650         (_dbus_string_equal_c_str): assert c_str != NULL,
10651         fix logic so the function works
10652         (_dbus_string_ends_with_c_str): fix overflow thingy
10653         (_dbus_string_base64_encode): overflow fix
10654         (_dbus_string_validate_ascii): overflow
10655         (_dbus_string_validate_nul): overflow
10656
10657 2003-02-26  Havoc Pennington  <hp@redhat.com>
10658
10659         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
10660
10661 2003-02-26  Alexander Larsson  <alexl@redhat.com>
10662
10663         * configure.in:
10664         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
10665
10666         * dbus/dbus-connection.c:
10667         * dbus/dbus-connection.h:
10668         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
10669         Add dbus_connection_set_wakeup_main_function and use it when queueing
10670         incoming and outgoing messages.
10671
10672
10673         * dbus/dbus-dataslot.c:
10674         Threadsafe usage of DBusDataSlotAllocator
10675
10676         * dbus/dbus-message.c: (dbus_message_get_args_iter):
10677         dbus_new can fail.
10678
10679         * dbus/dbus-server-unix.c:
10680         Add todo comment
10681
10682         * glib/dbus-gmain.c:
10683         Implement the new wakeup functions for glib.
10684
10685         * glib/Makefile.am:
10686         * glib/test-thread-client.c:
10687         * glib/test-thread-server.c:
10688         * glib/test-thread.h:
10689         Initial cut at some thread test code. Not really done yet.
10690
10691 2003-02-26  Havoc Pennington  <hp@pobox.com>
10692
10693         * dbus/dbus-connection.c
10694         (dbus_connection_send_message_with_reply_and_block): fix crash
10695         where we ref'd the outgoing message instead of the returned reply
10696
10697         * dbus/dbus-transport-unix.c (do_authentication): check read watch
10698         at the end of this function, so if we didn't need to read for
10699         authentication, we reinstall it for receiving messages
10700
10701         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to
10702         a NULL sender for peer-to-peer case
10703
10704         * dbus/dbus-transport-unix.c (check_read_watch): handle
10705         !authenticated case correctly
10706
10707         * glib/dbus-gmain.c: add support for DBusServer
10708
10709         * dbus/dbus-server.c: add data slot support
10710
10711         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
10712         return values and handle errors
10713
10714         * dbus/dbus-dataslot.c: factor out the data slot stuff from
10715         DBusConnection
10716
10717         * Doxyfile.in (INPUT): add glib subdir
10718
10719         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
10720         setup_with_g_main instead of hookup_with_g_main; write docs
10721
10722 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
10723
10724         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
10725         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10726         * dbus/dbus-message.c: (dbus_message_append_boolean),
10727         (dbus_message_append_boolean_array),
10728         (dbus_message_get_args_valist), (_dbus_message_test):
10729         * dbus/dbus-message.h:
10730         * doc/dbus-specification.sgml:
10731         Various fixes as pointed out by Havoc.
10732
10733         * test/data/invalid-messages/bad-boolean-array.message:
10734         * test/data/invalid-messages/bad-boolean.message:
10735         Add invalid boolean value test cases.
10736
10737 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
10738
10739         * dbus/dbus-internals.c: (_dbus_type_to_string):
10740         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
10741         (_dbus_marshal_validate_arg):
10742         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10743         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10744         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
10745         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
10746         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
10747         (dbus_message_iter_get_double),
10748         (dbus_message_iter_get_boolean_array), (message_iter_test):
10749         * dbus/dbus-message.h:
10750         * dbus/dbus-protocol.h:
10751         * doc/dbus-specification.sgml:
10752         * test/data/valid-messages/lots-of-arguments.message:
10753         Add support for boolean and boolean array types.
10754
10755 2003-02-23  Havoc Pennington  <hp@pobox.com>
10756
10757         * dbus/dbus-keyring.c: finish most of this implementation and
10758         simple unit test
10759
10760         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
10761         these barf if the error isn't cleared to NULL
10762
10763         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
10764         (_dbus_create_directory): new function
10765
10766         * dbus/dbus-errors.c (dbus_set_error): fix warning
10767
10768         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
10769         (_dbus_string_hex_decode): new function
10770         (test_hex_roundtrip): test code
10771
10772         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
10773
10774         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
10775
10776         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
10777         the save-to-temp/rename trick to atomically write the new file
10778         (_dbus_string_parse_uint): new function
10779
10780 2003-02-22  Havoc Pennington  <hp@pobox.com>
10781
10782         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
10783
10784 2003-02-22  Havoc Pennington  <hp@pobox.com>
10785
10786         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
10787         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
10788
10789         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
10790
10791         * dbus/test/data/sha-1: add US government test suite for SHA-1
10792
10793 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10794
10795         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
10796         Make string arrays NULL-terminated.
10797
10798         * dbus/dbus-memory.c: (dbus_free_string_array):
10799         * dbus/dbus-memory.h:
10800         New function for freeing NULL-terminated string arrays.
10801
10802         * dbus/dbus-message-builder.c: (append_quoted_string),
10803         (_dbus_message_data_load):
10804         Add support for array types.
10805
10806         * dbus/dbus-message.c: (check_message_handling):
10807         Add more types as test cases.
10808
10809         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
10810         (_dbus_string_parse_double):
10811         Add the start offset to the end offset.
10812
10813         * test/data/valid-messages/lots-of-arguments.message:
10814         New test message with lots of arguments.
10815
10816 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10817
10818         * dbus/dbus-message.c: (dbus_message_append_nil),
10819         (dbus_message_append_int32), (dbus_message_append_uint32),
10820         (dbus_message_append_double), (dbus_message_append_string),
10821         (dbus_message_append_int32_array),
10822         (dbus_message_append_uint32_array),
10823         (dbus_message_append_double_array),
10824         (dbus_message_append_byte_array),
10825         (dbus_message_append_string_array):
10826         Fix all out-of-memory handling in these functions.
10827
10828 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10829
10830         * dbus/dbus-message.c: (dbus_message_append_nil):
10831         Fix a silly.
10832
10833 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10834
10835         * dbus/dbus-message.c: (dbus_message_append_args_valist),
10836         (dbus_message_append_nil), (dbus_message_append_int32_array),
10837         (dbus_message_append_uint32_array),
10838         (dbus_message_append_double_array),
10839         (dbus_message_append_byte_array),
10840         (dbus_message_append_string_array), (dbus_message_get_args_valist),
10841         (dbus_message_iter_get_int32_array),
10842         (dbus_message_iter_get_uint32_array),
10843         (dbus_message_iter_get_double_array),
10844         (dbus_message_iter_get_byte_array),
10845         (dbus_message_iter_get_string_array):
10846
10847         * dbus/dbus-message.h:
10848         Add functions for appending and getting arrays.
10849
10850 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
10851
10852         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
10853         element size at least 8 bytes, fixes mempool tests on
10854         64-bit machines.
10855
10856 2003-02-20  Alexander Larsson  <alexl@redhat.com>
10857
10858         * dbus/dbus-transport-unix.c (unix_do_iteration):
10859         Unlock the connection mutex during a blocking select call.
10860         Add todo about how we need a way to wake up the select.
10861
10862         * dbus/dbus-connection-internal.h:
10863         * dbus/dbus-connection.c:
10864         Add _dbus_connection_lock and _dbus_connection_unlock.
10865
10866 2003-02-19  Havoc Pennington  <hp@pobox.com>
10867
10868         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
10869         Doxyfile.in, not Doxyfile
10870
10871         * dbus/dbus-keyring.c: do some hacking on this
10872
10873         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
10874
10875         * dbus/dbus-errors.c (dbus_set_error_const): do not call
10876         dbus_error_init
10877         (dbus_set_error): remove dbus_error_init, check for message ==
10878         NULL *before* we sprintf into it, and add @todo about including
10879         system headers in this file
10880
10881         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
10882
10883         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
10884
10885         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
10886         get various bits of user information based on either username
10887         or user ID
10888         (_dbus_homedir_from_username): new function
10889
10890 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
10891
10892         * configure.in:
10893         Add check for nonposix getpwnam_r
10894
10895         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
10896         Align the pool element size to a sizeof (void *) boundary.
10897
10898         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
10899         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
10900         General Solaris fixes.
10901
10902         * test/data/valid-messages/simplest-manual.message:
10903         Explicitly state that we want little-endian packing.
10904
10905 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
10906
10907         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
10908
10909         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
10910         Added to create a transport connecting using a tcp/ip socket.
10911
10912         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
10913         to a tcp socket at given host and port.
10914         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
10915         hostname and port.
10916
10917         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
10918
10919         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
10920         Added to create a server listening on a TCP/IP socket.
10921
10922 2003-02-19  Havoc Pennington  <hp@pobox.com>
10923
10924         Throughout: mop up all the Doxygen warnings and undocumented
10925         stuff.
10926
10927         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
10928         to search any paths.
10929
10930         * dbus/dbus-threads.c: move global mutex initializers to
10931         dbus-internals.h, multiple prototypes was confusing doxygen
10932         besides being kind of ugly
10933
10934         * Doxyfile (PREDEFINED): have Doxygen define
10935         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from
10936         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
10937         (do not abuse the feature! it's for stuff like the autogenerated
10938         macros in dbus-md5.c, not just for things you don't feel like
10939         documenting...)
10940
10941 2003-02-18  Havoc Pennington  <hp@pobox.com>
10942
10943         * dbus/dbus-string.c (_dbus_string_zero): new function
10944
10945         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
10946         wrap it in some dbus-friendly API
10947
10948         * dbus/dbus-types.h: add 16-bit types
10949
10950 2003-02-18  Joe Shaw  <joe@assbarn.com>
10951
10952         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
10953         credentials from our currently running process.
10954         (get_word): Fix a buglet where we were copying the entire length
10955         instead of relative to our position.
10956
10957         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
10958         keys on the stack... it's 640k of data.
10959
10960         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
10961         read the credentials byte off the socket, even if we don't have
10962         SO_PEERCRED.
10963         (_dbus_poll): Implement poll() using select() for systems which
10964         don't have it.
10965
10966         * glib/test-dbus-glib.c (main): Print out an error if no
10967         parameters are given.
10968
10969         * test/data/auth/fallback.auth-script: Added.  Tests that a client
10970         can fallback to a secondary auth mechanism if the first fails.
10971
10972 2003-02-18  Havoc Pennington  <hp@pobox.com>
10973
10974         * AUTHORS: add Alex
10975
10976 2003-02-17  Havoc Pennington  <hp@pobox.com>
10977
10978         * doc/dbus-specification.sgml: lots of cosmetic
10979         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
10980         env variable to DBUS_BUS_ADDRESS, s/client/application/,
10981         s/server/bus/ (except in authentication section). Add a section
10982         "Message Bus Message Routing"
10983
10984 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
10985
10986         Release 0.4
10987
10988         * NEWS: Update
10989
10990 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
10991
10992         * doc/dbus-specification.sgml:
10993         Specification updates.
10994
10995 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
10996
10997         * bus/activation.c: (bus_activation_init), (child_setup),
10998         (bus_activation_activate_service):
10999         * bus/activation.h:
11000         * bus/main.c: (main):
11001         Set DBUS_ADDRESS environment variable.
11002
11003         * dbus/dbus-errors.c: (dbus_set_error):
11004         Don't use va_copy since that's a C99 feature.
11005
11006         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
11007         (_dbus_spawn_async):
11008         * dbus/dbus-sysdeps.h:
11009         Add child_setup_func to _dbus_spawn_async.
11010
11011         * doc/dbus-specification.sgml:
11012         Update specification.
11013
11014         * test/spawn-test.c: (setup_func), (main):
11015         Fix test.
11016
11017 2003-02-17  Alexander Larsson  <alexl@redhat.com>
11018
11019         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
11020         Added todo.
11021
11022 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11023
11024         * doc/.cvsignore:
11025         * doc/Makefile.am:
11026         * doc/dbus-test-plan.sgml:
11027         Add test plan document.
11028
11029         * test/Makefile.am:
11030         Fix distcheck.
11031
11032 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
11033
11034         * dbus/dbus-message.c: (decode_header_data),
11035         (_dbus_message_loader_return_buffer):
11036         Set the header padding amount when loading a message.
11037
11038 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11039
11040         * bus/dispatch.c: (send_one_message):
11041         Only send broadcast messages to registered connections.
11042
11043         * dbus/dbus-message.c: (dbus_message_name_is):
11044         * dbus/dbus-message.h:
11045         New convenience function.
11046
11047         * dbus/dbus-transport-debug.c: (do_reading):
11048         Only dispatch one message per run.
11049
11050         * test/Makefile.am:
11051         * test/bus-test.c: (new_connection_callback), (die),
11052         (test_hello_client1_handler), (test_hello_client2_handler),
11053         (test_hello_replies), (main):
11054
11055         * test/bus-test-loop.[ch]:
11056         Add these.
11057
11058 2003-02-16  Havoc Pennington  <hp@pobox.com>
11059
11060         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
11061         backward conditional
11062
11063 2003-02-16  Alexander Larsson  <alexl@redhat.com>
11064
11065         * dbus/dbus-connection.c:
11066         Implement sent_message_with_reply. (with_reply_and block is still
11067         busted).
11068         Made dispatch_message not lose message if OOM.
11069
11070         * dbus/dbus-errors.h:
11071         Add NoReply error (for reply timeouts).
11072
11073 2003-02-16  Alexander Larsson  <alexl@redhat.com>
11074
11075         * dbus/dbus-hash.c (_dbus_hash_table_unref):
11076         Actually free keys and values when destroying hashtable.
11077
11078 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11079
11080         * dbus/dbus-auth.c: (client_try_next_mechanism):
11081         Plug a leak.
11082
11083         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
11084         Return TRUE if there's no thread implementation around.
11085
11086         * glib/dbus-gmain.c: (free_source),
11087         (dbus_connection_hookup_with_g_main):
11088         Make sure to remove the GSource when the connection is finalized.
11089
11090 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11091
11092         * bus/dispatch.c: (bus_dispatch_message_handler):
11093         * dbus/dbus-errors.h:
11094         Return an error if someone tries to send a message to a service
11095         that doesn't exist.
11096
11097 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
11098
11099         * bus/activation.c: (load_directory), (bus_activation_init),
11100         (bus_activation_activate_service):
11101         * bus/activation.h:
11102         * bus/driver.c:
11103         (bus_driver_handle_activate_service), (bus_driver_handle_message):
11104         More work on the activation handling.
11105
11106         * dbus/dbus-errors.h:
11107         Add some error messages
11108
11109         * dbus/dbus-message.c: (dbus_message_new_error_reply):
11110         * dbus/dbus-message.h:
11111         New function that creates an error message.
11112
11113         * dbus/dbus-protocol.h:
11114         Add ACTIVATE_SERVER message.
11115
11116         * dbus/dbus-server-unix.c: (unix_handle_watch),
11117         (_dbus_server_new_for_domain_socket):
11118         Call _dbus_fd_set_close_on_exec.
11119
11120         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
11121         (_dbus_spawn_async), (_dbus_disable_sigpipe),
11122         (_dbus_fd_set_close_on_exec):
11123         * dbus/dbus-sysdeps.h:
11124         Add _dbus_fd_set_close_on exec function. Also add function that checks
11125         that all open fds are set to close-on-exec and warns otherwise.
11126
11127         * dbus/dbus-transport-unix.c:
11128         (_dbus_transport_new_for_domain_socket):
11129         Call _dbus_fd_set_close_on_exec.
11130
11131 2003-02-16  Havoc Pennington  <hp@pobox.com>
11132
11133         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
11134         allow people to avoid setting SIGPIPE to SIG_IGN
11135         (_dbus_connection_new_for_transport): disable SIGPIPE unless
11136         we've been asked not to
11137
11138 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11139
11140         * dbus/dbus-list.c: (_dbus_list_append_link),
11141         (_dbus_list_prepend_link):
11142         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
11143         (dbus_realloc):
11144         Warning fixes.
11145
11146 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11147
11148         * bus/Makefile.am:
11149         * bus/activation.c: (bus_activation_entry_free),
11150         (add_desktop_file_entry), (load_directory), (bus_activation_init):
11151         * bus/activation.h:
11152         * bus/main.c: (main):
11153         Add simple activation support, doesn't work yet though.
11154
11155 2003-02-15   Zack Rusin  <zack@kde.org>
11156
11157         * qt/dbus-qthread.cpp:  small casting fix
11158
11159 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11160
11161         * dbus/dbus-errors.c: (dbus_set_error):
11162         * dbus/dbus-errors.h:
11163         Add a few errors and make dbus_set_error void.
11164
11165         * dbus/dbus-sysdeps.c:
11166         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
11167         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
11168         * dbus/dbus-sysdeps.h:
11169         Add _dbus_spawn_async.
11170
11171         * test/spawn-test.c: (main):
11172         Test for _dbus_spawn_async.
11173
11174 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
11175
11176         * dbus/dbus-internals.h:
11177         Fix build without tests.
11178
11179         * dbus/dbus-list.c: (alloc_link):
11180         Fix a segfault when a malloc fails.
11181
11182         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
11183         (dbus_malloc0), (dbus_realloc):
11184         Add support for malloc debugging.
11185
11186 2003-02-15  Alexander Larsson  <alexl@redhat.com>
11187
11188         * dbus/dbus-threads.c:
11189         * dbus/dbus-threads.h:
11190         Add condvars. Remove static mutext from API.
11191         Implement static mutexes by initializing them from threads_init.
11192
11193         * glib/dbus-gthread.c:
11194         * qt/dbus-qthread.cpp:
11195         Update with the thread api changes.
11196
11197
11198         * dbus/dbus-list.c:
11199         * dbus/dbus-list.h:
11200         Turn StaticMutex into normal mutex + init function.
11201         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
11202         _dbus_list_append_link, _dbus_list_prepend_link
11203
11204
11205         * dbus/dbus-sysdeps.c:
11206         * dbus/dbus-sysdeps.h:
11207         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
11208         _dbus_atomic_dec. Only slow fallback implementation at the moment.
11209
11210         * dbus/dbus-protocol.h:
11211         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
11212
11213         * dbus/dbus-message.c:
11214         Make ref/unref atomic.
11215         Fix some docs.
11216
11217         * dbus/dbus-connection-internal.h:
11218         * dbus/dbus-connection.c:
11219         * dbus/dbus-connection.h:
11220         Make threadsafe.
11221         Change _peek to _borrow,_return & _steal_borrowed.
11222         Change disconnect callback to event.
11223         Make dbus_connection_dispatch_messages reentrant.
11224
11225         * dbus/dbus-transport.c:
11226         Don't ref the connection on calls to the transport
11227         implementation.
11228
11229         * dbus/dbus-message-handler.c:
11230         Make threadsafe.
11231
11232         * glib/dbus-gmain.c:
11233         Don't use peek_message anymore
11234
11235         * test/Makefile.am:
11236         * test/debug-thread.c:
11237         * test/debug-thread.h:
11238         Simple thread implementation that asserts() on deadlocks in
11239         single-threaded code.
11240
11241         * test/bus-test.c:
11242         (main) Call debug_threads_init.
11243
11244         * test/watch.c:
11245         Use disconnect message instead of disconnect callback.
11246
11247         * bus/connection.c:
11248         * bus/connection.h:
11249         Don't call dbus_connection_set_disconnect_function. Instead export
11250         bus_connection_disconnect.
11251
11252         * bus/dispatch.c:
11253         Call bus_connection_disconnect when we get a disconnected message.
11254
11255 2003-02-15  Havoc Pennington  <hp@pobox.com>
11256
11257         * dbus/dbus-message.c (dbus_message_new): fool around with the
11258         docs
11259
11260 2003-02-14  Havoc Pennington  <hp@pobox.com>
11261
11262         * dbus/dbus-mempool.c: fail if the debug functions so indicate
11263
11264         * dbus/dbus-memory.c: fail if the debug functions indicate we
11265         should
11266
11267         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
11268         (_dbus_decrement_fail_alloc_counter): debug functions to
11269         simulate memory allocation failures
11270
11271 2003-02-14  Havoc Pennington  <hp@pobox.com>
11272
11273         * dbus/dbus-errors.h (struct DBusError): add a word of padding
11274         to DBusError
11275
11276 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11277
11278         * bus/driver.c: (bus_driver_handle_hello):
11279         * bus/driver.h:
11280         * bus/services.c: (bus_service_lookup):
11281         Reorder message sending so we get a more sane order.
11282
11283         * test/bus-test.c: (message_handler):
11284         Fix tyop.
11285
11286 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11287
11288         * bus/driver.c: (bus_driver_send_service_deleted),
11289         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11290         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
11291         (bus_driver_send_welcome_message),
11292         (bus_driver_handle_list_services),
11293         (bus_driver_handle_acquire_service),
11294         (bus_driver_handle_service_exists):
11295         * dbus/dbus-bus.c: (dbus_bus_register_client),
11296         (dbus_bus_acquire_service), (dbus_bus_service_exists):
11297         * dbus/dbus-errors.c: (dbus_result_to_string):
11298         * dbus/dbus-errors.h:
11299         * dbus/dbus-message.c: (dbus_message_append_args),
11300         (dbus_message_append_args_valist), (dbus_message_get_args),
11301         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
11302         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
11303         (dbus_message_iter_get_byte_array),
11304         (dbus_message_iter_get_string_array), (message_iter_test),
11305         (check_message_handling), (_dbus_message_test):
11306         * dbus/dbus-message.h:
11307         * test/bus-test.c: (main):
11308         Change fields to arguments in messages, so that they won't be
11309         confused with header fields.
11310
11311         * glib/test-dbus-glib.c: (main):
11312         Remove append_fields from hello message.
11313
11314 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11315
11316         * dbus/dbus-errors.c:
11317         * dbus/dbus-message.c:
11318         * dbus/dbus-string.c:
11319         Documentation fixes.
11320
11321 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11322
11323         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
11324         (remove_timeout):
11325         Implement support for timeouts in dbus-glib.
11326
11327 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11328
11329         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
11330         * dbus/dbus-message.c: (process_test_subdir):
11331         * test/break-loader.c: (find_breaks_based_on):
11332         Plug some memory leaks.
11333
11334 2003-02-13  Richard Hult  <rhult@codefactory.se>
11335
11336         * bus/main.c: Fix build.
11337
11338         * dbus/dbus-errors.h:
11339         * dbus/dbus-errors.c: Fix copyright for Anders.
11340
11341 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11342
11343         * bus/Makefile.am:
11344         Add utils.[ch]
11345
11346         * bus/connection.c: (bus_connection_foreach):
11347         Fix a warning.
11348
11349         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
11350         (unescape_string), (new_section), (parse_section_start),
11351         (parse_key_value), (report_error), (bus_desktop_file_load),
11352         (bus_desktop_file_get_string):
11353         * bus/desktop-file.h:
11354         Use DBusError for error reporting.
11355
11356         * bus/dispatch.c: (send_one_message),
11357         (bus_dispatch_message_handler):
11358         * bus/driver.c: (bus_driver_send_service_deleted),
11359         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11360         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
11361         (bus_driver_send_welcome_message),
11362         (bus_driver_handle_list_services),
11363         (bus_driver_handle_acquire_service),
11364         (bus_driver_handle_service_exists):
11365         * bus/loop.c: (bus_loop_run):
11366         * bus/main.c:
11367         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
11368
11369         * bus/utils.c: (bus_wait_for_memory):
11370         * bus/utils.h:
11371         New files with general utility functions.
11372
11373         * dbus/dbus-internals.h:
11374         Remove _DBUS_HANDLE_OOM.
11375
11376 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11377
11378         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
11379         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
11380         * dbus/dbus-errors.h:
11381         Add DBusError structure.
11382
11383 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11384
11385         * test/data/valid-messages/standard-acquire-service.message:
11386         * test/data/valid-messages/standard-hello.message:
11387         * test/data/valid-messages/standard-list-services.message:
11388         * test/data/valid-messages/standard-service-exists.message:
11389         Add some standard messages.
11390
11391 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11392
11393         * bus/driver.c: (bus_driver_send_welcome_message),
11394         (bus_driver_handle_list_services),
11395         (bus_driver_handle_acquire_service),
11396         (bus_driver_handle_service_exists), (bus_driver_handle_message):
11397         Update for API changes in libdbus.
11398
11399         * dbus/dbus-message.c: (dbus_message_new_reply):
11400         * dbus/dbus-message.h:
11401         Remove the name argument. The spec states that replies shouldn't
11402         have a name.
11403
11404 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
11405
11406         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
11407         (report_error), (bus_desktop_file_load), (lookup_section),
11408         (lookup_line), (bus_desktop_file_get_raw),
11409         (bus_desktop_file_get_string):
11410         * bus/desktop-file.h:
11411         Some fixes, and new functions for getting a key value from a section.
11412
11413 2003-02-13  Havoc Pennington  <hp@pobox.com>
11414
11415         * test/data/auth/fail-after-n-attempts.auth-script: new test
11416
11417         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
11418         reject the client.
11419
11420 2003-02-13  Havoc Pennington  <hp@pobox.com>
11421
11422         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
11423         dbus_credentials_match were backward
11424
11425         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
11426         NO_CREDENTIALS and ROOT_CREDENTIALS
11427
11428         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine
11429         into here. Never process more commands after we've reached an
11430         end state; store further data as unused bytes.
11431
11432         * test/data/auth/*: add more auth tests
11433
11434         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
11435         command to match exact string and EXPECT_UNUSED to match unused
11436         bytes
11437
11438         * test/Makefile.am (dist-hook): fix to dist all the test stuff
11439
11440 2003-02-12  Havoc Pennington  <hp@pobox.com>
11441
11442         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
11443         \r off of popped lines
11444
11445         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
11446         scripts
11447
11448         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
11449         SEND, append \r\n
11450
11451 2003-02-12  Havoc Pennington  <hp@pobox.com>
11452
11453         * dbus/Makefile.am: remove break-loader from the build, since it
11454         moved.
11455
11456         * configure.in: add --enable-gcov to turn on coverage profiling
11457         flags and disable optimization
11458
11459 2003-02-10  Havoc Pennington  <hp@pobox.com>
11460
11461         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync
11462         initial cut at test framework for DBusAuth from laptop.
11463         Doesn't quite work yet but it compiles and I need to get
11464         it off the 266mhz laptop. ;-)
11465
11466         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
11467         fix a memleak in error case
11468
11469 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
11470
11471         * bus/Makefile.am:
11472         * bus/desktop-file.c:
11473         * bus/desktop-file.h:
11474         Add a desktop file parser.
11475
11476 2003-02-11  Zack Rusin  <zack@kde.org>
11477
11478         * qt/message.[h|cpp]: sample implementation
11479         of the KDE wrapper for DBusMessage
11480
11481 2003-02-09  Zack Rusin  <zack@kde.org>
11482
11483         * test/bus-test.c: make_it_compile
11484         * doc/dbus-specification.sgml: minimal semantic fix
11485
11486 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
11487
11488         Release 0.3
11489
11490         * NEWS: Update
11491
11492 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
11493
11494         * dbus/Makefile.am:
11495         * dbus/dbus-break-loader.c:
11496         * test/Makefile.am:
11497         * test/break-loader.c:
11498         Move dbus-break-loader to test/ and rename it to break-loader.
11499
11500 2003-02-02  Havoc Pennington  <hp@pobox.com>
11501
11502         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files
11503         for code to manage cookies in your home directory
11504
11505         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
11506
11507         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
11508         to authenticate, then disconnect the client.
11509
11510 2003-02-03  Alexander Larsson  <alexl@redhat.com>
11511
11512         * dbus/dbus-message.c (dbus_message_append_fields):
11513         Correct docs.
11514
11515 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11516
11517         * doc/dbus-specification.sgml:
11518         Update address format section.
11519
11520 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11521
11522         * test/Makefile.am:
11523         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
11524         (message_handler), (new_connection_callback), (loop_quit),
11525         (loop_run), (main):
11526         Add bus test.
11527
11528 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11529
11530         * bus/driver.c: (bus_driver_handle_service_exists):
11531         Simplify the code a bit.
11532
11533         * dbus/dbus-bus.c: (dbus_bus_service_exists):
11534         Fix a silly.
11535
11536 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11537
11538         * bus/Makefile.am:
11539         Add libdbus-daemon.la and link to it.
11540
11541 2003-02-01  James Willcox  <jwillcox@gnome.org>
11542
11543         * bus/driver.c: (bus_driver_handle_own_service):
11544         Actually include the service reply code in the message.
11545
11546 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11547
11548         * bus/driver.c: (bus_driver_handle_service_exists):
11549         Don't unref the incoming message.
11550
11551 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11552
11553         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
11554
11555 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
11556
11557         * dbus/dbus-server.c: (dbus_server_listen):
11558         * dbus/dbus-transport.c: (_dbus_transport_open):
11559         ifdef out the calls to the debug transport and server.
11560
11561 2003-02-02  Alexander Larsson  <alexl@redhat.com>
11562
11563         * dbus/dbus-watch.c (dbus_watch_get_flags):
11564         Add note in the docs that ERROR or HANGUP won't be returned
11565         and are assumed always on.
11566
11567         * glib/dbus-gmain.c (add_watch):
11568         Always add IO_ERR | IO_HUP
11569
11570         * dbus/dbus-message.h:
11571         Add semicolon after dbus_message_iter_get_string_array().
11572         Makes qt code build again
11573
11574 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
11575
11576         * bus/driver.c: (create_unique_client_name),
11577         (bus_driver_handle_hello):
11578         Don't take a name, just use a numeric id to identify
11579         each client.
11580
11581         * dbus/Makefile.am:
11582         * dbus/dbus-bus.c: (dbus_bus_register_client),
11583         (dbus_bus_acquire_service), (dbus_bus_service_exists):
11584         * dbus/dbus-bus.h:
11585         Add new convenience functions for communicating with the bus.
11586
11587         * dbus/dbus-message.h:
11588
11589         * dbus/dbus-protocol.h:
11590         Fix a typo.
11591
11592 2003-02-01  Alexander Larsson  <alexl@redhat.com>
11593
11594         * dbus/dbus-message.c (dbus_message_append_fields):
11595         Add some more doc comments.
11596
11597 2003-02-01  Havoc Pennington  <hp@pobox.com>
11598
11599         * dbus/dbus-break-loader.c (randomly_modify_length): change
11600         a 4-byte value in the message as if it were a length
11601
11602         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
11603         execute bit on saved files
11604
11605 2003-02-01  Havoc Pennington  <hp@pobox.com>
11606
11607         * dbus/dbus-break-loader.c (main): new program to find messages
11608         that break the loader.
11609
11610         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
11611         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
11612
11613         * dbus/dbus-string.c (_dbus_string_set_byte): new
11614
11615 2003-01-31  Havoc Pennington  <hp@pobox.com>
11616
11617         * dbus/dbus-message.c: refactor the test code to be more general,
11618         in preparation for writing a "randomly permute test cases to
11619         try to break the loader" program.
11620
11621 2003-01-31  Havoc Pennington  <hp@pobox.com>
11622
11623         * doc/dbus-specification.sgml: work on the specification
11624
11625         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check
11626         the protocol version of the message.
11627
11628         * dbus/dbus-protocol.h: drop special _REPLY names, the spec
11629         no longer specifies that.
11630         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not
11631         1/2/3/4)
11632
11633         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
11634         "break" for DBUS_TYPE_NIL, remove @todo
11635
11636 2003-01-31  Havoc Pennington  <hp@pobox.com>
11637
11638         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename
11639         just set_is_error/get_is_error as this is a commonly-used
11640         function, and write docs.
11641
11642 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
11643
11644         * dbus/dbus-address.c: (dbus_address_entry_free):
11645         Free key and value lists.
11646
11647         * dbus/dbus-internals.c: (_dbus_type_to_string):
11648         Add the types we didn't have.
11649
11650         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
11651         (_dbus_marshal_validate_arg):
11652         Add NIL types.
11653
11654         * dbus/dbus-message.c: (dbus_message_set_sender):
11655         Remove todo about being able to set sender to NULL.
11656
11657         (dbus_message_set_is_error_reply),
11658         (dbus_message_get_is_error_reply):
11659         * dbus/dbus-message.h:
11660         New functions.
11661
11662         * dbus/dbus-protocol.h:
11663         Add error reply flag.
11664
11665         * test/data/valid-messages/opposite-endian.message:
11666         Add NIL type to test.
11667
11668 2003-01-31  Havoc Pennington  <hp@pobox.com>
11669
11670         * doc/dbus-specification.sgml: fully specify the header.  Add
11671         flags and major protocol version, and change header/body len to
11672         unsigned.
11673
11674         * dbus/dbus-message-builder.c (append_saved_length): append length
11675         as uint32
11676
11677         * dbus/dbus-message.c (dbus_message_create_header): change header
11678         length and body length to unsigned. Add the new fields from the
11679         spec
11680         (_dbus_message_loader_return_buffer): unsigned header/body len
11681
11682 2003-01-30  Havoc Pennington  <hp@pobox.com>
11683
11684         * dbus/dbus-auth.c: rework to use only REJECTED, no
11685         MECHANISMS
11686
11687         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just
11688         use REJECTED, suggested by Mark McLoughlin
11689
11690 2003-01-30  Havoc Pennington  <hp@pobox.com>
11691
11692         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
11693         a better way to report errors here. e.g.  "unix address lacks
11694         path" or something. also "no such file" when the path doesn't
11695         exist, etc.
11696
11697         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
11698         leaking list nodes
11699         (dbus_parse_address): add @todo about documenting address format,
11700         and allowing , and ; to be escaped
11701
11702 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
11703
11704         * dbus/Makefile.am:
11705         Add dbus-address.[ch]
11706
11707         * dbus/dbus-address.c: (dbus_address_entry_free),
11708         (dbus_address_entries_free), (create_entry),
11709         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
11710         (dbus_parse_address), (_dbus_address_test):
11711         * dbus/dbus-address.h:
11712         New files for dealing with address parsing.
11713
11714         * dbus/dbus-connection.c:
11715         Document timeout functions.
11716
11717         * dbus/dbus-message.c:
11718         Document dbus_message_new_from_message.
11719
11720         * dbus/dbus-server-debug.c:
11721         Document.
11722
11723         * dbus/dbus-server.c: (dbus_server_listen):
11724         Parse address and use correct server implementation.
11725
11726         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
11727         * dbus/dbus-string.h:
11728         New function with test.
11729
11730         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
11731         * dbus/dbus-test.h:
11732         Add address tests.
11733
11734         * dbus/dbus-transport-debug.c:
11735         Document.
11736
11737         * dbus/dbus-transport.c: (_dbus_transport_open):
11738         Parse address and use correct transport implementation.
11739
11740 2003-01-30  Havoc Pennington  <hp@pobox.com>
11741
11742         * dbus/dbus-message.c: use message->byte_order instead of
11743         DBUS_COMPILER_BYTE_ORDER throughout.
11744         (dbus_message_create_header): pad header to align the
11745         start of the body of the message to 8-byte boundary
11746
11747         * dbus/dbus-marshal.h: make all the demarshalers take const
11748         DBusString arguments.
11749
11750         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
11751         validate message args here, so we don't have to do slow validation
11752         later, and so we catch bad messages as they are incoming. Also add
11753         better checks on header_len and body_len. Also fill in
11754         message->byte_order
11755
11756         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
11757         implemented properly)
11758         (_dbus_string_validate_nul): new function to check all-nul
11759
11760         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
11761         get_arg_end_pos and remove all validation
11762         (_dbus_marshal_validate_arg): actually do validation here.
11763
11764 2003-01-29  Havoc Pennington  <hp@pobox.com>
11765
11766         * dbus/dbus-message.c (check_message_handling): fix assertion
11767         failure on set_client_serial
11768
11769 2003-01-28  Havoc Pennington  <hp@pobox.com>
11770
11771         * dbus/dbus-server-debug.c: Add doc section comments
11772
11773         * dbus/dbus-transport-debug.c: add doc section comments
11774
11775 2003-01-28  Havoc Pennington  <hp@redhat.com>
11776
11777         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
11778         the reverse order from how I had it
11779         (_dbus_string_base64_encode): reverse encoding order. I was
11780         basically byteswapping everything during encoding.
11781
11782 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
11783
11784         * dbus/dbus-connection-internal.h:
11785         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
11786         (_dbus_connection_remove_timeout):
11787         Add functions for adding and removing timeouts.
11788
11789         * dbus/dbus-message.c: (dbus_message_new_from_message):
11790         Add new function that takes a message and creates an exact
11791         copy of it, but with the refcount set to 1.
11792         (check_message_handling):
11793         Fix build error.
11794
11795         * dbus/dbus-server-protected.h:
11796         * dbus/dbus-server.c: (_dbus_server_init_base),
11797         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
11798         (dbus_server_set_timeout_functions):
11799         (_dbus_server_remove_timeout):
11800         New functions so that a server can add and remove timeouts.
11801
11802         (dbus_server_listen):
11803         Add commented out call to dbus_server_debug_new.
11804
11805         * dbus/dbus-timeout.c: (_dbus_timeout_new):
11806         Actually set the handler, doh.
11807
11808         * dbus/dbus-transport.c: (_dbus_transport_open):
11809         Add commented out call to dbus_transport_debug_client_new.
11810
11811         * dbus/Makefile.am:
11812         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
11813
11814 2003-01-28  Havoc Pennington  <hp@pobox.com>
11815
11816         * dbus/dbus-message.c (check_message_handling): function to check
11817         on the loaded message, iterates over it etc.
11818
11819 2003-01-28  Havoc Pennington  <hp@pobox.com>
11820
11821         * test/Makefile.am (dist-hook): fix make distdir
11822
11823         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
11824
11825 2003-01-27  Havoc Pennington  <hp@pobox.com>
11826
11827         * dbus/dbus-mempool.c (time_for_size): replace printf with
11828         _dbus_verbose
11829
11830         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
11831         empty lines; fix the SAVE_LENGTH stuff to be
11832         START_LENGTH/END_LENGTH so it actually works; couple other
11833         bugfixes
11834
11835         * test/Makefile.am (dist-hook): add dist-hook for .message files
11836
11837         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
11838         can be constant or locked.
11839         (_dbus_string_free): allow freeing a const string as
11840         documented/intended
11841
11842         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
11843
11844         * dbus/dbus-test-main.c (main): take an argument which is the
11845         directory containing test data
11846
11847         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
11848         argument to this and load all the messages in test/data/
11849         checking that they can be loaded or not loaded as appropriate.
11850
11851 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
11852
11853         * bus/dispatch.c: (bus_dispatch_message_handler):
11854         Dispatch messages sent to services.
11855
11856         * bus/driver.c: (bus_driver_send_service_deleted),
11857         (bus_driver_send_service_created), (bus_driver_send_service_lost),
11858         (bus_driver_send_service_acquired):
11859         Add helper functions for sending service related messages.
11860
11861         (bus_driver_send_welcome_message):
11862         Send HELLO_REPLY instead of WELCOME.
11863
11864         (bus_driver_handle_list_services):
11865         Send LIST_SERVICES_REPLY instead of SERVICES.
11866
11867         (bus_driver_handle_own_service),
11868         (bus_driver_handle_service_exists):
11869         New message handlers.
11870
11871         (bus_driver_handle_message):
11872         Invoke new message handlers.
11873
11874         (bus_driver_remove_connection):
11875         Don't remove any services here since that's done automatically
11876         by bus_service_remove_owner now.
11877
11878         * bus/driver.h:
11879         New function signatures.
11880
11881         * bus/services.c: (bus_service_add_owner):
11882         Send ServiceAcquired message if we're the only primary owner.
11883
11884         (bus_service_remove_owner):
11885         Send ServiceAcquired/ServiceLost messages.
11886
11887         (bus_service_set_prohibit_replacement),
11888         (bus_service_get_prohibit_replacement):
11889         Functions for setting prohibit replacement.
11890
11891         (bus_service_has_owner):
11892         New function that checks if a connection is in the owner queue of
11893         a certain service.
11894
11895         * bus/services.h:
11896         Add new function signatures.
11897
11898         * dbus/dbus-list.c: (_dbus_list_test):
11899         Add tests for _dbus_list_remove_last and traversing the list backwards.
11900
11901         * dbus/dbus-list.h:
11902         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
11903         go any further, so return NULL then.
11904
11905         * dbus/dbus-protocol.h:
11906         Add new messages, service flags and service replies.
11907
11908 2003-01-26  Havoc Pennington  <hp@pobox.com>
11909
11910         * dbus/dbus-message-builder.c: implement, completely untested.
11911
11912         * test/data/*: add data to be used in testing.
11913         ".message" files are our simple loadable text format.
11914         ".message-raw" will be binary dumps of messages.
11915
11916         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
11917
11918 2003-01-26  Havoc Pennington  <hp@pobox.com>
11919
11920         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
11921
11922         * dbus/dbus-errors.c (dbus_result_to_string): add
11923         file errors
11924
11925         * dbus/dbus-message-builder.c: new file, will contain code to load
11926         up messages from files. Not implemented yet.
11927
11928 2003-01-26  Havoc Pennington  <hp@pobox.com>
11929
11930         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
11931         the sender by setting to NULL
11932
11933 2003-01-26  Havoc Pennington  <hp@pobox.com>
11934
11935         The unit tests pass, but otherwise untested.  If it breaks, the
11936         tests should have been better. ;-)
11937
11938         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
11939         the connection.
11940
11941         * dbus/dbus-message.c: redo everything so we maintain
11942         message->header as the only copy of the various fields.
11943         This avoids the possibility of out-of-memory in some cases,
11944         for example dbus_message_lock() can't run out of memory anymore,
11945         and avoids extra copying. Figured I may as well go ahead and do
11946         this since it was busted for dbus_message_lock to not return
11947         failure on OOM, and dbus_message_write_header was totally
11948         unchecked for OOM. Also fixed some random other bugs.
11949
11950         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
11951         that strings are nul-terminated. Also, end_pos can be equal
11952         to string length just not greater than, I think.
11953         (_dbus_marshal_set_int32): new function
11954         (_dbus_marshal_set_uint32): new function
11955         (_dbus_marshal_set_string): new function
11956
11957         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
11958         a warning, init timeout_list to NULL
11959         (dbus_connection_send_message): don't use uninitialized variable
11960         "serial"
11961
11962         * dbus/dbus-string.c (_dbus_string_replace_len): new function
11963
11964 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
11965
11966         * bus/driver.c: (bus_driver_handle_hello),
11967         (bus_driver_send_welcome_message):
11968         Plug leaks
11969
11970 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
11971
11972         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
11973         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
11974         (dbus_connection_unref):
11975         * dbus/dbus-marshal.c: (_dbus_marshal_test):
11976         * dbus/dbus-message.c: (dbus_message_unref),
11977         Plug memory leaks.
11978
11979         (dbus_message_get_fields):
11980         Remove debugging printout.
11981
11982         (_dbus_message_loader_return_buffer):
11983         Don't store the header string.
11984
11985         (_dbus_message_test):
11986         Plug leaks.
11987
11988 2003-01-26  Richard Hult  <rhult@codefactory.se>
11989
11990         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
11991         the file descriptor list, since it can change under us.
11992
11993 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11994
11995         * glib/dbus-gmain.c: (dbus_connection_prepare),
11996         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
11997         (remove_watch), (dbus_connection_hookup_with_g_main):
11998         Rewrite the glib handling to use its own GSource instead of a
11999         GIOChannel so we can catch messages put in the queue while waiting
12000         for a reply.
12001
12002 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12003
12004         * bus/Makefile.am:
12005         * bus/connection.c: (connection_disconnect_handler),
12006         (connection_watch_callback), (bus_connection_setup):
12007         * bus/dispatch.c: (send_one_message),
12008         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
12009         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
12010         * bus/dispatch.h:
12011         * bus/driver.c: (bus_driver_send_service_deleted),
12012         (bus_driver_send_service_created), (bus_driver_handle_hello),
12013         (bus_driver_send_welcome_message),
12014         (bus_driver_handle_list_services), (bus_driver_remove_connection),
12015         (bus_driver_handle_message):
12016         * bus/driver.h:
12017         Refactor code, put the message dispatching in its own file. Use
12018         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
12019         is disconnected.
12020
12021 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12022
12023         * dbus/dbus-internals.h:
12024         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
12025
12026         * dbus/dbus-message.c: (dbus_message_get_sender):
12027         * dbus/dbus-message.h:
12028         Implement dbus_message_get_sender.
12029
12030         * dbus/dbus-protocol.h:
12031         Add message and service defines.
12032
12033 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12034
12035         * dbus/dbus-connection.c: (dbus_connection_send_message):
12036         * dbus/dbus-message-internal.h:
12037         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
12038         (dbus_message_write_header):
12039         Remove _dbus_messag_unlock and don't set the client serial on a
12040         message if one already exists.
12041
12042 2003-01-24  Havoc Pennington  <hp@pobox.com>
12043
12044         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
12045         list_pool
12046
12047         * bus/driver.c (bus_driver_handle_list_services): fix a leak
12048         on OOM
12049
12050 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12051
12052         * dbus/dbus-list.c: (alloc_link), (free_link):
12053         Use a memory pool for the links.
12054
12055 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12056
12057         * bus/connection.c: (bus_connection_foreach):
12058         * bus/connection.h:
12059         Add new bus_connection_foreach function.
12060
12061         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
12062         Add function that broadcasts a message to all clients.
12063
12064         (bus_driver_send_service_created), (bus_driver_handle_hello),
12065         (bus_driver_send_welcome_message),
12066         (bus_driver_handle_list_services), (bus_driver_message_handler):
12067         Implement functions that take care of listing services, and notifying
12068         clients when new services are created.
12069
12070         * bus/services.c: (bus_services_list):
12071         * bus/services.h:
12072         Add new function that returns an array of strings with the currently
12073         registered services.
12074
12075         * glib/dbus-glib.h:
12076         * glib/dbus-gmain.c:
12077         Update copyright year.
12078
12079 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
12080
12081         * dbus/dbus-connection.c: (dbus_connection_send_message):
12082         Unlock the message in case it was sent earlier.
12083
12084         (dbus_connection_send_message_with_reply_and_block):
12085         Remove the reply message from the list.
12086
12087         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
12088         Set array_len and new_pos correctly.
12089
12090         (_dbus_marshal_test):
12091         Remove debug output.
12092
12093         * dbus/dbus-message-internal.h:
12094         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
12095         New function that returns the reply serial.
12096
12097         (_dbus_message_unlock):
12098         New function that unlocks a message and resets its header.
12099
12100         (dbus_message_append_string_array),
12101         (dbus_message_get_fields_valist),
12102         (dbus_message_iter_get_field_type),
12103         (dbus_message_iter_get_string_array),
12104         (dbus_message_get_fields),
12105         (dbus_message_append_fields_valist):
12106         Handle string arrays.
12107
12108         (dbus_message_set_sender):
12109         Make this function public since the bus daemon needs it.
12110
12111         (decode_header_data):
12112         Set the reply serial to -1 initially.
12113
12114         * dbus/dbus-message.h:
12115         Add dbus_message_set_sender.
12116
12117 2003-01-24  Havoc Pennington  <hp@pobox.com>
12118
12119         * doc/dbus-specification.sgml: add some stuff
12120
12121 2003-01-22  Havoc Pennington  <hp@pobox.com>
12122
12123         * doc/dbus-specification.sgml: Start to document the protocol.
12124
12125 2003-01-22  Havoc Pennington  <hp@pobox.com>
12126
12127         * dbus/dbus-connection.c
12128         (dbus_connection_send_message_with_reply_and_block): add some @todo
12129
12130         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
12131
12132 2003-01-21  Havoc Pennington  <hp@pobox.com>
12133
12134         (patch untested because can't compile)
12135
12136         * bus/driver.c (create_unique_client_name): make this function
12137         never recycle client names. Also, caller should initialize
12138         the DBusString.
12139
12140         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
12141
12142 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12143
12144         * dbus/dbus-marshal.c: (_dbus_marshal_double),
12145         (_dbus_marshal_int32), (_dbus_marshal_uint32),
12146         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
12147         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
12148         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
12149         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
12150         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
12151         * dbus/dbus-marshal.h:
12152         * dbus/dbus-protocol.h:
12153         Add support for marshalling and demarshalling integer, double
12154         and string arrays.
12155
12156 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12157
12158         * bus/Makefile.am:
12159         Add driver.[ch]
12160
12161         * bus/connection.c: (connection_disconnect_handler):
12162         Remove the connection from the bus driver's list.
12163
12164         (connection_watch_callback): Dispatch messages.
12165
12166         (free_connection_data): Free connection name.
12167
12168         (bus_connection_setup): Add connection to the bus driver's list.
12169         (bus_connection_remove_owned_service):
12170         (bus_connection_set_name), (bus_connection_get_name):
12171         Add functions for setting and getting the connection's name.
12172
12173         * bus/connection.h:
12174         Add function headers.
12175
12176         * bus/driver.c: (create_unique_client_name),
12177         (bus_driver_handle_hello_message),
12178         (bus_driver_send_welcome_message), (bus_driver_message_handler),
12179         (bus_driver_add_connection), (bus_driver_remove_connection):
12180         * bus/driver.h:
12181         * bus/main.c:
12182         * bus/services.c: (bus_service_free):
12183         * bus/services.h:
12184         New file that handles communication and registreation with the bus
12185         itself.
12186
12187 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
12188
12189         * dbus/dbus-connection.c: (dbus_connection_send_message):
12190         Add a new client_serial parameter.
12191
12192         (dbus_connection_send_message_with_reply):
12193         Remove a @todo since we've implemented the blocking function.
12194
12195         (dbus_connection_send_message_with_reply_and_block):
12196         New function that sends a message and waits for a reply and
12197         then returns the reply.
12198
12199         * dbus/dbus-connection.h:
12200         Add new functions.
12201
12202         * dbus/dbus-errors.c: (dbus_result_to_string):
12203         * dbus/dbus-errors.h:
12204         Add new DBUS_RESULT.
12205
12206         * dbus/dbus-message-internal.h:
12207         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
12208         (_dbus_message_set_sender), (dbus_message_write_header),
12209         (dbus_message_new_reply), (decode_header_data),
12210         (_dbus_message_loader_return_buffer), (_dbus_message_test):
12211         * dbus/dbus-message.h:
12212         Add new functions that set the reply serial and sender.
12213         Also marshal and demarshal them correctly and add test.
12214
12215         * dbus/dbus-protocol.h:
12216         Add new DBUS_MESSAGE_TYPE_SENDER.
12217
12218         * glib/dbus-glib.h:
12219         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
12220         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
12221         (dbus_connection_hookup_with_g_main):
12222         * glib/test-dbus-glib.c: (main):
12223         Rewrite to use GIOChannel and remove the GSource crack.
12224
12225         * test/echo-client.c: (main):
12226         * test/watch.c: (check_messages):
12227         Update for changed APIs
12228
12229 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
12230
12231         * dbus/Makefile.am: Add dbus-timeout.[cħ]
12232
12233         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
12234         Create a DBusTimeoutList.
12235         (dbus_connection_set_timeout_functions): Add new function to
12236         set timeout callbacks
12237
12238         * dbus/dbus-connection.h: Add public DBusTimeout API.
12239
12240         * dbus/dbus-message.c: (dbus_message_get_service):
12241         * dbus/dbus-message.h:  New function.
12242
12243         * dbus/dbus-server.c: Fix small doc typo.
12244
12245         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
12246
12247 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
12248
12249         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
12250         of the string, just as long as specified.
12251
12252 2003-01-19  Havoc Pennington  <hp@pobox.com>
12253
12254         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
12255         new function
12256
12257         * dbus/dbus-server.c (dbus_server_set_max_connections)
12258         (dbus_server_get_max_connections, dbus_server_get_n_connections):
12259         keep track of current number of connections, and add API for
12260         setting a max (but haven't implemented enforcing the max yet)
12261
12262 2003-01-18  Havoc Pennington  <hp@pobox.com>
12263
12264         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
12265         reading/writing if read_watch != NULL or write_watch != NULL.
12266
12267         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
12268         the message loader code to actually load message->header and
12269         message->body into the newly-created message.
12270
12271         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
12272         in OOM case
12273
12274         * dbus/dbus-connection.c (dbus_connection_set_max_message_size)
12275         (dbus_connection_get_max_message_size)
12276         (dbus_connection_set_max_live_messages_size)
12277         (dbus_connection_get_max_live_messages_size): implement some
12278         resource limitation functions
12279
12280         * dbus/dbus-resources.c: new file implementing some of the
12281         resource limits stuff
12282
12283         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
12284         missing docs, add @todo to handle OOM etc.
12285
12286         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
12287         docs
12288
12289 2003-01-18  Havoc Pennington  <hp@pobox.com>
12290
12291         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the
12292         connection if it hasn't been already.
12293
12294         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
12295         replace with DisconnectFunction.
12296
12297 2003-01-18  Havoc Pennington  <hp@pobox.com>
12298
12299         Building --disable-verbose-mode --disable-asserts --disable-tests
12300         cuts the library from 112K to 45K or so
12301
12302         * configure.in: check for varargs macro support,
12303         add --enable-verbose-mode, --enable-asserts.
12304
12305         * dbus/dbus-internals.h (_dbus_assert): support
12306         DBUS_DISABLE_ASSERT
12307         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
12308
12309 2003-01-18  Havoc Pennington  <hp@pobox.com>
12310
12311         * dbus/dbus-test.c: include config.h so that tests actually run
12312
12313         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
12314         so the failure mode when that assumption fails will be plenty
12315         obvious.
12316
12317 2003-01-18  Havoc Pennington  <hp@pobox.com>
12318
12319         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
12320
12321         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
12322         the distribution
12323
12324         * test/Makefile.am: don't use special variable "TESTS" for echo-*
12325         since we don't want to use those in make check
12326
12327 2003-01-15  Havoc Pennington  <hp@redhat.com>
12328
12329         Release 0.2
12330
12331         * NEWS: update
12332
12333 2003-01-15  Havoc Pennington  <hp@redhat.com>
12334
12335         * test/Makefile.am: fix so that test source code ends up in the
12336         distribution on make distcheck
12337
12338 2003-01-15  Havoc Pennington  <hp@redhat.com>
12339
12340         Release 0.1.
12341
12342         * NEWS: update
12343
12344 2003-01-15  Havoc Pennington  <hp@redhat.com>
12345
12346         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
12347         fix build when --disable-tests
12348
12349         * Makefile.am (EXTRA_DIST): put HACKING in here
12350
12351         * HACKING: document procedure for making a tarball release.
12352
12353 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
12354
12355         * bus/connection.c: (connection_error_handler),
12356         (bus_connection_setup):
12357         * bus/main.c: (main):
12358         Make sure that the DBusConnectionData struct is NULLed
12359         out to prevent a segfault.
12360
12361         * dbus/dbus-errors.c: (dbus_result_to_string):
12362         * dbus/dbus-errors.h:
12363         * dbus/dbus-message.c: (dbus_message_get_fields),
12364         (dbus_message_get_fields_valist), (_dbus_message_test):
12365         * dbus/dbus-message.h:
12366         Make dbus_message_get_fields return a result code so we can
12367         track invalid fields as well as oom.
12368
12369 2003-01-11  Havoc Pennington  <hp@pobox.com>
12370
12371         * configure.in: change --enable-test/--enable-ansi action-if-given
12372         to enable_foo=$enableval instead of enable_foo=yes
12373
12374 2003-01-08  Havoc Pennington  <hp@pobox.com>
12375
12376         * dbus/dbus-string.c (_dbus_string_align_length): new function
12377
12378         * dbus/dbus-test-main.c: move main() for test app here
12379         * dbus/dbus-test.c
12380         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
12381         symbol to run tests, because dbus-test isn't in the main
12382         library
12383
12384         Code review nitpicks.
12385
12386         * dbus/dbus-message.c (dbus_message_write_header): add newlines
12387         for people with narrow emacs ;-). Assert client_serial was filled
12388         in. Assert message->name != NULL.
12389         (dbus_message_append_fields): have "first_field_type" arg separate
12390         from va list, needed for C++ binding that also uses varargs IIRC
12391         and helps with type safety
12392         (dbus_message_new): add @todo about using DBusString to store
12393         service/name internally
12394         (dbus_message_new): don't leak ->service and ->name on OOM later
12395         in the function
12396         (dbus_message_unref): free the service name
12397         (dbus_message_get_fields): same change to varargs
12398         i.e. first_field_type
12399         (_dbus_message_loader_return_buffer): assert that the message data
12400         is aligned (if not it's a bug in our code). Put in verbose griping
12401         about why we set corrupted = TRUE.
12402         (decode_header_data): add FIXME that char* is evil.  Was going to
12403         add FIXME about evil locale-specific string.h strncmp, but just
12404         switched to wacky string-as-uint32 optimization. Move check for
12405         "no room for field name" above get_const_data_len() to avoid
12406         assertion failure in get_const_data_len if we have trailing 2
12407         bytes or the like. Check for service and name fields being
12408         provided twice. Don't leak service/name on error. Require field
12409         names to be aligned to 4 bytes.
12410
12411         * dbus/dbus-marshal.c: move byte swap stuff to header
12412         (_dbus_pack_int32): uscore-prefix
12413         (_dbus_unpack_int32): uscore-prefix
12414         (_dbus_unpack_uint32): export
12415         (_dbus_demarshal_string): add @todo complaining about use of
12416         memcpy()
12417         (_dbus_marshal_get_field_end_pos): add @todo about bad error
12418         handling allowing corrupt data to go unchecked
12419
12420 2003-01-08  Havoc Pennington  <hp@redhat.com>
12421
12422         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write
12423         to the select() as needed for authentication. (should be using
12424         _dbus_poll() not select, but for another day)
12425
12426         * dbus/dbus.h: include dbus/dbus-protocol.h
12427
12428 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
12429
12430         * dbus/Makefile.am (dbusinclude_HEADERS): Install
12431         dbus-connection.h
12432
12433 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
12434
12435         * dbus/dbus-internals.c: (_dbus_type_to_string):
12436         New function that returns a string describing a type.
12437
12438         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
12439         * dbus/dbus-marshal.h:
12440         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
12441         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
12442         (dbus_message_iter_get_byte_array):
12443         * dbus/dbus-message.h:
12444         Add new convenience functions for appending and getting message fields.
12445         Also add demarshalling routines for byte arrays.
12446
12447 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12448
12449         * dbus/dbus-connection-internal.h:
12450         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
12451         (_dbus_connection_get_next_client_serial),
12452         (dbus_connection_send_message):
12453         * dbus/dbus-internals.h:
12454         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
12455         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
12456         (_dbus_marshal_uint32), (_dbus_demarshal_double),
12457         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
12458         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
12459         (_dbus_verbose_bytes), (_dbus_marshal_test):
12460         * dbus/dbus-marshal.h:
12461         * dbus/dbus-message-internal.h:
12462         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
12463         (dbus_message_write_header), (_dbus_message_lock),
12464         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
12465         (dbus_message_get_name), (dbus_message_append_int32),
12466         (dbus_message_append_uint32), (dbus_message_append_double),
12467         (dbus_message_append_string), (dbus_message_append_byte_array),
12468         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
12469         (dbus_message_iter_unref), (dbus_message_iter_has_next),
12470         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
12471         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
12472         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
12473         (decode_header_data), (_dbus_message_loader_return_buffer),
12474         (message_iter_test), (_dbus_message_test):
12475         * dbus/dbus-message.h:
12476         * dbus/dbus-protocol.h:
12477         * dbus/dbus-test.c: (main):
12478         * dbus/dbus-test.h:
12479         * glib/test-dbus-glib.c: (message_handler), (main):
12480         * test/echo-client.c: (main):
12481         * test/watch.c: (check_messages):
12482         Make messages sendable and receivable for real.
12483
12484 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12485
12486         * dbus/dbus-marshal.c: (_dbus_marshal_double),
12487         (_dbus_marshal_string), (_dbus_marshal_byte_array):
12488         * dbus/dbus-message.c: (dbus_message_append_int32),
12489         (dbus_message_append_uint32), (dbus_message_append_double),
12490         (dbus_message_append_string), (dbus_message_append_byte_array):
12491         Handle OOM restoration.
12492
12493 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
12494
12495         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12496         (_dbus_demarshal_string), (_dbus_marshal_test):
12497         * dbus/dbus-marshal.h:
12498         * dbus/dbus-message.c: (dbus_message_get_name),
12499         Document these functions.
12500
12501         (dbus_message_append_int32), (dbus_message_append_uint32),
12502         (dbus_message_append_double), (dbus_message_append_string),
12503         (dbus_message_append_byte_array):
12504         * dbus/dbus-message.h:
12505         Add functions for adding message fields of different types.
12506
12507         * dbus/dbus-protocol.h:
12508         Add the different types.
12509
12510 2003-01-05  Havoc Pennington  <hp@pobox.com>
12511
12512         * bus/connection.c: implement routines for handling connections,
12513         first thing is keeping a list of owned services on each connection
12514         and setting up watches etc.
12515
12516         * bus/services.c: implement a mapping from service names to lists
12517         of connections
12518
12519         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
12520
12521         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
12522         to use static mutexes for global data
12523
12524         * dbus/dbus-connection.c (dbus_connection_set_data): add new
12525         collection of functions to set/get application-specific data
12526         on the DBusConnection.
12527
12528 2003-01-04  Havoc Pennington  <hp@pobox.com>
12529
12530         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
12531         (_dbus_poll): new function
12532
12533         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
12534         copied from GLib
12535
12536         * bus/loop.c: initial code for the daemon main loop
12537
12538 2003-01-04  Havoc Pennington  <hp@pobox.com>
12539
12540         * test/watch.c (error_handler): make it safe if the error handler
12541         is called multiple times (if we s/error handler/disconnect
12542         handler/ we should just guarantee it's called only once)
12543
12544         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
12545         error handler on disconnect (it's quite possible we should
12546         just change the error handler to a "disconnect handler," I'm
12547         not sure we have any other meaningful errors)
12548
12549         * configure.in: check for getpwnam_r
12550
12551         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
12552         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
12553         mechanism as in SASL spec, using socket credentials
12554
12555         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
12556         (_dbus_send_credentials_unix_socket): new function
12557
12558         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
12559         dbus_accept()
12560         (_dbus_write): only check errno if <0 returned
12561         (_dbus_write_two): ditto
12562
12563 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
12564
12565         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
12566         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
12567         (_dbus_marshal_test):
12568         * dbus/dbus-marshal.h:
12569         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
12570         to _dbus_marshal_utf8_string. Also fix some tests.
12571
12572 2002-12-28  Harri Porten  <porten@kde.org>
12573
12574         * configure.in: added check for C++ compiler and a very cheesy
12575         check for the Qt integration
12576
12577         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
12578
12579         * qt/Makefile.am: added
12580
12581         * qt/.cvsignore: added
12582
12583         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
12584         latter, added #ifdef QT_THREAD_SUPPORT guard.
12585
12586         * dbus/Makefile.am: added missing headers for make dist
12587
12588 2002-12-28  Kristian Rietveld  <kris@gtk.org>
12589
12590         * dbus/Makefile.am: fixup export-symbols-regex.
12591
12592 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
12593
12594         * acinclude.m4: Add this file and put the
12595         PKG_CHECK_MODULE macro in it.
12596
12597 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
12598
12599         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12600         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12601         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
12602         (_dbus_marshal_test):
12603         Make the demarshalling routines align the pos argument.
12604         Add string marshalling tests and fix the obvious bugs
12605         discovered.
12606
12607 2002-12-26  Havoc Pennington  <hp@pobox.com>
12608
12609         * dbus/dbus-auth.c: fixes fixes fixes
12610
12611         * dbus/dbus-transport-unix.c: wire up support for
12612         encoding/decoding data on the wire
12613
12614         * dbus/dbus-auth.c (_dbus_auth_encode_data)
12615         (_dbus_auth_decode_data): append to target string
12616         instead of nuking it.
12617
12618 2002-12-26  Havoc Pennington  <hp@pobox.com>
12619
12620         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
12621         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
12622         doh
12623
12624         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
12625         avoid swap_bytes() overhead (ignoring possible assembly stuff for
12626         now). Main point is because I wanted unpack_uint32 to implement
12627         _dbus_verbose_bytes
12628         (_dbus_verbose_bytes): new function
12629
12630         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
12631
12632         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
12633         mechanism to handle a corrupt message stream
12634         (_dbus_message_loader_new): fix preallocation to only prealloc,
12635         not prelengthen
12636
12637         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
12638         (_dbus_string_test): enhance tests for copy/move and fix the
12639         functions
12640
12641         * dbus/dbus-transport-unix.c: Hold references in more places to
12642         avoid reentrancy problems
12643
12644         * dbus/dbus-transport.c: ditto
12645
12646         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
12647         leak reference count in no-message case
12648
12649         * test/watch.c (do_mainloop): handle adding/removing watches
12650         during iteration over the watches. Also, ref the connection/server
12651         stored on a watch, so we don't try to mangle a destroyed one.
12652
12653         * dbus/dbus-transport-unix.c (do_authentication): perform
12654         authentication
12655
12656         * dbus/dbus-auth.c (get_state): add a state
12657         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
12658         (_dbus_auth_get_unused_bytes): append the unused bytes
12659         to the passed in string, rather than prepend
12660
12661         * dbus/dbus-transport.c (_dbus_transport_init_base): create
12662         the auth conversation DBusAuth
12663
12664         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
12665         (_dbus_transport_new_for_domain_socket): when creating a
12666         transport, pass in whether it's a client-side or server-side
12667         transport so we know which DBusAuth to create
12668
12669 2002-12-03  Havoc Pennington  <hp@pobox.com>
12670
12671         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
12672         _after_ finalizing the derived members
12673         (unix_connection_set): unref watch if we fail to add it
12674
12675         * dbus/dbus-connection.c (dbus_connection_unref): delete the
12676         transport first, so that the connection owned by the
12677         transport will be valid as the transport finalizes.
12678
12679         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
12680         if necessary, and remove watches from the connection.
12681
12682         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
12683
12684 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
12685
12686         * dbus/dbus-marshal.c: (_dbus_marshal_string),
12687         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12688         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
12689         (_dbus_marshal_test):
12690         * dbus/dbus-marshal.h:
12691         Add string marshal functions and have the demarshal functions
12692         return the new position.
12693
12694 2002-12-25  Havoc Pennington  <hp@pobox.com>
12695
12696         * doc/dbus-sasl-profile.txt: docs on the authentication protocol,
12697         it is a simple protocol that just maps directly to SASL.
12698
12699         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
12700         initial implementation, not actually used yet.
12701
12702         * dbus/dbus-string.c (_dbus_string_find): new function
12703         (_dbus_string_equal): new function
12704         (_dbus_string_base64_encode): new function
12705         (_dbus_string_base64_decode): new function
12706
12707 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
12708
12709         * dbus/Makefile.am:
12710         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
12711         (_dbus_marshal_int32), (_dbus_marshal_uint32),
12712         (_dbus_demarshal_double), (_dbus_demarshal_int32),
12713         (_dbus_demarshal_uint32), (_dbus_marshal_test):
12714         * dbus/dbus-marshal.h:
12715         * dbus/dbus-protocol.h:
12716         * dbus/dbus-test.c: (main):
12717         * dbus/dbus-test.h:
12718         Add un-optimized marshalling/demarshalling routines.
12719
12720 2002-12-25  Harri Porten  <porten@kde.org>
12721
12722         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
12723
12724 2002-12-24  Zack Rusin  <zack@kde.org>
12725
12726         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
12727         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
12728         main loop stuff
12729
12730 2002-12-24  Havoc Pennington  <hp@pobox.com>
12731
12732         * glib/dbus-gthread.c: fix include
12733
12734         * glib/dbus-glib.h: rename DBusMessageHandler for now.
12735         I think glib API needs to change, though, as you don't
12736         want to use DBusMessageFunction, you want to use the
12737         DBusMessageHandler object. Probably
12738         dbus_connection_open_with_g_main_loop()
12739         and dbus_connection_setup_g_main_loop() or something like that
12740         (but think of better names...) that just create a connection
12741         that has watch/timeout functions etc. already set up.
12742
12743         * dbus/dbus-connection.c
12744         (dbus_connection_send_message_with_reply): new function just to
12745         show how the message handler helps us deal with replies.
12746
12747         * dbus/dbus-list.c (_dbus_list_remove_last): new function
12748
12749         * dbus/dbus-string.c (_dbus_string_test): free a string that
12750         wasn't
12751
12752         * dbus/dbus-hash.c: use memory pools for the hash entries
12753         (rebuild_table): be more paranoid about overflow, and
12754         shrink table when we can
12755         (_dbus_hash_test): reduce number of sprintfs and write
12756         valid C89. Add tests for case where we grow and then
12757         shrink the hash table.
12758
12759         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
12760
12761         * dbus/dbus-connection.c (dbus_connection_register_handler)
12762         (dbus_connection_unregister_handler): new functions
12763
12764         * dbus/dbus-message.c (dbus_message_get_name): new
12765
12766         * dbus/dbus-list.c: fix docs typo
12767
12768         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
12769         an object representing a handler for messages.
12770
12771 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
12772
12773         * glib/dbus-glib.h:
12774         * glib/dbus-gthread.c: (dbus_gthread_init):
12775         Don't use the gdbus prefix for public functions.
12776
12777 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
12778
12779         * Makefile.am:
12780         * configure.in:
12781         Add GLib checks and fixup .pc files
12782
12783         * glib/Makefile.am:
12784         * glib/dbus-glib.h:
12785         * glib/dbus-gmain.c: (gdbus_connection_prepare),
12786         (gdbus_connection_check), (gdbus_connection_dispatch),
12787         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
12788         (dbus_connection_gsource_new):
12789         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
12790         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
12791         * glib/test-dbus-glib.c: (message_handler), (main):
12792         Add GLib support.
12793
12794 2002-12-15  Harri Porten  <porten@kde.org>
12795
12796         * autogen.sh: check for libtoolize before attempting to use it
12797
12798         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
12799         struct.
12800
12801         * .cvsignore: ignore more stamp files
12802
12803         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
12804
12805         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
12806         without make install.
12807
12808 2002-12-15  Havoc Pennington  <hp@pobox.com>
12809
12810         * dbus/dbus-threads.c: add thread stubs that a higher library
12811         layer can fill in. e.g. the GLib wrapper might fill them in with
12812         GThread stuff. We still need to use this thread API to
12813         thread-safe-ize the library.
12814
12815 2002-12-12  Havoc Pennington  <hp@pobox.com>
12816
12817         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
12818         below new interfaces and include fewer system headers.
12819
12820         * dbus/dbus-sysdeps.c (_dbus_read): new function
12821         (_dbus_write): new function
12822         (_dbus_write_two): new function
12823         (_dbus_connect_unix_socket): new function
12824         (_dbus_listen_unix_socket): new function
12825
12826         * dbus/dbus-message-internal.h: change interfaces to use
12827         DBusString
12828
12829 2002-12-11  Havoc Pennington  <hp@pobox.com>
12830
12831         * dbus/dbus-types.h: add dbus_unichar
12832
12833         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
12834
12835         * dbus/dbus-connection.c (dbus_connection_send_message): return
12836         TRUE on success
12837
12838         * dbus/dbus-transport.c: include dbus-watch.h
12839
12840         * dbus/dbus-connection.c: include dbus-message-internal.h
12841
12842         * HACKING: add file with coding guidelines stuff.
12843
12844         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
12845         handling here, for security purposes (as in vsftpd). Not actually
12846         using this class yet.
12847
12848         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
12849         system/libc usage here, as in vsftpd, for ease of auditing (and
12850         should also simplify portability). Haven't actually moved all the
12851         system/libc usage into here yet.
12852
12853 2002-11-25  Havoc Pennington  <hp@pobox.com>
12854
12855         * dbus/dbus-internals.c (_dbus_verbose): fix to not
12856         always print the first verbose message.
12857
12858 2002-11-24  Havoc Pennington  <hp@pobox.com>
12859
12860         * test/echo-client.c, test/echo-server.c: cheesy test
12861         clients.
12862
12863         * configure.in (AC_CHECK_FUNCS): check for writev
12864
12865         * dbus/dbus-message.c (_dbus_message_get_network_data): new
12866         function
12867
12868         * dbus/dbus-list.c (_dbus_list_foreach): new function
12869
12870         * dbus/dbus-internals.c (_dbus_verbose): new function
12871
12872         * dbus/dbus-server.c, dbus/dbus-server.h: public object
12873         representing a server that listens for connections.
12874
12875         * dbus/.cvsignore: create
12876
12877         * dbus/dbus-errors.h, dbus/dbus-errors.c:
12878         public API for reporting errors
12879
12880         * dbus/dbus-connection.h, dbus/dbus-connection.c:
12881         public object representing a connection that
12882         sends/receives messages. (Same object used for
12883         both client and server.)
12884
12885         * dbus/dbus-transport.h, dbus/dbus-transport.c:
12886         Basic abstraction for different kinds of stream
12887         that we might read/write messages from.
12888
12889 2002-11-23  Havoc Pennington  <hp@pobox.com>
12890
12891         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN
12892         _DBUS_INT_MAX
12893
12894         * dbus/dbus-test.c (main): add list test, and include
12895         dbus-test.h as intended
12896
12897         * dbus/dbus-hash.c (_dbus_hash_table_remove_string)
12898         (_dbus_hash_table_remove_int): return value indicates
12899         whether the entry existed to remove
12900
12901         * dbus/dbus-list.c: add linked list utility class,
12902         with docs and tests
12903
12904         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
12905         array sometimes.
12906
12907 2002-11-23  Havoc Pennington  <hp@pobox.com>
12908
12909         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
12910         DBUS_END_DECLS to nothing, that should fix this once and for all
12911
12912         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
12913
12914         * dbus/dbus-message.c, dbus/dbus-hash.c:
12915         add some missing @brief
12916
12917 2002-11-23  Havoc Pennington  <hp@pobox.com>
12918
12919         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS
12920         to avoid confusing Doxygen
12921
12922         * dbus/dbus-hash.c: @} not }@
12923
12924         * dbus/dbus-message.c (struct DBusMessage): split out
12925         internals docs
12926
12927 2002-11-23  Havoc Pennington  <hp@pobox.com>
12928
12929         * configure.in: pile on more warning flags if using gcc
12930
12931         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have
12932         to document static functions
12933
12934         * configure.in: add summary to end of configure so it
12935         looks nice and attractive
12936
12937         * dbus/dbus-hash.c: finish implementation and write unit
12938         tests and docs
12939
12940         * configure.in: add --enable-tests to enable unit tests
12941
12942         * dbus/dbus-test.c: test program to run unit tests
12943         for all files in dbus/*, initially runs a test for
12944         dbus-hash.c
12945
12946         * dbus/dbus-internals.h: file to hold some internal utility stuff
12947
12948 2002-11-22  Havoc Pennington  <hp@redhat.com>
12949
12950         * dbus/dbus-hash.c: copy in Tcl hash table, not yet
12951         "ported" away from Tcl
12952
12953         * dbus/dbus-types.h: header for types such as dbus_bool_t
12954
12955 2002-11-22  Havoc Pennington  <hp@redhat.com>
12956
12957         * dbus/dbus.h: fixups for doc warnings
12958
12959         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
12960         macros
12961         (QUIET): make it quiet so we can see warnings
12962
12963         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
12964
12965 2002-11-22  Havoc Pennington  <hp@redhat.com>
12966
12967         * Makefile.am: include "Doxyfile" target in all-local
12968
12969         * configure.in: generate the Doxyfile
12970
12971         * Doxyfile.in: move Doxyfile here, so we can use
12972         configure to generate a Doxyfile with the right
12973         version number etc.
12974
12975 2002-11-22  Havoc Pennington  <hp@redhat.com>
12976
12977         * dbus/dbus-message.c: move inline docs into .c file
12978
12979         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
12980         so all docs are under doc/
12981         (MAN_EXTENSION): generate man pages. Use extension
12982         ".3dbus" which matches ".3qt" on my system,
12983         I guess this is OK, I don't know really.
12984         (FILE_PATTERNS): look for .c files not .h, makes sense
12985         for plain C I think
12986
12987 2002-11-22  Havoc Pennington  <hp@pobox.com>
12988
12989         * Makefile.am (SUBDIRS): rename subdir "server" to "bus"
12990         because any app can be a server, and any app can be a client,
12991         the bus is a special kind of server.
12992
12993 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
12994
12995         * Doxyfile : adding. Still needs Makefile rules to be generated
12996         automatically (just run "doxygen" in the toplevel dir for now to
12997         generate docs)
12998
12999         * dbus/dbus-message.h : Adding sample docs (javadoc since
13000         resembles gtk-doc a little more)
13001
13002         * dbus/dbus.h : Adding sample docs
13003
13004 2002-11-21  Havoc Pennington  <hp@redhat.com>
13005
13006         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION
13007         so we can allow ourselves to include files directly,
13008         instead of having to use dbus.h
13009
13010         * dbus/dbus.h: fill in
13011
13012         * dbus/dbus-message.h: sketch out a sample header file.
13013         Include griping if you include it directly instead of
13014         via dbus.h
13015
13016         * dbus/dbus-macros.h: new file with macros for extern "C",
13017         TRUE/FALSE, NULL, etc.
13018
13019         * doc/file-boilerplate.c: put include guards in here
13020
13021 2002-11-21  Havoc Pennington  <hp@redhat.com>
13022
13023         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
13024
13025         * COPYING: include the GPL as well, and license code
13026         under both AFL and GPL.
13027
13028 2002-11-21  Havoc Pennington  <hp@redhat.com>
13029
13030         * acconfig.h: get rid of this
13031
13032         * autogen.sh (run_configure): add --no-configure option
13033
13034         * configure.in: remove AC_ARG_PROGRAM to make
13035         autoconf complain less. add AC_PREREQ.
13036         add AC_DEFINE third arg.
13037
13038 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
13039
13040         * doc/Makefile.am:
13041         Fix references so we can distcheck.
13042
13043 2002-11-21  Havoc Pennington  <hp@redhat.com>
13044
13045         * Initial module creation
13046