2005-09-05 Olivier Andrieu <oliv__a@users.sourceforge.net>
[platform/upstream/dbus.git] / ChangeLog
1 2005-09-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
2
3         * dbus/dbus-object-tree.c (find_subtree_recurse):
4         a couple of optimizations (bug #710):
5         - do a binary search in the tree
6         - insert a new child at the right place directly, no need for
7           qsort anymore
8         - do the "double alloc" thing when allocating children
9
10 2005-08-31  John (J5) Palmieri  <johnp@redhat.com>
11
12         * python/Makefile.am: Break on pyrexc errors instead of ignoring them
13
14         * python/dbus_bindings.pyx: Memory management foo
15         (global): remove hacky _user_data_references global list
16         (GIL_safe_cunregister_function_handler): userdata now stuffed into
17         tuples. Unref user_data
18         (GIL_safe_cmessage_function_handler): userdata now stuffed into tuples
19         (Connection::__del__): Remove and replace with __dealloc__ method
20         (Connection::add_filter): Stuff user_data into a tuple.  Use Py_INCREF
21         to keep tuple from being deallocated instead of the global var hack
22         (Connection::register_object_path): Stuff user_data into a tuple.
23         Use Py_INCREF to keep tuple from being deallocated instead of the 
24         global var hack
25         (Connection::register_fallback): Stuff user_data into a tuple.
26         Use Py_INCREF to keep tuple from being deallocated instead of the 
27         global var hack
28         (GIL_safe_pending_call_notification): Don't unref the message
29         because it gets unreffed when going out of scope.  Py_XDECREF
30         the user_data
31         (PendingCall::__del__): Remove and replace with __dealloc__ method
32         (PendingCall::set_notify): ref the pending call because we will
33         need it to stick around for when the notify callback gets called
34         (Message::__del__): Remove and replace with __dealloc__ method
35
36         * python/dbus_glib_bindings.pyx (init_gthreads): Changed to 
37         gthreads_init to match up with the dbus call
38
39         * python/glib.py (init_threads): Changed to threads_init to match
40         up with gobject.threads_init().  init_threads is kept for backwards
41         compat but will most likely be deprecated in the future
42
43         * test/python/test-client.py: 
44         - revamp to use Python's unittest functionality
45         - add async call tests
46         - setup threads in glib and dbus so we make sure locks are working
47         
48 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
49
50         * python/dbus_bindings.pyx 
51         (_pending_call_notification, cunregister_function_handler, 
52         cmessage_function_handler): All callback functions have been rearranged 
53         to workaround a bug in Pyrex when working with the GIL which is Python's 
54         global lock when dealing with threads.  They have been split into
55         a wrapper function (which assumes the name of the old function) and
56         a _GIL_safe_<function name> function which contains the functionality
57         of the old function.  This ensures that Pyrex does not write code
58         the lock is released.
59         
60
61 2005-08-30  John (J5) Palmieri  <johnp@redhat.com>
62
63         * python/dbus_bindings.pyx (_pending_call_notification): Obtain the
64         GIL global lock when calling back into Python
65
66 2005-08-29  John (J5) Palmieri  <johnp@redhat.com>
67
68         * Release 0.36.2
69
70         * Add Havoc's patch that never got applied to HEAD (Bug #2436):
71
72         * bus/policy.c (bus_policy_allow_user): change default "user is
73         allowed" to be "user has same uid as the bus itself"; any
74         allow/deny rules will override.
75
76         * bus/session.conf.in: don't allow all users, since now by default
77         the user that ran the bus can connect.
78
79 2005-08-26  Colin Walters  <walters@verbum.org>
80
81         * tools/dbus-print-message.c (print_message): Flush stdout
82         after printing a message, so that redirecting to a file, then
83         hitting Ctrl-C works.
84
85 2005-08-25  John (J5) Palmieri  <johnp@redhat.com>
86
87         * python/dbus_bindings.pyx: Tracked down a major memleak and fixed it
88         (EmptyMessage): new class that subclasses Message.  This is a workaround
89         to a Pyrex bug that fails to call __del__ when the Message object goes out
90         of scope.  For some reason subclassing Message fixes this bug
91         (Bus::send_with_reply_and_block): use EmptyMessage instead of Message
92         - s/Message(_create=0)/EmptyMessage everywhere else
93         
94         * test/python/test-{server|client}.py: add the python/.libs directory
95         to the lookup path so dbus_bindings and dbus_glib_bindings don't
96         get picked up from the system
97
98 2005-08-25  Colin Walters  <walters@verbum.org>
99
100         * glib/dbus-gproxy.c (dbus_g_proxy_call): Doc update, thanks
101         to Ryan Lortie for the suggestion.
102
103 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
104
105         * test/python: Add python regression test
106
107         * configure.in: Add test/python/Makefile
108
109         * test/Makefile.am: Add the python directory to SUBDIRS
110
111 2005-08-24  John (J5) Palmieri  <johnp@redhat.com>
112
113         * Release 0.36.1
114
115         * python/_dbus.py: 
116         (Interface::connect_to_signal): propigate keywords for match on args
117         (Bus::add_signal_receiver): Fix typo s/dbus_inteface/dbus_interface
118
119         * python/proxies.py (ProxyObject::connect_to_signal):
120         propigate keywords for match on args
121
122         * Makefile.am: point everything to pyexecdir since python borks
123         on multilib
124
125 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
126
127         * Release 0.36
128
129 2005-08-23  Colin Walters  <walters@verbum.org>
130
131         * test/glib/Makefile.am: Don't multiply-define EXTRA_DIST.
132
133 2005-08-23  John (J5) Palmieri  <johnp@redhat.com>
134
135         * python/dbus_glib_bindings.pyx: reorder imports and c definitions
136         to fix some wranings. We now use dbus_bindings.DBusConnection instead
137         of defining DBusConnection ourselves.
138
139 2005-08-18  John (J5) Palmieri  <johnp@redhat.com>
140
141         * python/dbus.pth: New path file to fix up problems when installing
142         c libraries to lib64 and python files to lib.
143
144         * python/Makefile.am: install dbus.pth in the correct spot
145
146 2005-08-17  John (J5) Palmieri  <johnp@redhat.com>
147         * ChangeLog: clean up my last entry a bit
148
149         * doc/introspect.xsl: New stylesheet for converting introspection data
150         into browser renderable xhtml. Contributed by Lennart Poettering.
151
152         * doc/introspect.dtd: Fixups in the introspect format from Lennart
153         Poettering.
154
155         * doc/dbus-tutorial.xml: 
156         - Add Colin Walter to the Authors section for authoring the GLib
157         section
158         - Add descriptions of the new signature and type functionality
159         in the Python complex type mapping section
160         - Add a sidenote on the new args matching functionality in 
161         the Python bindings
162         - Fixed up some of the examples to use the gobject.MainLoop
163         instead of gtk.main
164         
165         * python/_dbus.py:
166         (Bus::_create_args_dict): New. Converts a hash of arg matches
167         to a more useable format
168         (Bus::add_signal_receiver): add a **keywords parameter for catching
169         arg match parameters
170         (Bus::remove_signal_receiver): add a **keywords parameter for catching
171         arg match parameters
172         
173         * python/matchrules.py:
174         (MatchTree::exec_matches): Check for arg matches
175         (SignalMatchRule::add_args_match): New method
176         (SignalMatchRule::execute): Added args_list parameter as an optimization
177         so we don't have to marshal the args more than once
178         (SignalMatchRule::match_args_from_list): New method that checks to see
179         if the rule's arg matches match an argument list.  Only arguments
180         set in the rule are checked.
181         (SignalMatchRule::match_args_from_rule): New method that checks to see
182         if the rule's arg matches match another rule's.  All args have to match
183         in order for this method to return true.  If either rule has more args
184         then it is not a match.
185         (SignalMatchRule::is_match): Add args match
186         (SignalMatchRule::repr): Add args to the final output if they exist
187
188 2005-08-17  Ross Burton  <ross@burtonini.com>
189
190         * glib/dbus-gproxy.c:
191         (dbus_g_proxy_call_no_reply): unref the message once sent.
192         (dbus_g_proxy_call): protect against NULL proxy.
193
194 2005-08-16  John (J5) Palmieri  <johnp@redhat.com>
195
196         * python/__init__.py: Version updated (0, 43, 0)
197         
198         * python/dbus_bindings.pyx: 
199         - Fixed type objects to have self passed into __init__
200         - Added the Variant type
201         - Add the ability to specify types or signatures for Array, Variant 
202         and Dictionary
203         (Connection::send_with_reply_handlers): return a PendingCall object
204         (_pending_call_notification): handle the case when an error is returned 
205         without an error message in the body
206         (MessageIter::get_boolean): return True or False instead of an integer
207         (MessageIter::python_value_to_dbus_sig): add direct checking of types 
208         and add checks for objects with embeded signatures or types (Array, 
209         Variant and Dictionary)
210         (MessageIter::append_byte): handle case when the value is a dbus.Byte
211         (MessageIter::append_dict): handle embeded types or signatures
212         (MessageIter::append_array): handle embeded types or signatures
213         (MessageIter::append_variant): new method
214         
215         * python/proxies.py:
216         (DeferedMethod): New. Dummy executable object used when queuing calls 
217         blocking on introspection data
218         (ProxyMethod::__call__): add the timeout keyword for specifying longer 
219         or shorter timeouts for method calls
220         (ProxyObject): Add first pass at an introspection state machine
221         (ProxyObject::__init__): Add introspect keyword for turing off an on 
222         introspection. 
223         (ProxyObject::_Introspect): Internal Introspect call that bypasses 
224         the usual mechanisms for sending messages.  This is to avoid a deadlock
225         where the Intospect call would be queued waiting for the Introspect 
226         call to finish ;-)
227         (ProxyObject::_introspect_reply_handler): New.  This method is called 
228         when introspection returns with no error
229         (ProxyObject::_introspect_error_handler): New.  This method is called 
230         when introspection encounters an error
231         (ProxyObject::__getattr__): Code to handle different introspection 
232         states.  Queue async calls or block blocking calls if we are 
233         introspecting.  Pass through as normal if we are not or are done with 
234         introspecting.
235         
236         * python/service.py: Import signal and method from decorators.py
237
238         * python/types.py: Add Variant type
239
240 2005-08-16  Colin Walters  <walters@verbum.org>
241
242         * glib/dbus-gobject.c (dbus_set_g_error): Don't lose if the
243         DBusError message is NULL.
244
245 2005-08-09  Havoc Pennington  <hp@redhat.com>
246
247         * dbus/dbus-errors.c: apply patch from Timo Teras to make a
248         malloc'd copy of the name parameter
249
250 2005-08-09  Havoc Pennington  <hp@redhat.com>
251
252         * dbus/dbus-message.c (dbus_message_set_reply_serial): print
253         warning if the reply serial is set to 0
254
255 2005-08-04  Colin Walters  <walters@verbum.org>
256
257         * glib/dbus-gvalue-utils.h (_dbus_g_type_specialized_builtins_init)
258         (dbus_g_type_is_fixed, dbus_g_type_fixed_get_size)
259         (dbus_gvalue_set_from_pointer, dbus_g_hash_table_value_foreach)
260         (dbus_g_hash_table_insert_values, dbus_g_hash_table_insert_steal_values)
261         (dbus_gtype_is_valid_hash_key, dbus_gtype_is_valid_hash_value)
262         (dbus_g_hash_func_from_gtype, dbus_g_hash_free_from_gtype)
263         (dbus_g_hash_equal_from_gtype, dbus_gvalue_stor, dbus_gvalue_take):
264         * glib/dbus-gvalue.h (dbus_g_value_types_init)
265         (dbus_gvalue_demarshal, dbus_gvalue_demarshal_variant)
266         (dbus_gvalue_demarshal_message, dbus_gvalue_marshal):
267         
268         Prefix name with _ to ensure they're not exported.  All callers
269         updated.
270
271         * glib/dbus-gvalue.c (typecode_to_gtype)
272         (dbus_typecode_maps_to_basic, basic_typecode_to_gtype)
273         (signature_iter_to_g_type_dict)
274         (signature_iter_to_g_type_array)
275         (dbus_gtype_from_signature_iter, dbus_gtype_from_signature)
276         (dbus_gtypes_from_arg_signature):
277         Move to dbus-gsignature.c.
278
279         * glib/dbus-binding-tool-glib.c (dbus_binding_tool_output_glib_server): Call
280         dbus_g_type_specialized_builtins_init instead of dbus_g_value_types_init.
281         (dbus_binding_tool_output_glib_client): Ditto.
282
283         * glib/Makefile.am (DBUS_GLIB_INTERNALS): Add dbus-gsignature.c
284         and dbus-gsignature.h
285
286         * test/glib/test-service-glib.c (my_object_rec_arrays): Delete
287         unused variable.
288
289 2005-08-03  Colin Walters  <walters@verbum.org>
290
291         * glib/dbus-gobject.c: Add tests on hardcoded object info; this should
292         catch any incompatible changes accidentally made.
293
294 2005-08-03  Havoc Pennington  <hp@redhat.com>
295
296         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): fix
297         typo, from Julien Puydt
298
299         * bus/connection.c (bus_connection_disconnected): we were always
300         doing a wait_for_memory due to a buggy loop, found by Timo Hoenig
301
302 2005-08-01  Colin Walters  <walters@verbum.org>
303
304         Patch from Joe Markus Clarke:   
305         
306         * glib/dbus-gidl.c (property_info_unref, arg_info_unref): Fix
307         use-after-free.
308
309 2005-08-01  Colin Walters  <walters@verbum.org>
310         
311         Patch from Joe Markus Clarke:   
312         
313         * tools/dbus-send.c (main): 
314         
315         Don't use C99 style initializers (bug #3933).
316         
317 2005-08-01  Colin Walters  <walters@verbum.org>
318
319         Patch from Joe Markus Clarke:   
320
321         * glib/dbus-gvalue.c (dbus_g_value_types_init): 
322         * glib/dbus-gvalue-utils.c (dbus_g_type_specialized_builtins_init) 
323         * glib/dbus-gobject.c (write_interface):
324
325         Don't use C99 style initializers (bug #3933).
326
327 2005-07-31  Havoc Pennington  <hp@redhat.com>
328
329         * tools/dbus-viewer.c (load_child_nodes): fix invocation of
330         dbus_g_proxy_call, fix from Piotr Zielinski bug #3920
331
332 2005-07-30  Havoc Pennington  <hp@redhat.com>
333
334         * fix a bunch of Doxygen warnings and mistakes
335
336 2005-07-30  Havoc Pennington  <hp@redhat.com>
337
338         * dbus/dbus-sysdeps.c (_dbus_string_parse_uint): remove #ifdef
339         DBUS_BUILD_TESTS since it's now used in production code
340
341 2005-07-29  Havoc Pennington  <hp@redhat.com>
342
343         * test/glib/test-profile.c (write_junk): initialize the junk
344         buffer so valgrind doesn't have a breakdown
345
346 2005-07-29  Havoc Pennington  <hp@redhat.com>
347
348         * bus/signals.c (bus_signals_test): add match_rule_equal() tests
349         (match_rule_matches): remove unused arg
350         (test_matching): add tests for match_rule_matches()
351
352         * bus/signals.c (bus_match_rule_parse_arg_match): add ability to
353         do arg0='foo' arg5='bar' in the match rules
354         (match_rule_matches): don't match if the arg0='foo' doesn't match.
355
356         * dbus/dbus-protocol.h (DBUS_MAXIMUM_MATCH_RULE_ARG_NUMBER): add this
357
358 2005-07-29  Ross Burton  <ross@openedhand.com>
359
360         * dbus/dbus-connection.c:
361         Don't create a DBusCondVar which is never used.
362
363 2005-07-27  Ross Burton  <ross@openedhand.com>
364
365         * dbus/dbus-message.c:
366         Reduce the size of the maximum cached message to 10K.
367
368 2005-07-25  Ross Burton  <ross@openedhand.com>
369
370         * glib/dbus-gproxy.c:
371         Remove matches when all proxies are unregistered.
372
373 2005-07-24  Colin Walters  <walters@verbum.org>
374
375         * glib/dbus-gvalue.c (signature_iter_to_g_type_array): Don't require
376         typedata; recursive arrays won't have it.
377
378         * test/glib/test-dbus-glib.c:
379         * test/glib/test-service-glib.c:
380         * test/glib/test-service-glib.xml: Add recursive arrays tests.
381         
382 2005-07-20  John (J5) Palmieir  <johnp@redhat.com>
383
384         * python/_dbus.py, _util.py, decorators.py, extract.py, matchrules.py.
385         proxies.py, service.py: Cleanup of code after running it through the
386         pyflakes code checker mostly dealing with undefined names.  
387         (Bug #3828, Patch from Anthony Baxter <anthony@interlink.com.au>)
388
389 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
390
391         * NEWS: Update to 0.35.2
392
393 2005-07-17  John (J5) Palmieri  <johnp@redhat.com>
394
395         * python/_dbus.py: Remove import of the dbus.services
396         module as it no longer exists (patch from Dimitur Kirov)
397
398         * python/service.py (Object::__init__): Fixed typo
399         s/name/bus_name (patch from Dimitur Kirov)
400
401         * python/examples/example-signal-emitter.py: import dbus.glib
402         to get the main loop and use glib mainloop instead of gtk so
403         X doesn't have to be running.
404
405         * python/examples/example-signal-recipient.py: import dbus.glib
406         to get the main loop and use glib mainloop instead of gtk so
407         X doesn't have to be running. Import the decorators module
408         directly.
409
410         * test/glib/Makefile.am:  Added DIST_EXTRA files that distcheck
411         didn't pick up on but are needed to build
412
413         * configure.in: upped version to 0.35.2
414
415         * bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h:
416         added Colin Walters' SELinux API rename patch from head 
417         s/unix sercurity context/selinux security context/
418
419 2005-07-16  John (J5) Palmieri  <johnp@redhat.com>
420
421         * python/Makefile.am: dbus_binding.pxd.in should be included 
422         in EXTRA_DIST not dbus_binding.pxd
423         fix up $(srcdir) hopefully for the last time
424
425         * NEWS: Update to 0.35.1
426
427 2005-07-16  Colin Walters  <walters@verbum.org>
428
429         * bus/driver.c (bus_driver_handle_get_connection_selinux_security_context): Renamed
430         from bus_driver_handle_get_connection_unix_security_context.  Update for
431         error usage.
432         (message_handlers): Update for renames.
433
434         * bus/selinux.c (bus_selinux_allows_send): Handle OOM on
435         _dbus_string_init failure correctly.
436         (bus_selinux_append_context): Convert SID to context.  Append it
437         as a byte array.
438         (bus_selinux_shutdown): Handle the case where bus_selinux_full_init
439         hasn't been called.
440
441         * bus/selinux.h: Update prototype.
442
443         * dbus/dbus-protocol.h (DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN): Renamed
444         from DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN.
445
446 2005-07-15  Colin Walters  <walters@verbum.org>
447
448         * doc/TODO: Add note about convenience wrappers.
449
450 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
451
452         * NEWS: Update to 0.35
453
454 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
455
456         * glib/Makefile.am: Add make-dbus-glib-error-switch.sh to EXTRA_DIST
457         so distcheck doesn't fail
458
459         * glib/examples/Makefile.am: Add example-service.xml and 
460         example-signal-emitter.xml to EXTRA_DIST so distcheck doesn't fail
461
462         * glib/examples/statemachine/Makefile.am: Add statemachine.xml and
463         statemachine-server.xml to EXTRA_DIST so distcheck doesn't fail
464
465         * python/Makefile.am: Preprend $(srcdir)/ to source files so the
466         compiler looks in the right places during distcheck
467
468 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
469
470         * glib/example/Makefile.am: Fix a typo which cause make distcheck
471         to fail
472
473 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
474
475         * python/examples/example-service.py,
476         python/examples/example-signal-emitter.py: Fixed up examples
477         for API changes
478
479 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
480
481         * python/__init__.py: Upped to version (0,42,0) because of
482         the API change
483
484 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
485
486         * ChangeLog: fix date in last entry
487
488         * configure.in, bus/system.conf.in: add the ability to configure 
489         the system bus user at compiletime with the --with-dbus-user flag
490         (patch from Kristof Vansant)
491
492 2005-07-15  John (J5) Palmieri  <johnp@redhat.com>
493
494         * bus/dispatch.c, test/test-service.c: Add testcase
495         for sending messages to oneself (TODO item).
496
497         * python/service.py (class Object): Swap ordering of bus_name 
498         and object_path parameters to better support inheritance.
499
500         * doc/dbus-tutorial.xml: change Python docs to reflect change
501         in parameter ordering and fix the inheritance section.
502
503         * doc/TODO: remove sending message to oneself TODO item
504
505 2005-07-15  Ross Burton  <ross@openedhand.com>
506
507         * glib/dbus-gproxy.c:
508         Fix a leak when calling methods via the proxy.
509
510 2005-07-15  Colin Walters  <walters@verbum.org>
511
512         * bus/selinux.c (bus_selinux_append_context): Wrap in
513         HAVE_SELINUX.
514
515 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
516
517         * python/_dbus.py (Bus::remove_signal_receiver):
518         don't add a callback to the match if none has been passed in
519         
520         * python/matchrules.py (SignalMatchTree::remove): if the rule
521         being matched does not have a callback treat it as a wildcard
522         fix matching logic
523
524         * doc/dbus-tutorial.xml: Add Python tutorial
525
526 2005-07-14  Colin Walters  <walters@verbum.org>
527
528         * bus/driver.c
529         (bus_driver_handle_get_connection_unix_security_context): New function.
530         (message_handlers): Add.
531
532         * bus/selinux.c (bus_selinux_append_context): New function; appends
533         security context to message.
534
535         * bus/selinux.h: Prototype.
536
537         * dbus/dbus-protocol.h (DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN): New.
538
539 2005-07-14  John (J5) Palmieri  <johnp@redhat.com>
540
541         * bus/activation.c: clean up all tabs to be 8 spaces 
542         (bus_activation_activate_service): make sure we clean up
543         if activation fails
544
545         * bus/dispatch.c: clean up all tabs to be 8 spaces 
546         (check_shell_fail_service_auto_start): New function
547         tests to make sure we get fail properly when trying to auto start a service
548         with a faulty command line
549         (check_shell_service_success_auto_start): New function tests to make sure
550         auto started services get the arguments on the command line
551
552         * test/test-shell-service.c: Added service for testing auto-starting with 
553         command line arguments
554
555         * test/data/valid-service-files/debug-shell-echo-fail.service.in, 
556         test/data/valid-service-files/debug-shell-echo-success.service.in:
557         Added service files for testing auto-starting with command line arguments
558
559         * */.cvsignore: added a bunch of generated files to various .cvsignore files
560
561 2005-07-14  Rodrigo Moya  <rodrigo@novell.com>
562
563         * dbus/dbus-shell.[ch]: copy/pasted code from GLib.
564         
565         * dbus/Makefile.am: added new files to build.
566
567         * bus/activation.c (bus_activation_activate_service): support
568         activation commands with parameters.
569
570         * test/shell-test.c: added test program for the shell parsing
571         code.
572
573 2005-07-13  David Zeuthen  <davidz@redhat.com>
574
575         * tools/dbus-send.c (append_arg, type_from_name): Also support 16 and
576         64 bit signed and unsigned parameters
577
578 2005-07-13  John (J5) Palmieri  <johnp@redhat.com>
579
580         * python/.cvsignore: remove dbus_bindings.pyx, add dbus_bindings.pxd
581
582         * python/service.py (class Name): renamed BusName to make it clearer
583         what the object is for (a name on the bus)
584
585         * python/examples/example-service.py,
586         python/examples/example-signal-emitter.py: change the Name object to
587         BusName
588
589 2005-07-12  Colin Walters  <walters@verbum.org>
590
591         Patch from Jim Gettys <Jim.Gettys@hp.com>.
592
593         * tools/dbus-launch.c: Include sys/select.h.
594
595 2005-07-12  John (J5) Palmieri  <johnp@redhat.com>
596         * python/dbus_bindings.pyx.in: removed
597
598         * python/dbus_bindings.pyx: Added.
599         - Fixed some memleaks (patch from 
600         Sean Meiners <sean.meiners@linspireinc.com>)
601         - Broke out the #include "dbus_h_wrapper.h" and put it in its
602         own pxd file (Pyrex definition)
603         - Broke out glib dependancies into its own pyx module
604         
605         * python/dbus_bindings.pdx: Added.
606         - Defines C class Connection for exporting to other modules
607
608         * python/dbus_glib_bindings.pyx: Added.
609         - New module to handle lowlevel dbus-glib mainloop integration
610
611         * python/glib.py: Added.
612         - Registers the glib mainloop when you import this module
613
614         * python/services.py: Removed (renamed to service.py)
615         
616         * python/service.py: Added.
617         - (class Server): renamed Name
618
619         * python/__init__.py: Bump ro version (0,41,0)
620         -don't import the decorators or service module
621         by default.  These now reside in the dbus.service namespace
622
623         * python/_dbus.py (Bus::__init__): Add code run the main loop 
624         setup function on creation 
625
626         * python/examples/example-service.py,
627         python/examples/example-signal-emitter.py: update examples
628
629         * python/examples/gconf-proxy-service.py,
630         python/examples/gconf-proxy-service2.py: TODO fix these up
631
632         * doc/TODO: Addition
633         - Added a Python Bindings 1.0 section
634         - added "Add match on args or match on details to match rules"
635
636
637 2005-07-12  Colin Walters  <walters@verbum.org>
638
639         * glib/examples/statemachine/Makefile.am (statemachine-server-glue.h) 
640         (statemachine-glue.h): 
641         * glib/examples/Makefile.am (example-service-glue.h) 
642         (example-signal-emitter-glue.h): 
643         * glib/Makefile.am (dbus-glib-error-switch.h): 
644         Add libtool --mode=execute so we use the built library instead
645         of any installed one.
646
647 2005-07-11  Colin Walters  <walters@verbum.org>
648
649         * glib/dbus-gvalue.c (struct _DBusGValue): Delete.
650         (dbus_g_value_types_init): Remove assertion.
651         (dbus_g_value_get_g_type, dbus_g_value_open)
652         (dbus_g_value_iterator_get_values, dbus_g_value_get_signature)
653         (dbus_g_value_copy, dbus_g_value_free): Delete unimplemented
654         functions related to DBusGValue.  Now we marshal/demarshal
655         structures as GValueArray.
656         (dbus_gtype_from_signature_iter): Return G_TYPE_VALUE_ARRAY for
657         structures.
658         (signature_iter_to_g_type_array): Don't call
659         signature_iter_to_g_type_struct.
660         (signature_iter_to_g_type_struct): Delete.
661         (dbus_gvalue_to_signature): Delete.
662         (dbus_gvalue_to_signature): New function with same name as other
663         one; we can convert structures to signatures.
664         (demarshal_valuearray): New function.
665         (get_type_demarshaller): Use it.
666         (demarshal_recurse): Delete.
667         (marshal_proxy): New function.
668         (marshal_map): Warn if we can't determine signature from type.
669         (marshal_collection_ptrarray): Ditto.
670         (marshal_collection_array): Ditto.
671         (get_type_marshaller): Use marshal_valuearray.
672         (marshal_recurse): Delete.
673         (_dbus_gvalue_test): Add some tests.
674
675         * dbus/dbus-glib.h (struct _DBusGValueIterator): 
676         (dbus_g_value_get_g_type, DBUS_TYPE_G_VALUE)
677         (dbus_g_value_open, dbus_g_value_iterator_get_value)
678         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
679         (dbus_g_value_free): Remove prototypes.
680
681         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_lookup_function): Handle
682         G_TYPE_VALUE_ARRAY.
683
684         * glib/examples/example-service.c:
685         * glib/examples/example-client.c: Implement GetTuple.
686
687         * test/glib/test-dbus-glib.c:
688         * test/glib/test-service-glib.c:
689         * test/glib/test-service-glib.xml: Add structure tests.
690
691 2005-07-10  Colin Walters  <walters@verbum.org>
692
693         * doc/TODO: Knock off some GLib items with this patch.
694
695         * glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error) 
696         (_dbus_gvalue_signals_error): New functions.
697
698         * glib/dbus-gvalue-utils.h: Prototype them.
699
700         * glib/dbus-gobject.c (arg_iterate): Update to handle return vals
701         and change to not output const/retval flags for input args.  All
702         callers updated.
703         (invoke_object_method): Refactor to handle return values.  Add
704         some more comments in various places.  Remove debug g_print.
705
706         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New.
707
708         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name):
709         Handle G_TYPE_NONE.
710         (compute_gsignature): New function; refactored from code from
711         compute_marshaller and compute_marshaller_name.  Enhance to
712         handle return values and async ops more cleanly.  Update for
713         async ops returning NONE instead of BOOLEAN.
714         (compute_marshaller, compute_marshaller_name): Call compute_gsignature
715         and output appropriate string.
716         (generate_glue): Handle return value annotation.  Also don't dump
717         constness flag for input arguments.
718
719         * glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains
720         files shared between installed library and utilities.
721         (libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS.
722         (libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the
723         binding tool can access gtype utility functions.
724
725         * test/glib/test-service-glib.c: 
726         * test/glib/test-service-glib.xml: 
727         * test/glib/test-dbus-glib.c: Add some tests for return values.
728
729 2005-07-09  Colin Walters  <walters@verbum.org>
730
731         * glib/dbus-gparser.c (parse_annotation): Add annotations to
732         argument if available, not method.
733
734         * glib/dbus-gobject.c (arg_iterate): More verbose warnings.
735         (invoke_object_method): First, remove some redundant
736         GValues (object_value, error_value) in favor of working on
737         array directly.  Second, rework constness to be less buggy.
738         Now we iterate directly over the argument metadata instead
739         of parallel iterating over output signature and metadata.
740
741         * glib/dbus-glib-tool.h: Add INVALID_ANNOTATION error.
742
743         * glib/dbus-binding-tool-glib.c (generate_glue): Barf on const
744         annotation on input args.
745         
746 2005-07-09  Colin Walters  <walters@verbum.org>
747
748         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
749         Define.
750
751         * glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
752         annotation.
753
754         * glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
755         (method_dir_signature_from_object_info): Handle arg_iterate change.
756         (write_interface): Ditto.
757         (lookup_object_info): Don't barf if format_version is > 0.
758         (invoke_object_method): Handle arg constness.
759
760         * glib/dbus-gidl.c (struct ArgInfo): Add annotations.
761         (arg_info_new): Create.
762         (arg_info_unref): Destroy.
763         (arg_info_get_annotations, arg_info_get_annotation) 
764         (arg_info_add_annotation): New functions.
765
766         * glib/dbus-gidl.h: Prototype them.
767
768         * glib/dbus-gparser.c (parse_annotation): Allow annotations in
769         args, disallow them in properties.
770         (parse_annotation): Handle arg annotations.
771
772         * test/glib/test-service-glib.xml: 
773         * test/glib/test-service-glib.c: Update to make some methods
774         const.
775
776 2005-07-08  Colin Walters  <walters@verbum.org>
777
778         * test/glib/test-service-glib.xml: 
779         * test/glib/test-service-glib.c:
780         * test/glib/test-dbus-glib.c: Test a{sv}.
781
782         * glib/examples/statemachine/statemachine.c:
783         * glib/examples/statemachine/statemachine-server.c:
784         * glib/examples/statemachine/statemachine-client.c: Fix some bugs,
785         add progress bar, etc.
786
787         * glib/dbus-gvalue.c (register_array, register_dict): Delete; not
788         needed anymore due to generic array/map marshalling.
789         (dbus_g_value_types_init): Don't register basic arrays or the
790         string/string hash.
791         (dbus_gtype_from_signature_iter): Don't try to recurse into
792         variants.
793         (dbus_gtype_to_signature): Check collection/map before type
794         metadata.
795         (demarshal_garray_basic): Renamed to demarshal_collection_array.
796         (demarshal_ghashtable): Renamed to demarshal_map; fix to use new
797         generic map creation/append functions instead of hash table
798         specifically.
799         (get_type_demarshaller): Handle maps.
800         (demarshal_collection): Dispatch on collection type to either
801         demarshal_collection_ptrarray or demarshal_collection_array.
802         (get_type_marshaller): Handle maps.
803         (marshal_collection): Dispatch collection type to either
804         marshal_collection_ptrarray or marshal_collection_array.
805         (_dbus_gvalue_test): New test.
806
807         * glib/dbus-gvalue-utils.c (unset_and_free_g_value): New function.
808         (hash_free_from_gtype): Use it to free GValues.
809         (hashtable_append): New function.
810         (ptrarray_append): Fix prototype.
811         (slist_append): Ditto.
812         (_dbus_gvalue_utils_test): Extend tests.
813
814         * glib/dbus-gtype-specialized.c
815         (dbus_g_type_specialized_init_append): Renamed from
816         dbus_g_type_specialized_collection_init_append.  Remove const from
817         value, since we steal it.
818         (dbus_g_type_specialized_map_append): New function.
819
820         * glib/dbus-gtype-specialized.h: Update prototypes.
821         Add DBusGTypeSpecializedMapAppendFunc.
822
823         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
824         _dbus_gvalue_test.
825         
826         * glib/dbus-gtest.h: Prototype it.
827
828 2005-07-08  Ross Burton  <ross@openedhand.com>
829
830         * dbus/dbus-glib.h:
831         Add DBysGAsyncData for the async bindings.
832
833         * glib/dbus-binding-tool-glib.c:
834         Re-enable the async bindings.
835
836         * test/glib/test-dbus-glib.c:
837         Add a test for the generated async bindings.
838
839 2005-07-08  Colin Walters  <walters@verbum.org>
840
841         * doc/TODO: Update GLib todo bits, also add a post-1.0 TODO for a
842         connection concept.
843         
844 2005-07-08  Colin Walters  <walters@verbum.org>
845         
846         * tools/Makefile.am: Kill of print-introspect in favor of using
847         dbus-send --print-reply=literal.
848
849         * test/glib/test-service-glib.xml: 
850         * test/glib/test-service-glib.c (my_object_get_objs): New test
851         for "ao".
852
853         * test/glib/test-dbus-glib.c (echo_received_cb): Free echo data.
854         (main): Test GetObjs.
855
856         * glib/examples/statemachine/Makefile.am:
857         * glib/examples/statemachine/sm-marshal.list:
858         * glib/examples/statemachine/statemachine-client.c:
859         * glib/examples/statemachine/statemachine-server.c:
860         * glib/examples/statemachine/statemachine-server.xml:
861         * glib/examples/statemachine/statemachine.c:
862         * glib/examples/statemachine/statemachine.h:
863         * glib/examples/statemachine/statemachine.xml:
864
865         New example.
866
867         * glib/examples/example-service.c (main): Move invocation
868         of dbus_g_object_type_install_info earlier, to emphasize it
869         should only be done once.
870
871         * glib/examples/example-signal-emitter.c (main): Ditto.
872
873         * glib/examples/Makefile.am (SUBDIRS): Include statemachine.
874
875         * glib/dbus-gvalue.h (dbus_gtype_to_signature)
876         (dbus_gvalue_marshal): Update prototypes.
877
878         * glib/dbus-gvalue.c: Update all marshalling functions to take
879         const GValue instead of GValue.
880         (signature_iter_to_g_type_array): Return a GPtrArray for nonfixed
881         types.
882         (dbus_gvalue_to_signature): Update for dbus_gtype_to_signature
883         change.
884         (dbus_gtype_to_signature): Handle generic collecitons and maps.
885         Return a newly-allocated string.
886         (demarshal_proxy, demarshal_object_path, demarshal_object)
887         (demarshal_strv, demarshal_ghashtable): Set error, don't assert if
888         we get the wrong types from message.
889         (get_type_demarshaller): New function, extracted from
890         dbus_gvalue_demarshal.
891         (demarshal_collection): New function, demarshals generic
892         collection.
893         (dbus_gvalue_demarshal): Just invoke result of
894         get_type_demarshaller.  Throw error if we don't have one.
895         (marshal_garray_basic): Abort on OOM.
896         (get_type_marshaller): New function, extracted from
897         dbus_gvalue_marshal.
898         (collection_marshal_iterator, marshal_collection): New functions;
899         implements generic marshalling for an iteratable specialized
900         collection.
901         (dbus_gvalue_marshal): Just invoke result of get_type_marshaller.
902
903         * glib/dbus-gvalue-utils.c (gvalue_from_ptrarray_value): Handle
904         G_TYPE_STRING.
905         (ptrarray_value_from_gvalue): Ditto.
906         (ptrarray_append, ptrarray_free): New functions.
907         (slist_constructor, slist_iterator, slist_copy_elt, slist_copy) 
908         (slist_append, slist_end_append, slist_free): New functions.
909         (dbus_g_type_specialized_builtins_init): Add append fuctions
910         for GPtrArray and GSList.  Register GSList.
911         (test_specialized_hash, _dbus_gvalue_utils_test): New functions.
912
913         * glib/dbus-gtype-specialized.h (DBusGTypeSpecializedAppendContext):
914         New.
915         (dbus_g_type_specialized_collection_init_append)
916         (dbus_g_type_specialized_collection_append)
917         (dbus_g_type_specialized_collection_end_append): Prototype.
918         (DBusGTypeSpecializedCollectionVtable): Add append_func and
919         end_append_func.
920
921         * glib/dbus-gtype-specialized.c (dbus_g_type_specialized_collection_init_append) 
922         (dbus_g_type_specialized_collection_append) 
923         (dbus_g_type_specialized_collection_end_append): New functions.
924         (dbus_g_type_map_value_iterate): Take const GValue.
925         (dbus_g_type_collection_value_iterate): Ditto.
926
927         * glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
928         _dbus_gvalue_utils_test.
929         
930         * glib/dbus-gtest.h: Prototype it.
931
932         * glib/dbus-gproxy.c (dbus_g_proxy_manager_filter): Avoid
933         using uninitialized owner_list.
934         (dbus_g_proxy_begin_call_internal): Move return_if_fail to
935         public API.
936         (dbus_g_proxy_end_call_internal): Update to use error set
937         from dbus_gvalue_demarshal instead of setting it here.
938         (dbus_g_proxy_begin_call): Move return_if_fail here.
939
940         * glib/dbus-gobject.c (write_interface): Update for
941         dbus_gtype_to_signature returning new string.
942
943         * configure.in: Add glib/examples/statemachine.
944
945 2005-07-08  Joe Shaw  <joeshaw@novell.com>
946
947         * configure.in: Add a configure option, --with-console-auth-dir
948         
949         * dbus/dbus-sysdeps-util.c (_dbus_user_at_console): Use the
950         new setting.  Patch from Kay Sievers.
951
952 2005-07-06  Colin Walters  <walters@verbum.org>
953
954         * dbus/dbus-glib.h (DBusGPendingCall, DBusGPendingCallNotify)
955         (DBUS_TYPE_G_PENDING_CALL, dbus_g_pending_call_get_g_type)
956         (dbus_g_pending_call_ref, dbus_g_pending_call_unref): Delete.
957         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel):
958         Delete in favor of dbus_g_proxy_begin_call and
959         dbus_g_proxy_cancel_call.
960         (DBusGProxyCall, DBusGProxyCallNotify): New.
961         (dbus_g_proxy_begin_call): Change prototype to take callback, user
962         data, and destroy function.  This replaces
963         dbus_g_pending_call_set_notify.
964         (dbus_g_proxy_cancel_call): Prototype.
965         (DBusGAsyncData): Delete, shouldn't be needed anymore.
966
967         * glib/dbus-gproxy.c (struct _DBusGProxy): Add call_id_counter and
968         pending_calls map.
969         (struct _DBusGProxyManager): Add bus_proxy member, which is an
970         internal proxy for calls to the bus. Remove
971         pending_nameowner_calls, now the internal proxy keeps track.
972         (dbus_g_proxy_manager_unref): Unref bus proxy, remove reference to
973         pending_nameowner_calls.
974         (got_name_owner_cb): Update prototype, and use
975         dbus_g_proxy_end_call.
976         (got_name_owner_cb): Remove reference to pending_nameowner_calls.
977         (dbus_g_proxy_manager_register): Delete directly libdbus code in
978         favor of using internal proxy.
979         (dbus_g_proxy_manager_unregister): Update to use
980         dbus_g_proxy_cancel_call for any pending GetNameOwner call.
981         (dbus_g_proxy_init): Initialize pending calls map.
982         (dbus_g_proxy_constructor): New.
983         (dbus_g_proxy_class_init): Add get/set property functions,
984         constructor, and add NAME, PATH, and INTERFACE properties.
985         (cancel_pending_call): New function.
986         (dbus_g_proxy_dispose): Iterate over any outstanding calls and
987         cancel them.
988         (dbus_g_proxy_set_property, dbus_g_proxy_get_property): New.
989         (GPendingNotifyClosure): New structure.
990         (d_pending_call_notify, d_pending_call_free): Moved here from
991         dbus-glib.c.
992         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Moved around to satisfy function
993         ordering.
994         (manager_begin_bus_call): New internal function for talking to
995         internal bus proxy.
996         (dbus_g_proxy_new): Construct object using GObjet properties.
997         (dbus_g_proxy_begin_call_internal): Update to take user data, etc.
998         Create closure of same, and insert call into map of pending calls.
999         (dbus_g_proxy_end_call_internal): Take call id instead of pending
1000         call.  Look up pending call in current set.  Remove it when we've
1001         completed.
1002         (dbus_g_pending_call_end, dbus_g_proxy_end_call_internal): Delete.
1003         (dbus_g_proxy_begin_call): Change API to take callback, user data,
1004         and destroy function directly.
1005         (dbus_g_proxy_end_call): Update to take DBusGProxyCall.
1006         (dbus_g_proxy_call): Invoke with NULL callback.
1007         (dbus_g_proxy_cancel_call): New function, replaces
1008         dbus_g_pending_call_cancel.
1009
1010         * glib/dbus-gparser.c (validate_signature): Fix call to
1011         dbus_set_g_error.
1012
1013         * glib/dbus-gobject.c (dbus_g_object_type_dbus_metadata_quark):
1014         New quark for attaching metadata to GType.
1015         (info_hash): Delete.
1016         (lookup_object_info): Look up using quark.
1017         (dbus_g_object_type_install_info): Check that a type is classed,
1018         not that it's an object.  Also just install type data using quark
1019         instead of using global hash.
1020
1021         * glib/dbus-glib.c (dbus_g_pending_call_ref) 
1022         (dbus_g_pending_call_unref, dbus_pending_call_get_g_type)
1023         (GPendingNotifyClosure): Delete.
1024         (d_pending_call_notify, d_pending_call_free): Move to dbus-gproxy.c.
1025         (dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel): Delete.
1026
1027         * glib/dbus-binding-tool-glib.c (generate_client_glue): Disable async
1028         client method generation until we can fix it...
1029         
1030         * tools/dbus-viewer.c (load_child_nodes): Use dbus_g_proxy_call.
1031         (load_from_service_thread_func): Ditto.
1032
1033         * tools/dbus-names-model.c (struct NamesModel): Hold
1034         DBusGProxyCall.
1035         (have_names_notify): Update prototype, use
1036         dbus_g_proxy_cancel_call.
1037         (names_model_reload): Update for new dbus_g_proxy_begin_call API.
1038
1039         * tools/dbus-monitor.c (filter_func): Update for print_message
1040         API change.
1041
1042         * test/glib/test-dbus-glib.c: Add more tests for async
1043         invocations.  Update many begin_call/end_call pairs to just use
1044         dbus_g_proxy_call.
1045
1046         * tools/dbus-send.c (main): Add --print-reply=literal mode.  This
1047         allows us to dump print-introspect.c.
1048
1049         * tools/dbus-print-message.h (print_message): Add literal argument
1050         to print_message which is intended to allow printing arguments without
1051         metadata like "string=".
1052
1053         * tools/dbus-print-message.c (print_iter): Add literal argument.
1054         (print_message): Allow printing string messages literally.
1055
1056 2005-07-05  Colin Walters  <walters@verbum.org>
1057
1058         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
1059         Remove value refcount leak, original patch from Jorn Baayen
1060         <jorn@openedhand.com>.  Also remove useless extra value in favor
1061         of prepending to value array directly.
1062
1063 2005-07-02  Colin Walters  <walters@verbum.org>
1064
1065         * glib/dbus-gmain.c (_dbus_gmain_test): Fix test.
1066
1067 2005-07-01  Colin Walters  <walters@verbum.org>
1068
1069         Patch from Jonathan Matthew <jonathan@kaolin.hn.org>
1070         
1071         * glib/dbus-gvalue.c (basic_typecode_to_gtype): Fix return type.
1072         (dbus_g_value_types_init): Marshal G_TYPE_CHAR as DBUS_TYPE_BYTE,
1073         G_TYPE_LONG as DBUS_TYPE_INT32, G_TYPE_ULONG as DBUS_TYPE_UINT32,
1074         and G_TYPE_FLOAT as DBUS_TYPE_DOUBLE.
1075
1076 2005-06-30  Colin Walters  <walters@verbum.org>
1077
1078         * test/glib/test-dbus-glib.c:
1079         * test/glib/test-service-glib.c:
1080         * test/glib/test-service-glib.xml: Update tests for new error
1081         setting bits, also add async tests (patch from Ross Burton).
1082
1083         * test/glib/Makefile.am (test_service_glib_LDADD): Add
1084         DBUS_GLIB_THREADS_LIBS.
1085
1086         * glib/dbus-gproxy.c (get_name_owner)
1087         (dbus_g_pending_call_end_valist): Ditto.
1088
1089         * glib/dbus-gobject.c (error_metadata): New mapping from GError
1090         domain (GQuark) to DBusGErrorInfo.  
1091         (gerror_domaincode_to_dbus_error_name): Attempt to look up error
1092         quark in error_metadata.  Take message interface as default
1093         error message interface.
1094         (gerror_to_dbus_error_message): Pass message interface.
1095         (dbus_set_g_error): Resurrected.
1096         (dbus_g_error_info_free): New function.
1097         (dbus_g_object_type_install_info): Use g_type_class_ref instead
1098         of _peek to actually create the object class if it hasn't been
1099         created yet.
1100         (dbus_g_error_domain_register): New function.
1101
1102         * glib/dbus-gmain.c (dbus_g_bus_get): Switch to dbus_set_g_error.
1103
1104         * glib/dbus-gparser.c (validate_signature): Ditto.
1105
1106         * dbus/dbus-glib.h (dbus_g_error_set): Delete.
1107         (dbus_g_error_domain_register): Prototype.
1108
1109         * glib/dbus-glib.c (dbus_g_error_set): Delete.
1110         Update tests.
1111
1112 2005-06-29  Colin Walters  <walters@verbum.org>
1113
1114         * dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY.  Add
1115         DBUS_TYPE_G_OBJECT_PATH.
1116
1117         * glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers
1118         for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should
1119         be handled more generically).  Add DBUS_TYPE_G_OBJECT_PATH.
1120         (dbus_g_object_path_get_g_type): New function.
1121         (dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH
1122         to DBUS_TYPE_G_OBJECT_PATH by default.
1123         (demarshal_proxy): Remove unused name variable.
1124         (demarshal_object_path, marshal_object_path): New functions.
1125         (demarshal_proxy_array, marshal_proxy_array): Delete.
1126         
1127         * glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map
1128         DBUS_TYPE_G_OBJECT_PATH to char *.
1129         (dbus_g_type_get_lookup_function): Map builtin
1130         DBUS_TYPE_G_OBJECT_PATH.
1131
1132         * test/glib/test-dbus-glib.c
1133         * test/glib/test-service-glib.c (my_object_objpath): 
1134         Adapt tests to new object path marshalling.
1135
1136 2005-06-29  John (J5) Palmieri  <johnp@redhat.com>
1137
1138         * configure.in: force check for Python >= 2.4
1139
1140 2005-06-29  Colin Walters  <walters@verbum.org>
1141         
1142         Patch from Ross Burton <ross@openedhand.com>
1143         
1144         * glib/dbus-gobject.c (invoke_object_method): Unset object
1145         value in all cases, not only in async case.
1146
1147 2005-06-29  Colin Walters  <walters@verbum.org>
1148
1149         * glib/dbus-gproxy.c (struct _DBusGProxy): Add new member
1150         name_call for keeping track of any outgoing GetNameOwner call.
1151         Also add for_owner and associated.
1152         (struct _DBusGProxyManager): Add owner_names, which is hash table
1153         that maps a base name to a list of names it owns (that we're
1154         interested in).  Add pending_nameowner_calls which is a list of
1155         all outstanding GetNameOwner; avoids us having to iterate over
1156         every proxy.  Add unassociated_proxies which keeps track of name
1157         proxies with no associated name owner.
1158         (dbus_g_proxy_manager_unref): Destroy owner_names.
1159         (struct DBusGProxyNameOwnerInfo): New struct for keeping track of
1160         name refcounts.
1161         (find_name_in_info, name_owner_foreach)
1162         (dbus_g_proxy_manager_lookup_name_owner, insert_nameinfo)
1163         (dbus_g_proxy_manager_monitor_name_owner)
1164         (dbus_g_proxy_manager_unmonitor_name_owner)
1165         (unassociate_proxies, dbus_g_proxy_manager_replace_name_owner):
1166         New functions; they manipulate the owner_names mapping.
1167         (got_name_owner_cb): New function.
1168         (get_name_owner): New function, extracted from
1169         dbus_g_proxy_new_for_name_owner.
1170         (dbus_g_proxy_manager_register): For now we need to keep track of
1171         all NameOwnerChanged.  Also if the proxy is for a name, if we
1172         don't already know the name owner, queue a new GetNameOwner
1173         request and add it to our list of unassociated proxies.  Otherwise
1174         inc the refcount.
1175         (dbus_g_proxy_manager_unregister): If this proxy is for a name,
1176         cancel any pending GetNameOwner call, etc.
1177         (dbus_g_proxy_manager_filter): Handle NameOwnerChanged.  Also use
1178         the owner_names mapping to look up the current names for the
1179         signal source, and dispatch to any proxies for that name.
1180         (dbus_g_proxy_new): Initialize new members.
1181         (dbus_g_proxy_new_for_name): Delete unused proxy variable.
1182         (dbus_g_proxy_new_for_name_owner): Use get_name_owner.
1183         (dbus_g_pending_call_end_valist): New function, extracted from
1184         dbus_g_proxy_end_call_internal.  Useful when we don't have a proxy
1185         but want to use the GLib infrastructure.  Also note how many
1186         arguments in reply were over.
1187         (dbus_g_pending_call_end): New function, just call
1188         dbus_g_pending_call_end_valist.
1189         (dbus_g_proxy_end_call_internal): Just call
1190         dbus_g_pending_call_end_valist.
1191
1192         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Fix lookup
1193         of builtin marshaller for STRING_STRING_STRING.
1194
1195         * test/glib/test-dbus-glib.c: 
1196         * test/glib/test-service-glib.c:
1197         * test/glib/test-service-glib.xml:
1198         Extend tests to cover name proxies, destruction of owner proxies,
1199         etc.
1200         
1201         * glib/examples/example-signal-recipient.c
1202         (dbus_g_proxy_new_for_name_owner): Create a name proxy.
1203         
1204         * tools/dbus-send.c (main): Print D-BUS error name in addition
1205         to message.
1206
1207 2005-06-28  John (J5) Palmieri  <johnp@redhat.com>
1208
1209         * python/dbus_bindings.pyx.in (cunregister_function_handler,
1210         cmessage_function_handler): Patch from 
1211         Anthony Baxter <anthony@interlink.com.au> fixes threading problems
1212         by using the Py_GILState_Ensure/Release to synchronize with the
1213         python runtime.
1214         
1215 2005-06-28  Ray Strode  <rstrode@redhat.com>
1216
1217         *  dbus/dbus-spawn.c (_dbus_babysitter_unref): kill
1218         babysitter helper process on last unref, bug #2813.
1219
1220 2005-06-27  Colin Walters  <walters@verbum.org>
1221
1222         * test/glib/test-dbus-glib.c: 
1223         * test/glib/test-service-glib.c:
1224         * test/glib/test-service-glib.xml:
1225         Test hash table signal emitting.
1226
1227         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Convert
1228         types to their fundamental basis types, since this is what
1229         marshallers operate on.  Also add an entry for VOID__BOXED.
1230         (dbus_g_object_register_marshaller_array): Convert to fundamental.
1231
1232 2005-06-26  Havoc Pennington  <hp@redhat.com>
1233
1234         * doc/dbus-tutorial.xml: fix names of interface/service/path, fix
1235         from Don Park
1236
1237 2005-06-26  Colin Walters  <walters@verbum.org>
1238
1239         * glib/dbus-glib.c (dbus_set_g_error): Delete.
1240         (dbus_g_error_set): New public function from its ashes; used by
1241         both service-side method implementation and GLib bindings
1242         internals.
1243         (dbus_g_error_has_name, dbus_g_error_get_name): New function.
1244         (_dbus_glib_test): Add some tests.
1245
1246         * test/glib/test-dbus-glib.c (main): Test dbus_g_error_has_name.
1247
1248         * test/glib/test-service-glib.c (my_object_throw_error): Use
1249         dbus_g_error_set.
1250
1251         * glib/dbus-gobject.c (gerror_to_dbus_error_message): Handle
1252         errors thrown by dbus_g_error_set.
1253
1254         * glib/dbus-gmain.c (dbus_g_bus_get): Change to dbus_g_error_set.
1255
1256         * glib/dbus-gparser.c (validate_signature): Ditto.
1257
1258         * glib/dbus-gproxy.c (dbus_g_proxy_new_for_name_owner) 
1259         (dbus_g_proxy_end_call_internal): Ditto.
1260
1261         * glib/Makefile.am: Generate dbus-glib-error-switch.h, which
1262         converts DBUS_ERROR_x to DBUS_GERROR_x.
1263         (libdbus_glib_1_la_SOURCES, BUILT_SOURCES, CLEANFILES): Add it.
1264
1265         * doc/TODO: Remove error TODO.
1266
1267         * doc/dbus-tutorial.xml: Update with documentation about error
1268         handling.
1269
1270         * dbus/make-dbus-glib-error-enum.sh: Tighten up regexp to make
1271         sure we only change DBUS_ERROR to DBUS_GERROR, not all ERROR to
1272         GERROR.  Also add DBUS_GERROR_REMOTE_EXCEPTION.
1273
1274 2005-06-22  Colin Walters  <walters@verbum.org>
1275         
1276         Patch from Ross Burton <ross@openedhand.com>
1277
1278         * glib/dbus-gobject.c (dbus_g_method_return): Free out_sig.
1279
1280 2005-06-20  Colin Walters  <walters@verbum.org>
1281
1282         * configure.in: Add glib/examples.
1283
1284         * glib/Makefile.am: Add examples/
1285
1286         * glib/examples/.cvsignore
1287         * glib/examples/Makefile.am
1288         * glib/examples/example-client.c
1289         * glib/examples/example-service.c
1290         * glib/examples/example-service.xml
1291         * glib/examples/example-signal-emitter.c
1292         * glib/examples/example-signal-emitter.xml
1293         * glib/examples/example-signal-recipient.c:
1294         New files; GLib binding examples, ported from
1295         python/examples.
1296
1297 2005-06-20  Colin Walters  <walters@verbum.org>
1298
1299         * dbus/dbus-glib.h: 
1300         * glib/dbus-gproxy.c: Rename dbus_g_proxy_invoke to
1301         dbus_g_proxy_call.
1302
1303         * glib/dbus-binding-tool-glib.c: 
1304         * doc/dbus-tutorial.xml: 
1305         * test/glib/test-dbus-glib.c: Update for rename.
1306         
1307 2005-06-20  Colin Walters  <walters@verbum.org>
1308
1309         Patch suggested by Ross Burton <ross@openedhand.com>
1310
1311         * glib/dbus-gobject.c (export_signals): Free signal name.
1312         (g_value_init): Use G_VALUE_NOCOPY_CONTENTS to plug
1313         memory leak.  Add a bit of documentation.
1314         (dbus_g_method_return_error): Free context, and note we do
1315         so.
1316
1317 2005-06-18  Murray Cumming  <murrayc@murrayc.com>
1318
1319         * dbus/dbus-glib.h:
1320         * glib/dbus-gobject.c:
1321         * glib/dbus-gproxy.c:
1322         * glib/dbus-gvalue.c: Predeclare structs as 
1323         typedef struct _Something Something instead of 
1324         typedef struct Something Something, so we can 
1325         redeclare the prototypes. Other GNOME libraries 
1326         do this already.
1327
1328 2005-06-17  Colin Walters  <walters@verbum.org>
1329
1330         * tools/dbus-names-model.c (have_names_notify): Fix call
1331         to dbus_g_proxy_end_call.
1332         
1333 2005-06-17  Colin Walters  <walters@verbum.org>
1334
1335         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): Don't
1336         spew warnings if we get malformed remote signals.
1337
1338         * glib/dbus-gobject.c (propsig_iterate): New function.
1339         (lookup_object_info): New function, extracted from
1340         lookup_object_and_method.
1341         (introspect_properties, introspect_signals): Delete; these
1342         are merged into write_interface.
1343         (write_interface): Write out signals and properties here;
1344         dump the org.gtk.object stuff and use the interface given
1345         in the introspection data blob.  Also fix up property XML.
1346         (lookup_values): New function.
1347         (introspect_interfaces): Gather a mapping from interface to a
1348         list of its methods, signals, and properties, then write out
1349         each interface.
1350         (lookup_object_and_method): Use lookup_object_info.
1351         (struct DBusGSignalClosure): Add interface.
1352         (dbus_g_signal_closure_new): Add interface. Don't dup signame;
1353         we can just use the constant data.
1354         (dbus_g_signal_closure_finalize): Don't free signal name.
1355         (signal_emitter_marshaller): Use interface from signal closure.
1356         (export_signals): Only export signals mentioned in introspection
1357         blob.
1358         (dbus_g_connection_register_g_object): Warn if we have no
1359         introspection data for an object.
1360         (funcsig_equal): Remove unused variable.
1361         (dbus_g_object_register_marshaller): Take varargs instead of
1362         list.
1363         (dbus_g_object_register_marshaller_array): New function,
1364         extracted from old dbus_g_object_register_marshaller.
1365
1366         * glib/dbus-binding-tool-glib.c (struct DBusBindingToolCData): Add
1367         signals and property data.
1368         (write_quoted_string): New function, extracted from generate_glue.
1369         (generate_glue): Write signals and properties to introspection
1370         blob.
1371
1372         * dbus/dbus-glib.h (struct DBusGObjectInfo): Include
1373         exported_signals and exported_properties.
1374         (dbus_g_object_register_marshaller): Update prototype.
1375         (dbus_g_object_register_marshaller_array): Prototype.
1376         
1377         * test/glib/test-dbus-glib.c: Extend testing to cover new signals.
1378
1379         * test/glib/test-service-glib.c: Add new test signals and method
1380         to emit them.
1381
1382         * test/glib/test-service-glib.xml: Add some test signals.
1383
1384         * test/glib/Makefile.am (BUILT_SOURCES): Add my-object-marshal.c
1385         and my-object-marshal.h
1386         (test_service_glib_SOURCES, test_dbus_glib_SOURCES): Add
1387         my-object-marshal.c.
1388         (my-object-marshal.c, my-object-marshal.h): Implement.
1389
1390         * test/glib/.cvsignore: Update.
1391
1392         * doc/TODO: Remove two GLib TODO items fixed by this
1393         patch.
1394
1395 2005-06-16  Colin Walters  <walters@verbum.org>
1396
1397         * doc/TODO: Update for GLib bindings.
1398         
1399 2005-06-16  Colin Walters  <walters@verbum.org>
1400
1401         * glib/dbus-binding-tool-glib.c:
1402         * glib/dbus-gobject.c:
1403         * glib/dbus-gproxy.c:  Add Nokia copyright; Patch
1404         from Ross Burton, for his GLib bindings work.
1405
1406 2005-06-16  Colin Walters  <walters@verbum.org>
1407
1408         * glib/dbus-gobject.c (funcsig_hash, funcsig_equal): Use n_params
1409         to iterate instead of walking to G_TYPE_INVALID.
1410
1411         Patch based on a patch from Ryan Gammon.
1412
1413 2005-06-16  Colin Walters  <walters@verbum.org>
1414
1415         * bus/bus.c (bus_context_new): Set parser to NULL
1416         after we unref it (Patch from Chris Boscolo, #2174).
1417         
1418 2005-06-16  Colin Walters  <walters@verbum.org>
1419
1420         * python/dbus_bindings.pyx.in: Import size_t,
1421         __int64_t, __uint64_t, and __signed.
1422
1423         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (write_credentials_byte):
1424         Define cmsg struct, output it.
1425         (_dbus_read_credentials_unix_socket):
1426         Use cmsg struct.
1427         
1428         Patch from Joe Markus Clarke for FreeBSD support.
1429         
1430 2005-06-16  Colin Walters  <walters@verbum.org>
1431
1432         * tools/dbus-send.c (append_array): Use strtok.
1433         (append_dict): New function.
1434         (type_from_name): New function, extracted from main.
1435         (main): Handle sending dicts.
1436
1437         * tools/dbus-print-message.c (print_iter): Print dict
1438         entries.
1439         
1440 2005-06-16  Colin Walters  <walters@verbum.org>
1441
1442         * glib/dbus-gvalue.c (marshal_basic): Marshal NULL string
1443         values as the empty string (#2948).
1444         
1445 2005-06-16  Colin Walters  <walters@verbum.org>
1446
1447         * dbus/Makefile.am:
1448         * mono/doc/Makefile.am:
1449         * test/glib/Makefile.am:
1450
1451         Fix srcdir != builddir issues (Patch from Chris Wilson, #3477)
1452
1453 2005-06-16  Colin Walters  <walters@verbum.org>
1454
1455         * dbus/dbus-marshal-header.c (_dbus_header_load): Set
1456         header byte order from expected byte order (Patch from Chris Wilson, #3475).
1457
1458         * dbus/dbus-marshal-byteswap.c (byteswap_body_helper): 
1459         Increment pointer after swapping fixed array.  Add assertion
1460         for array length.
1461                 
1462 2005-06-15  Colin Walters  <walters@verbum.org>
1463
1464         * dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
1465         Fix call to dbus_set_error.  (Patch from Michael Banck, #3461)
1466         
1467 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
1468
1469         * NEWS: Update to 0.34
1470
1471 2005-06-15  David Zeuthen  <davidz@redhat.com>
1472
1473         * configure.in (LT_CURRENT): Revert back to 1 as the library
1474         hasn't changed and we've certainly not committed to protocol
1475         stability yet.  All this does is to break ABI. See commit note
1476         from hp@redhat.com 2005-05-05 for details.
1477         
1478 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
1479
1480         * dbus/dbus-connection.c (_dbus_connection_peer_filter): New method 
1481         (_dbus_connection_run_builtin_filters): New method
1482         (dbus_connection_dispatch): Run the builtin filters which in turn
1483         runs the peer filter which handles Ping messages.
1484
1485         * doc/TODO: 
1486          - Ping isn't handled: This patch fixes it
1487          
1488          - Add a test case for the Ping message: added TODO item
1489
1490 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
1491
1492         * dbus/dbus-message.c:
1493         (dbus_message_has_path): New method
1494         (dbus_message_has_interface): New method
1495         (dbus_message_has_member): New method
1496
1497         * dbus/dbus/dbus-sysdeps.c (_dbus_check_dir_is_private_to_user):
1498         New method
1499
1500         * dbus/dbus-keyring.c (_dbus_keyring_reload): Check to see that 
1501         the keyring directory is private to the user
1502
1503         * doc/TODO:
1504          - The convenience functions in dbus-bus.h should perhaps have
1505          the signatures that they would have if they were autogenerated
1506          stubs. e.g. the acquire service function. We should also evaluate
1507          which of these functions to include, in light of the fact that
1508          GLib/Qt native stubs will probably also exist.: Punted
1509
1510          - add dbus_message_has_path(), maybe has_member/interface:
1511          fixed in this patch
1512
1513          - in dbus-keyring.c, enforce that the keyring dir is not
1514          world readable/writable: Fixed in this patch
1515
1516 2005-06-15  John (J5) Palmieri  <johnp@redhat.com>
1517
1518         * dbus/dbus-marshal-validate.h: Added a new validation
1519         error code DBUS_VALIDITY_UNKNOWN_OOM_ERROR = -4 for 
1520         out of memory errors when validating signitures
1521
1522         * dbus/dbus-marshal-header.c: use DBUS_VALIDITY_UNKNOWN_OOM_ERROR
1523         in places where we previously used DBUS_VALID and a FALSE return 
1524         value to indicate OOM
1525         
1526         * dbus/dbus-marshal-validate.c (_dbus_validate_signature_with_reason):
1527         Use a stack to track the number of elements inside containers.  The 
1528         stack values are then used to validate that dict entries have only two
1529         elements within them.
1530         (validate_body_helper): check the reason for failure when validating
1531         varients
1532         
1533         * dbus/dbus-message.c (load_message): use 
1534         DBUS_VALIDITY_UNKNOWN_OOM_ERROR in places where we previously used 
1535         DBUS_VALID and a FALSE return value to indicate OOM
1536
1537         * doc/TODO: remove "- validate dict entry number of fields" as this
1538         patch fixes it
1539
1540 2005-06-14  David Zeuthen  <davidz@redhat.com>
1541
1542         * bus/bus.c (process_config_every_time): Drop existing conf-dir
1543         watches (if applicable) and add new watches
1544
1545         * bus/main.c (signal_handler): Handle SIGIO if using D_NOTIFY
1546         (main): Setup SIGIO signal handler if using D_NOTIFY
1547
1548         * bus/config-parser.h: Add prototype bus_config_parser_get_conf_dirs
1549
1550         * bus/config-parser.c (struct BusConfigParser): Add conf_dirs list
1551         (merge_included): Also merge conf_dirs list
1552         (bus_config_parser_unref): Clear conf_dirs list
1553         (include_dir): Add directory to conf_dirs list
1554         (bus_config_parser_get_conf_dirs): New function
1555
1556         * bus/dir-watch.[ch]: New files
1557
1558         * bus/Makefile.am (BUS_SOURCES): Add dir-watch.[ch]
1559
1560         * configure.in: Add checks for D_NOTIFY on Linux
1561
1562 2005-06-14  Colin Walters  <walters@verbum.org>
1563
1564         * glib/dbus-binding-tool-glib.c:
1565         * glib/dbus-gobject.c:
1566         * glib/dbus-gvalue.c: Fix indentation and brace style.
1567         
1568 2005-06-14  Ross Burton <ross@openedhand.com>.
1569
1570         * glib/dbus-glib.h: Make DBusGMethodInvocation
1571         a private structure.  Rearrange prototypes a bit.
1572         
1573         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): Add
1574         documentation for first_arg_type.
1575         
1576         * glib/dbus-gobject.c: Move DBusGMethodInvocation
1577         here, add documentation.  Move dbus_g_method_return
1578         and dbus_g_method_return_error into public API
1579         section.
1580
1581 2005-06-14  Colin Walters  <walters@verbum.org>
1582
1583         * glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller):
1584         Add missing return statements, noticed by Ross Burton.
1585         
1586 2005-06-13  Ross Burton <ross@openedhand.com>.
1587
1588         * glib/dbus-gobject.c: Handle errors on message
1589         demarshalling by sending error message back.
1590         * glib/dbus-gvalue.c: Initialize return variables.
1591
1592 2005-06-13  Colin Walters  <walters@verbum.org>
1593
1594         * glib/Makefile.am: Fix thinko in last patch.
1595
1596 2005-06-13  Colin Walters  <walters@verbum.org>
1597
1598         * glib/Makefile.am: Move dbus-gtype-specialized.c
1599         and dbus-gtype-specialized.h into a _HEADERS variable,
1600         install them.
1601
1602 2005-06-12  Colin Walters  <walters@verbum.org>
1603
1604         Async signals and various bugfixes and testing by
1605         Ross Burton <ross@openedhand.com>.
1606
1607         * glib/dbus-gvalue.h: (struct DBusBasicGValue): Delete.
1608         (dbus_gvalue_genmarshal_name_from_type)
1609         (dbus_gvalue_ctype_from_type): Moved to dbus-binding-tool-glib.c.
1610         (dbus_gtype_to_dbus_type): Renamed to dbus_gtype_from_signature.
1611         (dbus_g_value_types_init, dbus_gtype_from_signature)
1612         (dbus_gtype_from_signature_iter, dbus_gtype_to_signature)
1613         (dbus_gtypes_from_arg_signature): New function prototypes.
1614         (dbus_gvalue_demarshal): Take context and error arguments.
1615         (dbus_gvalue_demarshal_variant): New function.
1616         (dbus_gvalue_demarshal_message): New function.
1617         (dbus_gvalue_store): Delete.
1618
1619         * glib/dbus-gvalue.c:
1620
1621         File has been almost entirely rewritten; now we special-case
1622         more types such as DBUS_TYPE_SIGNATURE, handle arrays and
1623         hash tables correctly, etc.  Full support for recursive values
1624         is not yet complete.
1625
1626         * glib/dbus-gproxy.c (dbus_g_proxy_class_init): Change last
1627         argument of signal to G_TYPE_POINTER since we now pass a
1628         structure.
1629         (lookup_g_marshaller): Delete in favor of
1630         _dbus_gobject_lookup_marshaller.
1631         (marshal_dbus_message_to_g_marshaller): Use
1632         _dbus_gobject_lookup_marshaller and dbus_gvalue_demarshal_message
1633         to handle remote signal callbacks.
1634         (dbus_g_proxy_new_from_proxy): New function; creates a new
1635         DBusGProxy by copying an existing one.
1636         (dbus_g_proxy_get_interface, dbus_g_proxy_set_interface)
1637         (dbus_g_proxy_get_path): New functions.
1638         (dbus_g_proxy_marshal_args_to_message): New function;
1639         factored out of existing code.
1640         (DBUS_G_VALUE_ARRAY_COLLECT_ALL): Collect all arguments
1641         from a varargs array.
1642         (dbus_g_proxy_begin_call_internal): New function.
1643         (dbus_g_proxy_end_call_internal): New function.
1644         (dbus_g_proxy_begin_call): Take GTypes instead of DBus types
1645         as arguments; simply invoke dbus_g_proxy_begin_call_internal
1646         after collecting args into value array.
1647         (dbus_g_proxy_end_call): Take GTypes instead of DBus types;
1648         invoke dbus_g_proxy_end_call_internal.
1649         (dbus_g_proxy_invoke): Simply invoke begin_call_interanl and
1650         end_call_internal.
1651         (dbus_g_proxy_call_no_reply): Take GTypes instead of DBus
1652         types.
1653         (array_free_all): New function.
1654         (dbus_g_proxy_add_signal): Take GTypes.
1655
1656         * glib/dbus-gobject.h:
1657         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
1658         (_dbus_gobject_get_path, _dbus_gobject_lookup_marshaller):
1659         Prototype.
1660
1661         * glib/dbus-gobject.c: Add a global marshal_table hash which
1662         stores mappings from type signatures to marshallers.  Change lots
1663         of invocations of dbus_gtype_to_dbus_type to
1664         dbus_gtype_to_signature.
1665         (_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
1666         (introspect_signals): Fix test for query.return_type.
1667         (set_object_property): Update invocation of dbus_gvalue_demarshal.
1668         (invoke_object_method): Many changes.  Handle asynchronous
1669         invocations.  Convert arguments with
1670         dbus_gvalue_demarshal_message.  Handle errors.  Use
1671         DBusSignatureIter instead of strlen on args. Handle all arguments
1672         generically.  Special-case variants.
1673         (dbus_g_method_return, dbus_g_method_return_error): New function.
1674         (DBusGSignalClosure): New structure, closes over signal
1675         information.
1676         (dbus_g_signal_closure_new): New function.
1677         (dbus_g_signal_closure_finalize): New function.
1678         (signal_emitter_marshaller): New function; is special marshaller
1679         which emits signals on bus.
1680         (export_signals): New function; introspects object signals and
1681         connects to them.
1682         (dbus_g_object_type_install_info): Take GType instead of
1683         GObjectClass.
1684         (dbus_g_connection_register_g_object): Invoke export_signals.
1685         (dbus_g_connection_lookup_g_object): New function.
1686         (DBusGFuncSignature) New structure; used for mapping type
1687         signatures to marshallers.
1688         (funcsig_hash): New function; hashes DBusGFuncSignature.
1689         (funcsig_equal): New function; compares DBusGFuncSignature.
1690         (_dbus_gobject_lookup_marshaller): New function.
1691         (dbus_g_object_register_marshaller): New function; used to
1692         register a marshaller at runtime for a particular signature.
1693
1694         * glib/dbus-gmain.c (_dbus_gmain_test): Add various tests.
1695
1696         * glib/dbus-binding-tool-glib.h: Add DBUS_GLIB_ANNOTATION_ASYNC
1697         which notes a server method implementation should be
1698         asynchronous.
1699
1700         * glib/dbus-binding-tool-glib.c
1701         (dbus_binding_tool_output_glib_server): Call
1702         dbus_g_value_types_init.
1703         (write_formal_parameters): Use dbus_gtype_from_signature.  Handle
1704         variants specially.
1705         (dbus_g_type_get_lookup_function): Turn GType into an invocation
1706         of a lookup function.
1707         (write_args_for_direction): Use dbus_g_type_get_lookup_function.
1708         (write_untyped_out_args): New method; write output arguments.
1709         (write_formal_declarations_for_direction): Function for
1710         writing prototypes.
1711         (write_formal_parameters_for_direction): Function for
1712         writing implementations.
1713         (write_typed_args_for_direction): Function for writing
1714         arguments prefixed with GTypes.
1715         (write_async_method_client): Write out async version
1716         of method.
1717
1718         * glib/dbus-binding-tool-glib.c: Include dbus-gvalue-utils.h.
1719         (dbus_g_type_get_marshal_name): Move mapping from GType
1720         to marshal name into here.
1721         (dbus_g_type_get_c_name): Move into here.
1722         (compute_marshaller): Convert signature to type with
1723         dbus_gtype_from_signature, use dbus_g_type_get_marshal_name.
1724         (compute_marshaller_name): Ditto.
1725         (compute_marshaller): Handle async signal annotations.
1726         (gather_marshallers): Return if we don't have a known
1727         prefix.
1728         (generate_glue): Collect introspection blob here, and
1729         write all of the blob at the end.  This allows an object
1730         with multiple interfaces to work.
1731         Mark async methods in introspection blob.
1732
1733         * glib/Makefile.am (libdbus_glib_1_la_SOURCES): Add
1734         dbus-gtype-specialized.c, dbus-gtype-specialized.h,
1735         dbus-gvalue-utils.h, dbus-gvalue-utils.c.
1736
1737         * dbus/dbus-glib.h: Don't include dbus-protocol.h; this
1738         avoids people accidentally using DBUS_TYPE_* which should
1739         not be necessary anymore.
1740         Do include dbus-gtype-specialized.h, which are utilities
1741         for GLib container types.
1742         Add various #defines for types such as
1743         DBUS_TYPE_G_BOOLEAN_ARRAY.
1744         (DBusGValueIterator, DBusGValue): Define, not fully used
1745         yet.
1746         (dbus_g_value_get_g_type): Type for recursive value.
1747         (dbus_g_value_open, dbus_g_value_iterator_get_value)
1748         (dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
1749         (dbus_g_value_free): Prototypes.
1750         (dbus_g_object_register_marshaller, dbus_g_proxy_new_from_proxy): Prototype.
1751         (dbus_g_proxy_set_interface): Prototype.
1752         (dbus_g_proxy_begin_call, dbus_g_proxy_end_call)
1753         (dbus_g_proxy_call_no_reply): Take GLib types instead of DBus
1754         types.
1755         (dbus_g_proxy_get_path, dbus_g_proxy_get_interface):
1756         Accessors.
1757         (DBusGAsyncData, DBusGMethodInvocation): Structures for
1758         doing async invocations.
1759         (dbus_g_method_return, dbus_g_method_return_error):
1760         Prototypes.
1761         * doc/dbus-tutorial.xml: Update GLib section.
1762         
1763         * tools/dbus-viewer.c (load_child_nodes): Update
1764         for new invocation type of dbus_g_proxy_end_call.
1765         (load_from_service_thread_func): Ditto.
1766
1767         * tools/print-introspect.c (main): Ditto.
1768
1769         * tools/dbus-names-model.c (have_names_notify)
1770         (names_model_reload, names_model_set_connection)
1771         Use GTypes.
1772
1773         * python/Makefile.am (INCLUDES): Define DBUS_COMPILATION,
1774         needed since Python bindings use GLib bindings.
1775
1776         * test/glib/Makefile.am (INCLUDES): Define DBUS_COMPILATION.
1777         Add --prefix argument.
1778
1779         * tools/Makefile.am: Define DBUS_COMPILATION.  Remove
1780         unneeded --ignore-unsupported arg.
1781         
1782         * test/glib/test-service-glib.c: 
1783         * test/glib/test-service-glib.xml:
1784         * test/glib/test-dbus-glib.c: Add many more tests.
1785
1786 2005-06-06  David Zeuthen  <davidz@redhat.com>
1787
1788         * doc/TODO: Add item about need to remove deprecated functions.
1789
1790         * dbus/dbus-connection.h: Add prototype for dbus_connection_disconnect
1791
1792         * dbus/dbus-connection.c (dbus_connection_disconnect): New function
1793         to repair the ABI which was broken with the last commit.
1794
1795 2005-06-02  John (J5) Palmieri <johnp@redhat.com>
1796
1797         *  dbus/dbus-connection.c, dbus/dbus-connection.h 
1798         (dbus_connection_disconnect): renamed to dbus_connection_close 
1799         for API symmetry with dbus_connection_open
1800         (_dbus_connection_open_internal): 
1801         s/dbus_connection_disconnect/dbus_connection_close
1802
1803         * dbus/dbus-bus.c (dbus_bus_get):
1804         s/dbus_connection_disconnect/dbus_connection_close
1805
1806         * bus/connection.c (bus_connections_unref, 
1807         bus_connections_setup_connection, bus_connections_expire_incomplete):
1808         s/dbus_connection_disconnect/dbus_connection_close
1809
1810         * bus/dispatch.c (bus_dispatch, kill_client_connection, 
1811         kill_client_connection_unchecked, check_hello_connection):
1812         s/dbus_connection_disconnect/dbus_connection_close
1813
1814         * bus/bus.c (new_connection_callback):
1815         s/dbus_connection_disconnect/dbus_connection_close
1816
1817         * tools/dbus-send.c (main):
1818         s/dbus_connection_disconnect/dbus_connection_close
1819
1820         * test/glib/test-profile.c (no_bus_thread_func, with_bus_thread_func):
1821         s/dbus_connection_disconnect/dbus_connection_close
1822         
1823         * test/test-service.c (path_message_func, filter_func):
1824         s/dbus_connection_disconnect/dbus_connection_close
1825         
1826         * doc/TODO: remove connection_open/connection_disconnect lacks symmetry         item that was just fixed
1827         
1828 2005-05-25  Colin Walters  <walters@verbum.org>
1829
1830         * dbus/dbus-protocol.h: Move various bus service #defines such
1831           as DBUS_SERVICE_DBUS and DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT to
1832           dbus/dbus-shared.h.
1833         * dbus/dbus-shared.h: Various defines moved here.
1834         * dbus/dbus-marshal-header.c: Include dbus-shared.h.
1835
1836 2005-05-25  John (J5) Palmieri  <johnp@redhat.com>
1837
1838         * python/__init__.py: Python bindings deserve a minor version
1839         update.  Upped to (0, 40, 2)
1840
1841 2005-05-24  John (J5) Palmieri  <johnp@redhat.com>
1842
1843         * python/decorators.py: add explicitly_pass_message decorator
1844         for passing in the dbus message as keyword for edge case signal
1845         handling
1846
1847         * python/matchrules.py (SignalMatchRule.__repr__): fix output
1848         to conform with what dbus expects for match rules
1849         (SignalMatchRule.execute): add the dbus message as a keyword
1850         if the signal handler has requested it
1851
1852         * python/examples/example/signal-recipient.py: added some more
1853         examples on how to hook up to signals
1854
1855 2005-05-23  John (J5) Palmieri  <johnp@redhat.com>
1856
1857         * python/decorators.py: import dbus_bindings
1858
1859         * python/matchrules.py (SignalMatchRule, SignalMatchTree, 
1860         SignalMatchNode): new classes that implement wildcard signal
1861         callback matching using a tree lookup. Heavily modified from a
1862         patch sent by Celso Pinto (fd.o bug #3241)
1863
1864         * _dbus.py (add_signal_receiver, remove_signal_receiver, _signal_func):
1865         use new match classes to handle signals.
1866
1867 2005-05-19  John (J5) Palmieri  <johnp@redhat.com>
1868         
1869         * python/dbus_bindings.pyx.in: s/TYPE_PATH/TYPE_OBJECT_PATH
1870
1871 2005-05-18  Havoc Pennington  <hp@redhat.com>
1872
1873         * configure.in: use GLIB_GNU_GETTEXT to get INTLLIBS and require
1874         gettext. Not really worth requiring yet perhaps, but any
1875         production quality 1.0 would require it so we should go ahead and
1876         get things set up. We do have a couple token calls to
1877         bindtextdomain in the code already.
1878
1879 2005-05-16  John (J5) Palmieri  <johnp@redhat.com>
1880
1881         * glib/dbus-gmain.c (io_handler_dispatch): fix deadlock
1882         when using recursive g_main_loops
1883
1884         * python/_dbus.py (class Bus): add the ProxyObjectClass
1885         alias for ProxyObject to make it easier for the Twisted 
1886         networking framework to integrate dbus.
1887
1888         * python/proxies.py (class ProxyObject): add the ProxyMethodClass
1889         alias for ProxyMethod to make it easier for the Twisted 
1890         networking framework to integrate dbus. 
1891
1892 2005-05-11  Ross Burton  <ross@openedhand.com>
1893
1894         * glib/dbus-glib-tool.c: Add --prefix argument.
1895         * glib/dbus-binding-tool-glib.h: Add prefix argument.
1896         * glib/dbus-binding-tool-glib.c (compute_marshaller_name):
1897         Add prefix argument.
1898         (generate_glue): Pass prefix argument down.
1899         (dbus_binding_tool_output_glib_server): Pass prefix to
1900         glib-genmarshal.
1901         
1902 2005-05-11  Colin Walters  <walters@verbum.org>
1903
1904         * tools/dbus-send.c (append_array): New function.
1905         (append_arg): Broken out from main.
1906         (main): Add cheesy hack to send arrays and variants.
1907         (usage): Update.
1908         * tools/dbus-print-message.c (print_iter): Broken out
1909         from main.
1910
1911 2005-05-11  Colin Walters  <walters@verbum.org>
1912
1913         * dbus/dbus-signature.c (dbus_signature_iter_get_signature):
1914         New function, returns signature string for signature iter.
1915         * dbus/dbus-signature.h: Prototype it.
1916         * dbus/dbus-message.c (dbus_message_iter_get_signature):
1917         New function, returns signature string for message iter.
1918         (dbus_message_iter_get_array_len): New function, returns
1919         length of array.
1920         (dbus_message_iter_get_fixed_array): Fix assertion; this
1921         function should be used when the iter is pointing to the
1922         contents of an array
1923         * dbus/dbus-message.h: Prototypes.
1924         * dbus/dbus-marshal-recursive.c (_dbus_type_reader_get_array_length):
1925         New function; returns length of an array.
1926         * dbus/dbus-marshal-recursive.h: Prototype it.
1927         
1928 2005-05-11  Colin Walters  <walters@verbum.org>
1929
1930         * dbus/dbus-sysdeps-util.c <!HAVE_POSIX_GETPWNAM_R>: Fix
1931         compilation error.
1932         
1933 2005-05-08  Havoc Pennington  <hp@redhat.com>
1934
1935         * dbus/dbus-sysdeps-util.c (_dbus_become_daemon): write the
1936         daemon's pid, not the parent's pid, to the file descriptor.
1937         Reported by Taj Morton.
1938
1939 2005-05-05  Havoc Pennington  <hp@redhat.com>
1940
1941         * configure.in (LT_*): add notes on how the libtool versioning
1942         works to save thinking. Increment soname to indicate protocol
1943         breakage (though really the library interface hasn't changed I
1944         guess)
1945
1946         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
1947         verify the GUID received from server matches what we were
1948         expecting, if we had an expectation
1949
1950         * dbus/dbus-auth.c (send_ok): send GUID along with the OK command
1951         (_dbus_auth_get_guid_from_server): new function
1952         (send_begin): parse the OK args
1953
1954         * doc/dbus-specification.xml: add GUID to the auth protocol
1955
1956 2005-05-05  John (J5) Palmieri  <johnp@redhat.com>
1957
1958         * Fix my name in previous changelog ;)
1959
1960         * python/proxies.py (ProxyObject.__getattr__): add further patch
1961         from Anthony Baxter to throw an AttributeError when python 
1962         __special__ functions are called instead of marshling them over 
1963         the bus (Bug#1685 comment 3).
1964
1965 2005-05-04  John (J5) Palmieri  <johnp@redhat.com>
1966
1967         * python/Makefile.am: changed to use pyexecdir for the binding
1968         shared libraries (Bug#2494)
1969
1970         * python/exceptions.py: bring exceptions over from the bindings
1971         so they can be used in applications (Bug#2036)
1972         Make all exceptions derive from DBusException
1973
1974         * python/_dbus.py, python/proxies.py: implement __repr__ in a couple
1975         of classes so that print obj doesn't throw an exception (Bug #1685)
1976
1977 2005-05-03  Ross Burton  <ross@openedhand.com>
1978
1979         * glib/dbus-gobject.c (dbus_g_connection_register_g_object):
1980         Return if we get an error during registration.  Set up a
1981         weak reference on object to unregister if object is destroyed.
1982         (unregister_gobject): New function.
1983         
1984 2005-05-01  John (J5) Palmieri  <johnp@redhat.com>
1985
1986         * python/dbus_bindings.pyx.in: 
1987         - added new type classes for hinting to the marashaler what type 
1988         to send over the wire
1989         - added int16 and uint16 marshalers
1990         - Fixed a bug in the type constants that caused int32 to go out
1991         as uint16 over the wire
1992         * python/dbus.py: split up into different files and renamed _dbus.py
1993         * python/__init__.py, python/_util.py, python/decorators.py, 
1994         python/exceptions.py, python/proxies.py, python/services.py,
1995         python/types.py: new files split off from dbus.py
1996         * python/Makefile.am: Add new files, remove dbus.py and 
1997         install all python files to <python module dir>/dbus
1998         * python/examples/*: Added #!/usr/bin/env python to the top of
1999         every example.  Patch provided by Tatavarty Kalyan
2000
2001 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
2002
2003         * NEWS: Update to 0.33
2004
2005 2005-04-25  John (J5) Palmieri  <johnp@redhat.com>
2006
2007         * python/dbus_bindings.pyx.in (send_with_reply_handlers): New send
2008         method for doing async calls
2009         (_pending_call_notification): New C function for handling pendning call
2010         callbacks
2011         (set_notify): New method for setting pending call notification
2012         
2013         * python/dbus.py: new version tuple "version" is set at (0, 40, 0)
2014         Async capabilities added to remote method calls
2015         (Sender): class removed
2016         (RemoteService): class removed
2017         (ObjectTree): class removed for now
2018         (RemoteObject): Renamed to ProxyObject
2019         (RemoteMethod): Renamed to ProxyMethod
2020         (method): Decorator added for decorating python methods as dbus methods
2021         (signal): Decorator added for decorating python methods as signal emitters
2022         (ObjectType): Metaclass added for generating introspection data and the
2023         method callback vtable
2024         (Interface): Wrapper class added to wrap objects in a dbus interface
2025         (Object): Uses ObjectType as its metaclass and exports Introspect
2026         of the org.freedesktop.DBus.Introspectable interface
2027         (ValidationException, UnknownMethodException): new exceptions
2028
2029         * python/examples/*: Modified to fit with the new bindings
2030
2031 2005-04-23  Havoc Pennington  <hp@redhat.com>
2032
2033         * dbus/dbus-message.c (dbus_message_append_args): fix doc comment,
2034         reported by Tony Houghton
2035
2036         * test/test-service.c (main): test
2037         dbus_connection_get_object_path_data()
2038
2039         * dbus/dbus-object-tree.c (find_handler): be sure we always init
2040         the exact_match
2041         (_dbus_object_tree_get_user_data_unlocked): new function used by
2042         dbus_connection_get_object_path_data()
2043         (do_register): add assertion test for get_user_data_unlocked
2044         (object_tree_test_iteration): more tests
2045
2046         * dbus/dbus-connection.c (dbus_connection_get_object_path_data):
2047         new function from Dan Reed to let you get the user data from 
2048         dbus_connection_register_object_path()
2049
2050 2005-04-23  John (J5) Palmieri  <johnp@redhat.com>
2051
2052         * dbus/dbus-marshal-recursive-util.c: Fixed buffer overflow
2053         in numerous places that did not account for the NULL terminator
2054         (signature_from_seed): changed the manual string copy loop to 
2055         just use strcpy instead
2056         make check should now pass
2057
2058 2005-04-19  John (J5) Palmieri  <johnp@redhat.com>
2059
2060         * dbus/dbus-marshal-header.c (_dbus_header_create): Fix assert
2061         so that it allows messages that are not signals to pass in 
2062         NULL as the interface.
2063
2064 2005-04-18  David Zeuthen  <davidz@redhat.com>
2065
2066         * glib/dbus-gmain.c (io_handler_destroy_source): 
2067         (timeout_handler_destroy_source, connection_setup_free): 
2068         Also unref the source to avoid memory leaks.
2069
2070 2005-04-13  David Zeuthen  <davidz@redhat.com>
2071
2072         * bus/config-parser.c (bus_config_parser_new): Bump this to a
2073         more reasonable, yet still totally arbitrary, value :-). 
2074
2075 2005-04-13  David Zeuthen  <davidz@redhat.com>
2076
2077         * doc/TODO: Added an "important for 1.0" item about selinux
2078         allow/deny messages
2079
2080 2005-04-13  David Zeuthen  <davidz@redhat.com>
2081
2082         * bus/selinux.c: Add c-file-style to top of file
2083         (log_audit_callback): Don't free the data here anymore
2084         (bus_selinux_check): Don't take spid and tpid since appending
2085         that to auxdata may OOM.
2086         (bus_selinux_allows_acquire_service): Handle OOM and signal back
2087         to the caller if we are OOM by taking an error object.
2088         (bus_selinux_allows_send): -do-
2089
2090         * bus/selinux.h: Fix prototypes for bus_selinux_allows_acquire_service
2091         and bus_selinux_allows_send
2092
2093         * bus/bus.c (bus_context_check_security_policy): Pass error and
2094         pass on OOM thrown by bus_selinux_allows_send()
2095
2096         * bus/services.c (bus_registry_acquire_service): Pass error and
2097         pass on OOM thrown by bus_selinux_allows_acquire_service()
2098
2099 2005-04-13  Havoc Pennington  <hp@redhat.com>
2100
2101         * glib/dbus-gmain.c (message_queue_dispatch): only dispatch one
2102         message at a time to avoid monopolizing the main loop, bug 
2103         #2953 from Benjamin Otte
2104
2105 2005-04-09  Havoc Pennington  <hp@redhat.com>
2106
2107         * dbus/dbus-string.c (copy): change a memcpy to memmove due to
2108         possible overlap, fix from Daniel Reed
2109         (fixup_alignment): fix signedness warnings
2110         (_dbus_string_append_unichar): ditto
2111
2112 2005-04-09  Havoc Pennington  <hp@redhat.com>
2113
2114         * dbus/dbus-message-util.c (_dbus_message_test): fix signedness warning
2115
2116         * glib/dbus-glib-tool.c (main): fix warning
2117
2118         * glib/dbus-binding-tool-glib.c (generate_glue): fix warning
2119
2120         * dbus/dbus-connection.c (dbus_connection_read_write_dispatch):
2121         add a new function that can be used in simple applications that
2122         don't have a main loop and are willing to block
2123
2124 2005-04-05  David Zeuthen  <davidz@redhat.com>
2125
2126         Fix https://bugs.freedesktop.org/show_bug.cgi?id=2889
2127
2128         * glib/dbus-gmain.c:
2129         (io_handler_destroy_source): Remove from list of IO handlers
2130         of the ConnectionSetup object
2131         (timeout_handler_destroy_source): -do- for timeout handlers
2132         (io_handler_source_finalized): Don't remove from list since
2133         we now do that in io_handler_destroy_source(). Renamed from
2134         io_handler_source_destroyed
2135         (timeout_handler_source_destroyed): -do- for timeout handlers
2136         (connection_setup_free): It is now safe to iterate over all
2137         IO and timeout handlers as the _destroy_source removes them
2138         from the list synchronously
2139
2140 2005-03-30  Havoc Pennington  <hp@redhat.com>
2141
2142         * configure.in: change check to gtk 2.4
2143
2144         * tools/dbus-viewer.c (name_combo_changed_callback): remove
2145         gtk_combo_box_get_active_text() usage to decrement GTK requirement
2146         to 2.4
2147
2148 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
2149
2150         * News: Update 0.32
2151
2152         * HACKING: Fixed realease instructions.  configure.in should be updated to
2153           the next release by the person who made the last release.
2154
2155 2005-03-29  John (J5) Palmieri  <johnp@redhat.com>
2156
2157         * python/lvalue_cast_post_process.py - removed.  Patch has been
2158           submitted to Pyrex maintainers that fixes gcc4.0 errors
2159
2160         * python/Makefile.am: removed refrences to lvalue_cast_post_process.py
2161
2162 2005-03-24  Daniel Reed  <n@ml.org>
2163
2164         * tools/Makefile.am: Make print-introspect and
2165         dbus-bus-introspect.xml building conditional on HAVE_GLIB.
2166
2167 2005-03-22  John (J5) Palmieri  <johnp@redhat.com>
2168
2169         * tools/Makefile.am: Patch by Colin Walters that fixes distcheck
2170
2171         * dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have 
2172           had in Red Hat packages for a while but for some reason never 
2173           got merged upstream
2174           (_dbus_is_a_number): New checks if a string
2175           can be converted to a number and does the conversion if it can
2176           (_dbus_user_database_lookup): Add check to see if the given username
2177           is a udi.  This allows udi's to be used instead of usernames in the
2178           config file.
2179           (_dbus_user_database_lookup_group): Add check to see if the given groupname
2180           is a gdi.  This allows gdi's to be used instead of groupnames in the
2181           config file.
2182
2183 2005-03-21  John (J5) Palmieri  <johnp@redhat.com>
2184
2185         * python/lvalue_cast_post_process.py - added post processor to fix Pyrex
2186           code so that it compiles with gcc4.0
2187
2188         * python/Makefile.am: Added lvalue_cast_post_process.py to EXTRA_DIST
2189           run dbus_bindings.c through lvalue_cast_post_process.py and copy the
2190           results back to dbus_binding.c
2191
2192 2005-03-20  Colin Walters  <walters@verbum.org>
2193
2194         Patch suggested by Inguva Rajasekhar <ringuva@novell.com>.
2195
2196         * configure.in: Require GTK+ 2.6.
2197         
2198 2005-03-20  Colin Walters  <walters@verbum.org>
2199
2200         * Makefile.am (SUBDIRS, DIST_SUBDIRS): Build tools before test.
2201
2202 2005-03-17  Tom Parker  <palfrey@tevp.net>
2203
2204         * dbus/dbus-userdb.c (_dbus_user_database_lookup): Don't
2205         print DBUS_UID_UNSET; instead print passed username.  Also
2206         be sure to actually use gid looked up in cache.
2207         
2208         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group): Ditto
2209         for DBUS_GID_UNSET and groupname.
2210
2211 2005-03-17  Colin Walters  <walters@verbum.org>
2212
2213         * bus/print-introspect.c: Move to tools/.
2214         * bus/run-with-tmp-session-bus.sh: Ditto.
2215         
2216         * glib/Makefile.am (dbus-glib-bindings.h): Move
2217         generation to tools/Makefile.am.
2218
2219         * test/glib/run-test.sh: Update to handle move
2220         of run-with-tmp-session-bus.sh.
2221
2222         * test/glib/test-service-glib.c: Update to handle
2223         move of dbus-glib-bindings.h.
2224
2225         * tools/print-introspect.c: Moved here
2226         from bus/, and ported to GLib bindings.
2227
2228         * tools/run-with-tmp-session-bus.sh: Moved here
2229         from bus/.
2230
2231         * tools/Makefile.am: Generate dbus-glib-bindings.h
2232         and dbus-bus-introspect.xml here.
2233
2234         * tools/.cvsignore, glib/.cvsignore, bus/.cvsignore:
2235         Update.
2236
2237 2005-03-17  Colin Walters  <walters@verbum.org>
2238
2239         * bus/driver.c (write_args_for_direction): Use
2240         _dbus_string_get_const_data to retrieve string;
2241         _dbus_string_get_const_data_len doesn't actually return
2242         a NULL-terminated substring.
2243
2244         * test/glib/test-service-glib.c: Include dbus-glib-bindings.h.
2245         (main): Change to use org_freedesktop_DBus_request_name
2246         instead of using g_proxy_begin_call/end_call.
2247
2248 2005-03-15  Joe Shaw  <joeshaw@novell.com>
2249
2250         * mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when
2251         generating the finalizer.  Fixes from Ben Maurer.
2252
2253 2005-03-12  Joe Shaw  <joeshaw@novell.com>
2254
2255         * mono/BusDriver.cs: Update method names: ListServices
2256         becomes ListNames; GetOwner becomes GetNameOwner.
2257
2258         * mono/ProxyBuilder.cs (BuildFinalizer): Need to load arg 0
2259         onto the eval stack when removing the delegate.
2260
2261 2005-03-12  Joe Shaw  <joeshaw@novell.com>
2262
2263         * mono/dbus-sharp.dll.config.in: Don't hardcode 0 for
2264         LT_CURRENT.  Set it to the autoconf variable.
2265                                                                                 
2266         * mono/ProxyBuilder.cs: Add a finalizer to the generated proxy
2267         classes that disconnects the signal handler delegate from the
2268         service object.  Fixes a big leak of proxy objects on the
2269         client side of things.  Patch from Ben Maurer
2270         <bmaurer@ximian.com>
2271
2272 2005-03-12  Colin Walters  <walters@verbum.org>
2273
2274         * bus/driver.c (write_args_for_direction): New function,
2275         parses a type signature into arguments and outputs to
2276         XML.
2277         (bus_driver_handle_introspect): Use it instead of
2278         hardcoding XML for certain signatures.
2279         
2280         * bus/Makefile.am (dbus-bus-introspect.xml): Add
2281         dependency on dbus-daemon.
2282
2283         * glib/dbus-glib-tool.c (main): Parse ignore_unsupported
2284         argument, pass it to dbus_binding_tool_output_glib_client.
2285
2286         * glib/dbus-binding-tool-glib.c
2287         (generate_client_glue): Protect against multiple inclusion.
2288         (dbus_binding_tool_output_glib_client): Add
2289         G_BEGIN_DECLS/G_END_DECLS.
2290
2291         * glib/dbus-binding-tool-glib.c (compute_client_method_name):
2292         Change to just take iface prefix directly.
2293         (write_formal_parameters): Clarify error message.
2294         (check_supported_parameters): New function; checks to see type
2295         signatures of method parameters are supported.
2296         (generate_client_glue): Handle ignore_unsupported flag.
2297         (dbus_binding_tool_output_glib_client): Handle ignore_unsupported
2298         parameter.
2299
2300         * glib/Makefile.am (dbus-glib-bindings.h): Pass
2301         --ignore-unsupported by default until glib bindings
2302         support arrays.
2303
2304 2005-03-11  Colin Walters  <walters@verbum.org>
2305
2306         * glib/Makefile.am: Generate dbus-glib-bindings.h and
2307         install it.
2308
2309         * bus/print-introspect.c: New file; prints introspection
2310         data for a given name and object path.
2311
2312         * bus/run-with-tmp-session-bus.sh: New file, refactored
2313         from test/glib/run-test.sh.  Creates a temporary session
2314         bus and runs another program.
2315
2316         * test/glib/run-test.sh: Refactor to invoke
2317         run-with-tmp-session-bus.sh.
2318
2319         * bus/driver.c (bus_driver_handle_introspect): Fix to print new
2320         introspection format.  Also change to use DBUS_TYPE_x_AS_STRING
2321         macros instead of hardcoding.
2322
2323         * glib/.cvsignore, bus/.cvsignore, test/glib/.cvsignore: Update.
2324
2325 2005-03-11  Joe Shaw  <joeshaw@novell.com>
2326
2327         * dbus/dbus-connection.c (dbus_connection_send_with_reply): Remove
2328         this unref; it doesn't match up evenly in some codepaths.
2329         (_dbus_connection_block_pending_call): Unref at every exitpoint;
2330         this evenly matches with the ref near the top of this function.
2331
2332 2005-03-09  Joe Shaw  <joeshaw@novell.com>
2333
2334         * dbus/dbus-object-tree.c
2335         (_dbus_object_tree_unregister_and_unlock): If checks are enabled
2336         and we try to unregister a path that's not registered, still go
2337         through the process of unlocking and don't just return.
2338
2339 2005-03-09  Colin Walters  <walters@verbum.org>
2340
2341         * glib/dbus-gproxy.c (dbus_g_proxy_invoke): New method; calls
2342         to this are generated for client-side wrappers.  Invokes a
2343         D-BUS method and returns reply values.  
2344
2345         * glib/dbus-binding-tool-glib.c (write_args_sig_for_direction): New
2346         function; writes signature string for argument direction.
2347         (write_args_for_direction): Change to pass input values directly
2348         instead of via address, and fix indentation.
2349         (generate_client_glue): Change to invoke dbus_g_proxy_invoke.  Also
2350         make generated wrappers inlineable.
2351
2352         * dbus/dbus-message.c (dbus_message_iter_get_fixed_array): Add
2353         note about using dbus_type_is_fixed.
2354
2355         * dbus/dbus-marshal-basic.c (_dbus_type_is_fixed): Moved to
2356         dbus/dbus-signature.c as dbus_type_is_fixed.
2357
2358         All callers updated.
2359
2360         * dbus/dbus-signature.c (dbus_type_is_fixed): Moved here
2361         from dbus/dbus-marshal-basic.c:_dbus_type_is_fixed.
2362
2363         * dbus/dbus-signature.h: Prototype.
2364
2365         * glib/dbus-binding-tool-glib.c (compute_marshaller_name): Fix
2366         error printf code.
2367
2368         * test/glib/test-dbus-glib.c (main): Be sure to clear error as
2369         appropriate instead of just freeing it.
2370         (main): Free returned strings using g_free.
2371
2372         * test/glib/Makefile.am (test-service-glib-glue.h)
2373         (test-service-glib-bindings.h): Add dependency on dbus-binding-tool.
2374
2375         * glib/dbus-gvalue.c (MAP_BASIC): Refactored from MAP_BASIC_INIT;
2376         simply maps a simple D-BUS type to GType.
2377         (dbus_dbus_type_to_gtype): Function which maps D-BUS type to
2378         GType.
2379         (dbus_gvalue_init): Just invoke dbus_dbus_type_to_gtype and
2380         initialize the value with it.
2381         (dbus_gvalue_binding_type_from_type): Unused, delete.
2382         (dbus_gvalue_demarshal): Switch to hardcoding demarshalling for
2383         various types instead of unmarshalling to value data directly.
2384         Remove can_convert boolean.
2385         (dbus_gvalue_marshal): Remove duplicate initialization; switch to
2386         returning directly instead of using can_convert boolean.
2387         (dbus_gvalue_store): New function; not related to D-BUS per-se.
2388         Stores a GValue in a pointer to a value of its corresponding C
2389         type.
2390
2391         * glib/dbus-gvalue.h: Remove dbus_gvalue_binding_type_from_type,
2392         add dbus_gvalue_store.
2393
2394 2005-03-08  Joe Shaw  <joeshaw@novell.com>
2395
2396         Fix a bunch of lifecycle and memory management problems
2397         in the mono bindings.
2398
2399         * mono/Arguments.cs (Arguments): Implement IDisposable
2400
2401         * mono/Bus.cs (Bus): Don't allow public instantiation.  This is
2402         strictly a static class.
2403
2404         * mono/Connection.cs: Move the DBusObjectPathVTable and associated
2405         delegates into this file.
2406         (Connection): Implement IDisposable.
2407         (Dispose): Disconnect the connection and set the raw connection
2408         pointer to IntPtr.Zero.
2409         (~Connection): Call Dispose().
2410         (RegisterObjectPath): Added.  Manages the registration of object
2411         paths so we can cleanly disconnect them at dispose/finalize time.
2412         (UnregisterObjectPath): Ditto.
2413         (set_RawConnection): Unregister all of the object paths when
2414         changing the underlying DBusConnection.  Add them back onto the
2415         new connection, if any.
2416
2417         * mono/Handler.cs: Don't implement IDisposable; it doesn't use any
2418         more unmanaged resources anymore, so it's not necessary.  Move all
2419         the DBusObjectPathVTable stuff out of here.
2420         (Handler): Save references to our delegates so that they don't get
2421         finalized.  Call Connection.RegisterObjectPath() instead of
2422         dbus_connection_register_object_path() directly.
2423         (Message_Called): Dispose the message after we're finished with
2424         it.
2425
2426         * mono/Message.cs (Message): Implement IDisposable.
2427         (Dispose): Dispose the Arguments, and set the RawMessage to
2428         IntPtr.Zero.
2429         (SendWithReplyAndBlock): We own the ref to the reply that comes
2430         back from dbus_connection_send_with_reply_and_block() so add a
2431         comment about that and unref it after we've constructed a managed
2432         MethodReturn class around it.  Fixes a big, big leak.
2433
2434         * mono/ProxyBuilder.cs: Reflect into Message to get the Dispose
2435         method.
2436         (BuildSignalHandler): After we've sent the Signal message, dispose
2437         of it.
2438         (BuildMethod): Dispose of the method call and reply messages after
2439         we've sent the message and extracted the data we want from the
2440         reply.
2441
2442         * mono/Service.cs (UnregisterObject): Don't call handler.Dispose()
2443         anymore.
2444         (Service_FilterCalled): Dispose of the message after we're
2445         finished with it.
2446
2447 2005-03-08  Joe Shaw  <joeshaw@novell.com>
2448
2449         * dbus/dbus-connection.c (dbus_connection_send_with_reply):
2450         After we attach our pending call to the connection, unref
2451         it.  Fixes a leak.
2452  
2453         * mono/Connection.cs (set_RawConnection): Disconnect our
2454         filter and match callbacks from the old connection and
2455         reconnect them to the new connection, if any.
2456
2457         * mono/DBusType/Array.cs: "Code" is a static member, so
2458         don't use "this" to refer to it.  Fix for stricter checking
2459         in Mono 1.1.4.
2460  
2461         * mono/DBusType/ObjectPath.cs (Append): Don't leak the
2462         object path that we pass into unmanaged code.
2463  
2464         * mono/DBusType/String.cs (Append): Don't leak the string
2465         that we pass into unmanged code.
2466
2467 2005-03-07  John (J5) Palmieri  <johnp@redhat.com>
2468         * NEWS: Update for 0.31
2469
2470         * configure.in: Release 0.31
2471         add LT_CURRENT, LT_REVISION, LT_AGE for easy soname bumping
2472
2473         * qt/Makefile.am: fixed build
2474
2475         * dbus/Makefile.am: soname bump for libdbus
2476
2477         * glib/Makefile.am: soname bump for libdbus-glib
2478
2479 2005-03-05  Havoc Pennington  <hp@redhat.com>
2480
2481         * dbus/dbus-sysdeps.c:
2482         (pseudorandom_generate_random_bytes_buffer): fix to have no return
2483         value
2484         (_dbus_generate_random_bytes_buffer): fix return value
2485
2486         * dbus/dbus-sysdeps-util.c: s/GETPWNAME/GETPWNAM/ so configure
2487         checks actually work, from Tom Parker <fdo@tevp.net>
2488
2489 2005-03-01  Colin Walters  <walters@verbum.org>
2490
2491         * test/glib/test-dbus-glib.c (lose, lose_gerror): Utility
2492         functions copied from dbus-glib-tool.c.
2493         (main): Convert lots of error code to use them.
2494         Also add some testing for introspection bits.
2495
2496 2005-03-01  Colin Walters  <walters@verbum.org>
2497         
2498         * doc/TODO: Remove introspection signature TODO.
2499
2500 2005-02-27  Colin Walters  <walters@verbum.org>
2501
2502         * glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
2503         Change return value to const char * instead of int so we can do
2504         full signatures.
2505         (struct PropertyInfo, struct ArgInfo): Store char *.
2506         (property_info_new, arg_info_new): Update parameters, strdup.
2507         (property_info_unref, arg_info_unref): Free.
2508
2509         * glib/dbus-gidl.h: Update prototypes.
2510
2511         * glib/dbus-gparser.c (basic_type_from_string): Delete.
2512         (validate_signature): New function, just validates signature and
2513         sets GError.
2514         (parse_property, parse_arg): Invoke validate_signature.  Store
2515         signature instead of just type code.
2516
2517         * glib/dbus-gvalue.c (base_type_from_signature): New utility
2518         function to return a primary type for a signature, dropping
2519         information about types in container types.
2520         (dbus_gvalue_genmarshal_name_from_type)
2521         (dbus_gvalue_binding_type_from_type)
2522         (dbus_gvalue_ctype_from_type): Update to take full signature
2523          instead of type code.
2524         (dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.
2525
2526         * glib/dbus-gvalue.h: Update prototypes for above.
2527
2528         * glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
2529         glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
2530         (introspect_properties, introspect_signals, write_interface):
2531         Update to handle signatures, and remove usage of
2532         _dbus_gutils_type_to_string.
2533         (handle_introspect): Print out type codes instead of e.g. "string"
2534         in hardcoded introspection XML; also use x_AS_STRING constants
2535         instead of hardcoding in string.
2536
2537         * glib/dbus-glib-tool.c (pretty_print): Handle signature change
2538         to string.  Remove usage of _dbus_gutils_type_to_string.
2539
2540         * glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.
2541
2542         * glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
2543         deletion.
2544         
2545         * glib/dbus-binding-tool-glib.c (compute_marshaller)
2546         (compute_marshaller_name, generate_glue): Handle signature change
2547         to string.
2548         (write_formal_parameters, write_args_for_direction): Ditto, and
2549         remove FIXME.
2550
2551         * tools/dbus-tree-view.c (type_to_string): Delete.
2552         (info_set_func_text): Update to print full signatures.
2553
2554         * test/glib/test-service-glib.xml: Change types to new
2555         introspection format.
2556
2557 2005-02-26  Havoc Pennington  <hp@redhat.com>
2558
2559         * doc/TODO: remove the "guid" item
2560
2561         * test/glib/test-profile.c (no_bus_thread_func): use open_private
2562         (with_bus_thread_func): use open_private
2563
2564         * dbus/dbus-connection.c (dbus_connection_open_private): new
2565         function that works like the old dbus_connection_open()
2566         (dbus_connection_open): now returns an existing connection if
2567         possible
2568
2569         * dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
2570         through the GUID to the transport
2571
2572         * dbus/dbus-server.c (_dbus_server_init_base): keep around the
2573         GUID in hex-encoded form.
2574
2575         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
2576         pass GUID argument in to the transport
2577
2578         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
2579         guid argument
2580
2581         * dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument
2582
2583         * dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument
2584
2585 2005-02-25  Havoc Pennington  <hp@redhat.com>
2586
2587         * doc/dbus-specification.xml: document the GUID thing
2588
2589         * dbus/dbus-server.c (_dbus_server_init_base): initialize a
2590         globally unique ID for the server, and put a "guid=hexencoded"
2591         field in the address
2592
2593         * dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h
2594
2595         * dbus/dbus-message.c: ditto
2596
2597         * dbus/dbus-dataslot.c: ditto
2598
2599         * dbus/dbus-list.c: ditto
2600
2601         * dbus/dbus-internals.h: wait, just include
2602         dbus-threads-internal.h here
2603         
2604         * dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
2605         use in main library
2606
2607         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function
2608
2609 2005-02-24  Colin Walters  <walters@verbum.org>
2610
2611         * test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml
2612
2613 2005-02-24  John (J5) Palmieir  <johnp@redhat.com>
2614
2615         * glib/Makefile.am: added dbus-gobject.h to sources list
2616         so distcheck doesn't fail
2617         
2618 2005-02-24  Havoc Pennington  <hp@redhat.com>
2619
2620         * dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
2621         you must disconnect before unref, since locking and other things
2622         are screwed up otherwise. Fix assorted other locking stuff.
2623
2624         * dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
2625         fix compilation
2626
2627         * dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
2628         into a private header and don't export from the library
2629
2630         * throughout - call _dbus_thread_stuff vs. dbus_thread_stuff
2631
2632 2005-02-24  Colin Walters  <walters@verbum.org>
2633         
2634         * dbus/dbus-signature.c: New file; implements various functions
2635         related to type signatures.  Includes an interator for parsing,
2636         validation functions.
2637         (dbus_type_is_basic): Moved here from
2638         dbus-marshal-basic.c:_dbus_type_is_basic.
2639         (dbus_type_is_container): Moved here from
2640         dbus-marshal-basic.c:_dbus_type_is_container.
2641
2642         All callers of _dbus_type_is_container and _dbus_type_is_basic
2643         updated, and include dbus-signature.h.
2644
2645         * dbus/dbus-signature.h: New file; prototypes for the above.
2646
2647         * dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
2648         dbus-signature.h.
2649
2650         * dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
2651         function factored out of _dbus_first_type_in_signature.
2652         (_dbus_first_type_in_signature_c_str): New function; returns first
2653         type code for a type signature character.
2654
2655         * dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
2656         handle function moves.
2657
2658         * dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.
2659
2660         * dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
2661         function; skips to next complete type in type signature.
2662         Implemented using previous skip_one_complete_type.  Now
2663         skip_one_complete_type just delegates to
2664         _dbus_type_signature_next.
2665
2666         * dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
2667         to dbus-signature.c
2668         (_dbus_type_is_container): Ditto.
2669
2670         * doc/dbus-specification.xml: Update introspection sample to
2671         use real type signatures.
2672
2673         * dbus/dbus-test.h: Prototype signature test.
2674
2675         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
2676         signature tests.
2677
2678         * dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.
2679
2680 2005-02-23  John (J5) Palmieri  <johnp@redhat.com>
2681
2682         * python/dbus_bindings.pyx.in (PendingCall::get_reply):
2683         s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply
2684
2685 2005-02-21  Colin Walters  <walters@verbum.org>
2686
2687         * dbus/dbus-test-main.c (main): Take optional specific test
2688         argument.
2689
2690         * dbus/dbus-test.c (run_test): New function, runs a test function
2691         with no data directory.
2692         (run_data_test): Like above, but takes data directory.
2693         (dbus_internal_do_not_use_run_tests): Take
2694         specific test argument.  Replace lots of cut n' paste code
2695         with run_test and run_data_test.
2696
2697         * dbus/dbus-test.h: Update prototype for
2698         dbus_internal_do_not_use_run_tests.
2699
2700 2005-02-20  Havoc Pennington  <hp@redhat.com>
2701
2702         Fix bugs reported by Daniel P. Berrange
2703         
2704         * dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
2705         (protected_change_watch): new function
2706         (_dbus_server_toggle_watch, _dbus_server_remove_watch)
2707         (_dbus_server_add_watch): change to work like the
2708         dbus-connection.c equivalents; like those, probably kind of
2709         busted, but should at least mostly work for now
2710         (dbus_server_disconnect): drop the lock if we were already
2711         disconnected, patch from Daniel P. Berrange
2712
2713         * dbus/dbus-server.c (_dbus_server_toggle_timeout) 
2714         (_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
2715         same stuff
2716
2717         * doc/TODO: todo about unscrewing this mess
2718
2719 2005-02-19  Colin Walters  <walters@verbum.org>
2720
2721         * glib/dbus-binding-tool-glib.c
2722         (dbus_binding_tool_output_glib_server): Fix iochannel refcounting.
2723
2724         * glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
2725         as errno.h and sys/stat.h.
2726         (lose): New function, prints error with
2727         newline and exits.
2728         (lose_gerror): Similar, but takes GError for message.
2729         (main): Add --output argument to specify output file to write to,
2730         instead of always printing to stdout.  In this mode, determine
2731         timestamps on source files to see whether any are newer than the
2732         target file.  If not, exit.  Also convert a number of error
2733         messages to use lose (since it's shorter), and switch to using
2734         g_io_channel_shutdown.
2735
2736 2005-02-19  Havoc Pennington  <hp@redhat.com>
2737
2738         * glib/dbus-gobject.c
2739         (_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs
2740
2741         * glib/dbus-glib.c: fix doxygen warnings
2742
2743         * glib/dbus-gparser.c (parse_annotation): error if an annotation
2744         is found on an <arg>
2745
2746 2005-02-17  Colin Walters  <walters@verbum.org>
2747
2748         * glib/dbus-gobject.h: Don't export
2749         _dbus_glib_marshal_dbus_message_to_gvalue_array.
2750         
2751         * glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
2752         (invoke_object_method): Handle it.
2753
2754         * glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
2755         Handle rename.
2756         
2757 2005-02-17  Colin Walters  <walters@verbum.org>
2758
2759         * bus/.cvsignore, doc/.cvsignore
2760         * test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
2761         Update.
2762
2763 2005-02-17  Colin Walters  <walters@verbum.org>
2764         
2765         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
2766         Rename to DBUS_SERVICE_DBUS.
2767         (DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
2768         (DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
2769         Change the value from "org.freedesktop.Local"
2770         to "org.freedesktop.DBus.Local".
2771         (DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
2772         (DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
2773         DBUS_INTERFACE_INTROSPECTABLE.
2774         Change the value from "org.freedesktop.Introspectable"
2775         to "org.freedesktop.DBus.Introspectable".
2776         (DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
2777         DBUS_INTERFACE_PROPERTIES.
2778         Change the value from "org.freedesktop.Properties"
2779         to "org.freedesktop.DBus.Properties".
2780         (DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
2781         DBUS_INTERFACE_PEER.
2782         Change the value from "org.freedesktop.Peer"
2783         to "org.freedesktop.DBus.Peer".
2784         (DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL): 
2785         DBUS_INTERFACE_LOCAL.
2786         Change the value from "org.freedesktop.Local"
2787         to "org.freedesktop.DBus.Local".
2788
2789         All other users of those constants have been changed.
2790
2791         * bus/driver.c (bus_driver_handle_introspect): Use constants.
2792
2793         * glib/dbus-gobject.c (handle_introspect): Use constants.
2794
2795         * doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.
2796
2797 2005-02-17  Colin Walters  <walters@verbum.org>
2798
2799         * glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
2800         (parse_node, parse_interface, parse_method, parse_signal)
2801         (parse_property, parse_annotation): Lose if we're currently in an
2802         annotation.
2803         (parse_annotation): New function.
2804         (parser_start_element, parser_end_element): Handle annotation.
2805         (parse_method, parse_interface): Remove support for c_name attribute,
2806         switch to annotations.
2807
2808         * glib/dbus-gidl.h (interface_info_get_binding_names)
2809         (method_info_get_binding_names)
2810         (interface_info_get_binding_name, method_info_get_binding_name)
2811         (interface_info_set_binding_name, method_info_set_binding_name):
2812         Remove.
2813         (interface_info_get_annotations, method_info_get_annotations)
2814         (interface_info_get_annotation, method_info_get_annotation)
2815         (interface_info_add_annotation, method_info_add_annotation):
2816         Prototype.
2817
2818         * glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
2819         for "bindings".
2820         (struct MethodInfo): Ditto.
2821         Straightfoward conversion of binding methods into annotation methods
2822         as prototyped.
2823
2824         * glib/dbus-glib-tool.c (pretty_print): Print annotations.
2825
2826         * glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.
2827
2828         * glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
2829         Use new annotation API.
2830
2831         * doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
2832         annotation element.
2833         
2834         * doc/dbus-specification.xml: Discuss introspection annotations,
2835         include list of well-known annotations.
2836
2837         * test/glib/test-service-glib.xml: Make validate against new DTD.
2838
2839 2005-02-17  Colin Walters  <walters@verbum.org>
2840
2841         This patch is based on initial work from
2842         Paul Kuliniewicz <kuliniew@purdue.edu>.
2843
2844         * glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
2845         initialization of GValue from dbus type to here.
2846         (dbus_gvalue_genmarshal_name_from_type): New function; generates a string
2847         for the "glib-genmarshal" program from a DBus type.
2848         (dbus_gvalue_binding_type_from_type): New function; turns a DBus type
2849         into the C name for it we use in the glib bindings.
2850         (dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
2851         glib C type (not GValue).
2852         (dbus_gvalue_demarshal): invoke dbus_gvalue_init.
2853
2854         * glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
2855         from dbus-gobject.c.
2856
2857         * glib/dbus-gutils.h: Prototype it.
2858
2859         * glib/dbus-gproxy.c: Include new dbus-gobject.h.
2860         (marshal_dbus_message_to_g_marshaller): Use new shared function
2861         dbus_glib_marshal_dbus_message_to_gvalue_array.
2862
2863         * glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
2864         Will be changed once we have annotations.
2865
2866         * glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
2867         GStaticRWLock.  Callers updated.
2868         (wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
2869         (string_table_next): New function for iterating over zero-terminated
2870         string value array.
2871         (string_table_lookup): New function; retrieves specific entry in
2872         array.
2873         (get_method_data): New function; look up method data in object data chunk.
2874         (object_error_domain_prefix_from_object_info)
2875         (object_error_code_from_object_info): New functions, but not implemented yet.
2876         (method_interface_from_object_info): New function; retrieve interface name.
2877         (method_name_from_object_info): New function; retrieve method name.
2878         (method_arg_info_from_object_info): New function; retrieve argument data.
2879         (arg_iterate): New function; iterates over serialized argument data.
2880         (method_dir_signature_from_object_info): New function; returns a
2881         GString holding type signature for arguments for just one
2882         direction (input or output).
2883         (method_input_signature_from_object_info)
2884         (method_output_signature_from_object_info): New functions.
2885         (dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
2886         converts dbus message arguments into a GValue array.  Used for both
2887         signal handling and method invocation.
2888         (struct DBusGlibWriteIterfaceData): New utility structure.
2889         (write_interface): New function; generate introspection XML for
2890         an interface.
2891         (introspect_interfaces): New function; gathers all interface->methods,
2892         generates introspection XML for them.
2893         (handle_introspect): Invoke introspect_interfaces.
2894         (get_object_property): Be sure to zero-initalize stack-allocated GValue.
2895         (lookup_object_and_method): New function; examines an incoming message
2896         and attempts to match it up (via interface, method name, and argument
2897         signature) with a known object and method.
2898         (gerror_domaincode_to_dbus_error_name): New function; converts a
2899         GError domain and code into a DBus error name.  Needs GError data
2900         added to object introspection to work well.
2901         (gerror_to_dbus_error_message): Creates a DBusMessage error return from
2902         GError.
2903         (invoke_object_method): New function to invoke an object method
2904         looked up via lookup_object_and_method.  Parses the incoming
2905         message, turns it into a GValue array, then invokes the marshaller
2906         specified in the DBusGMethodInfo.  Creates a new message with
2907         either return values or error message as appropriate.
2908         (gobject_message_function): Invoke lookup_object_and_method and
2909         invoke_object_method.
2910
2911         * glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
2912         (enum DBusBindingOutputMode): New enum for binding output modes.
2913         (pretty_print): Print binding names.
2914         (dbus_binding_tool_error_quark): GError bits.
2915         (version): Fix typo.
2916         (main): Create GIOChannel for output.  Parse new --mode argument,
2917         possible values are "pretty-print", "glib-server", "glib-client".
2918         Use mode to invoke appropriate function.
2919         
2920         * glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.
2921
2922         * glib/dbus-glib-tool.h: New header, just includes GError bits
2923         for now.
2924
2925         * glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
2926         maps binding style to name.
2927         (struct MethodInfo): Ditto.
2928         (get_hash_keys, get_hash_key): Utility function, returns keys for
2929         a GHashTable.
2930         (interface_info_new, method_info_new): Initialize bindings.
2931         (interface_info_unref, method_info_unref): Destroy bindings.
2932         (method_info_get_binding_names, method_info_get_binding_name)
2933         (interface_info_get_binding_names, interface_info_get_binding_name):
2934         Functions for retrieving binding names.
2935         (method_info_set_binding_name, interface_info_set_binding_name):
2936         Functions for setting binding names.
2937
2938         * glib/dbus-binding-tool-glib.h: New file, has prototypes
2939         for glib binding generation.
2940
2941         * glib/dbus-binding-tool-glib.c: New file, implements server-side
2942         and client-side glib glue generation.
2943
2944         * glib/Makefile.am (dbus_binding_tool_SOURCES): Add
2945         dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
2946         dbus-glib-tool.h.
2947
2948         * dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
2949         of using GClosureMarshal directly.
2950         (struct DBusGObjectInfo): Add n_infos member.
2951
2952         * test/glib/test-service-glib.xml: New file; contains introspection data
2953         for MyTestObject used in test-service-glib.c.
2954
2955         * test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
2956         (my_object_do_nothing, my_object_increment, my_object_throw_error)
2957         (my_object_uppercase, my_object_many_args): New test methods.
2958         (main): Use dbus_g_object_class_install_info to include generated object
2959         info.
2960
2961         * test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
2962         as well as client-side bindings.
2963
2964         * test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
2965         (main): Activate TestSuiteGLibService; test invoke a bunch of its methods
2966         using both the dbus_gproxy stuff directly as well as the generated bindings.
2967
2968 2005-02-15  Havoc Pennington  <hp@redhat.com>
2969
2970         * dbus/dbus-connection.c (dbus_connection_dispatch): always
2971         complete a pending call, don't run filters first.
2972
2973         * glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
2974         dbus_pending_call_steal_reply
2975
2976         * dbus/dbus-pending-call.c (dbus_pending_call_block): just call
2977         _dbus_connection_block_pending_call
2978         (dbus_pending_call_get_reply): change to steal_reply and return a
2979         ref
2980
2981         * dbus/dbus-connection.c
2982         (dbus_connection_send_with_reply_and_block): port to work in terms
2983         of DBusPendingCall
2984         (_dbus_connection_block_pending_call): replace block_for_reply
2985         with this
2986
2987 2005-02-14  Havoc Pennington  <hp@redhat.com>
2988
2989         * dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
2990         properly handle looking up group information by name; fix 
2991         from j@bootlab.org
2992
2993 2005-02-13  Havoc Pennington  <hp@redhat.com>
2994
2995         * dbus/dbus-connection.c (dbus_connection_return_message) 
2996         (dbus_connection_borrow_message): hold dispatch lock while message
2997         is outstanding
2998         (_dbus_connection_block_for_reply): hold dispatch lock while we
2999         block for the reply, so nobody steals our reply
3000         (dbus_connection_pop_message): hold the dispatch lock while we
3001         pluck the message
3002
3003 2005-02-13  Havoc Pennington  <hp@redhat.com>
3004
3005         * dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
3006         (_dbus_connection_release_dispatch)
3007         (_dbus_connection_acquire_io_path)
3008         (_dbus_connection_release_io_path): make the mutex and condvar
3009         control access to the "acquired" flag. Drop the connection lock
3010         while waiting on the condvar. Hopefully these are baby steps in
3011         roughly the right direction.
3012
3013 2005-02-13  Havoc Pennington  <hp@redhat.com>
3014
3015         * dbus/dbus-connection.c: use separate mutexes for the condition
3016         variables; this is some kind of baseline for sanity, but the
3017         condition variables still aren't used correctly afaict
3018
3019 2005-02-13  Havoc Pennington  <hp@redhat.com>
3020
3021         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
3022         fix a double-unlock
3023
3024         * dbus/dbus-connection.c
3025         (_dbus_connection_detach_pending_call_unlocked): add this
3026
3027         Initial semi-correct pass through to fix thread locking; there are
3028         still some issues with the condition variable paths I'm pretty
3029         sure
3030         
3031         * dbus/dbus-server.c: add a mutex on DBusServer and appropriate
3032         lock/unlock calls
3033
3034         * dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
3035         rename to add _unlocked
3036         (struct DBusConnection): move "dispatch_acquired" and
3037         "io_path_acquired" to use only one bit each.
3038         (CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
3039         (dbus_connection_set_watch_functions): hacky fix to reentrancy
3040         (_dbus_connection_add_watch, _dbus_connection_remove_watch) 
3041         (_dbus_connection_toggle_watch, _dbus_connection_add_timeout) 
3042         (_dbus_connection_remove_timeout) 
3043         (_dbus_connection_toggle_timeout): drop lock when calling out to
3044         user functions; done in a hacky/bad way.
3045         (_dbus_connection_send_and_unlock): add a missing unlock
3046         (_dbus_connection_block_for_reply): add a missing unlock
3047
3048         * dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
3049         drop lock in a hacky probably unsafe way to call out to user
3050         function
3051
3052 2005-02-12  Havoc Pennington  <hp@redhat.com>
3053
3054         * tools/dbus-tree-view.c (info_set_func_text): display more
3055         details on args
3056
3057         * bus/driver.c (bus_driver_handle_list_services): list the bus
3058         driver
3059
3060         * glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied
3061
3062         * glib/dbus-gidl.c (signal_info_get_n_args): new function
3063         (method_info_get_n_args): new function
3064
3065 2005-02-12  Havoc Pennington  <hp@redhat.com>
3066
3067         * bus/driver.c (bus_driver_handle_introspect): add introspection
3068         for bus driver
3069
3070 2005-02-12  Havoc Pennington  <hp@redhat.com>
3071
3072         * bus/driver.c: put the signature of each bus driver method in the
3073         table of handlers and check it on incoming calls; this isn't
3074         really useful, but going to add introspect support in a minute.
3075
3076 2005-02-11  Joe Shaw  <joeshaw@novell.com>
3077
3078         * mono/Connection.cs: The unpredictability of finalizers in mono
3079         prevents us from deterministically disconnecting the filters from
3080         the Service class's finalizer, so move tracking of filters and
3081         matches here.  Add API for that.
3082
3083         * mono/Service.cs: Remove the code, add code which calls the
3084         methods now on the Connection class.
3085
3086 2005-02-11  John (J5) Palmieri  <johnp@redhat.com>
3087
3088         * python/dbus.py (class Sender): added to support dbus signals better
3089         (Bus::add_signal_receiver): added expand_args parameter which defaults
3090         to True.  When expand args is True the signal handler will pass the 
3091         message arguments as parameters to the signal handler.  If False
3092         revert to previous behavior where the signal handler must get the
3093         argument list from the message.  This is to help port applications
3094         like HAL that have a tendancy to send variable length argument lists.
3095         self._match_rule_to_receivers is now a dict of dicts.
3096         (Bus::remove_signal_receiver): pop handler off the dict intead of 
3097         removing it from a list
3098         (Bus::_signal_func): change signal handlers so that interface,
3099         signal_name, service, path and message are packed into a Sender
3100         object and that is passed to the handler.  If expand_args is True
3101         extract the args list from the message and append it to the parameter
3102         list
3103         
3104         * python/dbus_bindings.pyx.in (class Signature): added to support 
3105         signiature types
3106         (MessageIter::__init__): changed iteration limit to match D-BUS
3107         (MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY, 
3108         STRUCT and VARIENT type support
3109         (MessageIter::python_value_to_dbus_sig): made recursive to support
3110         recursive types
3111         (MessageIter::append*): added Signature, dict, tuple 
3112         support
3113
3114         * python/examples/example-client.py: added examples of getting tuples
3115         and dicts
3116
3117         * python/examples/example-service.py: added examples of sending tuples
3118         and dicts
3119
3120         * python/examples/example-signal-recipient.py: Fixed to handle new
3121         signal callback format
3122
3123 2005-02-10  Havoc Pennington  <hp@redhat.com>
3124
3125         * test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
3126         (call dbus_g_proxy_add_signal)
3127
3128         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
3129         escape the hostname
3130         (_dbus_server_new_for_domain_socket): escape the path
3131
3132         * dbus/dbus-address.c (dbus_address_escape_value): new
3133         (dbus_address_unescape_value): new
3134         (dbus_parse_address): unescape values
3135
3136         * dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function
3137
3138         * doc/dbus-specification.xml: explain how to escape values in
3139         addresses
3140
3141 2005-02-10  Havoc Pennington  <hp@redhat.com>
3142
3143         * dbus/dbus-message-factory.c (generate_special): modify test to
3144         avoid using a non-basic dict key
3145
3146         * dbus/dbus-marshal-validate-util.c: add test for the below
3147
3148         * doc/dbus-specification.xml: require that dict keys are a basic
3149         type
3150
3151         * dbus/dbus-marshal-validate.c
3152         (_dbus_validate_signature_with_reason): require that dict key is a
3153         basic type
3154
3155 2005-02-10  Havoc Pennington  <hp@redhat.com>
3156
3157         * dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
3158         change to be _and_unlock instead of _unlocked
3159
3160         * dbus/dbus-connection.c
3161         (_dbus_connection_send_preallocated_unlocked_no_update): rename to
3162         have no_update so we can find this bug quickly in future
3163
3164 2005-02-10  Havoc Pennington  <hp@redhat.com>
3165
3166         * dbus/dbus-message-util.c (verify_test_message): tests for string
3167         array
3168
3169         * dbus/dbus-message.c (dbus_message_append_args_valist): add
3170         support for arrays of string/signature/path
3171
3172 2005-02-10  Joe Shaw  <joeshaw@novell.com>
3173
3174         * dbus/dbus-connection.c
3175         (_dbus_connection_queue_received_message_link,
3176         _dbus_connection_message_sent): Add the path to
3177         the verbose output.
3178         (_dbus_connection_send_preallocated_and_unlock): Added.  Calls
3179         _dbus_connection_send_preallocated_unlocked(), updated the
3180         dispatch status, and unlocks.  Fixes a bug where certain
3181         situations (like a broken pipe) could cause a Disconnect message
3182         to not be sent, tricking the bus into thinking a service was still
3183         there when the process had quit.
3184         (_dbus_connection_send_preallocated): Call
3185         _dbus_connection_send_preallocated_and_unlock().
3186         (_dbus_connection_send_and_unlock): Added.  Calls
3187         _dbus_connection_send_preallocated_and_unlock().
3188         (dbus_connection_send): Call _dbus_connection_send_and_unlock().
3189         (dbus_connection_send_with_reply): Update the dispatch status and
3190         unlock.
3191
3192         * mono/Service.cs (~Service): Added.  Removes the filter so that
3193         we don't get unmanaged code calling back into a GCed delegate.
3194         (RemoveFilter); Added.
3195
3196 2005-02-09  John (J5) Palmieri  <johnp@redhat.com>
3197
3198         * dbus/dbus-message.c (dbus_message_iter_open_container):
3199         - Removed check for iterator type being an array because
3200         get_arg_type does not work with writer iterators
3201         - Pass NULL to _dbus_type_writer_recurse if signiture is NULL
3202
3203 2005-02-07  Havoc Pennington  <hp@redhat.com>
3204
3205         * doc/dbus-specification.xml: some more language cleanups; add
3206         stuff about how to deal with invalid protocol and extension
3207         points; add _ to allowed chars in auth commands; add EXTENSION_
3208         auth command prefix
3209
3210 2005-02-06  Havoc Pennington  <hp@redhat.com>
3211
3212         * s/expected/required/ in a couple places for clarity
3213
3214 2005-02-07  Colin Walters  <walters@verbum.org>
3215
3216         * bus/selinux.c (bus_selinux_allows_send): Handle NULL for
3217         sender or proposed_recipient.
3218
3219 2005-02-06  Havoc Pennington  <hp@redhat.com>
3220
3221         * dbus/dbus-message-factory.c (generate_special): more tests
3222
3223         * dbus/dbus-marshal-validate.c (validate_body_helper): detect
3224         array length that exceeds the maximum
3225
3226 2005-02-05  Havoc Pennington  <hp@redhat.com>
3227
3228         * dbus/dbus-message-factory.c (generate_special): more test cases,
3229         increasing coverage
3230
3231         * dbus/dbus-marshal-validate.c (validate_body_helper): return the
3232         reason why a signature was invalid
3233
3234         * dbus/dbus-marshal-header.c (load_and_validate_field): fix to
3235         skip the length of the string before we look at it in validation
3236
3237         * dbus/dbus-string-util.c (_dbus_string_test): add tests for
3238         equal_substring
3239
3240         * dbus/dbus-message.c (_dbus_message_loader_new): default
3241         max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH
3242
3243 2005-02-05  Havoc Pennington  <hp@redhat.com>
3244
3245         * dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
3246         if the signature of a variant was empty
3247         (_dbus_validate_signature_with_reason): catch "(a)" (array inside
3248         struct with no element type)
3249
3250         * dbus/dbus-message-factory.c (generate_uint32_changed): add more
3251         mangled messages to break things
3252
3253 2005-02-04  Havoc Pennington  <hp@redhat.com>
3254
3255         * glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
3256         g_quark_try_string() so it actually can return 0
3257         (dbus_g_proxy_connect_signal): ditto
3258
3259 2005-02-04  Havoc Pennington  <hp@redhat.com>
3260
3261         * glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
3262         bogus warning
3263         (tristring_from_message): assert cleanly on null path/interface
3264         (should not be possible though I decided later)
3265         (dbus_g_proxy_dispose): move proxy manager unregistration here
3266         (DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
3267         g_return_if_fail() checks
3268
3269 2005-02-04  Havoc Pennington  <hp@redhat.com>
3270
3271         * doc/Makefile.am (EXTRA_DIST): add DTDs to makefile
3272
3273         * doc/introspect.dtd: add introspect.dtd from David A. Wheeler
3274         (with some minor changes)
3275
3276         * doc/dbus-specification.xml: add deprecated attribute to
3277         introspection format
3278
3279 2005-01-31  Havoc Pennington  <hp@redhat.com>
3280
3281         * glib/dbus-gproxy.c: rewrite how signals work again, this time I
3282         think it's sort of right
3283
3284 2005-01-30  Havoc Pennington  <hp@redhat.com>
3285
3286         * tools/dbus-viewer.c: kind of half-ass hook up the option menu.
3287
3288 2005-01-30  Havoc Pennington  <hp@redhat.com>
3289
3290         * tools/dbus-names-model.c: dynamically watch NameOwnerChanged
3291
3292         * autogen.sh: change to autotools 1.9
3293
3294         * glib/dbus-gproxy.c: completely change how signals work
3295         (dbus_g_proxy_add_signal): new function to specify signature of a
3296         signal
3297         (dbus_g_proxy_emit_received): marshal the dbus message to GValues,
3298         and g_warning if the incoming message has the wrong signature.
3299
3300 2005-01-30  Havoc Pennington  <hp@redhat.com>
3301
3302         * tools/dbus-names-model.c (have_names_notify): fix this
3303
3304         * dbus/dbus-message.c (_dbus_message_iter_get_args_valist): clean
3305         up the string array handling a bit 
3306
3307 2005-01-30  Havoc Pennington  <hp@redhat.com>
3308
3309         * glib/dbus-glib.c (dbus_g_pending_call_set_notify): new function
3310         (dbus_g_pending_call_cancel): new function
3311
3312         * dbus/dbus-glib.h: move GType decls for connection/message here;
3313         * dbus/dbus-glib.c: move all the g_type and ref/unref stuff in
3314         here, just kind of rationalizing how we handle all that
3315
3316         * tools/dbus-names-model.c: new file for a tree model listing the
3317         services on a bus
3318
3319         * tools/dbus-tree-view.c (model_new): use proper typing on the
3320         model rows
3321
3322 2005-01-30  Havoc Pennington  <hp@redhat.com>
3323
3324         * glib/dbus-gmain.c: add a custom GSource back that just checks
3325         whether the message queue has anything in it; otherwise, there are 
3326         cases where we won't see messages in the queue since there was no 
3327         IO visible to the glib main loop
3328
3329         * dbus/dbus-connection-internal.h (_DBUS_DEFAULT_TIMEOUT_VALUE):
3330         increase default message timeout to 25 seconds
3331
3332 2005-01-30  Havoc Pennington  <hp@redhat.com>
3333
3334         * test/glib/test-profile.c (no_bus_stop_server): remove the
3335         warning about the g_warning that I just fixed
3336
3337         * glib/dbus-gmain.c: rewrite the main loop stuff to avoid the
3338         custom source, seems to be a lot easier to understand and work
3339         better.
3340
3341 2005-01-30  Havoc Pennington  <hp@redhat.com>
3342
3343         I think this main loop thing is conceptually broken, but here are 
3344         some band aids. I'll maybe rewrite it in a minute.
3345         
3346         * glib/dbus-gmain.c (add_timeout): timeout stuff doesn't use the
3347         custom GSource, so don't pass it in; confusing
3348         (gsource_server_finalize, gsource_connection_finalize): add
3349         finalize handlers that remove all the watches.  
3350
3351 2005-01-30  Havoc Pennington  <hp@redhat.com>
3352
3353         * glib/dbus-gobject.c (introspect_properties): fix the XML
3354         generated
3355
3356         * dbus/dbus-message.c (dbus_message_unref): add an in_cache flag
3357         which effectively detects the use of freed messages
3358
3359         * glib/dbus-gobject.c (handle_introspect): modify and return the
3360         reply message instead of the incoming message
3361
3362         * dbus/dbus-object-tree.c (handle_default_introspect_unlocked):
3363         gee, maybe it should SEND THE XML instead of just making a string
3364         and freeing it again ;-)
3365
3366         * tools/dbus-print-message.c (print_message): improve printing of
3367         messages
3368
3369         * configure.in: add debug-glib.service to the output
3370
3371 2005-01-30  Havoc Pennington  <hp@redhat.com>
3372
3373         dbus-viewer introspected and displayed the bus driver
3374         
3375         * dbus/dbus-object-tree.c 
3376         (object_tree_test_iteration): add tests for a handler registered on "/"
3377
3378         * dbus/dbus-object-tree.c
3379         (_dbus_decompose_path): fix to handle path "/" properly
3380         (run_decompose_tests): add tests for path decomposition
3381         
3382         * glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
3383         properly
3384
3385         * glib/dbus-gobject.c (handle_introspect): fix quotes
3386
3387         * test/glib/run-test.sh: support launching the bus, then running
3388         dbus-viewer
3389
3390         * test/glib/test-service-glib.c (main): put in a trivial gobject
3391         subclass and register it on the connection
3392
3393         * bus/driver.c (bus_driver_handle_introspect): implement
3394         introspection of the bus driver service
3395
3396         * dbus/dbus-protocol.h: add #defines for the XML namespace,
3397         identifiers, doctype decl
3398
3399         * bus/driver.c (bus_driver_handle_get_service_owner): handle
3400         attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by 
3401         returning the service unchanged.
3402         (bus_driver_handle_message): remove old check for reply_serial in
3403         method calls, now the message type deals with that
3404         (bus_driver_handle_message): handle NULL interface
3405
3406         * glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function
3407
3408         * glib/dbus-gloader-expat.c (description_load_from_string): allow
3409         -1 for len
3410
3411         * tools/dbus-viewer.c: add support for introspecting a service on
3412         a bus
3413
3414         * glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
3415         (dbus_g_pending_call_unref): add
3416
3417 2005-01-29  Havoc Pennington  <hp@redhat.com>
3418
3419         * tools/dbus-tree-view.c: add support for displaying properties.
3420         (run dbus-viewer with an introspect xml file as arg, then resize
3421         the window so the tree elements show up, not sure what that is)
3422
3423         * glib/dbus-gobject.c (handle_introspect): return
3424         org.freedesktop.Properties and org.freedesktop.Introspectable
3425         interfaces when we are introspected.
3426
3427         * doc/dbus-specification.xml: allow empty interface name when 
3428         Get/Set a property
3429
3430 2005-01-29  Havoc Pennington  <hp@redhat.com>
3431
3432         * glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
3433         though it uses glib, it could be extended for any binding in
3434         principle
3435
3436         * glib/dbus-gobject.c (gobject_message_function): change to the
3437         new way properties work
3438
3439         * dbus/dbus-protocol.h: add the new interfaces
3440
3441         * doc/dbus-specification.xml: document the introspection format,
3442         Introspectable interface, and add an org.freedesktop.Properties
3443         interface.
3444
3445         * glib/dbus-gparser.c: add support for a <property> element
3446
3447         * glib/dbus-gidl.c: add PropertyInfo
3448
3449         * glib/dbus-gobject.c (handle_introspect): put the outermost
3450         <node> outside the signal and property descriptions.
3451         (introspect_properties): export properties as <property> rather
3452         than as method calls
3453
3454 2005-01-28  Havoc Pennington  <hp@redhat.com>
3455
3456         * doc/TODO, doc/dbus-specification.xml: spec and TODO tweaks
3457         related to authentication protocol
3458
3459 2005-01-28  John (J5) Palmieri  <johnp@redhat.com>
3460
3461         * python/dbus_bindings.pyx.in: Updated to handle new D-BUS type system
3462                 - BUS_ACTIVATION -> BUS_STARTER
3463                 - DBUS_BUS_ACTIVATION -> DBUS_BUS_STARTER
3464                 - class MessageIter (__init__): Added recursion checking 
3465                 so we throw a nice error instead of just disconnecting from the
3466                 bus.
3467                 (get): Added arg_type parameter for recursion.
3468                 Removed the nil type
3469                 Added signiture type placeholder (not implemented)
3470                 Added struct type placeholder (not implemented)
3471                 Added varient type placeholder (not implemented)
3472                 Commented out dict type for now     
3473                 (get_element_type): renamed from get_array_type
3474                 (get_*): changed to use the dbus_message_iter_get_basic API
3475                 (get_*_array): removed in favor of recursive get_array method
3476                 (get_array): new recursive method which calls get to marshal
3477                 the elements of the array
3478                 (value_to_dbus_sig): New method returns the corrasponding
3479                 dbus signiture to a python value
3480                 (append): Comment out dict handling for now
3481                 Handle lists with the new recursive API
3482                 Comment out None handling for now
3483                 (append_nil): removed
3484                 (append_*): changed to use dbus_message_iter_append_basic API
3485                 (append_*_array): removed in favor of recursive append_array 
3486                 method
3487                 (__str__): Make it easier to print out recursive iterators
3488                 for debugging
3489                 - class Message (__str__): moved type inspection to the
3490                 MessageIter class' __str__ method
3491                 (get_iter): Added an append parameter wich defaults to False
3492                 If True use the new API's to create an append iterator
3493
3494         * python/dbus.py: Update to use new bindings API
3495                 - TYPE_ACTIVATION -> TYPE_STARTER
3496                 - class Bus (_get_match_rule): GetServiceOwner -> GetNameOwner
3497                 - class ActivationBus -> class StarterBus
3498                 - class RemoteObject (__call__): get an append iterator
3499                 - (_dispatch_dbus_method_call): get an append iterator
3500                 - class Object (emit_signal): get an append iterator
3501
3502         * python/examples/: Fixed up the examples to work with the new API
3503                 
3504 2005-01-28  Joe Shaw  <joeshaw@novell.com>
3505
3506         * configure.in: Bump version up to 0.30.
3507
3508         * HACKING: Add a release item to bump the version number up after 
3509         a release.
3510
3511 2005-01-28  Havoc Pennington  <hp@redhat.com>
3512
3513         * doc/dbus-specification.xml: update to describe 16-bit types and
3514         dict entries
3515
3516         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint16): fix broken
3517         assertion
3518
3519         * dbus/dbus-protocol.h (DBUS_TYPE_DICT_ENTRY): add DICT_ENTRY as a
3520         type
3521
3522         * dbus/dbus-marshal-recursive.c: implement
3523
3524 2005-01-27  Havoc Pennington  <hp@redhat.com>
3525
3526         * dbus/dbus-arch-deps.h.in: add 16/32-bit types
3527
3528         * configure.in: find the right type for 16 and 32 bit ints as well
3529         as 64
3530
3531         * dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add
3532         the 16-bit types so people don't have to stuff them in 32-bit or
3533         byte arrays.
3534
3535 2005-01-27  Havoc Pennington  <hp@redhat.com>
3536
3537         * dbus/dbus-message.c: byteswap the message if you init an
3538         iterator to read/write from it
3539         
3540         * dbus/dbus-marshal-byteswap.c: new file implementing 
3541         _dbus_marshal_byteswap()
3542
3543         * dbus/dbus-marshal-basic.c: add _dbus_swap_array()
3544
3545 2005-01-26  Havoc Pennington  <hp@redhat.com>
3546         
3547         * dbus/dbus-marshal-validate-util.c: break this out (and fix
3548         build, apparently - nobody noticed?)
3549         
3550 2005-01-26  Havoc Pennington  <hp@redhat.com>
3551
3552         * dbus/dbus-marshal-recursive.h: remove todo comment
3553
3554 2005-01-25  Joe Shaw  <joeshaw@novell.com>
3555
3556         * Land the mono binding changes to conform to the new APIs.
3557
3558         * mono/Makefile.am: Remove Custom.cs, DBusType/Custom.cs,
3559         DBusType/Dict.cs, and DBusType/Nil.cs from the build.
3560
3561         * mono/Arguments.cs (GetCodeAsString): Added.  Returns the dbus
3562         type code as a string.
3563         (InitAppending): Rename dbus_message_append_iter_init() to
3564         dbus_message_iter_init_append().
3565
3566         * mono/BusDriver.cs: Rename ServiceEventHandler to
3567         NameOwnerChangedHandler.  Rename GetServiceOwner to GetOwner.
3568         Rename ServiceOwnerChanged to NameOwnerChanged.
3569
3570         * mono/Connection.cs: Rename BaseService to UniqueName, and the
3571         underlying C call.
3572
3573         * mono/Custom.cs: Removed.  The CUSTOM type has been removed.
3574
3575         * mono/Service.cs: Rename Exists to HasOwner, internally rename
3576         dbus_bus_acquire_service() to dbus_bus_request_name().
3577
3578         * mono/DBusType/Array.cs (ctor): Use Type.GetElementType() instead
3579         of Type.UnderlyingSystemType to get the correct element type for
3580         the array.
3581         (ctor): Update code for new APIs: use dbus_message_iter_recurse(),
3582         dbus_message_get_{element|arg}_type() instead of
3583         dbus_message_iter_init_array_iterator().
3584         (Append): Replace dbus_message_iter_append_array() with
3585         dbus_message_iter_open_container() and
3586         dbus_message_iter_close_container().
3587
3588         * mono/DBusType/Custom.cs, mono/DBusType/Nil.cs: Removed.  These
3589         types have been removed.
3590         
3591         * mono/DBusType/*.cs: Replace calls of
3592         dbus_message_iter_get_[type]() to dbus_message_iter_get_basic(),
3593         but specify the type in the DllImport extern declaration.  Ditto
3594         for dbus_message_iter_append_[type]() ->
3595         dbus_message_iter_append_basic().
3596
3597         * mono/example/BusListener.cs: Update for ServiceEventHandler ->
3598         NameOwnerChangedHandler.
3599
3600 2005-01-25  John (J5) Palmieri  <johnp@redhat.com>
3601
3602         * python/dbus_bindings.pyx.in: Rename of methods and bindings
3603                 - get_base_service -> get_unique_name
3604                 - bus_get_base_service -> bus_get_unique_name
3605                 - dbus_bus_get_base_service -> dbus_bus_get_unique_name
3606                 - ACTIVATION_REPLY_ACTIVATED -> DBUS_START_REPLY_SUCCESS 
3607                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> DBUS_START_REPLY_ALREADY_RUNNING
3608                 - bus_activate_service -> bus_start_service_by_name
3609                 - dbus_bus_activate_service -> dbus_bus_start_service_by_name
3610                 - bus_acquire_service -> bus_request_name
3611                 - dbus_bus_acquire_service -> dbus_bus_request_name
3612                 - bus_service_exists -> bus_name_has_owner
3613                 - dbus_bus_service_exists -> dbus_bus_name_has_owner
3614
3615         * python/dbus.py: Rename of methods
3616                 - activate_service -> start_service_by_name
3617                 - bus_acquire_service -> bus_request_name
3618                 - ACTIVATION_REPLY_ACTIVATED -> START_REPLY_SUCCESS 
3619                 - ACTIVATION_REPLY_ALREADY_ACTIVE -> START_REPLY_ALREADY_RUNNING
3620
3621         
3622 2005-01-24  Joe Shaw  <joeshaw@novell.com>
3623
3624         * dbus/dbus-connection.c (dbus_connection_dispatch): Print out the
3625         signature for the method that can't be found.
3626
3627         * dbus/dbus-message.c (dbus_message_iter_init): To check to see if
3628         the message has any arguments, we need to call
3629         _dbus_type_reader_get_current_type(), not
3630         _dbus_type_reader_has_next().
3631
3632 2005-01-24  Havoc Pennington  <hp@redhat.com>
3633
3634         * dbus/dbus-message-factory.c: more testing of message validation
3635
3636         * dbus/dbus-protocol.h (DBUS_MINIMUM_HEADER_SIZE): move to this
3637         header
3638
3639 2005-01-23  Havoc Pennington  <hp@redhat.com>
3640
3641         * dbus/dbus-message-factory.c, dbus/dbus-message-util.c: 
3642         get this all working, not many tests in the framework yet though
3643
3644 2005-01-22  Havoc Pennington  <hp@redhat.com>
3645
3646         * doc/dbus-faq.xml, doc/dbus-tutorial: add a FAQ and update
3647         tutorial, based on work from David Wheeler.
3648
3649 2005-01-21  Havoc Pennington  <hp@redhat.com>
3650
3651         * dbus/dbus-bus.c: add more return_if_fail checks
3652
3653         * dbus/dbus-message.c (load_message): have the "no validation"
3654         mode (have to edit the code to toggle the mode for now though)
3655
3656         * dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that
3657         skips all validation; I want to use this at least for benchmark
3658         baseline, I'm not sure if it should be a publicly-available switch.
3659
3660 2005-01-21  Havoc Pennington  <hp@redhat.com>
3661
3662         * glib/dbus-gmain.c: don't put the GLib bindings in the same
3663         toplevel doxygen group as the low-level API stuff
3664
3665         * dbus/dbus.h: note that libdbus is the low-level API
3666
3667 2005-01-20  Havoc Pennington  <hp@redhat.com>
3668
3669         * update-dbus-docs.sh: script to update docs on the web site, only
3670         works for me though. neener.
3671
3672 2005-01-20  Havoc Pennington  <hp@redhat.com>
3673
3674         * dbus/dbus-sysdeps.c (_dbus_poll): amazingly, trying to compile
3675         code can reveal bugs in it
3676
3677 2005-01-20  Havoc Pennington  <hp@redhat.com>
3678
3679         * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
3680         select() version, patches from Tor Lillqvist
3681
3682 2005-01-20  Havoc Pennington  <hp@redhat.com>
3683
3684         * doc/dbus-tutorial.xml: replace > with &gt;
3685
3686         * bus/services.c (bus_registry_acquire_service): validate the name
3687         and return a better error if it's no good.
3688
3689         * doc/dbus-specification.xml: note NO_AUTO_START change
3690
3691         * dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
3692         from AUTO_START, we're toggling the default
3693
3694         * bus/dispatch.c: adapt the tests to change of auto-start default
3695
3696 2005-01-18  Havoc Pennington  <hp@redhat.com>
3697
3698         * rename dbus-daemon-1 to dbus-daemon throughout
3699
3700 2005-01-18  Havoc Pennington  <hp@redhat.com>
3701
3702         * Throughout, grand renaming to strip out the use of "service",
3703         just say "name" instead (or "bus name" when ambiguous).  Did not
3704         change the internal code of the message bus itself, only the
3705         programmer-facing API and messages.
3706         
3707         * doc/dbus-specification.xml: further update the message bus section
3708         
3709         * bus/config-parser.c (all_are_equiv): fix bug using freed string
3710         in error case
3711
3712 2005-01-17  Havoc Pennington  <hp@redhat.com>
3713
3714         * dbus/dbus-types.h: remove 16-bit types since we don't use them
3715         ever
3716
3717         * dbus/dbus-marshal-validate.c (_dbus_validate_path): disallow any
3718         "invalid name character" not only non-ASCII
3719
3720         * doc/dbus-specification.xml: further update spec, message bus 
3721         parts are still out-of-date but the marshaling etc. stuff is now
3722         accurate-ish
3723
3724 2005-01-17  Havoc Pennington  <hp@redhat.com>
3725
3726         * doc/dbus-specification.xml: partially update spec
3727
3728 2005-01-17  Havoc Pennington  <hp@redhat.com>
3729
3730         * Throughout, align variant bodies according to the contained
3731         type, rather than always to 8. Should save a fair bit of space in
3732         message headers.
3733         
3734         * dbus/dbus-marshal-validate.c (_dbus_validate_body_with_reason):
3735         fix handling of case where p == end
3736
3737         * doc/TODO: remove the dbus_bool_t item and variant alignment items
3738
3739 2005-01-17  Havoc Pennington  <hp@redhat.com>
3740
3741         * dbus/dbus-types.h: hardcode dbus_bool_t to 32 bits
3742
3743         * Throughout: modify DBUS_TYPE_BOOLEAN to be a 32-bit type instead
3744         of an 8-bit type. Now dbus_bool_t is the type to use whenever you 
3745         are marshaling/unmarshaling a boolean.
3746
3747 2005-01-16  Havoc Pennington  <hp@redhat.com>
3748
3749         This is about it on what can be disabled/deleted from libdbus
3750         easily, back below 150K anyhow. Deeper cuts are more work than 
3751         just turning the code off as I've done here.
3752         
3753         * dbus/dbus-marshal-basic.c (_dbus_pack_int32): we don't need the
3754         signed int convenience funcs
3755
3756         * dbus/dbus-internals.c (_dbus_verbose_real): omit when not in
3757         verbose mode
3758
3759         * dbus/dbus-string-util.c, dbus/dbus-string.c: more breaking
3760         things out of libdbus
3761
3762         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-util.c: same
3763         
3764         * dbus/dbus-hash.c: purge the TWO_STRINGS crap (well, make it
3765         tests-enabled-only, though it should probably be deleted)
3766
3767         * dbus/dbus-message-util.c: same stuff
3768
3769         * dbus/dbus-auth-util.c: same stuff
3770
3771 2005-01-16  Havoc Pennington  <hp@redhat.com>
3772
3773         * dbus/dbus-userdb-util.c: split out part of dbus-userdb.c
3774
3775         * dbus/dbus-sysdeps.c (_dbus_uid_from_string): move here to pave
3776         way for stripping down dbus-userdb.c stuff included in libdbus.
3777         Rename _dbus_parse_uid for consistency.
3778
3779 2005-01-16  Havoc Pennington  <hp@redhat.com>
3780
3781         * dbus/dbus-internals.c (_dbus_real_assert): print the function
3782         name the assertion failed in
3783
3784         * dbus/dbus-internals.h (_dbus_return_if_fail) 
3785         (_dbus_return_val_if_fail): assert that the name of the function
3786         containing the check doesn't start with '_', since we only want to 
3787         use checks on public functions
3788         
3789         * dbus/dbus-connection.c (_dbus_connection_ref_unlocked): change
3790         checks to assertions
3791
3792         * dbus/dbus-marshal-header.c (_dbus_header_set_field_basic):
3793         change checks to asserts for private function
3794
3795         * dbus/dbus-message.c (_dbus_message_set_serial): checks
3796         to asserts for private function
3797
3798         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): remove
3799         broken assertion that was breaking make check
3800         (_dbus_type_reader_array_is_empty): remove this rather than fix
3801         it, was only used in assertions
3802
3803 2005-01-16  Havoc Pennington  <hp@redhat.com>
3804
3805         * test/unused-code-gc.py: hacky script to find code that's used
3806         only by the bus (not libdbus) or used only by tests or not used at
3807         all. It has some false alarms, but looks like we can clean up a
3808         lot of size from libdbus.
3809
3810         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
3811         dbus/Makefile.am: initially move 10K of binary size out of libdbus
3812         
3813 2005-01-16  Havoc Pennington  <hp@redhat.com>
3814
3815         * Add and fix docs according to Doxygen warnings throughout
3816         source.
3817         
3818         * dbus/dbus-marshal-recursive.c
3819         (_dbus_type_reader_array_is_empty): change this to just call
3820         array_reader_get_array_len() and make it static
3821
3822         * dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
3823         from get_array_type
3824         (dbus_message_iter_init_append): rename from append_iter_init
3825
3826         * dbus/dbus-marshal-recursive.c
3827         (_dbus_type_reader_get_element_type): rename from
3828         _dbus_type_reader_get_array_type
3829
3830 2005-01-15  Havoc Pennington  <hp@redhat.com>
3831
3832         * test/glib/test-profile.c (with_bus_server_filter): fix crash
3833
3834         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
3835         when DBUS_DISABLE_ASSERT
3836         (_dbus_marshal_set_basic): be sure we align for the string length
3837
3838         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
3839         this look faster
3840
3841         * dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
3842         inline macro version
3843         (_dbus_string_set_byte): provide inline macro version
3844
3845 2005-01-15  Havoc Pennington  <hp@redhat.com>
3846
3847         * Land the new message args API and type system.
3848
3849         This patch is huge, but the public API change is not 
3850         really large. The set of D-BUS types has changed somewhat, 
3851         and the arg "getters" are more geared toward language bindings;
3852         they don't make a copy, etc.
3853
3854         There are also some known issues. See these emails for details
3855         on this huge patch:
3856         http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
3857         http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
3858         
3859         * dbus/dbus-marshal-*: all the new stuff
3860
3861         * dbus/dbus-message.c: basically rewritten
3862
3863         * dbus/dbus-memory.c (check_guards): with "guards" enabled, init
3864         freed blocks to be all non-nul bytes so using freed memory is less
3865         likely to work right
3866
3867         * dbus/dbus-internals.c (_dbus_test_oom_handling): add
3868         DBUS_FAIL_MALLOC=N environment variable, so you can do
3869         DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
3870         DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
3871         thorough.
3872
3873         * qt/message.cpp: port to the new message args API
3874         (operator<<): use str.utf8() rather than str.unicode()
3875         (pretty sure this is right from the Qt docs?)
3876
3877         * glib/dbus-gvalue.c: port to the new message args API
3878
3879         * bus/dispatch.c, bus/driver.c: port to the new message args API
3880
3881         * dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
3882         "locked" flag to TRUE and align_offset to 0; I guess we never
3883         looked at these anyhow, but seems cleaner.
3884
3885         * dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
3886         move allocation padding macro to this header; use it to implement
3887         (_DBUS_STRING_STATIC): ability to declare a static string.
3888
3889         * dbus/dbus-message.c (_dbus_message_has_type_interface_member):
3890         change to return TRUE if the interface is not set.
3891
3892         * dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
3893         to dbus-marshal-validate.[hc]
3894
3895         * dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
3896         dbus-internals.c
3897
3898         * dbus/Makefile.am: cut over from dbus-marshal.[hc]
3899         to dbus-marshal-*.[hc]
3900
3901         * dbus/dbus-object-tree.c (_dbus_decompose_path): move this
3902         function here from dbus-marshal.c
3903
3904 2005-01-12  Joe Shaw  <joeshaw@novell.com>
3905
3906         * NEWS: Update for 0.23.
3907
3908         * configure.in: Release 0.23.
3909
3910 2005-01-12  Joe Shaw  <joeshaw@novell.com>
3911
3912         * mono/Makefile.am, mono/example/Makefile.am: Always build the 
3913         dbus DLL with --debug.  Clean up after the .mdb files this leaves
3914         behind.
3915
3916         * mono/doc/Makefile.am: Need to uninstall the docs on "make
3917         uninstall"
3918
3919         * mono/Arguments.cs (GetDBusTypeConstructor): If the type
3920         is an enum, get the enum's underlying type.  Another mono
3921         1.1.3 fix.
3922
3923 2005-01-11  Joe Shaw  <joeshaw@novell.com>
3924
3925         Patch from Sjoerd Simons <sjoerd@luon.net>
3926
3927         * mono/Makefile.am, mono/example/Makefile.am: Don't redefine
3928         DESTDIR.  It breaks stuff.
3929
3930 2005-01-11  Joe Shaw  <joeshaw@novell.com>
3931
3932         Patch from Tambet Ingo <tambet@ximian.com>
3933
3934         * mono/DBusType/Array.cs (Get): Get the underlying element type by
3935         calling type.GetElementType().  The code previously depended on
3936         broken Mono behavior, which was fixed in Mono 1.1.3.
3937
3938         * mono/DBusType/Dict.cs (constructor): Fix the parameters for
3939         Activator.CreateInstance() so that the class's constructor is
3940         called with the right parameters.
3941
3942 2005-01-11  Joe Shaw  <joeshaw@novell.com>
3943
3944         Patch from Timo Teräs <ext-timo.teras@nokia.com>
3945
3946         * dbus/dbus-connection.c
3947         (_dbus_connection_queue_received_message_link): Call
3948         _dbus_connection_remove_timeout() instead of the _locked()
3949         variant, since it's always called from
3950         _dbus_connection_handle_watch(), which handles the locking.
3951         Removed the _locked() variant since it's no longer used.
3952
3953 2005-01-03  Havoc Pennington  <hp@redhat.com>
3954
3955         * dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
3956         return
3957         
3958 2004-12-26  Havoc Pennington  <hp@redhat.com>
3959
3960         * dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert
3961
3962 2005-01-03  Havoc Pennington  <hp@redhat.com>
3963
3964         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
3965         floating point
3966
3967         * dbus/dbus-string.c (_dbus_string_insert_alignment): new function
3968
3969 2005-01-02  Havoc Pennington  <hp@redhat.com>
3970
3971         * dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro
3972
3973 2005-01-01  Havoc Pennington  <hp@redhat.com>
3974
3975         * configure.in: add -Wfloat-equal
3976
3977 2005-01-01  Havoc Pennington  <hp@redhat.com>
3978
3979         * dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
3980         for a variety of reasons '==' doesn't do this.
3981
3982 2004-12-31  Havoc Pennington  <hp@redhat.com>
3983
3984         * dbus/dbus-string.c (_dbus_string_equal_substrings): new function
3985         I keep wishing I had
3986
3987 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
3988
3989         * python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED
3990
3991 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
3992
3993         * python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
3994         and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
3995         dbus-protocol.h.  Because they are defines and not enums they are not
3996         autogenerated.
3997
3998 2004-12-26  John (J5) Palmieri  <johnp@redhat.com>
3999
4000         * python/dbus_bindings.pyx.in (bus_activate_service): Bind
4001         dbus_bus_activate_service
4002
4003         * python/dbus.py (Bus.activate_service): activate a service on the
4004         bus.
4005
4006 2004-12-24  Havoc Pennington  <hp@redhat.com>
4007
4008         * test/decode-gcov.c: change to use .gcno and .gcda files, but the
4009         file format has also changed and I haven't adapted to that yet
4010         
4011         * Makefile.am: load .gcno files from latest gcc
4012
4013 2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
4014         * Patch from Rob Taylor <robtaylor@fastmail.fm>
4015
4016         * python/dbus_bindings.pyx.in (bus_get_unix_user): New
4017         lowlevel binding
4018
4019         * python/dbus.py (get_unix_user): Added binding to 
4020         call dbus_bindings.bus_get_unix_user
4021
4022         * python/extract.py: Modified the proto_pat regex to
4023         handle unsigned long
4024
4025 2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4026
4027         * dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
4028         better POSIX compliance.
4029
4030 2004-12-19  Havoc Pennington  <hp@redhat.com>
4031
4032         * dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
4033         (_dbus_string_insert_8_aligned): new functions
4034
4035         * dbus/dbus-string.c (_dbus_string_alloc_space): new function
4036
4037 2004-12-18  Havoc Pennington  <hp@redhat.com>
4038
4039         * dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
4040         macro
4041
4042         * dbus/dbus-message.c: fix a comment, and add a still-unused
4043         not-implemented function
4044
4045         * dbus/dbus-marshal.h: fix comment
4046
4047         * dbus/dbus-internals.h (_DBUS_ISASCII): new macro
4048
4049 2004-12-17  Joe Shaw  <joeshaw@novell.com>
4050
4051         * mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
4052         mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
4053         mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
4054         Type.UnderlyingSystemType to get the actual system type
4055         underneath.  This code previously depended on the broken Mono
4056         behavior, which was fixed in 1.1.3.
4057
4058 2004-11-27  Havoc Pennington  <hp@redhat.com>
4059
4060         * dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
4061         are disabled
4062         (_dbus_string_get_const_data): inline when asserts are disabled
4063
4064         * dbus/dbus-message.c: record the _dbus_current_generation of
4065         creation so we can complain if dbus_shutdown() is used improperly.
4066         Do this only if checks are enabled.
4067
4068         * dbus/dbus-connection.c: ditto
4069         
4070 2004-11-26  Havoc Pennington  <hp@redhat.com>
4071
4072         * test/glib/test-profile.c: add with_bus mode to profile echoes
4073         that go through the bus.
4074
4075         * test/glib/run-test.sh: add ability to run test-profile
4076
4077         * bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
4078         config file reload.
4079
4080 2004-11-26  Havoc Pennington  <hp@redhat.com>
4081
4082         * test/glib/test-profile.c: clean up how the fake_malloc_overhead
4083         thing was implemented
4084
4085 2004-11-26  Havoc Pennington  <hp@redhat.com>
4086
4087         * test/glib/test-profile.c: tweak a bit, add support for some
4088         made-up minimal malloc overhead with plain sockets, since in 
4089         real life some sort of buffers are unavoidable thus we could 
4090         count them in the theoretical best case
4091
4092 2004-11-26  Havoc Pennington  <hp@redhat.com>
4093
4094         * dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
4095         where I was trying to cache one too many messages
4096
4097 2004-11-26  Havoc Pennington  <hp@redhat.com>
4098
4099         * dbus/dbus-message.c: reimplement message cache as an array which 
4100         makes the cache about twice as fast and saves maybe 1.5% overall
4101
4102 2004-11-26  Havoc Pennington  <hp@redhat.com>
4103
4104         * dbus/dbus-threads.c (init_global_locks): forgot to put the
4105         message cache lock here
4106
4107 2004-11-26  Havoc Pennington  <hp@redhat.com>
4108
4109         * dbus/dbus-message.c (struct DBusMessage): put the locked bit and
4110         the "char byte_order" next to each other to save 4 bytes
4111         (dbus_message_new_empty_header): reduce preallocation, since the
4112         message cache should achieve a similar effect
4113         (dbus_message_cache_or_finalize, dbus_message_get_cached): add a
4114         message cache that keeps a few DBusMessage around in a pool,
4115         another 8% speedup or so.
4116
4117         * dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function
4118
4119 2004-11-25  Havoc Pennington  <hp@redhat.com>
4120
4121         * dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
4122         to write, without reading or blocking, try it before the poll()
4123         and skip the poll() if nothing remains to write. This is about a
4124         3% speedup in the echo client/server
4125
4126 2004-11-25  Havoc Pennington  <hp@redhat.com>
4127
4128         The primary change here is to always write() once before adding
4129         the write watch, which gives us about a 10% performance increase.
4130         
4131         * dbus/dbus-transport-unix.c: a number of modifications to cope
4132         with removing messages_pending
4133         (check_write_watch): properly handle
4134         DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
4135         messages_pending stuff
4136         (check_read_watch): properly handle WAITING_FOR_MEMORY and
4137         AUTHENTICATED cases
4138         (unix_handle_watch): after writing, see if the write watch can be
4139         removed
4140         (unix_do_iteration): assert that write_watch/read_watch are
4141         non-NULL rather than testing that they aren't, since they 
4142         aren't allowed to be NULL. check_write_watch() at the end so 
4143         we add the watch if we did not finish writing (e.g. got EAGAIN)
4144
4145         * dbus/dbus-transport-protected.h: remove messages_pending call,
4146         since it resulted in too much inefficient watch adding/removing; 
4147         instead we now require that the transport user does an iteration 
4148         after queueing outgoing messages, and after trying the first
4149         write() we add a write watch if we got EAGAIN or exceeded our 
4150         max bytes to write per iteration setting
4151
4152         * dbus/dbus-string.c (_dbus_string_validate_signature): add this
4153         function
4154
4155         * dbus/dbus-server-unix.c (unix_finalize): the socket name was
4156         freed and then accessed, valgrind flagged this bug, fix it
4157
4158         * dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
4159         as the last valid field plus 1, where really it is equal to the
4160         last valid field. Corrects some message corruption issues.
4161
4162         * dbus/dbus-mainloop.c: verbosity changes
4163
4164         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
4165         instead of aborting in one of the test codepaths
4166
4167         * dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
4168         caused not printing the pid ever again if a verbose was missing
4169         the newline at the end
4170         (_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE
4171
4172         * dbus/dbus-connection.c: verbosity changes; 
4173         (dbus_connection_has_messages_to_send): new function
4174         (_dbus_connection_message_sent): no longer call transport->messages_pending
4175         (_dbus_connection_send_preallocated_unlocked): do one iteration to
4176         try to write() immediately, so we can avoid the write watch. This
4177         is the core purpose of this patchset
4178         (_dbus_connection_get_dispatch_status_unlocked): if disconnected,
4179         dump the outgoing message queue, so nobody will get confused
4180         trying to send them or thinking stuff is pending to be sent
4181
4182         * bus/test.c: verbosity changes
4183
4184         * bus/driver.c: verbosity/assertion changes
4185
4186         * bus/dispatch.c: a bunch of little tweaks to get it working again
4187         because this patchset changes when/where you need to block.
4188
4189 2004-11-23  Havoc Pennington  <hp@redhat.com>
4190
4191         * test/glib/test-profile.c: modify to accept a plain_sockets
4192         argument in which case it will bench plain sockets instead of
4193         libdbus, for comparison purposes.
4194
4195 2004-11-22  Havoc Pennington  <hp@redhat.com>
4196
4197         * test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
4198         threads for more time, so sysprof can get a grip on it.
4199
4200         * dbus/dbus-string.c (_dbus_string_validate_utf8): remove
4201         pointless variable
4202
4203 2004-11-13  Havoc Pennington  <hp@redhat.com>
4204
4205         * test/glib/test-profile.c: fix this thing up a bit
4206
4207         * dbus/dbus-message.c (dbus_message_new_empty_header): increase
4208         preallocation sizes by a fair bit; not sure if this will be an
4209         overall performance win or not, but it does reduce reallocs.
4210
4211         * dbus/dbus-string.c (set_length, reallocate_for_length): ignore
4212         the test hack that forced constant realloc if asserts are
4213         disabled, so we can profile sanely. Sprinkle in some
4214         _DBUS_UNLIKELY() which are probably pointless, but before I
4215         noticed the real performance problem I put them in.
4216         (_dbus_string_validate_utf8): micro-optimize this thing a little
4217         bit, though callgrind says it didn't help; then special-case
4218         ascii, which did help a lot; then be sure we detect nul bytes as
4219         invalid, which is a bugfix.
4220         (align_length_then_lengthen): add some more _DBUS_UNLIKELY
4221         superstition; use memset to nul the padding instead of a manual
4222         loop.
4223         (_dbus_string_get_length): inline this as a
4224         macro; it showed up in the profile because it's used for loop
4225         tests and so forth
4226
4227 2004-11-10  Colin Walters  <walters@verbum.org>
4228
4229         * dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
4230         for extra paranoia.
4231
4232 2004-11-09  Colin Walters  <walters@verbum.org>
4233
4234         * dbus/dbus-string.c (_dbus_string_get_length): New
4235         function, writes DBusString to C buffer.
4236
4237         * dbus/dbus-string.h: Prototype it.
4238
4239         * dbus/dbus-message.c (dbus_message_type_to_string): New
4240         function, converts message type into C string.
4241
4242         * dbus/dbus-message.h: Prototype it.
4243
4244         * bus/selinux.c (bus_selinux_check): Take source pid,
4245         target pid, and audit data.  Pass audit data to
4246         avc_has_perm.
4247         (log_audit_callback): New function, appends extra
4248         audit information.
4249         (bus_selinux_allows_acquire_service): Also take
4250         service name, add it to audit data.
4251         (bus_selinux_allows_send): Also take message
4252         type, interface, method member, error name,
4253         and destination, and add them to audit data.
4254         (log_cb): Initialize func_audit.
4255         
4256         * bus/selinux.h (bus_selinux_allows_acquire_service)
4257         (bus_selinux_allows_send): Update prototypes 
4258
4259         * bus/services.c (bus_registry_acquire_service): Pass
4260         service name to bus_selinux_allows_acquire_service.
4261
4262         * bus/bus.c (bus_context_check_security_policy): Pass
4263         additional audit data.  Move assignment of dest
4264         to its own line.
4265
4266 2004-11-07  Colin Walters  <walters@verbum.org>
4267
4268         * dbus/dbus-transport-unix.c (do_authentication): Always
4269         initialize auth_completed.
4270         
4271 2004-11-07  Colin Walters  <walters@verbum.org>
4272
4273         * bus/bus.c (load_config): Break into three
4274         separate functions: process_config_first_time_only,
4275         process_config_every_time, and process_config_postinit.
4276         (process_config_every_time): Move call of
4277         bus_registry_set_service_context_table into
4278         process_config_postinit.
4279         (process_config_postinit): New function, does
4280         any processing that needs to happen late
4281         in initialization (and also on reload).
4282         (bus_context_new): Instead of calling load_config,
4283         open config parser here and call process_config_first_time_only
4284         and process_config_every_time directly.  Later, after
4285         we have forked but before changing UID,
4286         invoke bus_selinux_full_init, and then call
4287         process_config_postinit.
4288         (bus_context_reload_config): As in bus_context_new,
4289         load parse file inside here, and call process_config_every_time
4290         and process_config_postinit.
4291
4292         * bus/services.h, bus/services.c
4293         (bus_registry_set_service_context_table): Rename
4294         from bus_registry_set_sid_table.  Take string hash from config
4295         parser, and convert them here into SIDs.
4296
4297         * bus/config-parser.c (struct BusConfigParser): Have
4298         config parser only store a mapping of service->context
4299         string.
4300         (merge_service_context_hash): New function.
4301         (merge_included): Merge context string hashes instead
4302         of using bus_selinux_id_table_union.
4303         (bus_config_parser_new): Don't use bus_selinux_id_table_new;
4304         simply create a new string hash.
4305         (bus_config_parser_unref): Unref it.
4306         (start_selinux_child): Simply insert strings into hash,
4307         don't call bus_selinux_id_table_copy_over.
4308
4309         * bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
4310         (bus_selinux_id_table_copy_over): Delete.
4311
4312 2004-11-03  Colin Walters  <walters@verbum.org>
4313
4314         * bus/selinux.c (bus_selinux_pre_init): Kill some unused
4315         variables.
4316         
4317 2004-11-03  Colin Walters  <walters@verbum.org>
4318
4319         * bus/test-main.c (test_pre_hook): Fix test logic,
4320         thanks Joerg Barfurth <Joerg.Barfurth@Sun.COM>.
4321
4322 2004-11-02  Colin Walters  <walters@redhat.com>
4323
4324         * bus/selinux.c (bus_selinux_init): Split into two functions,
4325         bus_selinux_pre_init and bus_selinux_post_init.
4326         (bus_selinux_pre_init): Just determine whether SELinux is
4327         enabled.
4328         (bus_selinux_post_init): Do everything else.
4329
4330         * bus/main.c (main): Call bus_selinux_pre_init before parsing
4331         config file, and bus_selinux_post_init after.  This ensures that
4332         we don't lose the policyreload notification thread that
4333         bus_selinux_init created before forking previously.
4334         
4335         * bus/test-main.c (test_pre_hook): Update for split.
4336
4337 2004-10-31  Owen Fraser-Green  <owen@discobabe.net>
4338
4339         Patch from Johan Fischer <linux@fischaz.com>
4340         
4341         * mono/doc/Makefile.am (install-data-local): Added directory
4342         install for DESTDIR
4343
4344 2004-10-29  Colin Walters  <walters@redhat.com>
4345
4346         * dbus/dbus-sysdeps.h (_dbus_become_daemon): Also take
4347         parameter for fd to write pid to.       
4348
4349         * dbus/dbus-sysdeps.c (_dbus_become_daemon): Implement it.
4350         
4351         * bus/bus.c (bus_context_new): Pass print_pid_fd
4352         to _dbus_become_daemon (bug #1720)
4353
4354 2004-10-29  Colin Walters  <walters@redhat.com>
4355
4356         Patch from Ed Catmur <ed@catmur.co.uk>
4357
4358         * mono/doc/Makefile.am (install-data-local): Handle
4359         DESTDIR.
4360
4361 2004-10-29  Colin Walters  <walters@redhat.com>
4362
4363         * bus/.cvsignore, qt/.cvsignore: Update.
4364
4365 2004-10-29  Colin Walters  <walters@redhat.com>
4366
4367         Patch from Kristof Vansant <de_lupus@pandora.be>
4368
4369         * configure.in: Detect Slackware.
4370         * bus/Makefile.am (SCRIPT_IN_FILES): Add rc.messagebus.in.
4371         * bus/rc.messagebus.in: New file.
4372
4373 2004-10-29  Colin Walters  <walters@redhat.com>
4374
4375         * tools/dbus-monitor.c (filter_func): Return
4376         DBUS_HANDLER_RESULT_HANDLED in filter function
4377         for now.  See:
4378         http://freedesktop.org/pipermail/dbus/2004-August/001433.html
4379
4380 2004-10-29  Colin Walters  <walters@redhat.com>
4381
4382         Patch from Matthew Rickard <mjricka@epoch.ncsc.mil>
4383
4384         * bus/services.c (bus_registry_acquire_service): 
4385         Correctly retrieve service name from DBusString
4386         for printing.
4387
4388 2004-10-29  Colin Walters  <walters@redhat.com>
4389
4390         * dbus/dbus-glib.h: Update documentation to not
4391         refer to internal APIs.
4392
4393 2004-10-27  Joe Shaw  <joeshaw@novell.com>
4394
4395         * mono/Arguments.cs (GetDBusTypeConstructor):
4396         type.UnderlyingSystemType will return "System.Byte" if you do it
4397         on "byte[]", which is not what we want.  So check the type.IsArray
4398         property and use System.Array instead.
4399
4400 2004-10-25  John (J5) Palmieri  <johnp@redhat.com>
4401
4402         * dbus/dbus-sysdeps.c (fill_user_info): On errors do not free
4403         the DBusUserInfo structure since this is passed into the function.
4404         This would cause a double free when the function that allocated
4405         the structure would try to free it when an error occured.
4406
4407         * (bus/session.conf.in, bus/Makefile.am, dbus/configure.in):
4408         use /usr/share/dbus-1/services instead of /usr/lib/dbus-1.0/services
4409         for service activation to avoid 32bit/64bit parallel install issues
4410
4411 2004-10-21  Colin Walters  <walters@verbum.org>
4412
4413         * AUTHORS: Fix my email address, the @gnu.org one
4414         has been bouncing for some time.  Also add J5.
4415         
4416 2004-10-21  Colin Walters  <walters@verbum.org>
4417
4418         * dbus/dbus-transport-unix.c (do_authentication): Return
4419         authentication status to callers.
4420         (unix_handle_watch): If we completed authentication this round,
4421         don't do another read.  Instead wait until the next iteration,
4422         after we've read any pending data in the auth buffer.
4423         (unix_do_iteration): Ditto.
4424         (unix_handle_watch): Updated for new do_authentication prototype.
4425
4426 2004-10-18  Colin Walters  <walters@verbum.org>
4427
4428         * bus/selinux.c (bus_selinux_enabled): Handle
4429         --disable-selinux case.
4430         
4431 2004-10-18  Colin Walters  <walters@verbum.org>
4432
4433         * bus/selinux.h: Add bus_selinux_enabled.
4434         
4435         * bus/selinux.c (bus_selinux_enabled): Implement it.
4436         
4437         * bus/config-parser.c (struct include): Add
4438         if_selinux_enabled member.
4439         (start_busconfig_child): Parse if_selinux_enabled
4440         attribute for include.
4441         (bus_config_parser_content): Handle it.
4442
4443         * bus/session.conf.in, bus/system.conf.in: Add
4444         inclusion of context mapping to default config files;
4445         conditional on SELinux being enabled.
4446         
4447         * doc/busconfig.dtd: Add to if_selinux_enabled to default DTD.
4448         
4449         * test/data/invalid-config-files/badselinux-1.conf, 
4450         test/data/invalid-config-files/badselinux-2.conf:
4451         Test files for bad syntax.
4452         
4453 2004-10-17  Colin Walters  <walters@verbum.org>
4454
4455         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug, check_guards)
4456         (dbus_malloc, dbus_malloc0, dbus_realloc): Fix up printf
4457         format specifier mismatches.
4458
4459 2004-10-07  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4460
4461         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): fix an incorrect
4462         format string.
4463
4464         * glib/dbus-dbus-gmain.c (dbus_g_bus_get): do not mangle NULL
4465         pointer (bug #1540, Leonardo Boiko).
4466
4467 2004-09-28  Jon Trowbridge  <trow@ximian.com>
4468
4469         * mono/BusDriver.cs: Changed BusDriver struct to remove
4470         the ServiceCreated and ServiceDeleted events and replace them
4471         with the new ServiceOwnerChanged event.
4472
4473         * mono/example/BusListener.cs: Added a new example program,
4474         which listens for and reports any ServiceOwnerChanged events
4475         on the bus driver.
4476
4477         * mono/example/Makefile.am (DESTDIR): Build changes for the
4478         new BusListener.cs example.
4479
4480 2004-09-27  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4481
4482         * bus/signals.c (bus_match_rule_parse): validate the components of
4483         match rules (bug #1439).
4484
4485         * dbus/dbus-bus.c (dbus_bus_add_match): add a missing OOM test.
4486
4487 2004-09-24  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4488
4489         * doc/dbus-specification.xml: document ServiceOwnerChanged
4490         signal.
4491         
4492         * bus/driver.c, bus/driver.h, bus/services.c: Use
4493         ServiceOwnerChanged signal instead of ServiceCreated and
4494         ServiceDeleted.
4495         
4496         * bus/dispatch.c: update testcase for the new signal.
4497
4498 2004-09-20  Jon Trowbridge  <trow@ximian.com>
4499
4500         Patch from Nat Friedman <nat@novell.com>
4501
4502         * mono/Makefile.am: A number of small build fixes to allow "make
4503         distcheck" to succeed.
4504
4505         * mono/example/Makefile.am: "make distcheck" fixes.
4506
4507         * mono/AssemblyInfo.cs.in: When signing the assembly, look for the
4508         key in @srcdir@.
4509
4510         * test/Makefile.am: "make distcheck" fixes.
4511
4512 2004-09-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4513
4514         * dbus/dbus-sysdeps.c (_dbus_user_at_console): fix memleak in OOM.
4515
4516         * doc/busconfig.dtd: update the DTD for the at_console attribute.
4517
4518         * bus/driver.c (bus_driver_handle_hello): correctly handle Hello
4519         messages after the first one (bug #1389).
4520         
4521         * bus/dispatch.c (check_double_hello_message): add a test case for
4522         the double hello message bug.
4523         (check_existent_service_activation): fix check of spawning error.
4524         
4525 2004-09-16  David Zeuthen  <david@fubar.dk>
4526
4527         * python/dbus_bindings.pyx.in: Add support for int64 and uint64
4528
4529 2004-09-12  David Zeuthen  <david@fubar.dk>
4530
4531         Patch from Kay Sievers <kay.sievers@vrfy.org>
4532
4533         * bus/bus.c (bus_context_new):
4534         * bus/bus.h:
4535         * bus/main.c (usage)
4536         (main):
4537         Add commandline option --nofork to override configuration file
4538         setting.
4539
4540 2004-09-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4541
4542         * dbus/dbus-*.h: remove the ; after DBUS_(BEGIN|END)_DECLS. Some C
4543         compilers don't like it (bug #974).
4544
4545 2004-09-04  Harald Fernengel  <harry@kdevelop.org>
4546
4547         * qt/connection.*: Applied patch by Jérôme Lodewyck
4548         <lodewyck@clipper.ens.fr> to integrate an existing
4549         connection into the Qt eventloop
4550
4551 2004-08-30  Jon Trowbridge  <trow@ximian.com>
4552
4553         * mono/BusDriver.cs: Added.  This is a class for interacting with
4554         the org.freedesktop.DBus service.
4555
4556         * mono/Message.cs: Added a mechanism to expose the message that is
4557         currently being dispatched via the static Message.Current
4558         property.  Added Message.Sender and Message.Destination
4559         properties.
4560
4561         * mono/Handler.cs: Expose the dispatched message via
4562         Message.Current when handling method calls.
4563
4564         * mono/Service.cs: Expose the dispatched message via
4565         Message.Current when handling signal emissions.
4566         
4567         * mono/Connection.cs: Bind dbus_bus_get_base_service via the
4568         Connection.BaseService property.
4569
4570 2004-08-28  Havoc Pennington  <hp@redhat.com>
4571
4572         * dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable
4573
4574         More fixes from Steve Grubb
4575         
4576         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix fd leak
4577         (_dbus_listen_tcp_socket): fix fd leak
4578
4579         * dbus/dbus-spawn.c (read_pid, read_ints): move the "again:" for
4580         EINTR to a bit lower in the code
4581
4582 2004-08-26  Jon Trowbridge  <trow@ximian.com>
4583
4584         * bus/driver.c (bus_driver_handle_service_exists): Respond with
4585         TRUE if we are inquiring about the existence of the built-in
4586         org.freedesktop.DBus service.
4587
4588 2004-08-25  John Palmieri  <johnp@redhat.com>
4589         * bus/config-parser.c:
4590         (struct PolicyType): Add POLICY_CONSOLE
4591         (struct Element.d.policy): s/gid_or_uid/gid_uid_or_at_console
4592         (start_busconfig_child): Sets up console element when
4593         <policy at_console=""> is encountered in a policy file
4594         (append_rule_from_element): Convert console elements to console
4595         rules.
4596
4597         * bus/policy.c: 
4598         (bus_policy_create_client_policy): Add console rules to the client
4599         policy based on if the client is at the console
4600         (bus_policy_append_console_rule): New function for adding a
4601         console rule to a policy
4602         (bus_policy_merge): Handle console rule merging
4603
4604         * dbus/dbus-sysdeps.h: Added the DBUS_CONSOLE_DIR constant
4605         where we check for console user files
4606         
4607         * dbus/dbus-sysdeps.c:
4608         (_dbus_file_exists): New function which checks if the given
4609         file exists
4610         (_dbus_user_at_console): New function which does the system
4611         specific process of checking if the user is at the console
4612
4613         * dbus/dbus-userdb.c:
4614         (_dbus_is_console_user): New function converts a UID to user name
4615         and then calls the system specific _dbus_user_at_console to 
4616         see if the user is at the console and therefor a console user
4617
4618 2004-08-25  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4619
4620         * bus/config-parser.c (set_limit):
4621         * bus/dbus-daemon-1.1.in:
4622         * test/data/valid-config-files/many-rules.conf: set the
4623         max_match_rules_per_connection limt from the config file. 
4624
4625         * doc/busconfig.dtd: update the DTD.
4626
4627         * bus/driver.c: remove some unused variables.
4628
4629 2004-08-24  Mikael Hallendal  <micke@imendio.com>
4630
4631         * dbus/dbus-glib-lowlevel.h: Removed dbus_bus_get_with_g_main since 
4632         it's been replaced by dbus_g_bus_get
4633
4634 2004-08-23  Colin Walters  <walters@redhat.com>
4635
4636         Updated SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
4637
4638         * bus/selinux.h: Prototype bus_selinux_get_policy_root.
4639
4640         * bus/selinux.c: Create a thread for policy reload notification.
4641         (bus_selinux_get_policy_root): Implement.
4642
4643         * bus/config-parser.c (start_busconfig_child)
4644         (bus_config_parser_content): Support SELinux-root relative
4645         inclusion.
4646
4647         * configure.in <HAVE_SELINUX>: Add -lpthread.
4648         
4649         * bus/test-main.c (test_pre_hook, test_post_hook): New.
4650         (test_post_hook): Move memory checking into here.
4651         (test_pre_hook, test_post_hook): Move SELinux checks in
4652         here, but conditional on a DBUS_TEST_SELINUX environment
4653         variable.  Unfortunately we can't run the SELinux checks
4654         as a normal user, since they won't have any permissions
4655         for /selinux.  So this will have to be tested manually
4656         for now, until we have virtualization for most of
4657         libselinux.
4658         
4659 2004-08-23  Havoc Pennington  <hp@redhat.com>
4660
4661         * dbus/dbus-sysdeps.c (_dbus_change_identity): add setgroups() to
4662         drop supplementary groups, suggested by Steve Grubb
4663
4664 2004-08-20  Colin Walters  <walters@redhat.com>
4665
4666         * bus/config-parser.c (start_busconfig_child): Remove some unused
4667         variables.
4668         
4669         * bus/selinux.c (bus_selinux_id_table_insert): Avoid compiler
4670         warning.
4671
4672 2004-08-17  Joe Shaw  <joeshaw@novell.com>
4673
4674         * configure.in: If --enable-mono is passed in, if we can't find
4675         mono error out.
4676
4677         * mono/Makefile.am: Use /gacutil to install assemblies into the
4678         GAC and not /root.
4679
4680 2004-08-12  Havoc Pennington  <hp@redhat.com>
4681
4682         * NEWS: update for 0.22
4683
4684         * configure.in: release 0.22
4685
4686 2004-08-11  Colin Walters  <walters@redhat.com>
4687
4688         * tools/dbus-send.c (main, usage): Add --reply-timeout
4689         argument.
4690
4691 2004-08-10  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4692
4693         * bus/bus.c (process_config_first_time_only): get rid of an unused
4694         DBusError that was causing a memoy leak (bug #989).
4695
4696         * dbus/dbus-keyring.c, dbus/dbus-message.c:
4697         fix compilation on Solaris/Forte C (bug #974)
4698
4699         * bus/main.c (main): plug two minuscule memleaks.
4700
4701 2004-08-10  Havoc Pennington  <hp@redhat.com>
4702
4703         * doc/dbus-tutorial.xml: add some more info on GLib bindings
4704
4705 2004-08-09  Havoc Pennington  <hp@redhat.com>
4706
4707         * COPYING: switch to Academic Free License version 2.1 instead of
4708         2.0, to resolve complaints about patent termination clause.
4709
4710 2004-07-31  John (J5) Palmieri  <johnp@redhat.com>
4711
4712         * README: added documentation for the --enable-python 
4713         configure switch.
4714
4715 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4716
4717         * bus/config-parser.c (bus_config_parser_new): fix an invalid
4718         _unref in the SELinux support.
4719
4720         * doc/busconfig.dtd: update DTD for SELinux support.
4721
4722         * bus/config-loader-libxml.c: fix error handler and parser
4723         initialisation/cleanup. OOM test now works with libxml2 HEAD.
4724
4725         * configure.in: remove the warning about libxml2.
4726
4727         * dbus/dbus-bus.c: silence doxygen warning.
4728
4729 2004-07-31  Colin Walters  <walters@redhat.com>
4730
4731         * configure.in: Move #error in SELinux check to its own line.
4732
4733 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4734
4735         * dbus/dbus-internals.h (_DBUS_SET_OOM):
4736         * bus/utils.h (BUS_SET_OOM): use dbus_error_set_const instead of
4737         dbus_error_set.
4738
4739         * bus/dispatch.c (check_send_exit_to_service): fix the test case,
4740         broken by the change in the _SET_OOM macros.
4741
4742 2004-07-31  Colin Walters  <walters@redhat.com>
4743
4744         * bus/selinux.c <HAVE_SELINUX>: Include utils.h to get
4745         BUS_SET_OOM.
4746
4747 2004-07-31  Colin Walters  <walters@redhat.com>
4748
4749         * configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER
4750         to correctly detect DBUS__ACQUIRE_SVC.  Also add an
4751         AC_MSG_CHECKING.
4752
4753 2004-07-24  Havoc Pennington  <hp@redhat.com>
4754
4755         SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
4756
4757         * bus/selinux.c, bus/selinux.h: new file encapsulating selinux
4758         functionality
4759
4760         * configure.in: add --enable-selinux
4761         
4762         * bus/policy.c (bus_policy_merge): add FIXME to a comment
4763
4764         * bus/main.c (main): initialize and shut down selinux
4765
4766         * bus/connection.c: store SELinux ID on each connection, to avoid 
4767         repeated getting of the string context and converting it into 
4768         an ID
4769
4770         * bus/bus.c (bus_context_get_policy): new accessor, though it
4771         isn't used
4772         (bus_context_check_security_policy): check whether the security
4773         context of sender connection can send to the security context of
4774         recipient connection
4775
4776         * bus/config-parser.c: add parsing for <selinux> and <associate>
4777         
4778         * dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
4779         implement dbus_connection_get_unix_fd()
4780
4781         * dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
4782         function, used by the selinux stuff
4783         
4784 2004-07-29  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4785
4786         * bus/config-loader-libxml.c: complete the implementation of
4787         libxml backend for config file loader. Doesn't work with full OOM
4788         test yet. 
4789         
4790         * configure.in: change error when selecting libxml into a warning.
4791         
4792         * test/data/invalid-config-files: add two non-well-formed XML
4793         files. 
4794         
4795         * glib/Makefile.am: libdbus_gtool always uses expat, not libxml.
4796         
4797         * dbus/dbus-transport-unix.c (unix_handle_watch): do not
4798         disconnect in case of DBUS_WATCH_HANGUP, several do_reading() may
4799         be necessary to read all the buffer. (bug #894)
4800
4801         * bus/activation.c (bus_activation_activate_service): fix a
4802         potential assertion failure (bug #896). Small optimization in the
4803         case of auto-activation messages.
4804
4805         * dbus/dbus-message.c (verify_test_message, _dbus_message_test):
4806         add test case for byte-through-vararg bug (#901). patch by Kimmo
4807         Hämäläinen. 
4808
4809 2004-07-28  Anders Carlsson  <andersca@gnome.org>
4810
4811         * python/dbus.py:
4812         * python/dbus_bindings.pyx.in:
4813         Add dbus.init_gthreads (), allow emit_signal to pass
4814         arguments to the signal.
4815         
4816 2004-07-24  Havoc Pennington  <hp@redhat.com>
4817
4818         * AUTHORS: add some people, not really comprehensively, let me
4819         know if I missed you
4820
4821 2004-07-24  Havoc Pennington  <hp@redhat.com>
4822
4823         * Makefile.am (DIST_SUBDIRS): add DIST_SUBDIRS, problem solved by
4824         Owen
4825
4826         * test/Makefile.am (DIST_SUBDIRS): here also
4827
4828 2004-07-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4829
4830         * dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
4831         breaking build on Solaris, reported by Farhad Saberi on the ML.
4832
4833         * dbus/dbus-message.c (dbus_message_append_args_valist): fix the
4834         va_arg invocation to account for integer promotion in the case of
4835         DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)
4836
4837         * bus/services.c (bus_service_remove_owner): fix bug #902, use
4838         _dbus_list_get_first_link, not _dbus_list_get_first.
4839
4840         * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.
4841
4842         * dbus/dbus-object-tree.c (free_subtree_recurse): always null
4843         handler functions so that the asserts in _dbus_object_subtree_unref
4844         do not fail.
4845
4846         * dbus/dbus-transport-unix.c (do_reading):
4847         _dbus_transport_queue_messages return value is of type
4848         dbus_bool_t, not DBusDispatchStatus.
4849         
4850 2004-07-19  David Zeuthen  <david@fubar.dk>
4851
4852         * dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
4853
4854         * bus/dispatch.c:
4855         (check_get_connection_unix_user): Debug says GetProperty; but the
4856         method is called GetConnectionUnixUser
4857         (check_get_connection_unix_process_id): New function
4858         (bus_dispatch_test): Actually call check_get_connection_unix_user();
4859         also call check_get_connection_unix_process_id()
4860         
4861         * bus/driver.c:
4862         (bus_driver_handle_get_connection_unix_process_id): New function,
4863         handles GetConnectionUnixProcessID on the org.freedesktop.DBus
4864         interface
4865         
4866         * dbus/dbus-auth.c:
4867         (handle_server_data_external_mech): Set pid from the credentials
4868         obtained from the socket
4869         
4870         * dbus/dbus-connection.c:
4871         (dbus_connection_get_unix_process_id): New function
4872         
4873         * dbus/dbus-connection.h: 
4874         Add prototype for dbus_connection_get_unix_process_id
4875         
4876         * dbus/dbus-transport.c:
4877         (_dbus_transport_get_unix_process_id): New function
4878         
4879         * dbus/dbus-transport.h:
4880         Add prototype for _dbus_transport_get_unix_process_id
4881         
4882 2004-07-19  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4883
4884         * dbus/dbus-message.c: Message counter fix, patch by Christian
4885         Hammond <chipx86@gnupdate.org>
4886
4887 2004-07-18  Seth Nickell  <seth@gnome.org>
4888
4889         * python/dbus.py:
4890         * python/dbus_bindings.pyx.in:
4891         * python/tests/test-client.py:
4892
4893         Add dbus.ByteArray and dbus_bindings.ByteArray
4894         types so that byte streams can be passed back.
4895
4896         Give jdahlin the heaps of credit that are so
4897         rightfully his.
4898         
4899 2004-07-12  Seth Nickell  <seth@gnome.org>
4900
4901         * python/dbus.py:
4902
4903         Add message argument to the default object_method_handler
4904         function.
4905         
4906         * python/dbus_bindings.pyx.in:
4907
4908         Automatically return NIL when passed an empty list
4909         (we can't pass back a list since lists are typed
4910         and we don't have any idea what type the the client
4911         intended the list to be... :-( )
4912         
4913 2004-07-10  Seth Nickell  <seth@gnome.org>
4914
4915         * python/examples/Makefile.am:
4916
4917         Fix distcheck breakage caused by new examples.
4918
4919 2004-07-10  Seth Nickell  <seth@gnome.org>
4920
4921         * python/dbus.py:
4922
4923         Add "message" argument to service-side dbus.Object
4924         methods. This will break existing services written
4925         using the python bindings, but will allow extraction
4926         of all the message information (e.g. who its from).
4927
4928         Add improved "object oriented" signal handling/emission.
4929         
4930         * python/examples/example-service.py:
4931
4932         Nix this example.
4933         
4934         * python/examples/example-signal-emitter.py:
4935         * python/examples/example-signal-recipient.py:
4936
4937         Two new examples that show how to emit and receive
4938         signals using the new APIs.
4939         
4940         * python/examples/example-signals.py:
4941         * python/examples/gconf-proxy-service.py:
4942         * python/examples/gconf-proxy-service2.py:
4943
4944         Add "message" argument to service methods.
4945
4946 2004-06-28  Kay Sievers <kay.sievers@vrfy.org>
4947
4948         * bus/driver.c (bus_driver_handle_get_connection_unix_user)
4949         * dbus/bus.c (dbus_bus_get_unix_user)
4950         * doc/dbus-specification.xml: implement GetConnectionUnixUser
4951         method of org.freedesktop.DBus interface.
4952
4953         * bus/dispatch.c: test case
4954
4955 2004-06-23  John (J5) Palmieri  <johnp@redhat.com>
4956
4957         * python/Makefile.am: switched include directory from glib/ to dbus/
4958         since dbus-glib.h moved
4959  
4960 2004-06-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
4961
4962         * configure.in: prevent building the gcj stuff and libxml loader
4963         since they are broken.
4964
4965 2004-06-20  Havoc Pennington  <hp@redhat.com>
4966
4967         * dbus/dbus-glib-error-enum.h: autogenerate the GError enum 
4968         codes from the dbus error names
4969         
4970         * glib/dbus-glib.h: move to subdir dbus/ since it's included 
4971         as dbus/dbus-glib.h and that breakage is now visible due to 
4972         including dbus/dbus-glib.h in dbus-glib-lowlevel.h
4973         
4974         * glib/dbus-glib.h: s/gproxy/g_proxy/
4975
4976         * dbus/dbus-shared.h: new header to hold stuff shared with
4977         binding APIs
4978         
4979         * dbus/dbus-protocol.h (DBUS_ERROR_*): move errors here rather
4980         than dbus-errors.h
4981
4982         * glib/dbus-glib.h (dbus_set_g_error): move to
4983         dbus-glib-lowlevel.h
4984
4985         * glib/dbus-glib.h: remove dbus/dbus.h from here; change a bunch
4986         of stuff to enable this
4987
4988         * dbus/dbus-glib-lowlevel.h: put dbus/dbus.h here
4989
4990         * a bunch of other changes with the same basic "separate glib 
4991         bindings from dbus.h" theme
4992         
4993 2004-06-10  Owen Fraser-Green  <owen@discobabe.net>
4994
4995         * dbus-sharp.pc.in: Removed glib-sharp inclusion in Libs.
4996
4997         * python/examples/Makefile.am: Fixed typo in EXTRA_DIST.
4998
4999 2004-06-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5000
5001         * bus/driver.c, dbus/dbus-bus.c: use BOOLEAN instead of UINT32 for
5002         the reply value of the ServiceExists message.
5003
5004 2004-06-07  John (J5) Palmieri  <johnp@redhat.com>
5005
5006         * python/dbus_bindings.pyx.in: No longer need to parse path
5007         elements and pass them as arrays of strings.  The C API now
5008         accepts plain path strings.
5009         (_build_parsed_path): removed 
5010
5011 2004-06-07  Havoc Pennington  <hp@redhat.com>
5012
5013         * doc/TODO: remove auto-activation item since it's done; sort
5014         items by importance/milestone
5015
5016 2004-06-07  Havoc Pennington  <hp@redhat.com>
5017
5018         * dbus/dbus-message-builder.c (_dbus_message_data_load): append
5019         random signature when using REQUIRED_FIELDS (this hack won't work
5020         in the long term)
5021
5022         * dbus/dbus-message.c: change the signature to be a header field,
5023         instead of message->signature special-case string. Incremental
5024         step forward. Then we can fix up code to send the signature in the
5025         message, then fix up code to validate said signature, then fix up
5026         code to not put the typecodes inline, etc.
5027         (load_one_message): don't make up the signature after the fact
5028         (decode_header_data): require signature field for the known
5029         message types
5030
5031         * dbus/dbus-marshal.c (_dbus_marshal_string_len): new
5032
5033         * dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE
5034
5035 2004-06-07  Owen Fraser-Green  <owen@discobabe.net>
5036
5037         * mono/DBusType/ObjectPath.cs: Renamed PathName argument to Path
5038
5039         * mono/Handler.cs: Updated to follow new path argument for
5040         (un-)registering objects.
5041
5042         * mono/example/Makefile.am:
5043         * mono/Makefile.am:
5044         * configure.in: Bumped required version for mono and use new -pkg
5045         syntax for deps
5046
5047 2004-06-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5048
5049         * dbus/dbus-connection.h, dbus/dbus-connection.c: have object path
5050         registration functions take the path argument as char* instead of
5051         char**.
5052
5053         * dbus/dbus-marshal.h, dbus/dbus-marshal.c (_dbus_decompose_path):
5054         split off the path decompostion part of
5055         _dbus_demarshal_object_path. Some misc. fixes to silence compiler
5056         warnings. 
5057
5058         * glib/dbus-gobject.c, test/test-service.c: update accordingly.
5059         
5060 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
5061  
5062         * dbus/dbus-auth.c: Rewrite auth protocol handling to use a state
5063         machine approach.  A state is implemented as a function that
5064         handles incoming events as specified for that state.
5065         
5066         * doc/dbus-specification.xml: Update auth protocol state machine
5067         specification to match implementation.  Remove some leftover
5068         base64 examples.
5069
5070 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
5071
5072         * glib/dbus-gproxy.c, glib/dbus-gmain.c, dbus/dbus-string.c,
5073         dbus/dbus-object-tree.c, dbus/dbus-message.c: add comments to
5074         quiet doxygen.
5075
5076         * Doxyfile.in: remove deprecated options.
5077
5078         * dbus/dbus-message-handler.c, dbus/dbus-message-handler.h,
5079         glib/test-thread.h, glib/test-thread-client.c,
5080         glib/test-thread-server.c, glib/test-profile.c,
5081         glib/test-dbus-glib.c: remove these unused files.
5082
5083 2004-06-01  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5084
5085         * dbus/dbus-object-tree.c
5086         (_dbus_object_tree_dispatch_and_unlock): fix dispatch for
5087         non-fallback handlers (bug #684).
5088         (_dbus_object_subtree_new): initialize invoke_as_fallback field.
5089         (find_subtree_recurse): report wether the returned subtree is an
5090         exact match or a "fallback" match higher up in the tree.
5091         (object_tree_test_iteration): update test case.
5092
5093 2004-06-01  Seth Nickell  <seth@gnome.org>
5094
5095         * python/dbus_bindings.pyx.in:
5096         * python/tests/test-client.py:
5097
5098         Round off basic type support. Add dicts (yay!), and 
5099         remaining array types.
5100
5101         Make MessageIter more general so it works for dicts too.
5102
5103         Mark all loop variables as C integers.
5104         
5105 2004-05-31  Havoc Pennington  <hp@redhat.com>
5106
5107         * glib/dbus-gidl.c (method_info_add_arg): keep args sorted with
5108         "in" before "out"
5109
5110         * glib/dbus-gobject.c (dbus_type_to_string): move to dbus-gutils.c
5111
5112         * glib/dbus-glib-tool.c (main): set up to have a --self-test
5113         option that runs the tests, and start filling in some code
5114         including for starters just dumping the interfaces to stdout
5115
5116         * glib/Makefile.am (INCLUDES): define DBUS_LOCALEDIR
5117
5118         * test/data/valid-introspection-files/lots-of-types.xml: test of
5119         an example introspection file
5120
5121         * glib/dbus-gparser.c (parser_check_doctype): doctype should be
5122         "node" (I think...)
5123
5124 2004-05-31  Seth Nickell  <seth@gnome.org>
5125
5126         * python/dbus_bindings.pyx.in:
5127         * python/tests/test-client.py:
5128
5129         Test Suite: 1
5130         Python Bindings: 0
5131
5132         Fix string array memory trashing bug... oops...
5133
5134 2004-05-30  Seth Nickell  <seth@gnome.org>
5135
5136         * python/dbus.py:
5137
5138         Add a nicer-but-less-flexible alternate API for handling 
5139         calls to virtual objects in dbus.ObjectTree.
5140
5141         Screw up the argument order to the dbus.Object constructor
5142         for consistency with dbus.ObjectTree (and to make dbus_methods
5143         optional for future extension)
5144         
5145         * python/examples/Makefile.am:
5146         * python/examples/gconf-proxy-service.py:
5147         * python/examples/gconf-proxy-service2.py:
5148
5149         Alternate implementation of gconf-proxy-service using the
5150         nicer dbus.ObjectTree API.
5151         
5152         * python/examples/example-service.py:
5153         * python/tests/test-server.py
5154
5155         Reverse the argument order to deal with dbus.Object constructor
5156         changes.
5157         
5158 2004-05-30  Seth Nickell  <seth@gnome.org>
5159
5160         * python/examples/example-client.py:
5161         * python/examples/example-service.py:
5162
5163         Take it back. Lists seem to work but they're broken
5164         in the test suite. Make the base examples use
5165         lists (works fine).
5166
5167 2004-05-30  Seth Nickell  <seth@gnome.org>
5168
5169         * python/dbus_bindings.pyx.in:
5170         * python/tests/test-client.py:
5171
5172         Add some more tests and fix errors that crop up.
5173         Unfortunately, currently it seems like marshalling
5174         and unmarshalling of lists is completely broken :-(
5175
5176 2004-05-30  Seth Nickell  <seth@gnome.org>
5177
5178         * python/dbus_bindings.pyx.in:
5179
5180         Add support for ObjectPath type.
5181
5182         * python/dbus.py:
5183
5184         Refactor message handling code to a common function.
5185         
5186         * python/tests/test-client.py:
5187         * python/tests/test-server.py:
5188
5189         Add tests that check to make sure values of all types
5190         can be echoed from a service w/o mangling.
5191         
5192 2004-05-29  Seth Nickell  <seth@gnome.org>
5193
5194         * python/dbus.py:
5195
5196         Add ObjectTree class which allows implementation
5197         of trees of "virtual" objects. Basically the python
5198         wrapper for "register_fallback".
5199         
5200         * python/examples/Makefile.am
5201         * python/examples/gconf-proxy-client.py:
5202         * python/examples/gconf-proxy-service.py:
5203
5204         Implement a simple GConf proxy service that supports
5205         get/set on string and int GConf keys using the ObjectTree.
5206         
5207 2004-05-29  Seth Nickell  <seth@gnome.org>
5208
5209         * python/dbus.py:
5210         * python/examples/example-client.py:
5211         * python/examples/example-service.py:
5212         * python/examples/list-system-services.py:
5213
5214         Add SessionBus, SystemBus and ActivationBus classes
5215         so you don't need to know the special little BUS_TYPE
5216         flag.
5217         
5218 2004-05-29  Havoc Pennington  <hp@redhat.com>
5219
5220         * bus/config-parser.c (process_test_valid_subdir): temporarily
5221         stop testing config parser OOM handling, since expat has issues
5222         http://freedesktop.org/pipermail/dbus/2004-May/001153.html
5223
5224         * bus/dbus-daemon-1.1.in: change requested_reply to
5225         send_requested_reply/receive_requested_reply so we can send the
5226         replies, not just receive them.
5227
5228         * bus/config-parser.c: parse the new
5229         send_requested_reply/receive_requested_reply
5230
5231         * bus/policy.c (bus_client_policy_check_can_send): add
5232         requested_reply argument and use it
5233
5234         * bus/bus.c (bus_context_check_security_policy): pass through
5235         requested_reply status to message send check
5236
5237         * bus/system.conf.in: adapt to requested_reply change
5238         
5239 2004-05-28  Havoc Pennington  <hp@redhat.com>
5240
5241         * test/glib/test-service-glib.c (main): remove unused variable
5242
5243         * glib/dbus-gidl.c (base_info_ref): fix a silly compiler warning
5244
5245         * dbus/dbus-auth.h (enum): remove AUTHENTICATED_WITH_UNUSED_BYTES
5246         from the enum, no longer in use.
5247
5248         * dbus/dbus-sysdeps.h: include config.h so DBUS_VA_COPY actually
5249         works right.
5250
5251         * dbus/dbus-message.c: add various _dbus_return_val_if_fail for
5252         whether error_name passed in is a valid error name.
5253
5254 2004-05-28  John (J5) Palmieri  <johnp@redhat.com>
5255
5256         * dbus/dbus-message.c (dbus_message_get_args): Added support for
5257         OBJECT_PATH and OBJECT_PATH_ARRAY
5258
5259 2004-05-28  Seth Nickell  <seth@gnome.org>
5260
5261         * python/examples/Makefile.am:
5262
5263         Forget to add Makefile.am. Do not pass go.
5264
5265 2004-05-28  Michael Meeks  <michael@ximian.com>
5266
5267         * glib/dbus-gvalue.c (dbus_gvalue_marshal, dbus_gvalue_demarshal): 
5268         fix no int64 case.
5269
5270         * dbus/dbus-string.c (_dbus_string_parse_basic_type): impl.
5271
5272         * dbus/dbus-message.c (_dbus_message_iter_get_basic_type),
5273         (_dbus_message_iter_get_basic_type_array): impl.
5274         drastically simplify ~all relevant _get methods to use these.
5275         (_dbus_message_iter_append_basic_array),
5276         (dbus_message_iter_append_basic): impl
5277         drastically simplify ~all relevant _append methods to use these.
5278
5279         * dbus/dbus-message-builder.c (parse_basic_type) 
5280         (parse_basic_array, lookup_basic_type): impl.
5281         (_dbus_message_data_load): prune scads of duplicate /
5282         cut & paste coding.
5283
5284         * dbus/dbus-marshal.c (_dbus_demarshal_basic_type_array) 
5285         (_dbus_demarshal_basic_type): implement,
5286         (demarshal_and_validate_len/arg): beef up debug.
5287         (_dbus_marshal_basic_type, _dbus_marshal_basic_type_array): impl.
5288
5289 2004-05-27  Seth Nickell  <seth@gnome.org>
5290
5291         * configure.in:
5292         * python/Makefile.am:
5293
5294         Include the example python apps in the tarball.
5295         
5296         * python/examples/list-system-services.py
5297
5298         Add a python new example that fetches the list of services
5299         from the system bus.
5300         
5301 2004-05-27  Seth Nickell  <seth@gnome.org>
5302
5303         * python/dbus.py:
5304         * python/dbus_bindings.pyx.in:
5305
5306         Fix failure to notify that a signal was not handled,
5307         resulted in hung functions.
5308         
5309 2004-05-25  Colin Walters  <walters@redhat.com>
5310
5311         * tools/dbus-monitor.c (main): Monitor all types of messages.
5312
5313 2004-05-23  Owen Fraser-Green  <owen@discobabe.net>
5314
5315         * mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
5316         which unregisters the object path and disposes the handler.
5317
5318 2004-05-23  Kristian Høgsberg  <krh@redhat.com>
5319  
5320         Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
5321          
5322         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): Swap
5323         operands to && so we call dbus_message_iter_next () for the last
5324         argument also.
5325
5326 2004-05-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5327
5328         * dbus/dbus-object-tree.c
5329         (_dbus_object_tree_list_registered_unlock, lookup_subtree): return
5330         children even if the requested path isn't registered.
5331         (object_tree_test_iteration): test object_tree_list_registered.
5332
5333         * configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
5334         it to 0.
5335         
5336 2004-05-20  Kristian Høgsberg  <krh@redhat.com>
5337
5338         * doc/TODO: Remove resolved items.
5339
5340         * bus/expirelist.h (struct BusExpireList): remove unused n_items
5341         field.
5342         
5343         * bus/connection.c (bus_connections_expect_reply): Enforce the
5344         per-connection limit on pending replies.
5345         
5346         Patch from Jon Trowbridge <trow@ximian.com>:
5347  
5348         * bus/main.c (setup_reload_pipe): Added.  Creates a pipe and sets
5349         up a watch that triggers a config reload when one end of the pipe
5350         becomes readable.
5351         (signal_handler): Instead of doing the config reload in our SIGHUP
5352         handler, just write to the reload pipe and let the associated
5353         watch handle the reload when control returns to the main loop.
5354  
5355         * bus/driver.c (bus_driver_handle_reload_config): Added.
5356         Implements a ReloadConfig method for requesting a configuration
5357         file reload via the bus driver.
5358  
5359 2004-05-19  Owen Fraser-Green  <owen@discobabe.net>
5360
5361         * HACKING: Updated release instructions concerning the wiki page.
5362
5363 2004-05-18  Kristian Høgsberg  <krh@redhat.com>
5364
5365         * dbus/dbus-auth.c (client_try_next_mechanism): Remove logic to
5366         filter against auth->allowed_mechs; we only add allowed mechs in
5367         record_mechanisms().
5368  
5369         * dbus/dbus-auth-script.c (_dbus_auth_script_run): Add an
5370         ALLOWED_MECHS to auth-script format so we can set the list of
5371         allowed mechanisms.
5372  
5373         * data/auth/client-out-of-mechanisms.auth-script: New test to
5374         check client disconnects when it is out of mechanisms to try.
5375  
5376         * dbus/dbus-auth.c (process_command): Remove check for lines
5377         longer that 1 MB; we only buffer up maximum 16 kB.
5378  
5379         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
5380         dbus/dbus-auth-script.c, dbus/dbus-auth.c, dbus/dbus-auth.h:
5381         Remove auth state AUTHENTICATED_WITH_UNUSED_BYTES, instead always
5382         assume there might be unused bytes.
5383  
5384         * dbus/dbus-auth.c (_dbus_auth_do_work): Remove check for
5385         client-out-of-mechs, it is handled in process_reject(). Move check
5386         for max failures to send_rejected(), as it's a server-only thing.
5387
5388         * dbus/dbus-auth.c: Factor out protocol reply code into functions
5389         send_auth(), send_data(), send_rejected(), send_error(),
5390         send_ok(), send_begin() and send_cancel().
5391
5392 2004-05-17  Kristian Høgsberg  <krh@redhat.com>
5393
5394         Remove base64 encoding, replace with hex encoding. Original patch
5395         from trow@ximian.com, added error handling.
5396
5397         * dbus/dbus-string.c (_dbus_string_base64_encode)
5398         (_dbus_string_base64_decode): Remove.
5399         (_dbus_string_hex_decode): Add end_return argument so we can
5400         distinguish between OOM and invalid hex encoding.
5401         (_dbus_string_test): Remove base64 tests and add test case for
5402         invalid hex.
5403
5404         * dbus/dbus-keyring.c, dbus/dbus-auth-script.c, dbus/dbus-auth.c:
5405         Replace base64 with hex.
5406
5407         * test/data/auth/invalid-hex-encoding.auth-script: New test case
5408         for invalid hex encoded data in auth protocol.
5409
5410 2004-05-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5411
5412         * dbus/dbus-connection.c (check_for_reply_unlocked): plug a memory
5413         leak.
5414
5415 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
5416
5417         * mono/dbus-sharp.dll.config.in: Added for GAC
5418         * mono/dbus-sharp.snk: Added for GAC
5419         * mono/Assembly.cs.in: Added for GAC
5420         * mono/Makefile.am: Changes for GAC installation        
5421         * configure.in: Added refs for dbus-sharp.dll.config.in and
5422         Assembly.cs.in. More fixes for mono testing
5423         * mono/example/Makefile.am: Changed var to CSC
5424         * Makefile.am: Changed flag name to DBUS_USE_CSC
5425
5426 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
5427
5428         * mono/Makefile.am: Added SUBDIRS for docs. Changed SUBDIRS order
5429         * mono/doc/*: Added documentation framework
5430         * configure.in: Added monodoc check
5431         * README: Added description of mono configure flags
5432
5433 2004-05-11  John (J5) Palmieri  <johnp@redhat.com>:
5434
5435         * doc/dbus-specification.xml: Added a "Required" column to the 
5436         header fields table and changed the "zero or more" verbage in
5437         the above paragraph to read "The header must contain the required 
5438         named header fields and zero or more of the optional named header 
5439         fields".
5440         * test/data/invalid-messages/*.message: Added the required PATH 
5441         named header field to the tests so that they don't fail on 
5442         'Missing path field'
5443
5444 2004-05-07  John (J5) Palmieri  <johnp@redhat.com>
5445
5446         * python/dbus-bindings.pyx.in: Stopped the bindings from trashing
5447         the stack by implicitly defining variable and parameter types and
5448         removing the hack of defining C pointers as python objects and later
5449         casting them.
5450
5451 2004-05-02  Owen Fraser-Green  <owen@discobabe.net>
5452
5453         * mono/Makefile.am: Removed test-dbus-sharp.exe from all target
5454
5455 2004-05-01  Owen Fraser-Green  <owen@discobabe.net>
5456
5457         * mono/DBusType/Dict.cs: Handle empty dicts
5458         * mono/DBusType/Array.cs: Handle empty arrays
5459         * mono/Arguments.cs: Handle empty arguments
5460
5461 2004-04-30  Owen Fraser-Green  <owen@discobabe.net>
5462
5463         * dbus-sharp.pc.in: Modified to include include Libs and Requires
5464         field
5465
5466 2004-04-25  Kristian Høgsberg  <krh@redhat.com>
5467
5468         * test/data/valid-messages/standard-*.message: Update message
5469         test scripts to new header field names.
5470
5471 2004-04-22  John (J5) Palmieri  <johnp@redhat.com>
5472
5473         * test/break-loader.c (randomly_do_n_things): tracked down buffer
5474         overflow to times_we_did_each_thing array which would chop off the
5475         first character of the failure_dir string. Increased the size of
5476         the array to 7 to reflect the number of random mutation functions
5477         we have.
5478
5479 2004-04-21  Kristian Høgsberg  <krh@redhat.com>
5480
5481         * dbus/dbus-server-unix.c (unix_finalize): Don't unref
5482         unix_server->watch here, it is unreffed in disconnect.
5483         (_dbus_server_new_for_tcp_socket): convert NULL host to
5484         "localhost" here so we don't append NULL to address.
5485         
5486         * dbus/dbus-server.c (_dbus_server_test): Add test case for
5487         various addresses, including tcp with no explicit host.
5488
5489 2004-04-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5490
5491         * dbus/dbus-message.c (decode_header_data, decode_string_field):
5492         fix incorrect setting of .name_offset in the HeaderField (it was
5493         off by two bytes, positioned right after the name and typecode)
5494
5495         * bus/bus.c (bus_context_new, bus_context_unref): test before
5496         calling dbus_server_free_data_slot and _dbus_user_database_unref
5497         in case of an error.
5498
5499         * tools/Makefile.am: add $(DBUS_GLIB_TOOL_LIBS), xml libs needed
5500         by libdbus-gtool.
5501
5502 2004-04-19  Kristian Høgsberg  <krh@redhat.com>
5503
5504         * dbus/dbus-transport-unix.c (unix_do_iteration): Rewrite to use
5505         _dbus_poll() instead of select().
5506
5507 2004-04-15  Jon Trowbridge  <trow@ximian.com>
5508
5509         * bus/main.c (signal_handler): Reload the configuration files
5510         on SIGHUP.
5511         (main): Set up our SIGHUP handler.
5512
5513         * bus/bus.c (struct BusContext): Store the config file, user and
5514         fork flag in the BusContext.
5515         (process_config_first_time_only): Added.  Contains the code
5516         (previously in bus_context_new) for setting up the BusContext from
5517         the BusConfigParser that should only be run the first time the
5518         config files are read.
5519         (process_config_every_time): Added.  Contains the code (previously
5520         in bus_context_new) for setting up the BusContext from the
5521         BusConfigParser that should be run every time the config files are
5522         read.
5523         (load_config): Added.  Builds a BusConfigParser from the config
5524         files and passes the resulting structure off to
5525         process_config_first_time_only (assuming this is the first time)
5526         and process_config_every_time.
5527         (bus_context_new): All of the config-related code has been moved
5528         to process_config_first_time_only and process_config_every_time.
5529         Now this function just does the non-config-related initializations
5530         and calls load_config.
5531         (bus_context_reload_config): Added.
5532
5533 2004-04-15  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5534
5535         * bus/driver.c (bus_driver_handle_get_service_owner):
5536         implement a GetServiceOwner method.
5537         * doc/dbus-specification.xml: document it.
5538         * dbus/dbus-errors.h: add a 'ServiceHasNoOwner' error.
5539         
5540         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service_owner):
5541         implement, using the bus GetServiceOwner method.
5542
5543         * test/glib/test-dbus-glib.c:
5544         use dbus_gproxy_new_for_service_owner so that we can receive the
5545         signal. 
5546
5547 2004-04-15  John (J5) Palmieri  <johnp@redhat.com>
5548
5549         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
5550         dbus/dbus-message.c, dbus/dbus-protocol.h
5551         (DBUS_HEADER_FIELD_SERVICE): renamed DBUS_HEADER_FIELD_DESTINATION
5552
5553         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
5554         dbus/dbus-message.c, dbus/dbus-protocol.h
5555         (DBUS_HEADER_FIELD_SENDER_SERVICE): renamed DBUS_HEADER_FIELD_SENDER
5556
5557         * dbus/dbus-internals.c (_dbus_header_field_to_string):
5558         DBUS_HEADER_FIELD_DESTINATION resolves to "destination"
5559         DBUS_HEADER_FIELD_SENDER resolves to "sender"
5560
5561         * doc/dbus-specification.xml (Header Fields Table):
5562         s/SERVICE/DESTINATION
5563         s/SENDER_SERVICE/SENDER
5564
5565
5566 2004-04-14  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5567
5568         * test/glib/test-dbus-glib.c (timed_exit): fail the test after
5569         a few seconds.
5570
5571 2004-04-13  Michael Meeks  <michael@ximian.com>
5572
5573         * glib/dbus-gobject.c (handle_introspect): split out
5574         (introspect_properties): this.
5575         (handle_introspect): implement this.
5576
5577         * test/glib/Makefile.am: use the absolute path so the bus
5578         daemon's chdir ("/") doesn't kill us dead.
5579
5580         * configure.in: subst ABSOLUTE_TOP_BUILDDIR
5581
5582 2004-04-12  Jon Trowbridge  <trow@ximian.com>
5583
5584         * bus/config-parser.c (struct BusConfigParser): Added
5585         included_files field.
5586         (seen_include): Added.  Checks whether or not a file has already
5587         been included by any parent BusConfigParser.
5588         (bus_config_parser_new): Copy the parent's included_files.
5589         (include_file): Track which files have been included, and fail on
5590         circular inclusions.
5591         (process_test_valid_subdir): Changed printf to report if we are
5592         testing valid or invalid conf files.
5593         (all_are_equiv): Changed printf to be a bit clearer about
5594         what we are actually doing.
5595         (bus_config_parser_test): Test invalid configuration files.
5596
5597 2004-04-09  Jon Trowbridge  <trow@ximian.com>
5598
5599         * bus/config-parser.c (bus_config_parser_new): Added a 'parent'
5600         argument.  If non-null, the newly-constructed BusConfigParser will
5601         be initialized with the parent's BusLimits instead of the default
5602         values.
5603         (include_file): When including a config file, pass in
5604         the current parser as the parent and then copy the BusLimits
5605         from the included BusConfigParser pack to the current parser.
5606         (process_test_valid_subdir): Renamed from process_test_subdir.
5607         (process_test_equiv_subdir): Added.  Walks through a directory,
5608         descending into each subdirectory and loading the config files
5609         it finds there.  If any subdirectory contains two config files
5610         that don't produce identical BusConfigParser structs, fail.
5611         For now, the BusConfigParser's BusPolicies are not compared.
5612         (bus_config_parser_test): Call both process_test_valid_subdir and
5613         process_test_equiv_subdir.
5614
5615         * bus/config-loader-libxml.c (bus_config_load): Take a parent
5616         argument and pass it along to the call to bus_config_parser_new.
5617         Also made a few small changes to allow this code to compile.
5618
5619         * bus/config-loader-expat.c (bus_config_load): Take a parent
5620         argument and pass it along to the call to bus_config_parser_new.
5621
5622         * bus/bus.c (bus_context_new): Load the config file
5623         with a NULL parent argument.
5624
5625 2004-03-29  Michael Meeks  <michael@ximian.com>
5626
5627         * glib/dbus-gobject.c (introspect_properties): split
5628         out, fix mangled 'while' flow control.
5629         (introspect_signals): implement.
5630         (handle_introspect): update.
5631
5632 2004-03-29  Michael Meeks  <michael@ximian.com>
5633
5634         * glib/dbus-gobject.c (set_object_property): split out / 
5635         re-work, use the property type, and not the message type(!)
5636         (get_object_property): ditto.
5637
5638         * glib/dbus-gvalue.c (dbus_gvalue_demarshal),
5639         (dbus_gvalue_marshal): make this code re-usable, needed
5640         for signals too, also on both proxy and server side.
5641         Re-write for more efficiency / readability.
5642
5643 2004-03-29  Michael Meeks  <michael@ximian.com>
5644
5645         * dbus/dbus-message.c
5646         (dbus_message_new_error_printf): impl.
5647
5648         * dbus/dbus-connection.c
5649         (dbus_connection_unregister_object_path): fix warning.
5650
5651         * configure.in: fix no-mono-installed situation.
5652
5653 2004-03-27  Havoc Pennington  <hp@redhat.com>
5654
5655         Patch from Timo Teräs:
5656         
5657         * tools/dbus-send.c (main): if --print-reply, assume type is
5658         method call; support boolean type args
5659         
5660         * dbus/dbus-connection.c (dbus_connection_send_with_reply): fix a
5661         bunch of memleak and logic bugs
5662         
5663 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
5664
5665         * mono/Arguments.cs:
5666         * mono/Introspector.cs:
5667         * mono/Handler.cs:
5668         * mono/InterfaceProxy.cs:
5669         * mono/Message.cs
5670         * mono/ProxyBuilder.cs:
5671         * mono/Service.cs:
5672         Added InterfaceProxy class to avoid building proxies for every
5673         object.
5674
5675         * dbus-message.h:
5676         * dbus-message.c (dbus_message_append_args_valist)
5677         (dbus_message_iter_get_object_path)
5678         (dbus_message_iter_get_object_path_array)
5679         (dbus_message_iter_append_object_path)
5680         (dbus_message_iter_append_object_path_array):
5681         Added object_path iter functions to handle OBJECT_PATH arguments
5682         
5683 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
5684
5685         First checkin of mono bindings.
5686         * configure.in:
5687         * Makefile.am:
5688         Build stuff for the bindings
5689         * dbus-sharp.pc.in: Added for pkgconfig
5690         
5691 2004-03-21  Havoc Pennington  <hp@redhat.com>
5692
5693         * test/test-service.c (main): remove debug spew
5694
5695 2004-03-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5696
5697         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): accept empty
5698         arrays
5699
5700         * dbus/dbus-message.h, bus/dbus-message.c (dbus_message_iter_init)
5701         (dbus_message_iter_init_array_iterator)
5702         (dbus_message_iter_init_dict_iterator): return a dbus_bool_t to
5703         indicate whether the iterator is empty
5704
5705         * dbus/dbus-pending-call.c, dbus/dbus-server.c: silence compiler
5706         warnings
5707
5708 2004-03-19  Havoc Pennington  <hp@redhat.com>
5709
5710         * NEWS: 0.21 updates
5711
5712         * configure.in: 0.21
5713
5714         * doc/Makefile.am: add all XMLTO usage to DBUS_XML_DOCS_ENABLED
5715         
5716         * python/Makefile.am: change to avoid dist of dbus_bindings.c so
5717         you don't need pyrex to make dist
5718
5719         * qt/Makefile.am (libdbus_qt_1_la_SOURCES): add integrator.h to
5720         sources; run moc
5721         
5722 2004-03-18  Richard Hult  <richard@imendio.com>
5723
5724         * dbus/dbus-message.c (dbus_message_get_auto_activation) 
5725         (dbus_message_set_auto_activation): Add doxygen docs.
5726
5727 2004-03-16  Richard Hult  <richard@imendio.com>
5728
5729         * bus/activation.c: (bus_activation_service_created),
5730         (bus_activation_send_pending_auto_activation_messages),
5731         (bus_activation_activate_service):
5732         * bus/activation.h:
5733         * bus/dispatch.c: (bus_dispatch),
5734         (check_nonexistent_service_auto_activation),
5735         (check_service_auto_activated),
5736         (check_segfault_service_auto_activation),
5737         (check_existent_service_auto_activation), (bus_dispatch_test):
5738         * bus/driver.c: (bus_driver_handle_activate_service):
5739         * bus/services.c: (bus_registry_acquire_service):
5740         * dbus/dbus-message.c: (dbus_message_set_auto_activation),
5741         (dbus_message_get_auto_activation):
5742         * dbus/dbus-message.h:
5743         * dbus/dbus-protocol.h: Implement auto-activation.
5744         
5745         * doc/dbus-specification.xml: Add auto-activation to the spec.
5746
5747 2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net>
5748
5749         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos):
5750         fix a bug with CUSTOM types.
5751
5752         * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add
5753         a unit test for this bug (used to fail).
5754
5755 2004-03-12  Mikael Hallendal  <micke@imendio.com>
5756
5757         * bus/activation.c:
5758         (babysitter_watch_callback): notify all pending activations waiting for
5759           the same exec that the activation failed.
5760         (bus_activation_activate_service): shortcut the activation if we 
5761           already waiting for the same executable to start up.
5762
5763 2004-03-12  Mikael Hallendal  <micke@imendio.com>
5764
5765         * bus/activation.c: 
5766         - Added service file reloading. 
5767           Each service files directory is kept in an hash table in 
5768           BusActivation and each BusActivationEntry knows what .service-file it
5769           was read from. So when you try to activate a service the bus will 
5770           check if it's been updated, removed or if new .service-files has 
5771           been installed.
5772         - Test code at the bottom for the service file reloading.
5773         * bus/test-main.c: (main):
5774         * bus/test.h:
5775         - added service reloading test.
5776         * dbus/dbus-sysdeps.c: 
5777         * dbus/dbus-sysdeps.h: (_dbus_delete_directory): Added.
5778
5779 2004-03-08  Michael Meeks  <michael@ximian.com>
5780
5781         * dbus/dbus-connection.c (_dbus_connection_block_for_reply): 
5782         bail immediately if disconnected, to avoid busy loop.
5783
5784         * dbus/dbus-message.c (dbus_message_iter_get_args_valist):
5785         cleanup cut/paste/inefficiency.
5786
5787 2004-03-01  David Zeuthen  <david@fubar.dk>
5788
5789         * dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
5790         bug where args were used twice. This bug resulted in a segfault
5791         on a Debian/PPC system when starting the messagebus daemon. Include
5792         dbus-sysdeps.h for DBUS_VA_COPY
5793
5794         * dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib
5795
5796         * configure.in: Check for va_copy; define DBUS_VA_COPY to the
5797         appropriate va_copy implementation. From GLib
5798         
5799 2004-02-24  Joe Shaw  <joe@ximian.com>
5800
5801         * bus/services.c (bus_registry_acquire_service): We need to pass
5802         in the service name to dbus_set_error() to prevent a crash.
5803
5804 2003-12-26  Anders Carlsson  <andersca@gnome.org>
5805
5806         * AUTHORS: Reveal my True identity.
5807
5808 2003-12-17  Mikael Hallendal  <micke@imendio.com>
5809
5810         * dbus/dbus-message.c: (dbus_message_append_args_valist): 
5811         - Added case for DBUS_TYPE_BYTE, patch from Johan Hedberg.
5812
5813 2003-12-13  Mikael Hallendal  <micke@imendio.com>
5814
5815         * doc/TODO: Added not about better error check of configuration files.
5816
5817 2003-12-02  Richard Hult  <richard@imendio.com>
5818
5819         * Update AFL version to 2.0 throughout the source files to reflect
5820         the update that was done a while ago.
5821
5822 2003-12-02  Richard Hult  <richard@imendio.com>
5823
5824         * dbus/dbus-message.c (dbus_message_iter_append_dict): Set
5825         wrote_dict_key to FALSE on the iter that the dict is appended to,
5826         just like when appending other types. Fixes a bug where a dict
5827         couldn't be put inside a dict.
5828         (dbus_message_iter_append_dict_key): Fix typo in warning message.
5829         (message_iter_test, _dbus_message_test): Add test case for dict
5830         inside dict.
5831
5832 2003-12-01  David Zeuthen  <david@fubar.dk>
5833
5834         * python/dbus.py: Add the actual message when calling the reciever
5835         of a signal such that parameters can be inspected. Add the method
5836         remove_signal_receiver
5837         
5838 2003-11-26  Mikael Hallendal  <micke@imendio.com>
5839
5840         * bus/*.[ch]:
5841         * dbus/*.[ch]:
5842         * glib/*.[ch]: Made ref functions return the pointer
5843
5844 2003-11-25  Zack Rusin  <zack@kde.org>
5845
5846         * qt/integrator.h, qt/integrator.cpp: Adding handling of DBusServer,
5847
5848         * qt/server.h, qt/server.cpp, qt/Makefile.am: Adding DBusServer 
5849         wrappers,
5850
5851         * qt/connection.h, qt/connection.cpp: Adjusting to changes in 
5852         the Integrator and to better fit with the server,
5853
5854 2003-11-24  Zack Rusin  <zack@kde.org>
5855
5856         * qt/connection.h, qt/connection.cpp: removing initDbus method since
5857         the integrator handles it now
5858
5859         * qt/integrator.h, qt/integrator.cpp: reworking handling of timeouts,
5860         since QTimer wasn't really meant to be used the way DBusTimeout is
5861
5862 2003-11-24  Zack Rusin  <zack@kde.org>
5863
5864         * qt/integrator.h, qt/integrator.cpp, Makefile.am: Adding 
5865         Integrator class which integrates D-BUS with the Qt event loop,
5866
5867         * qt/connection.h, qt/connection.cpp: Move all the code which
5868         was dealing with D-BUS integration to the Integrator class,
5869         and start using Integrator,
5870
5871 2003-11-23  Zack Rusin  <zack@kde.org>
5872
5873         * qt/connection.h, qt/connection.cpp: Adding the DBusConnection 
5874         wrapper
5875
5876         * qt/message.h, qt/message.cpp: updating to the current D-BUS api,
5877         switching namespaces to DBusQt, reworking the class,
5878
5879         * Makefile.cvs: switching dependencies so that it matches KDE 
5880         schematics,
5881         
5882         * qt/Makefile.am: adding connection.{h,cpp} and message.{h,cpp} to 
5883         the library
5884
5885 2003-11-19  Havoc Pennington  <hp@redhat.com>
5886
5887         * NEWS: update
5888
5889         * configure.in: bump version to 0.20
5890
5891         * configure.in (have_qt): add yet another place to look for qt
5892         (someone hand trolltech a .pc file...)
5893
5894 2003-11-01  Havoc Pennington  <hp@redhat.com>
5895
5896         * doc/dbus-specification.xml: add state machine docs on the auth
5897         protocol; just a first draft, I'm sure it's wrong.      
5898
5899 2003-10-28  David Zeuthen  <david@fubar.dk>
5900
5901         * python/dbus_bindings.pyx.in: add get_dict to handle dictionaries
5902         return types. Fixup TYPE_* to reflect changes in dbus/dbus-protocol.h
5903         
5904 2003-10-28  Havoc Pennington  <hp@redhat.com>
5905
5906         * dbus/dbus-message.c (get_next_field): delete unused function
5907
5908 2003-10-28  Havoc Pennington  <hp@redhat.com>
5909
5910         * bus/expirelist.c (do_expiration_with_current_time): detect
5911         failure of the expire_func due to OOM
5912
5913         * bus/connection.c (bus_pending_reply_expired): return FALSE on OOM
5914
5915         * bus/dispatch.c (check_send_exit_to_service): fix to handle the
5916         NoReply error that's now created by the bus when the service exits
5917
5918 2003-10-28  Havoc Pennington  <hp@redhat.com>
5919
5920         * dbus/dbus-message.c (_dbus_message_test): enable and fix the
5921         tests for set_path, set_interface, set_member, etc.
5922
5923         * dbus/dbus-string.c (_dbus_string_insert_bytes): allow 0 bytes
5924
5925         * dbus/dbus-message.c (set_string_field): always just delete and
5926         re-append the field; accept NULL for deletion
5927         (re_align_fields_recurse): reimplement
5928         
5929 2003-10-26  Havoc Pennington  <hp@redhat.com>
5930
5931         * dbus/dbus-connection.c: fix docs to properly describe the
5932         disconnected message
5933         (_dbus_connection_notify_disconnected): remove this function; 
5934         we can't synchronously add the disconnected message, we have to 
5935         do it after we've queued any remaining real messages
5936         (_dbus_connection_get_dispatch_status_unlocked): queue the
5937         disconnect message only if the transport has finished queueing all
5938         its real messages and is disconnected.
5939         (dbus_connection_disconnect): update the dispatch status here
5940
5941 2003-10-22  Havoc Pennington  <hp@redhat.com>
5942
5943         * bus/bus.c (bus_context_check_security_policy): fix up assertion
5944
5945         * bus/connection.c (bus_transaction_send_from_driver): set the
5946         destination to the connection's base service
5947
5948 2003-10-20  Havoc Pennington  <hp@redhat.com>
5949
5950         hmm, make check is currently not passing.
5951         
5952         * doc/dbus-specification.xml: add requirement that custom type
5953         names follow the same rules as interface names.
5954
5955         * dbus/dbus-protocol.h: change some of the byte codes, to avoid
5956         duplication and allow 'c' to be 'custom'; dict is now 'm' for
5957         'map'
5958
5959         * doc/dbus-specification.xml: update type codes to match
5960         dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
5961         CUSTOM. Add type OBJECT_PATH to the spec.
5962
5963 2003-10-17  Havoc Pennington  <hp@redhat.com>
5964
5965         * bus/driver.c (create_unique_client_name): use "." as separator
5966         in base service names instead of '-'
5967
5968         * dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
5969         byte at the end of the string
5970
5971         * dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
5972         optimization macros since string validation seems to be a slow
5973         point.
5974         
5975         * doc/dbus-specification.xml: restrict valid
5976         service/interface/member/error names. Add test suite code for the
5977         name validation.
5978
5979         * dbus/dbus-string.c: limit service/interface/member/error names 
5980         to [0-9][A-Z][a-z]_
5981
5982         * dbus/dbus-connection.c (dbus_connection_dispatch): add missing
5983         format arg to verbose spew
5984
5985         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
5986         memory, return instead of g_error
5987
5988         * test/test-service.c (path_message_func): support emitting a
5989         signal on request
5990
5991         * dbus/dbus-bus.c (init_connections_unlocked): only fill in
5992         activation bus type if DBUS_BUS_ACTIVATION was set; default to
5993         assuming the activation bus was the session bus so that services
5994         started manually will still register.
5995         (init_connections_unlocked): fix so that in OOM situation we get
5996         the same semantics when retrying the function
5997         
5998         * test/test-service.c (main): change to use path registration, to
5999         test those codepaths; register with DBUS_BUS_ACTIVATION rather
6000         than DBUS_BUS_SESSION
6001
6002 2003-10-16  Havoc Pennington  <hp@redhat.com>
6003
6004         * glib/dbus-gtest-main.c: bracket with #ifdef DBUS_BUILD_TESTS
6005
6006         * Makefile.am (GCOV_DIRS): remove "test", we don't care about test
6007         coverage of the tests
6008         (coverage-report.txt): don't move the .da and .bbg files around
6009
6010 2003-10-16  Havoc Pennington  <hp@redhat.com>
6011
6012         * bus/bus.c (struct BusContext): remove struct field I didn't mean
6013         to put there
6014
6015 2003-10-16  Havoc Pennington  <hp@redhat.com>
6016
6017         * bus/connection.c (bus_pending_reply_expired): either cancel or
6018         execute, not both
6019         (bus_connections_check_reply): use unlink, not remove_link, as we
6020         don't want to free the link; fixes double free mess
6021
6022         * dbus/dbus-pending-call.c (dbus_pending_call_block): fix in case
6023         where no reply was received
6024
6025         * dbus/dbus-connection.c (_dbus_pending_call_complete_and_unlock):
6026         fix a refcount leak
6027
6028         * bus/signals.c (match_rule_matches): add special cases for the
6029         bus driver, so you can match on sender/destination for it.
6030
6031         * dbus/dbus-sysdeps.c (_dbus_abort): print backtrace if
6032         DBUS_PRINT_BACKTRACE is set
6033
6034         * dbus/dbus-internals.c: add pid to assertion failure messages
6035
6036         * dbus/dbus-connection.c: add message type code to the debug spew
6037
6038         * glib/dbus-gproxy.c (gproxy_get_match_rule): match rules want
6039         sender=foo not service=foo
6040
6041         * dbus/dbus-bus.c (dbus_bus_get): if the activation bus is the
6042         session bus but DBUS_SESSION_BUS_ADDRESS isn't set, use 
6043         DBUS_ACTIVATION_ADDRESS instead
6044
6045         * bus/activation.c: set DBUS_SESSION_BUS_ADDRESS,
6046         DBUS_SYSTEM_BUS_ADDRESS if appropriate
6047
6048         * bus/bus.c (bus_context_new): handle OOM copying bus type into
6049         context struct
6050
6051         * dbus/dbus-message.c (dbus_message_iter_get_object_path): new function
6052         (dbus_message_iter_get_object_path_array): new function (half
6053         finished, disabled for the moment)
6054         
6055         * glib/dbus-gproxy.c (dbus_gproxy_end_call): properly handle
6056         DBUS_MESSAGE_TYPE_ERROR
6057
6058         * tools/dbus-launch.c (babysit): support DBUS_DEBUG_OUTPUT to
6059         avoid redirecting stderr to /dev/null
6060         (babysit): close stdin if not doing the "exit_with_session" thing
6061
6062         * dbus/dbus-sysdeps.c (_dbus_become_daemon): delete some leftover
6063         debug code; change DBUS_DEBUG_OUTPUT to only enable stderr, not
6064         stdout/stdin, so things don't get confused
6065         
6066         * bus/system.conf.in: fix to allow replies, I modified .conf
6067         instead of .conf.in again.
6068
6069 2003-10-14  David Zeuthen  <david@fubar.dk>
6070
6071         * python/dbus_bindings.pyx.in (MessageIter.get): fixed typo in
6072         argtype to arg_type when raising unknown arg type exception.
6073         Changed type list to reflect the changes in dbus-protocol.h so 
6074         the bindings actually work.
6075
6076 2003-10-14  Havoc Pennington  <hp@redhat.com>
6077
6078         * test/decode-gcov.c: support gcc 3.3 also, though gcc 3.3 seems
6079         to have a bug keeping it from outputting the .da files sometimes
6080         (string_get_string): don't append garbage nul bytes to the string.
6081
6082 2003-10-15  Seth Nickell  <seth@gnome.org>
6083
6084         * python/Makefile.am:
6085
6086         Include dbus_h_wrapper.h in the dist tarball.
6087
6088 2003-10-14  Havoc Pennington  <hp@redhat.com>
6089
6090         * bus/bus.c (bus_context_check_security_policy): revamp this to
6091         work more sanely with new policy-based requested reply setup
6092
6093         * bus/connection.c (bus_transaction_send_from_driver): set bus
6094         driver messages as no reply
6095
6096         * bus/policy.c (bus_client_policy_check_can_receive): handle a
6097         requested_reply attribute on allow/deny rules
6098
6099         * bus/system.conf: add <allow requested_reply="true"/>
6100
6101         * bus/driver.c (bus_driver_handle_message): fix check for replies
6102         sent to the bus driver, which was backward. How did this ever work
6103         at all though? I think I'm missing something.
6104
6105         * dbus/dbus-message.c (decode_header_data): require error and
6106         method return messages to have a reply serial field to be valid
6107         (_dbus_message_loader_queue_messages): break up this function;
6108         validate that reply serial and plain serial are nonzero; 
6109         clean up the OOM/error handling.
6110         (get_uint_field): don't return -1 from this
6111         (dbus_message_create_header): fix signed/unsigned bug
6112
6113         * bus/connection.c (bus_connections_expect_reply): save serial of
6114         the incoming message, not reply serial
6115
6116 2003-10-14  Havoc Pennington  <hp@redhat.com>
6117
6118         * bus/connection.c: implement pending reply tracking using
6119         BusExpireList
6120
6121         * bus/bus.c (bus_context_check_security_policy): verify that a
6122         reply is pending in order to allow a reply to be sent. Deny 
6123         messages of unknown type.
6124
6125         * bus/dbus-daemon-1.1.in: update to mention new resource limits
6126
6127         * bus/bus.c (bus_context_get_max_replies_per_connection): new
6128         (bus_context_get_reply_timeout): new
6129
6130 2003-10-13  Seth Nickell  <seth@gnome.org>
6131
6132         * python/Makefile.am:
6133
6134         Pass "make distcheck": remove a couple files from DIST_FILES
6135         that weren't included in the final version.
6136
6137 2003-10-12  Havoc Pennington  <hp@pobox.com>
6138
6139         Added test code that 1) starts an actual bus daemon and 2) uses
6140         DBusGProxy; fixed bugs that were revealed by the test. Lots 
6141         more testing possible, but this is the basic framework.
6142         
6143         * glib/dbus-gproxy.c (dbus_gproxy_manager_unregister): remove
6144         empty proxy lists from the proxy list hash
6145
6146         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): add a
6147         couple of return_if_fail checks
6148
6149         * dbus/dbus-pending-call.c (_dbus_pending_call_new): use dbus_new0
6150         to allocate, so everything is cleared to NULL as it should be.
6151
6152         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): pass
6153         source as data to dbus_connection_set_timeout_functions() as the 
6154         timeout functions expected
6155
6156         * test/glib/run-test.sh: add a little script to start up a message
6157         bus and run tests using it
6158
6159         * tools/dbus-launch.1: updates
6160
6161         * tools/dbus-launch.c (main): add --config-file option
6162
6163         * tools/dbus-launch.c (main): remove confusing else if (runprog)
6164         that could never be reached.
6165
6166         * dbus/dbus-message.c (dbus_message_new_method_return) 
6167         (dbus_message_new_error, dbus_message_new_signal): set the
6168         no-reply-expected flag on all these. Redundant, but may
6169         as well be consistent.
6170
6171 2003-10-11  Havoc Pennington  <hp@pobox.com>
6172
6173         * test/decode-gcov.c (function_solve_graph): make broken block
6174         graph a nonfatal error since it seems to be broken. Need to debug
6175         this.
6176
6177         * dbus/dbus-marshal.c (_dbus_type_is_valid): new function since we
6178         can't just check type > INVALID < LAST anymore
6179
6180         * dbus/dbus-message.c (dbus_message_get_signature): new function
6181         (dbus_message_has_signature): new function
6182         (struct DBusMessage): add signature field (right now it isn't sent
6183         over the wire, just generated on the fly)
6184         (dbus_message_copy): copy the signature, and init strings to
6185         proper length to avoid some reallocs
6186         (dbus_message_iter_init_array_iterator): return void, since it
6187         can't fail
6188         (dbus_message_iter_init_dict_iterator): return void since it can't fail
6189         (_dbus_message_loader_queue_messages): add silly temporary hack to
6190         fill in message->signature on load
6191
6192         * dbus/dbus-protocol.h: change DBUS_TYPE_* values to be ASCII
6193         characters, so they are relatively human-readable.
6194
6195 2003-10-11  Havoc Pennington  <hp@pobox.com>
6196
6197         * dbus/dbus-message.c (_dbus_message_test): add more test
6198         coverage, but #if 0 for now since they uncover a bug 
6199         not fixed yet; I think in re_align_field_recurse()
6200         (re_align_field_recurse): add FIXME about broken assertion
6201
6202         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage
6203
6204         * bus/connection.c: share a couple code bits with expirelist.c
6205
6206         * bus/expirelist.h, bus/expirelist.c: implement a generic
6207         expire-items-after-N-seconds facility, was going to share between
6208         expiring connections and replies, decided not to use for expiring
6209         connections for now.
6210
6211         * COPYING: include AFL 2.0 (still need to change all the file headers)
6212
6213 2003-10-09  Havoc Pennington  <hp@redhat.com>
6214
6215         * configure.in: define DBUS_HAVE_GCC33_GCOV if we have
6216         gcc 3.3. Not that we do anything about it yet.
6217
6218         * bus/signals.c (bus_match_rule_parse): impose max length on the
6219         match rule text
6220
6221         * dbus/dbus-protocol.h: add DBUS_MAXIMUM_MATCH_RULE_LENGTH
6222
6223 2003-10-09  Havoc Pennington  <hp@redhat.com>
6224
6225         Make matching rules theoretically work (add parser).
6226         
6227         * bus/bus.c (bus_context_check_security_policy): fix up to handle
6228         the case where destination is explicitly specified as bus driver
6229         and someone else is eavesdropping.
6230         
6231         * bus/policy.c (bus_client_policy_check_can_receive): fix up
6232         definition of eavesdropping and assertion
6233
6234         * tools/dbus-send.c (main): use dbus_message_type_from_string
6235
6236         * bus/signals.c (bus_match_rule_parse): implement
6237
6238         * dbus/dbus-message.c (dbus_message_type_from_string): new
6239
6240         * dbus/dbus-errors.h (DBUS_ERROR_MATCH_RULE_INVALID): add
6241
6242 2003-10-02  Havoc Pennington  <hp@pobox.com>
6243
6244         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): rename from
6245         dbus_gproxy_oneway_call
6246
6247         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main) 
6248         (dbus_server_setup_with_g_main): fix to allow calling them more
6249         than once on the same args
6250         (dbus_bus_get_with_g_main): new function
6251
6252 2003-10-02  Havoc Pennington  <hp@redhat.com>
6253
6254         * doc/dbus-tutorial.xml: write some stuff
6255
6256 2003-09-29  Havoc Pennington  <hp@pobox.com>
6257
6258         * configure.in: split checks for Doxygen from XML docs, check for
6259         xmlto
6260
6261         * doc/Makefile.am: XML-ify all the docs, and add a blank
6262         dbus-tutorial.xml
6263
6264 2003-09-29  Havoc Pennington  <hp@pobox.com>
6265
6266         * Merge dbus-object-names branch. To see the entire patch 
6267         do cvs diff -r DBUS_OBJECT_NAMES_BRANCHPOINT -r dbus-object-names,
6268         it's huuuuge though.
6269         To revert, I tagged DBUS_BEFORE_OBJECT_NAMES_MERGE.
6270         
6271 2003-09-28  Havoc Pennington  <hp@pobox.com>
6272
6273         * HACKING: update to reflect new server
6274
6275 2003-09-26  Seth Nickell  <seth@gnome.org>
6276
6277         * python/dbus.py:
6278         * python/examples/example-signals.py:
6279
6280         Start implementing some notions of signals. The API
6281         is really terrible, but they sort of work (with the
6282         exception of being able to filter by service, and to
6283         transmit signals *as* a particular service). Need to
6284         figure out how to make messages come from the service
6285         we registered :-(
6286         
6287         * python/dbus_bindings.pyx.in:
6288
6289         Removed duplicate message_handler callbacks.
6290         
6291 2003-09-25  Havoc Pennington  <hp@redhat.com>
6292
6293         * bus/session.conf.in: fix my mess
6294
6295 2003-09-25  Havoc Pennington  <hp@pobox.com>
6296
6297         * bus/session.conf.in: fix security policy, reported by Seth Nickell
6298
6299 2003-09-25  Seth Nickell  <seth@gnome.org>
6300
6301         * python/examples/example-service.py:
6302
6303         Johan notices complete wrong code in example-service, but
6304         completely wrong in a way that works exactly the same (!).
6305         Johan is confused, how could this possibly work? Example
6306         code fails to serve purpose of making things clear.
6307         Seth fixes.
6308
6309 2003-09-25  Mark McLoughlin  <mark@skynet.ie>
6310
6311         * doc/dbus-specification.sgml: don't require header fields
6312         to be 4-byte aligned and specify that fields should be
6313         distinguished from padding by the fact that zero is not
6314         a valid field name.
6315         
6316         * doc/TODO: remove re-alignment item and add item to doc
6317         the OBJECT_PATH type.
6318         
6319         * dbus/dbus-message.c:
6320         (HeaderField): rename the original member to value_offset
6321         and introduce a name_offset member to keep track of where
6322         the field actually begins.
6323         (adjust_field_offsets): remove.
6324         (append_int_field), (append_uint_field),
6325         (append_string_field): don't align the start of the header
6326         field to a 4-byte boundary.
6327         (get_next_field): impl finding the next marhsalled field
6328         after a given field.
6329         (re_align_field_recurse): impl re-aligning a number of
6330         already marshalled fields.
6331         (delete_field): impl deleting a field of any type and
6332         re-aligning any following fields.
6333         (delete_int_or_uint_field), (delete_string_field): remove.
6334         (set_int_field), (set_uint_field): no need to re-check
6335         that we have the correct type for the field.
6336         (set_string_field): ditto and impl re-aligning any
6337         following fields.
6338         (decode_header_data): update to take into account that
6339         the fields aren't 4-byte aligned any more and the new
6340         way to distinguish padding from header fields. Also,
6341         don't exit when there is too much header padding.
6342         (process_test_subdir): print the directory.
6343         (_dbus_message_test): add test to make sure a following
6344         field is re-aligned correctly after field deletion.
6345         
6346         * dbus/dbus-string.[ch]:
6347         (_dbus_string_insert_bytes): rename from insert_byte and
6348         allow the insert of multiple bytes.
6349         (_dbus_string_test): test inserting multiple bytes.
6350
6351         * dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
6352         warning note to docs about having to re-align any
6353         marshalled values following the string.
6354         
6355         * dbus/dbus-message-builder.c:
6356         (append_string_field), (_dbus_message_data_load):
6357         don't align the header field.
6358         
6359         * dbus/dbus-auth.c: (process_test_subdir): print the
6360         directory.
6361         
6362         * test/break-loader.c: (randomly_add_one_byte): upd. for
6363         insert_byte change.
6364         
6365         * test/data/invalid-messages/bad-header-field-alignment.message:
6366         new test case.
6367         
6368         * test/data/valid-messages/unknown-header-field.message: shove
6369         a dict in the unknown field.
6370
6371 2003-09-25  Seth Nickell  <seth@gnome.org>
6372
6373         * python/dbus.py:
6374         * python/dbus_bindings.pyx.in:
6375
6376         Handle return values.
6377         
6378         * python/examples/example-client.py:
6379         * python/examples/example-service.py:
6380
6381         Pass back return values from the service to the client.
6382         
6383 2003-09-24  Seth Nickell  <seth@gnome.org>
6384
6385         * python/dbus.py:
6386
6387         Connect Object methods (when you are sharing an object) up... pass
6388         in a list of methods to be shared. Sharing all the methods just
6389         worked out too weird. You can now create nice Services over the
6390         DBus in Python. :-)
6391         
6392         * python/dbus_bindings.pyx.in:
6393
6394         Keep references to user_data tuples passed into C functions so 
6395         Python doesn't garbage collect on us.
6396
6397         Implement MethodReturn and Error subclasses of Message for creating
6398         DBusMessage's of those types.
6399         
6400         * python/examples/example-client.py:
6401         * python/examples/example-service.py:
6402
6403         Simple example code showing both how create DBus services and objects,
6404         and how to use them.
6405
6406 2003-09-23  Havoc Pennington  <hp@pobox.com>
6407
6408         * glib/dbus-gproxy.c (dbus_gproxy_manager_filter): implement
6409
6410 2003-09-23  Havoc Pennington  <hp@redhat.com>
6411
6412         * glib/dbus-gproxy.c (dbus_gproxy_connect_signal): implement
6413         (dbus_gproxy_disconnect_signal): implement
6414         (dbus_gproxy_manager_remove_signal_match): implement
6415         (dbus_gproxy_manager_add_signal_match): implement
6416         (dbus_gproxy_oneway_call): implement
6417
6418 2003-09-23  Havoc Pennington  <hp@pobox.com>
6419
6420         * glib/dbus-gproxy.c (struct DBusGProxy): convert to a GObject
6421         subclass. This means dropping the transparent thread safety of the
6422         proxy; you now need a separate proxy per-thread, or your own
6423         locking on the proxy. Probably right anyway.
6424         (dbus_gproxy_ref, dbus_gproxy_unref): nuke, just use g_object_ref
6425
6426 2003-09-22  Havoc Pennington  <hp@redhat.com>
6427
6428         * glib/dbus-gproxy.c (dbus_gproxy_manager_get): implement
6429
6430 2003-09-21  Seth Nickell  <seth@gnome.org>
6431
6432         First checkin of the Python bindings.
6433         
6434         * python/.cvsignore:
6435         * python/Makefile.am:
6436         * python/dbus_bindings.pyx.in:
6437         * python/dbus_h_wrapper.h:
6438
6439         Pieces for Pyrex to operate on, building a dbus_bindings.so
6440         python module for low-level access to the DBus APIs.
6441         
6442         * python/dbus.py:
6443
6444         High-level Python module for accessing DBus objects.
6445
6446         * configure.in:
6447         * Makefile.am:
6448
6449         Build stuff for the python bindings.
6450
6451         * acinclude.m4:
6452
6453         Extra macro needed for finding the Python C header files.
6454
6455 2003-09-21  Havoc Pennington  <hp@pobox.com>
6456
6457         * glib/dbus-gproxy.c (dbus_gproxy_manager_new): start
6458         implementing the proxy manager, didn't get very far.
6459
6460         * dbus/dbus-bus.c (dbus_bus_add_match): new
6461         (dbus_bus_remove_match): new
6462
6463         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service): add a
6464         path_name argument; adjust the other not-yet-implemented 
6465         gproxy constructors to be what I think they should be.
6466
6467 2003-09-21  Havoc Pennington  <hp@pobox.com>
6468
6469         * dbus/dbus-bus.c (dbus_bus_get): set exit_on_disconnect to TRUE
6470         by default for message bus connections.
6471
6472         * dbus/dbus-connection.c (dbus_connection_dispatch): exit if
6473         exit_on_disconnect flag is set and we process the disconnected
6474         signal.
6475         (dbus_connection_set_exit_on_disconnect): new function
6476
6477 2003-09-21  Havoc Pennington  <hp@pobox.com>
6478
6479         Get matching rules mostly working in the bus; only actually
6480         parsing the rule text remains. However, the client side of
6481         "signal connections" hasn't been started, this patch is only the
6482         bus side.
6483         
6484         * dbus/dispatch.c: fix for the matching rules changes
6485         
6486         * bus/driver.c (bus_driver_handle_remove_match)
6487         (bus_driver_handle_add_match): send an ack reply from these
6488         method calls
6489
6490         * glib/dbus-gproxy.c (dbus_gproxy_begin_call): fix order of
6491         arguments, reported by Seth Nickell
6492
6493         * bus/config-parser.c (append_rule_from_element): support
6494         eavesdrop=true|false attribute on policies so match rules 
6495         can be prevented from snooping on the system bus.
6496
6497         * bus/dbus-daemon-1.1.in: consistently use terminology "sender"
6498         and "destination" in attribute names; fix some docs bugs; 
6499         add eavesdrop=true|false attribute
6500
6501         * bus/driver.c (bus_driver_handle_add_match)
6502         (bus_driver_handle_remove_match): handle AddMatch, RemoveMatch
6503         messages
6504
6505         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST): get
6506         rid of broadcast service concept, signals are just always broadcast
6507
6508         * bus/signals.c, bus/dispatch.c, bus/connection.c, bus/bus.c:
6509         mostly implement matching rules stuff (currently only exposed as signal
6510         connections)
6511
6512 2003-09-21  Mark McLoughlin  <mark@skynet.ie>
6513
6514         * doc/dbus-specification.sgml: Change the header field name
6515         to be an enum and update the rest of the spec to reference
6516         the fields using the conventinal name.
6517
6518         * dbus/dbus-protocol.h: update to reflect the spec.
6519
6520         * doc/TODO: add item to remove the 4 byte alignment requirement.
6521         
6522         * dbus/dbus-message.c: Remove the code to generalise the
6523         header/body length and serial number header fields as named
6524         header fields so we can reference field names using the 
6525         protocol values.
6526         (append_int_field), (append_uint_field), (append_string_field):
6527         Append the field name as a byte rather than four chars.
6528         (delete_int_or_uint_field), (delete_string_field): reflect the
6529         fact that the field name and typecode now occupy 4 bytes instead
6530         of 8.
6531         (decode_string_field), (decode_header_data): update to reflect
6532         protocol changes and move the field specific encoding from
6533         decode_string_field() back into decode_header_data().
6534         
6535         * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
6536         Add utility to aid debugging.
6537         
6538         * dbus/dbus-message-builder.c:
6539         (append_string_field), (_dbus_message_data_load): Update to
6540         reflect protocol changes; Change the FIELD_NAME directive
6541         to HEADER_FIELD and allow it to take the field's conventional
6542         name rather than the actual value.
6543         
6544         * test/data/*/*.message: Update to use HEADER_FIELD instead
6545         of FIELD_NAME; Always align the header on an 8 byte boundary
6546         *before* updating the header length.
6547
6548 2003-09-15  Havoc Pennington  <hp@pobox.com>
6549
6550         * dbus/dbus-pending-call.c: add the get/set object data
6551         boilerplate as for DBusConnection, etc. Use generic object data
6552         for the notify callback.
6553
6554         * glib/dbus-gparser.c (parse_node): parse child nodes
6555
6556         * tools/dbus-viewer.c: more hacking on the dbus-viewer
6557         
6558         * glib/dbus-gutils.c (_dbus_gutils_split_path): add a file to
6559         contain functions shared between the convenience lib and the
6560         installed lib
6561
6562         * glib/Makefile.am (libdbus_glib_1_la_LDFLAGS): add
6563         -export-symbols-regex to the GLib library
6564
6565         * dbus/dbus-object-tree.c (_dbus_object_tree_dispatch_and_unlock):
6566         fix the locking in here, and add a default handler for
6567         Introspect() that just returns sub-nodes.
6568
6569 2003-09-14  Havoc Pennington  <hp@pobox.com>
6570
6571         * glib/dbus-gthread.c (dbus_g_thread_init): rename to make g_foo
6572         rather than gfoo consistent
6573
6574         * glib/dbus-gproxy.h: delete for now, move contents to
6575         dbus-glib.h, because the include files don't work right since we
6576         aren't in the dbus/ subdir.
6577         
6578         * glib/dbus-gproxy.c (dbus_gproxy_send): finish implementing
6579         (dbus_gproxy_end_call): finish
6580         (dbus_gproxy_begin_call): finish
6581
6582         * glib/dbus-gmain.c (dbus_set_g_error): new
6583
6584         * glib/dbus-gobject.c (handle_introspect): include information
6585         about child nodes in the introspection
6586
6587         * dbus/dbus-connection.c (dbus_connection_list_registered): new
6588         function to help in implementation of introspection
6589
6590         * dbus/dbus-object-tree.c
6591         (_dbus_object_tree_list_registered_and_unlock): new function
6592
6593 2003-09-12  Havoc Pennington  <hp@pobox.com>
6594
6595         * glib/dbus-gidl.h: add common base class for all the foo_info
6596         types
6597
6598         * tools/dbus-viewer.c: add GTK-based introspection UI thingy
6599         similar to kdcop
6600
6601         * test/Makefile.am: try test srcdir -ef . in addition to test
6602         srcdir = ., one of them should work (yeah lame)
6603         
6604         * glib/Makefile.am: build the "idl" parser stuff as a convenience
6605         library
6606         
6607         * glib/dbus-gparser.h: make description_load routines return
6608         NodeInfo* not Parser*
6609
6610         * Makefile.am (SUBDIRS): build test dir after all library dirs
6611
6612         * configure.in: add GTK+ detection
6613
6614 2003-09-07  Havoc Pennington  <hp@pobox.com>
6615
6616         * Make Doxygen contented.
6617
6618 2003-09-07  Havoc Pennington  <hp@pobox.com>
6619
6620         * doc/dbus-specification.sgml: more updates
6621
6622 2003-09-06  Havoc Pennington  <hp@pobox.com>
6623
6624         * doc/dbus-specification.sgml: partial updates
6625
6626         * bus/dbus-daemon-1.1.in: fix the config file docs for the
6627         zillionth time; hopefully I edited the right file this time.
6628
6629         * bus/config-parser.c (append_rule_from_element): support
6630         send_type, send_path, receive_type, receive_path
6631
6632         * bus/policy.c: add message type and path to the list of things
6633         that can be "firewalled"
6634
6635 2003-09-06  Havoc Pennington  <hp@pobox.com>
6636
6637         * dbus/dbus-connection.c (dbus_connection_register_fallback): add this
6638         (dbus_connection_register_object_path): make this not handle
6639         messages to paths below the given path
6640
6641 2003-09-03  Havoc Pennington  <hp@pobox.com>
6642
6643         * test/glib/Makefile.am: add this with random glib-linked test
6644         programs
6645
6646         * glib/Makefile.am: remove the random test programs from here,
6647         leave only the unit tests
6648
6649         * glib/dbus-gobject.c (_dbus_gobject_test): add test for 
6650         uscore/javacaps conversion, and fix     
6651         (get_object_property, set_object_property): change to .NET
6652         convention for mapping props to methods, set_FooBar/get_FooBar, 
6653         since one language has such a convention we may as well copy it. 
6654         Plus real methods in either getFooBar or get_foo_bar style won't 
6655         collide with this convention.
6656
6657 2003-09-01  Havoc Pennington  <hp@pobox.com>
6658
6659         * glib/dbus-gparser.c: implement
6660
6661         * glib/dbus-gobject.c: start implementing skeletons support
6662
6663         * configure.in: when disabling checks/assert, also define
6664         G_DISABLE_ASSERT and G_DISABLE_CHECKS
6665
6666 2003-09-01  Havoc Pennington  <hp@pobox.com>
6667
6668         * glib/Makefile.am: rearrange a bunch of files and get "make
6669         check" framework set up
6670
6671 2003-08-31  Havoc Pennington  <hp@pobox.com>
6672
6673         * fix build with --disable-tests
6674
6675 2003-08-30  Havoc Pennington  <hp@pobox.com>
6676
6677         * dbus/dbus-connection.c: purge DBusMessageHandler
6678
6679         * dbus/dbus-message-handler.c: remove DBusMessageHandler, just 
6680         use callbacks everywhere
6681
6682 2003-08-30  Havoc Pennington  <hp@pobox.com>
6683
6684         * test/data/valid-config-files/system.d/test.conf: change to 
6685         root for the user so warnings don't get printed
6686
6687         * dbus/dbus-message.c: add dbus_message_get_path,
6688         dbus_message_set_path
6689         
6690         * dbus/dbus-object-tree.c (do_test_dispatch): add test of
6691         dispatching to a path
6692
6693         * dbus/dbus-string.c (_dbus_string_validate_path): add
6694
6695         * dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
6696         (_dbus_marshal_object_path): implement
6697
6698         * dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
6699         to contain the path to the target object
6700         (DBUS_HEADER_FIELD_SENDER_SERVICE): rename
6701         DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
6702
6703 2003-08-30  Havoc Pennington  <hp@pobox.com>
6704
6705         * dbus/dbus-object-tree.c: write tests and fix the discovered bugs
6706
6707 2003-08-29  Havoc Pennington  <hp@pobox.com>
6708
6709         * dbus/dbus-object-tree.c: modify to allow overlapping paths to be
6710         registered
6711         (struct DBusObjectSubtree): shrink this
6712         a lot, since we may have a lot of them
6713         (_dbus_object_tree_free_all_unlocked): implement
6714         (_dbus_object_tree_dispatch_and_unlock): implement
6715
6716 2003-08-29  Havoc Pennington  <hp@pobox.com>
6717
6718         * dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS
6719
6720 2003-08-28  Havoc Pennington  <hp@pobox.com>
6721
6722         purge DBusObjectID
6723         
6724         * dbus/dbus-connection.c: port to no ObjectID, create a
6725         DBusObjectTree, rename ObjectTree to ObjectPath in public API
6726
6727         * dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
6728         everything except UnregisterFunction and MessageFunction
6729         
6730         * dbus/dbus-marshal.c: port away from DBusObjectID, 
6731         add DBUS_TYPE_OBJECT_PATH
6732         
6733         * dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
6734         dbus/dbus-objectid.[hc]: remove these, we are moving to 
6735         path-based object IDs
6736
6737 2003-08-25  Havoc Pennington  <hp@pobox.com>
6738
6739         Just noticed that dbus_message_test is hosed, I wonder when I
6740         broke that. I thought make check was passing earlier...
6741         
6742         * dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
6743         container tree, will replace most of dbus-object-registry
6744
6745         * dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
6746         screwup
6747
6748 2003-08-19  Havoc Pennington  <hp@pobox.com>
6749
6750         * dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
6751         (dbus_message_is_error): fix this function
6752
6753         * bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
6754         match
6755
6756         * bus/policy.c (bus_client_policy_check_can_receive): fix code to
6757         reflect clarified man page
6758         (bus_client_policy_check_can_send): ditto
6759         
6760         * bus/session.conf.in: fixup
6761
6762         * bus/system.conf.in: fixup
6763
6764 2003-08-18  Havoc Pennington  <hp@redhat.com>
6765
6766         * dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix
6767
6768         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
6769         dumb bug created earlier (wrong order of args to
6770         decode_header_data())
6771         
6772         * tools/dbus-send.c: port
6773
6774         * tools/dbus-print-message.c (print_message): port
6775
6776         * test/data/*messages: port all messages over
6777         
6778         * dbus/dbus-message-builder.c: support including 
6779         message type
6780         
6781         * bus/driver.c: port over
6782         
6783         * bus/dispatch.c: port over to new stuff
6784
6785         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
6786         rename disconnect signal to "Disconnected"
6787
6788 2003-08-17  Havoc Pennington  <hp@pobox.com>
6789
6790         This doesn't compile yet, but syncing up so I can hack on it from
6791         work. What are branches for if not broken code? ;-)
6792         
6793         * dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
6794         DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
6795         DBUS_HEADER_FIELD_ERROR_NAME
6796         
6797         * dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
6798         for the interface+member pairs
6799         (string_hash): change to use g_str_hash algorithm
6800         (find_direct_function, find_string_function): refactor these to
6801         share most code.
6802         
6803         * dbus/dbus-message.c: port all of this over to support 
6804         interface/member fields instead of name field
6805
6806         * dbus/dbus-object-registry.c: port over
6807         
6808         * dbus/dbus-string.c (_dbus_string_validate_interface): rename
6809         from _dbus_string_validate_name
6810
6811         * bus/dbus-daemon-1.1: change file format for the 
6812         <deny>/<allow> stuff to match new message naming scheme
6813
6814         * bus/policy.c: port over
6815
6816         * bus/config-parser.c: parse new format
6817         
6818 2003-08-16  Havoc Pennington  <hp@pobox.com>
6819
6820         * dbus/dbus-object-registry.c (add_and_remove_objects): remove
6821         broken assertion
6822
6823         * glib/dbus-gproxy.c: some hacking
6824
6825 2003-08-15  Havoc Pennington  <hp@redhat.com>
6826
6827         * dbus/dbus-pending-call.c (dbus_pending_call_block): implement
6828
6829         * dbus/dbus-connection.c
6830         (dbus_connection_send_with_reply_and_block): factor out internals;
6831         change to convert any error replies to DBusError instead of 
6832         returning them as a message
6833
6834 2003-08-15  Havoc Pennington  <hp@pobox.com>
6835
6836         * dbus/dbus-connection.c, 
6837         dbus/dbus-pending-call.c: Finish the pending call stuff
6838
6839 2003-08-14  Havoc Pennington  <hp@redhat.com>
6840
6841         * dbus/dbus-pending-call.c: start on new object that will replace
6842         DBusMessageHandler and ReplyHandlerData for tracking outstanding
6843         replies
6844
6845         * dbus/dbus-gproxy.c: start on proxy object used to communicate
6846         with remote interfaces
6847
6848         * dbus/dbus-gidl.c: do the boring boilerplate in here
6849         
6850 2003-08-12  Havoc Pennington  <hp@pobox.com>
6851
6852         * bus/dispatch.c (bus_dispatch): make this return proper 
6853         DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD
6854
6855         * dbus/dbus-errors.c (dbus_set_error): use
6856         _dbus_string_append_printf_valist
6857
6858         * dbus/dbus-string.c (_dbus_string_append_printf_valist)
6859         (_dbus_string_append_printf): new
6860
6861         * dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
6862         UNKNOWN_METHOD
6863
6864         * dbus/dbus-connection.c (dbus_connection_dispatch): handle
6865         DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
6866         message is unhandled.
6867
6868 2003-08-11  Havoc Pennington  <hp@pobox.com>
6869
6870         * bus/test.c (client_disconnect_handler): change to return
6871         HANDLED (would have been REMOVE_MESSAGE)
6872
6873         * dbus/dbus-object.h (enum DBusHandlerResult): rename to
6874         HANDLED/NOT_YET_HANDLED instead of
6875         REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
6876         should be used.
6877
6878 2003-08-10  Havoc Pennington  <hp@pobox.com>
6879
6880         * tools/dbus-send.c (main): add --type argument, for now
6881         supporting only method_call and signal types.
6882
6883         * tools/dbus-print-message.c: print message type
6884
6885         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
6886         init connection->objects
6887
6888         * doc/dbus-specification.sgml: fix sgml
6889
6890         * bus/*.c: port over to object-instance API changes
6891
6892         * test/test-service.c: ditto
6893         
6894         * dbus/dbus-message.c (dbus_message_create_header): allow #NULL
6895         name, we will have to fix up the rest of the code to also handle
6896         this
6897         (dbus_message_new): generic message-creation call
6898         (set_string_field): allow appending name field
6899
6900 2003-08-06  Havoc Pennington  <hp@pobox.com>
6901
6902         * dbus/dbus-object-registry.c: implement signal connection 
6903         and dispatch
6904
6905         * dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new
6906
6907         * dbus/dbus-internals.c (_dbus_memdup): new function
6908
6909 2003-08-02  Havoc Pennington  <hp@pobox.com>
6910
6911         * dbus/dbus-message.c (dbus_message_get_no_reply)
6912         (dbus_message_set_no_reply): add these and remove
6913         set_is_error/get_is_error
6914
6915         * dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
6916         remove the ERROR flag, since there's now an ERROR type
6917
6918 2003-08-01  Havoc Pennington  <hp@pobox.com>
6919
6920         * dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
6921         implement
6922
6923         * dbus/dbus-message.c (dbus_message_get_type): new function
6924
6925         * doc/dbus-specification.sgml: add "type" byte to messages
6926
6927 2003-08-01  Havoc Pennington  <hp@pobox.com>
6928
6929         * dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
6930         a message type enum to distinguish kinds of message
6931         (DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
6932         that need not be replied to
6933
6934 2003-08-01  Havoc Pennington  <hp@pobox.com>
6935
6936         * dbus/dbus-marshal.c: adapt to DBusObjectID changes
6937         (unpack_8_octets): fix no-64-bit-int bug
6938
6939         * dbus/dbus-object-registry.c (validate_id): validate the 
6940         connection ID bits, not just the instance ID.
6941
6942         * dbus/dbus-connection.c (_dbus_connection_init_id): initialize
6943         the connection-global 33 bits of the object ID
6944
6945         * dbus/dbus-object-registry.c (info_from_entry): fill in 
6946         object ID in the new way
6947
6948         * dbus/dbus-objectid.h: rather than high/low bits, specifically 
6949         define server/client/instance bits.
6950
6951 2003-07-30  Havoc Pennington  <hp@pobox.com>
6952
6953         * dbus/dbus-connection.c (dbus_connection_register_object): fix
6954         build
6955
6956 2003-07-13  Havoc Pennington  <hp@pobox.com>
6957
6958         * dbus/dbus-object.h (struct DBusObjectVTable): add padding
6959         fields to DBusObjectVTable and DBusObjectInfo
6960
6961 2003-07-12  Havoc Pennington  <hp@pobox.com>
6962
6963         * dbus/dbus-object-registry.c: implement unit test,
6964         fix bugs discovered in process
6965
6966         * dbus/dbus-connection.c: remove handler_table and
6967         register_handler(), add DBusObjectRegistry usage
6968
6969         * dbus/dbus-objectid.c (dbus_object_id_is_null)
6970         (dbus_object_id_set_null): new functions
6971
6972 2003-07-08  Havoc Pennington  <hp@pobox.com>
6973
6974         * dbus/dbus-object.c: implement some of this
6975
6976         * dbus/dbus-object-registry.c
6977         (_dbus_object_registry_add_and_unlock): fill in the object_id out
6978         param
6979         (_dbus_object_registry_new): handle OOM
6980
6981 2003-07-08  Havoc Pennington  <hp@pobox.com>
6982
6983         * dbus/dbus-object.h: sketch out an API for registering objects
6984         with a connection, that allows us to use as little as 24 bytes
6985         per object and lets application code represent an object in 
6986         any conceivable way.
6987
6988         * dbus/dbus-object-registry.c: implement the hard bits of the
6989         DBusConnection aspect of object API. Not yet wired up.
6990         
6991 2003-07-06  Havoc Pennington  <hp@pobox.com>
6992
6993         * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function
6994         (_dbus_marshal_object_id): new
6995         (_dbus_demarshal_object_id): new
6996         (_dbus_marshal_get_arg_end_pos): support object ID type, and
6997         consolidate identical switch cases. Don't conditionalize handling
6998         of DBUS_TYPE_UINT64, need to handle the type always.
6999         (_dbus_marshal_validate_arg): consolidate identical cases, and
7000         handle DBUS_TYPE_OBJECT_ID
7001
7002         * dbus/dbus-objectid.c: new file with DBusObjectID data type.
7003
7004         * dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID
7005
7006 2003-09-28  Havoc Pennington  <hp@pobox.com>
7007
7008         * real 0.13 release
7009
7010 2003-09-28  Havoc Pennington  <hp@pobox.com>
7011
7012         * doc/Makefile.am (dbus-specification.html): testing a funky hack
7013         to work with Debian db2html
7014
7015 2003-09-28  Havoc Pennington  <hp@pobox.com>
7016
7017         * configure.in: 0.13
7018
7019         * doc/Makefile.am (dbus-test-plan.html): accept nonexistence of
7020         stylesheet-images for benefit of Debian
7021         
7022         Change back to using filesystem-linked sockets for the system
7023         bus, so only root can create the default system bus address.
7024         
7025         * bus/system.conf.in: change to use
7026         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
7027
7028         * dbus/Makefile.am (INCLUDES): remove DBUS_SYSTEM_BUS_PATH define
7029         from here.
7030
7031         * configure.in: define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
7032         here, and AC_DEFINE DBUS_SYSTEM_PATH
7033
7034 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
7035
7036         * doc/TODO:
7037         * doc/busconfig.dtd:
7038         Add busconfig DTD.
7039         
7040 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
7041
7042         * doc/dbus-specification.sgml:
7043         Add activation reply values.
7044         
7045 2003-08-05  Havoc Pennington  <hp@redhat.com>
7046
7047         * configure.in: 0.12
7048
7049 2003-08-05  Anders Carlsson  <andersca@codefactory.se>
7050
7051         * glib/dbus-gmain.c: (watch_fd_new), (watch_fd_ref),
7052         (watch_fd_unref), (dbus_gsource_check), (dbus_gsource_dispatch),
7053         (add_watch), (remove_watch), (create_source):
7054         Refcount fds, fixes some reentrancy issues.
7055         
7056 2003-07-30  Havoc Pennington  <hp@redhat.com>
7057
7058         * dbus/dbus-bus.c (init_connections_unlocked): fix default system
7059         bus address to be abstract if we have abstract sockets
7060
7061         * NEWS: update
7062
7063 2003-07-28  Havoc Pennington  <hp@redhat.com>
7064
7065         * bus/messagebus.in: fix to avoid processname/servicename 
7066         confusion, from Michael Kearey
7067         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100965
7068         
7069 2003-07-23  Havoc Pennington  <hp@pobox.com>
7070
7071         * dbus/dbus-message.c (dbus_message_iter_get_named): 
7072         fix from Andy Hanton to remove broken "+1"
7073
7074 2003-07-16  Havoc Pennington  <hp@pobox.com>
7075
7076         * tools/dbus-launch.c (babysit): close stdout/stderr in the
7077         babysitter process, as suggested by Thomas Leonard, so 
7078         an "eval `dbus-launch --exit-with-session`" will actually 
7079         return
7080
7081 2003-07-16  Havoc Pennington  <hp@pobox.com>
7082
7083         * configure.in: print out EXPANDED_* variables in the summary at
7084         the end; clean up the code that computes EXPANDED_ variables and
7085         get the ones using exec_prefix right. Should make things work
7086         when you build without --prefix
7087
7088 2003-06-29  Havoc Pennington  <hp@pobox.com>
7089
7090         * mono/Test.cs (class Test): fire up a main loop and run it
7091
7092         * mono/DBus.cs (DBus): don't g_thread_init since it can only be
7093         done once, the app has to do it
7094
7095 2003-06-26  Havoc Pennington  <hp@pobox.com>
7096
7097         * mono/Connection.cs: set up connection with the glib main loop
7098
7099 2003-07-01  Havoc Pennington  <hp@redhat.com>
7100
7101         * doc/dbus-specification.sgml: clarify the format of a type code,
7102         change suggested by Jim Blandy
7103
7104 2003-06-29  Miloslav Trmac  <mitr@volny.cz>
7105
7106         * doc/Makefile.am:
7107         * tools/Makefile.am: Don't assume srcdir == builddir.
7108
7109         * dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
7110         the allocated block.
7111         (_dbus_memory_test): New function.
7112         * dbus/dbus-test.h: Add _dbus_memory_test ().
7113         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.
7114
7115         * dbus/dbus-message.c (decode_header_data): Use %.4s instead
7116         of %c%c%c%c.
7117         (dbus_message_new): Remove obsolete @todo.
7118
7119         * dbus/dbus-marshal.c (_dbus_marshal_set_int64)
7120         (_dbus_marshal_set_uint64): Fix comment.
7121
7122         * dbus/dbus-message.c (append_int_field, append_uint_field): Don't
7123         hardcode FIELD_REPLY_SERIAL.
7124
7125         * dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
7126         (_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p
7127
7128         * configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
7129         and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used
7130
7131 2003-06-24  Havoc Pennington  <hp@pobox.com>
7132
7133         * mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)
7134
7135 2003-06-23  Anders Carlsson  <andersca@codefactory.se>
7136
7137         * configure.in:
7138         * gcj/.cvsignore:
7139         * gcj/Hello.java:
7140         * gcj/Makefile.am:
7141         * gcj/TestMessage.java: (TestMessage), (TestMessage.main):
7142         * gcj/org/.cvsignore:
7143         * gcj/org/Makefile.am:
7144         * gcj/org/freedesktop/.cvsignore:
7145         * gcj/org/freedesktop/Makefile.am:
7146         * gcj/org/freedesktop/dbus/.cvsignore:
7147         * gcj/org/freedesktop/dbus/Makefile.am:
7148         * gcj/org/freedesktop/dbus/Message.java: (Message),
7149         (Message.Message):
7150         * gcj/org/freedesktop/dbus/natMessage.cc:
7151         Fix the build system.
7152
7153 2003-06-22  Havoc Pennington  <hp@pobox.com>
7154
7155         * mono/Connection.cs: add more bindings
7156
7157         * dbus/dbus-threads.c (dbus_threads_init): allow calling this
7158         more than once.
7159
7160 2003-06-22  Havoc Pennington  <hp@pobox.com>
7161
7162         * mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
7163         Start wrapping more stuff.
7164
7165 2003-06-22  Havoc Pennington  <hp@pobox.com>
7166
7167         * mono/Message.cs: implement Message.Wrap() that ensures we only
7168         have a single C# wrapper per DBusMessage, assuming it works which
7169         it probably doesn't.
7170
7171         * dbus/dbus-message.c (dbus_message_allocate_data_slot): new
7172         (dbus_message_free_data_slot): new
7173         (dbus_message_set_data): new
7174         (dbus_message_get_data): new
7175
7176 2003-06-22  Havoc Pennington  <hp@pobox.com>
7177
7178         * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
7179         (_dbus_data_slot_allocator_alloc): rework these to keep a
7180         reference count on each slot and automatically manage a global
7181         slot ID variable passed in by address
7182
7183         * bus/bus.c: convert to new dataslot API
7184
7185         * dbus/dbus-bus.c: convert to new dataslot API
7186
7187         * dbus/dbus-connection.c: convert to new dataslot API
7188
7189         * dbus/dbus-server.c: convert to new dataslot API
7190
7191         * glib/dbus-gmain.c: ditto
7192
7193         * bus/test.c: ditto
7194
7195         * bus/connection.c: ditto
7196
7197 2003-06-22  Anders Carlsson  <andersca@codefactory.se>
7198
7199         * configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
7200         after the gcj checks so that the correct configuration tags
7201         will be added to libtool.
7202
7203         * dbus-glib-1.pc.in: No need to specify any includes since
7204         dbus-1.pc.in has those.
7205
7206 2003-06-22  Havoc Pennington  <hp@pobox.com>
7207
7208         * mono/*, gcj/*, configure.in, Makefile.am:
7209         Check in makefiles and subdirs for mono and gcj bindings.
7210         Neither binding actually exists, just trying to get through
7211         all the build and other boring bits.
7212
7213 2003-06-21  Philip Blundell  <philb@gnu.org>
7214
7215         * tools/dbus-monitor.1: Updated.
7216
7217         * tools/dbus-send.1: Likewise.
7218
7219 2003-06-20  Anders Carlsson  <andersca@codefactory.se>
7220
7221         * dbus/dbus-transport-unix.c (unix_handle_watch): Check
7222         for hangup and error after checking read so we won't discard
7223         pending data if both hangup and read are set.
7224
7225 2003-06-19  Philip Blundell  <philb@gnu.org>
7226
7227         * tools/dbus-print-message.c (print_message): Handle BOOLEAN.
7228
7229         * tools/dbus-send.c: Accept both --system and --session.
7230
7231         * tools/dbus-monitor.c: Same here.
7232
7233 2003-06-19  Anders Carlsson  <andersca@codefactory.se>
7234
7235         * glib/dbus-glib.h: Fix so that dbus-glib.h can be used
7236         from C++ (Patch by Miloslav Trmac).
7237
7238 2003-06-15  Joe Shaw  <joe@assbarn.com>
7239
7240         * configure.in: Check for socklen_t.
7241
7242         * dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.
7243
7244         * test/test-segfault.c: Add #include <sys/time.h>
7245
7246         * tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
7247         dbus-launch needs it.
7248
7249 2003-06-09  Havoc Pennington  <hp@redhat.com>
7250
7251         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
7252         SUN_LEN, it breaks abstract socket usage
7253
7254         * dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
7255         starts of lines.
7256
7257 2003-06-04  Havoc Pennington  <hp@pobox.com>
7258
7259         * dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
7260         using unix:abstract=/foo, and when listening in a tmpdir
7261         i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.
7262
7263         * dbus/dbus-transport.c (_dbus_transport_open): support
7264         unix:abstract=/foo
7265
7266         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
7267         support abstract sockets
7268
7269         * dbus/dbus-transport-unix.c
7270         (_dbus_transport_new_for_domain_socket): support abstract sockets
7271
7272         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
7273         toggle as an argument, implement abstract namespace support
7274         (_dbus_listen_unix_socket): ditto
7275
7276         * configure.in: add --enable-abstract-sockets and implement
7277         a configure check for autodetection of the right value.
7278
7279 2003-06-01  Havoc Pennington  <hp@pobox.com>
7280
7281         * tools/dbus-cleanup-sockets.c: add utility to clean up sockets
7282         in /tmp (though on Linux this will end up being useless,
7283         when we add abstract namespace support)
7284
7285         * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to
7286         subst'ing it
7287
7288 2003-05-28  Colin Walters  <walters@verbum.org>
7289
7290         * tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).
7291
7292 2003-05-18  Anders Carlsson  <andersca@codefactory.se>
7293
7294         * dbus/dbus-message.c (dbus_message_new): Remove @todo.
7295
7296 2003-05-17  Colin Walters  <walters@gnu.org>
7297
7298         * tools/dbus-send.c: Don't exit with an error code if --help was
7299         passed.  Default to using the session bus instead of the system
7300         one.
7301
7302         * tools/dbus-launch.c: Ditto.
7303
7304         * tools/dbus-monitor.c: Ditto.
7305
7306         * tools/dbus-send.1: Update with new arguments.
7307
7308         * tools/dbus-launch.c: Emit code to export variables.  New
7309         arguments -s and -c to specify shell syntax, and a bit of code to
7310         autodetect syntax.  Also, allow specifying a program to run.
7311
7312         * tools/dbus-launch.1: Update with new arguments.
7313
7314         * tools/dbus-send.1: Ditto.
7315
7316         * tools/dbus-monitor.1: Ditto.
7317
7318 2003-05-17  Havoc Pennington  <hp@pobox.com>
7319
7320         * bus/config-parser.c (merge_included): merge in policies from
7321         child configuration file.
7322
7323         * bus/policy.c (bus_policy_merge): function to merge two policies
7324         together
7325
7326 2003-05-16  Havoc Pennington  <hp@redhat.com>
7327
7328         * dbus/dbus-connection.c: disable verbose lock spew
7329
7330         * tools/dbus-send.c: add --print-reply command line option
7331
7332         * tools/dbus-print-message.h (print_message): new util function
7333         shared by dbus-send and dbus-monitor
7334
7335         * tools/dbus-monitor.c (handler_func): exit on disconnect
7336
7337         * dbus/dbus-transport-unix.c (do_reading): if the transport is
7338         disconnected, don't try to use the read_watch
7339
7340         * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
7341         so we can find this bug more easily
7342
7343 2003-05-16  Havoc Pennington  <hp@redhat.com>
7344
7345         * bus/policy.c (free_rule_list_func): avoid a crash when passed
7346         NULL as DBusHashTable is annoyingly likely to do.
7347
7348 2003-05-16  Colin Walters  <walters@verbum.org>
7349
7350         * tools/dbus-monitor.c: Add --session argument and usage()
7351         function.
7352
7353         * tools/dbus-monitor.1: Update with new --session arg.
7354
7355         * bus/Makefile.am (install-data-hook): Create
7356         $(libdir)/dbus-1.0/services so that the session bus is happy.
7357
7358 2003-05-15  Havoc Pennington  <hp@redhat.com>
7359
7360         * dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
7361         on non-x86. ifdef's are evil.
7362
7363 2003-05-15  Havoc Pennington  <hp@redhat.com>
7364
7365         * configure.in: 0.11
7366
7367         * NEWS: update
7368
7369         * bus/Makefile.am (initddir): apparently we are supposed to put
7370         init scripts in /etc/rc.d/init.d not /etc/init.d
7371
7372         * bus/Makefile.am: remove the "you must --enable-tests to make
7373         check" as it broke distcheck
7374
7375         * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d
7376
7377 2003-05-13  James Willcox  <jwillcox@gnome.org>
7378
7379         * configure.in:
7380         * bus/activation.c: (bus_activation_service_created),
7381         (bus_activation_activate_service):
7382         * bus/driver.c: (bus_driver_send_service_deleted),
7383         (bus_driver_send_service_created), (bus_driver_send_service_lost),
7384         (bus_driver_send_service_acquired),
7385         (bus_driver_send_welcome_message),
7386         (bus_driver_handle_list_services):
7387         * bus/session.conf.in:
7388         * dbus/dbus-bus.c: (dbus_bus_acquire_service),
7389         (dbus_bus_service_exists), (dbus_bus_activate_service):
7390         * dbus/dbus-bus.h:
7391
7392         Add some convenience API which lets you activate a service, and did a
7393         bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
7394         and dbus_message_get_args()
7395
7396 2003-05-11  Havoc Pennington  <hp@pobox.com>
7397
7398         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid
7399         calling _dbus_marshal_validate_arg() for every byte in a byte
7400         array, etc.
7401
7402         * dbus/dbus-message-handler.c: use atomic reference counting to
7403         reduce number of locks slightly; the global lock in here sucks
7404
7405         * dbus/dbus-connection.c
7406         (_dbus_connection_update_dispatch_status_and_unlock): variant of
7407         update_dispatch_status that can be called with lock held; then use
7408         in a couple places to reduce locking/unlocking
7409         (dbus_connection_send): hold the lock over the whole function
7410         instead of acquiring it twice.
7411
7412         * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM
7413
7414         * bus/connection.c (bus_connections_setup_connection): fix access
7415         to already-freed memory.
7416
7417         * dbus/dbus-connection.c: keep a little cache of linked list
7418         nodes, to avoid using the global linked list alloc lock in the
7419         normal send-message case. Instead we just use the connection lock
7420         that we already have to take.
7421
7422         * dbus/dbus-list.c (_dbus_list_find_last): new function
7423
7424         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec):
7425         change to use a struct for the atomic type; fix docs,
7426         they return value before increment, not after increment.
7427
7428         * dbus/dbus-string.c (_dbus_string_append_4_aligned)
7429         (_dbus_string_append_8_aligned): new functions to try to
7430         microoptimize this operation.
7431         (reallocate_for_length): break this out of set_length(), to
7432         improve profile info, and also so we can consider inlining the
7433         set_length() part.
7434
7435         * dbus/dbus-message.c (dbus_message_new_empty_header): init data
7436         strings with some preallocation, cuts down on our calls to realloc
7437         a fair bit. Though if we can get the "move entire string to empty
7438         string" optimization below to kick in here, it would be better.
7439
7440         * dbus/dbus-string.c (_dbus_string_move): just call
7441         _dbus_string_move_len
7442         (_dbus_string_move_len): add a special case for moving
7443         an entire string into an empty string; we can just
7444         swap the string data instead of doing any reallocs.
7445         (_dbus_string_init_preallocated): new function
7446
7447 2003-05-11  Havoc Pennington  <hp@pobox.com>
7448
7449         Write a "test-profile" that does echo client-server with threads;
7450         profile reveals lock contention, memcpy/realloc of buffers, and
7451         UTF-8 validation as hot spots. 20% of lock contention eliminated
7452         with dbus_atomic_inc/dec implementation on x86.  Much remaining
7453         contention is global mempool locks for GList and DBusList.
7454
7455         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add
7456         x86 implementation
7457
7458         * dbus/dbus-connection.c (struct DBusConnection): use
7459         dbus_atomic_t for the reference count
7460
7461         * dbus/dbus-message.c (struct DBusMessage): declare
7462         dbus_atomic_t values as volatile
7463
7464         * configure.in: code to detect ability to use atomic integer
7465         operations in assembly, from GLib patch
7466
7467         * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every
7468         time, tired of it being wrong in threads and forked processes
7469
7470         * glib/test-profile.c: a little program to bounce messages back
7471         and forth between threads and eat CPU
7472
7473         * dbus/dbus-connection.c: add debug spew macros for debugging
7474         thread locks; include config.h at top; fix deadlock in
7475         dbus_connection_flush()
7476
7477 2003-05-08  Havoc Pennington  <hp@pobox.com>
7478
7479         * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
7480         data from getting written, and there wasn't a good reason to
7481         use _exit really.
7482
7483         * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
7484         dbus_verbose lines in test coverage
7485         (main): add list of functions sorted by # of untested blocks
7486         to the coverage report
7487
7488         * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS
7489
7490         * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage
7491
7492         * dbus/dbus-message-handler.c (_dbus_message_handler_test):
7493         extend test coverage
7494
7495         * test/data/auth/cancel.auth-script: test canceling an
7496         authentication
7497
7498         * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
7499         aren't used. in CVS history if we end up needing them.
7500
7501 2003-05-04  Havoc Pennington  <hp@pobox.com>
7502
7503         * dbus/dbus-message-handler.c (_dbus_message_handler_test): add
7504         unit test
7505
7506         * dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
7507         function, which assumed length was in # of strings, not bytes
7508
7509         * dbus/dbus-message.c (_dbus_message_test): add tests for some
7510         missing coverage
7511
7512         * dbus/dbus-connection.c
7513         (_dbus_connection_queue_received_message): disable function for
7514         now, we are only using it in test mode
7515
7516         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
7517         remove a mistaken FIXME
7518
7519 2003-05-04  Havoc Pennington  <hp@pobox.com>
7520
7521         * dbus/dbus-connection.c (dbus_connection_preallocate_send):
7522         unlock mutex on successful return, patch from Anders Gustafsson
7523
7524 2003-05-04  Havoc Pennington  <hp@pobox.com>
7525
7526         * dbus-glib-1.pc.in (Requires): fix dependencies, from
7527         Anders Gustafsson
7528
7529 2003-05-04  Havoc Pennington  <hp@pobox.com>
7530
7531         * tools/dbus-launch.c: implement
7532
7533         * bus/main.c (main), bus/bus.c (bus_context_new):
7534         implement --print-pid and --fork
7535
7536 2003-05-03  Havoc Pennington  <hp@redhat.com>
7537
7538         * dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
7539         the address had no value, and add to test suite. Fix and
7540         regression test from Miloslav Trmac
7541
7542 2003-05-03  Havoc Pennington  <hp@pobox.com>
7543
7544         * dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
7545         watch is invalid when handled
7546
7547         * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add
7548         dbus-launch utility to launch the bus from a shell script.  Didn't
7549         actually implement dbus-launch yet, it's just a placeholder still.
7550
7551 2003-05-03  Havoc Pennington  <hp@pobox.com>
7552
7553         * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
7554         daemon; also documents daemon config file, so replaces
7555         doc/config-file.txt. Corrected some stuff from config-file.txt in
7556         the process of moving it.
7557
7558 2003-05-03  Havoc Pennington  <hp@pobox.com>
7559
7560         * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
7561         add some man pages
7562
7563 2003-05-03  Colin Walters  <walters@verbum.org>
7564
7565         * dbus/dbus-sysdeps.c (fill_user_info): Test against
7566         DBUS_UID_UNSET to determine whether to do a uid lookup or not.
7567
7568         * Makefile.am: Update to use new .pc versioning scheme.
7569
7570 2003-05-02  Havoc Pennington  <hp@redhat.com>
7571
7572         * bus/system.conf.in: allow send/receive to/from message bus
7573         service
7574
7575 2003-04-30  Havoc Pennington  <hp@redhat.com>
7576
7577         * configure.in: print a note when building with unit tests and
7578         without assertions
7579
7580 2003-04-30  Havoc Pennington  <hp@redhat.com>
7581
7582         * Makefile.am: add a check-local that complains if you didn't
7583         configure with --enable-tests
7584
7585 2003-04-29  Havoc Pennington  <hp@redhat.com>
7586
7587         * glib/dbus-gmain.c: docs cleanups
7588
7589         * dbus/dbus-types.h: add docs on int64 types
7590
7591         * dbus/dbus-memory.c: fix docs to avoid putting private API in
7592         public API docs section
7593
7594 2003-04-29  Havoc Pennington  <hp@redhat.com>
7595
7596         * dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
7597         dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
7598         parallel install API version, not with the D-BUS package version.
7599
7600         * HACKING: move some of README over here
7601
7602         * README: updates, and document API/ABI policy
7603
7604         * configure.in: reindentation
7605
7606 2003-04-29  Havoc Pennington  <hp@redhat.com>
7607
7608         * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE
7609         to use this library" to be sure people have the right
7610         expectations.
7611
7612 2003-04-28  Havoc Pennington  <hp@redhat.com>
7613
7614         * configure.in: add --enable-docs which by default is auto yes if
7615         doxygen and db2html found, no otherwise; but can be forced on/off
7616
7617         * doc/Makefile.am: conditionalize whether to build docs on
7618         --enable-docs
7619
7620 2003-04-28  Havoc Pennington  <hp@redhat.com>
7621
7622         * configure.in: 0.10
7623
7624         * NEWS: update
7625
7626         * bus/system.conf.in: add <includedir>system.d</includedir>
7627
7628         * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when
7629         username was provided but not uid
7630
7631         * bus/config-parser.c (struct BusConfigParser): keep track of
7632         whether the parser is toplevel or was included; change some
7633         of the error handling if it's included.
7634
7635 2003-04-27  Havoc Pennington  <hp@pobox.com>
7636
7637         Unbreak my code...
7638
7639         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
7640         report correct status if we finish processing authentication
7641         inside this function.
7642
7643         * bus/activation.c (try_send_activation_failure): use
7644         bus_transaction_send_error_reply
7645
7646         * bus/connection.c (bus_connection_get_groups): return an error
7647         explaining the problem
7648
7649         * bus/bus.c (bus_context_check_security_policy): implement
7650         restriction here that inactive connections can only send the
7651         hello message. Also, allow bus driver to send anything to
7652         any recipient.
7653
7654         * bus/connection.c (bus_connection_complete): create the
7655         BusClientPolicy here instead of on-demand.
7656         (bus_connection_get_policy): don't return an error
7657
7658         * dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
7659         sender field in message being replied to
7660
7661         * bus/bus.c (bus_context_check_security_policy): fix silly typo
7662         causing it to return FALSE always
7663
7664         * bus/policy.c (bus_client_policy_check_can_send): fix bug where
7665         we checked sender rather than destination
7666
7667 2003-04-25  Havoc Pennington  <hp@redhat.com>
7668
7669         test suite is slightly hosed at the moment, will fix soon
7670
7671         * bus/connection.c (bus_connections_expire_incomplete): fix to
7672         properly disable the timeout when required
7673         (bus_connection_set_name): check whether we can remove incomplete
7674         connections timeout after we complete each connection.
7675
7676         * dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
7677         probably still broken.
7678
7679         * bus/services.c (bus_registry_acquire_service): implement max
7680         number of services owned, and honor allow/deny rules on which
7681         services a connection can own.
7682
7683         * bus/connection.c (bus_connection_get_policy): report errors here
7684
7685         * bus/activation.c: implement limit on number of pending
7686         activations
7687
7688 2003-04-25  Havoc Pennington  <hp@redhat.com>
7689
7690         * dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
7691         where we used >= 0 instead of != DBUS_UID_UNSET.
7692
7693 2003-04-25  Havoc Pennington  <hp@redhat.com>
7694
7695         * glib/dbus-gmain.c (remove_watch): fix for a crash when watches
7696         were toggled without add/remove, fix from Anders Gustafsson
7697
7698 2003-04-24  Havoc Pennington  <hp@redhat.com>
7699
7700         * test/data/valid-config-files/basic.conf: add <limit> tags to
7701         this test
7702
7703         * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
7704         <limit> tag in configuration file.
7705
7706 2003-04-24  Havoc Pennington  <hp@redhat.com>
7707
7708         * bus/dispatch.c: somehow missed some name_is
7709
7710         * dbus/dbus-timeout.c (_dbus_timeout_set_enabled)
7711         (_dbus_timeout_set_interval): new
7712
7713         * bus/connection.c (bus_connections_setup_connection): record time
7714         when each connection is first set up, and expire them after the
7715         auth timeout passes.
7716
7717 2003-04-24  Havoc Pennington  <hp@redhat.com>
7718
7719         * dbus/dbus-message.c (dbus_message_name_is): rename
7720         (dbus_message_service_is): rename
7721         (dbus_message_sender_is): rename
7722         (dbus_message_get_service): rename
7723
7724 2003-04-24  Havoc Pennington  <hp@redhat.com>
7725
7726         * configure.in: add --enable-checks
7727
7728         * dbus/dbus-message.c (dbus_message_new): reverse name/service arguments
7729
7730         * dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
7731         to use thread locks.
7732         (_dbus_connection_handler_destroyed_locked): move some private
7733         functions into proper docs group
7734
7735         * dbus/dbus-internals.h: add _dbus_return_if_fail,
7736         _dbus_return_val_if_fail
7737
7738         Throughout: use dbus_return_if_fail
7739
7740 2003-04-23  James Willcox  <jwillcox@gnome.org>
7741
7742         * glib/dbus-glib.h:
7743         * glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
7744         (dbus_connection_setup_with_g_main),
7745         (dbus_server_setup_with_g_main):
7746         * glib/test-dbus-glib.c: (main):
7747         * glib/test-thread-client.c: (main):
7748         * glib/test-thread-server.c: (new_connection_callback), (main):
7749         * tools/dbus-monitor.c: (main):
7750
7751         Added a GMainContext argument to dbus_connection_setup_with_g_main()
7752         and dbus_server_setup_with_g_main().
7753
7754 2003-04-20  Havoc Pennington  <hp@pobox.com>
7755
7756         * doc/dbus-specification.sgml: document the restrictions on
7757         message and service names
7758
7759 2003-04-22  Havoc Pennington  <hp@redhat.com>
7760
7761         * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
7762         support, and do some code cleanups to share more code and
7763         speed up array marshal/demarshal.
7764
7765         * dbus-1.0.pc.in (Cflags): put libdir include file in cflags
7766
7767         * configure.in: generate dbus-arch-deps.h
7768
7769         * dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
7770         64-bit typecodes
7771
7772 2003-04-22  Havoc Pennington  <hp@redhat.com>
7773
7774         * test/data/valid-messages/opposite-endian.message: fix test
7775         to use proper type for rply field
7776
7777         * test/data/invalid-messages: add tests for below validation
7778
7779         * dbus/dbus-message.c (decode_header_data): validate field types,
7780         and validate that named fields are valid names
7781         (decode_name_field): consider messages in the
7782         org.freedesktop.Local. namespace to be invalid.
7783
7784         * dbus/dbus-string.c (_dbus_string_validate_name): new
7785
7786 2003-04-19  Havoc Pennington  <hp@pobox.com>
7787
7788         * bus/driver.c (bus_driver_handle_hello): check limits and
7789         return an error if they are exceeded.
7790
7791         * bus/connection.c: maintain separate lists of active and inactive
7792         connections, and a count of each. Maintain count of completed
7793         connections per user. Implement code to check connection limits.
7794
7795         * dbus/dbus-list.c (_dbus_list_unlink): export
7796
7797         * bus/bus.c (bus_context_check_security_policy): enforce a maximum
7798         number of bytes in the message queue for a connection
7799
7800 2003-04-18  Havoc Pennington  <hp@pobox.com>
7801
7802         * dbus/dbus-auth.c (record_mechanisms): memleak fixes
7803
7804         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
7805         memleaks
7806
7807         * dbus/dbus-keyring.c (add_new_key): fix a memleak, and
7808         on realloc be sure to update the pointer in the keyring
7809
7810         * dbus/dbus-string.c (_dbus_string_zero): compensate for align
7811         offset to avoid writing to unallocated memory
7812
7813         * dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
7814         try the next mechanism, so we properly handle OOM
7815
7816         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
7817         on OOM.
7818         (_dbus_keyring_new): fix OOM bug
7819         (_dbus_keyring_new_homedir): always set error; impose a maximum
7820         number of keys we'll load from the file, mostly to speed up the
7821         test suite and make its OOM checks more useful, but also for
7822         general sanity.
7823
7824         * dbus/dbus-auth.c (process_error_server): reject authentication
7825         if we get an error from the client
7826         (process_cancel): on cancel, send REJECTED, per the spec
7827         (process_error_client): send CANCEL if we get an error from the
7828         server.
7829
7830 2003-04-18  Havoc Pennington  <hp@pobox.com>
7831
7832         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
7833         debug spew
7834
7835         * dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
7836         handling problem
7837
7838         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
7839         about DBUS_TEST_HOMEDIR once
7840
7841         * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in
7842         the environment
7843
7844         * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1
7845         config file so we test the right thing
7846
7847         Throughout: assorted docs improvements
7848
7849 2003-04-18  Havoc Pennington  <hp@pobox.com>
7850
7851         * glib/dbus-gmain.c: adapt to watch changes
7852
7853         * bus/bus.c, bus/activation.c, etc.: adjust to watch changes
7854
7855         * dbus/dbus-server.h: remove dbus_server_handle_watch
7856
7857         * dbus/dbus-connection.h: remove dbus_connection_handle_watch
7858
7859         * dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
7860         like DBusTimeout, so we don't need dbus_connection_handle_watch
7861         etc.
7862
7863 2003-04-17  Havoc Pennington  <hp@redhat.com>
7864
7865         * dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
7866         database usage so it all goes via the DBusUserDatabase cache.
7867
7868 2003-04-17  Havoc Pennington  <hp@redhat.com>
7869
7870         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
7871         there was an OOM watch we skipped, we always return TRUE so we
7872         iterate again to have a look at it again. Fixes test suite hang.
7873         Code rearrangement also lets us lose some memset and only iterate
7874         over callbacks once.
7875
7876         * bus/driver.c (bus_driver_handle_message): sense of test for
7877         reply was backward
7878
7879 2003-04-16  Havoc Pennington  <hp@pobox.com>
7880
7881         * doc/dbus-specification.sgml: make spec say serials are unsigned
7882
7883         * dbus/dbus-message.h: change message serials to unsigned
7884
7885         * dbus/dbus-connection.c: adapt to message serials being unsigned
7886
7887 2003-04-15  Havoc Pennington  <hp@pobox.com>
7888
7889         * bus/bus.c: create and keep around a shared DBusUserDatabase
7890         object.
7891
7892         * bus/connection.c (bus_connection_get_groups): don't cache
7893         groups for user in the connection object, since user database
7894         object now does that.
7895
7896 2003-04-16  Havoc Pennington  <hp@redhat.com>
7897
7898         * dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
7899         list of size counters
7900         (_dbus_message_loader_putback_message_link): put back a popped link
7901
7902         * dbus/dbus-connection.c
7903         (dbus_connection_set_max_live_messages_size): rename
7904         max_received_size
7905         (dbus_connection_get_outgoing_size): get size of outgoing
7906         queue
7907         (_dbus_connection_set_connection_counter): remove this cruft
7908
7909 2003-04-14  Havoc Pennington  <hp@redhat.com>
7910
7911         * dbus/dbus-userdb.c: user database abstraction, mostly to get
7912         caching, but at some point we might want to be able to use a
7913         different database.
7914
7915         * bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
7916         SHA1 conf file to test the sha1 auth mechanism, since the regular
7917         test always uses EXTERNAL when available.
7918
7919         * configure.in,
7920         test/data/valid-config-files/debug-allow-all-sha1.conf.in:
7921         add conf file that requires use of sha1 auth
7922
7923 2003-04-13  Havoc Pennington  <hp@pobox.com>
7924
7925         * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs
7926         from Philip Blundell to send messages and monitor them.
7927
7928 2003-04-13  Havoc Pennington  <hp@pobox.com>
7929
7930         * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
7931         callbacks
7932
7933         * test/data/valid-config-files/debug-allow-all.conf.in: allow all
7934         users
7935
7936         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
7937         fix to only recover unused bytes if we're already authenticated
7938         (_dbus_transport_get_is_authenticated): fix to still mark us
7939         authenticated if there are unused bytes.
7940
7941         * bus/dispatch.c: implement security policy checking
7942
7943         * bus/connection.c (bus_transaction_send_from_driver): new
7944
7945         * bus/bus.c (bus_context_check_security_policy): new
7946
7947         * bus/dispatch.c (send_service_nonexistent_error): delete this,
7948         now we just set the DBusError and it gets converted to an error
7949         reply.
7950
7951         * bus/connection.c (allow_user_function): enable code using actual
7952         data from the config file
7953
7954         * bus/policy.c (list_allows_user): handle wildcard rules for
7955         user/group connection perms
7956
7957 2003-04-13  Havoc Pennington  <hp@pobox.com>
7958
7959         * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules
7960
7961         * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function
7962
7963         * bus/policy.c (bus_policy_append_mandatory_rule)
7964         (bus_policy_append_default_rule, bus_policy_append_user_rule)
7965         (bus_policy_append_group_rule): new functions
7966
7967 2003-04-12  Havoc Pennington  <hp@pobox.com>
7968
7969         * bus/config-parser.c (bus_config_parser_new): fix a memleak
7970
7971         * dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
7972         the pid/gid/uid, just for paranoia.
7973
7974         * test/break-loader.c (randomly_do_n_things): find a byte
7975         containing a type code, and randomly change it to a different
7976         type code.
7977
7978 2003-04-12  Havoc Pennington  <hp@pobox.com>
7979
7980         * bus/policy.h: change BusPolicy to be the thing from the config
7981         file, and rename old BusPolicy to BusClientPolicy
7982
7983         * bus/bus.c, bus/connection.c, bus/config-parser.c: change to
7984         match change in how policy works
7985
7986         * dbus/dbus-internals.h: mark assert_not_reached as
7987         __attribute((noreturn))__
7988
7989 2003-04-11  Havoc Pennington  <hp@redhat.com>
7990
7991         * doc/dbus-specification.sgml: fix a spot with the wrong name for
7992         the broadcast service. Use boolean return for ServiceExists.
7993
7994 2003-04-11  Havoc Pennington  <hp@redhat.com>
7995
7996         * configure.in: add another directory to look for qt in.
7997
7998 2003-04-11  Havoc Pennington  <hp@redhat.com>
7999
8000         * AUTHORS: add Colin Walters
8001
8002 2003-04-11  Havoc Pennington  <hp@redhat.com>
8003
8004         * NEWS: update
8005
8006         * configure.in: 0.9
8007
8008 2003-04-11  Havoc Pennington  <hp@redhat.com>
8009
8010         * bus/messagebus.in: remove pid file when stopping the
8011         message bus, since the bus won't have privileges to remove it
8012         itself.
8013
8014 2003-04-11  Havoc Pennington  <hp@redhat.com>
8015
8016         * bus/bus.c (bus_context_new): move credentials change after
8017         creating pidfile
8018
8019 2003-04-11  Havoc Pennington  <hp@pobox.com>
8020
8021         * test/decode-gcov.c: add "below average functions" to the
8022         coverage report, and change how some of the code works.
8023
8024         * bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
8025         not in the coverage stats.
8026
8027         * test/test-service.c (main): use _dbus_verbose not fprintf in a
8028         couple places so running the test suite doesn't result in megaspam.
8029
8030 2003-04-11  Havoc Pennington  <hp@pobox.com>
8031
8032         * bus/dispatch.c (check_existent_service_activation): accept a no
8033         memory error in a place we didn't before
8034
8035         * bus/test.c (bus_test_run_everything): remove hacky "do it twice
8036         in case the first one failed," since the test suite is less
8037         broken now.
8038
8039 2003-04-10  Havoc Pennington  <hp@pobox.com>
8040
8041         * bus/dispatch.c (check_segfault_service_activation): add test
8042         for launching an executable that just crashes.
8043
8044         * test/test-segfault.c (main): try setting coredumpsize to 0 so we
8045         don't leave a million cores. We'll see how portable this is.
8046
8047 2003-04-10  Havoc Pennington  <hp@pobox.com>
8048
8049         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
8050         the possible parent failures before we fork, so that we don't
8051         fail to create a babysitter after creating the child.
8052
8053         * bus/activation.c (bus_activation_activate_service): kill child
8054         if we don't successfully complete the activation.
8055
8056 2003-04-10  Havoc Pennington  <hp@redhat.com>
8057
8058         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
8059         the connection if it's disconnected
8060
8061         * bus/activation.c (bus_activation_service_created): use new
8062         transaction features to roll back removal of pending activation if
8063         we don't successfully create the service after all. Don't remove
8064         pending activation if the function fails.
8065
8066         * dbus/dbus-list.c (_dbus_list_insert_before_link)
8067         (_dbus_list_insert_after_link): new code to facilitate
8068         services.c fixes
8069
8070         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
8071         new functionality, so we can preallocate the ability to insert
8072         into a hash table.
8073
8074         * bus/connection.c (bus_transaction_add_cancel_hook): new function
8075         allowing us to put custom hooks in a transaction to be used for
8076         cancelling said transaction
8077
8078         * doc/dbus-specification.sgml: add some discussion of secondary
8079         service owners, and disallow zero-length service names
8080
8081         * bus/services.c (bus_registry_acquire_service): new function,
8082         splits out part of bus_driver_handle_acquire_service() and fixes
8083         a bug where we didn't remove the service doing the acquiring
8084         from the secondary queue if we failed to remove the current owner
8085         from the front of the queue.
8086
8087 2003-04-10  Alexander Larsson  <alexl@redhat.com>
8088
8089         * doc/dbus-specification.sgml:
8090         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
8091
8092 2003-04-10  Alexander Larsson  <alexl@redhat.com>
8093
8094         * bus/.cvsignore:
8095         * glib/.cvsignore:
8096         * test/.cvsignore:
8097         Added files to cvsignore
8098
8099         * dbus/dbus-message.h:
8100         * dbus/dbus-message.c: (dbus_message_iter_get_named):
8101         Make get_named() take two out argument and return a boolean.
8102         (dbus_message_iter_get_args_valist):
8103         Update usage of get_named().
8104         (dbus_message_iter_append_byte):
8105         Fix typo
8106         (dbus_message_iter_append_named)
8107         Fix typo
8108         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
8109         More tests.
8110
8111 2003-04-10  Alexander Larsson  <alexl@redhat.com>
8112
8113         * dbus/dbus-marshal.[ch]:
8114         Add array_type_pos argument to _dbus_marshal_validate_arg.
8115         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
8116
8117         * dbus/dbus-message.[ch]:
8118         Multi-dimensional arrays have full type specification in the
8119         outermost array. Iter code re-arranged to handle this.
8120         Added some more iter tests.
8121
8122         * doc/dbus-specification.sgml:
8123         Add me to authors.
8124         Remove old FIXME.
8125         Update new array encoding description.
8126         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
8127
8128         * test/data/invalid-messages/array-with-mixed-types.message:
8129         * test/data/valid-messages/array-of-array-of-uint32.message:
8130         Change to the new array format.
8131
8132         * test/data/invalid-messages/too-short-dict.message:
8133         Fix bug in test.
8134
8135         * test/data/valid-messages/recursive-types.message:
8136         Fix up and extend test.
8137
8138 2003-04-10  Havoc Pennington  <hp@pobox.com>
8139
8140         * bus/dispatch.c: lots of fixes
8141
8142         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
8143         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
8144         that was crack, broke the test service.
8145
8146         * dbus/dbus-transport.c (_dbus_transport_open): fix error
8147         handling to avoid piling up errors if we get a failure on the
8148         first address.
8149
8150         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
8151         pid in assertion failures.
8152
8153         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
8154         to some fixed size of file descriptor array. Don't return TRUE
8155         anytime a timeout exists, that led to lots of busy loop silliness
8156         in the tests.
8157
8158 2003-04-09  Havoc Pennington  <hp@redhat.com>
8159
8160         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
8161         I'd checked this in earlier but hadn't.
8162
8163 2003-04-09  Havoc Pennington  <hp@redhat.com>
8164
8165         * bus/dispatch.c (bus_dispatch_test): get a bit further through
8166         the activation test (man this is getting old!)
8167
8168 2003-04-09  Havoc Pennington  <hp@redhat.com>
8169
8170         * test/test-utils.c: use dispatch status function to fix this up
8171
8172         * bus/connection.c (connection_watch_callback): don't dispatch
8173         from here
8174         (connection_timeout_callback): don't dispatch from here
8175         (bus_connections_setup_connection): set the dispatch status function
8176         (bus_connection_disconnected): unset it
8177
8178         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
8179         used to add a connection to be dispatched
8180         (_dbus_loop_iterate): do the dispatching at the end of each
8181         iteration
8182
8183         * dbus/dbus-connection.c
8184         (dbus_connection_set_dispatch_status_function): new function
8185         allowing us to fix up main loop usage
8186         (_dbus_connection_last_unref): free all the various function
8187         user data
8188         (dbus_connection_dispatch): call the DispatchStatusFunction
8189         whenever this function returns
8190         (dbus_connection_handle_watch): call DispatchStatusFunction
8191         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
8192         (reply_handler_timeout): call DispatchStatusFunction
8193         (dbus_connection_flush): call DispatchStatusFunction
8194
8195 2003-04-09  Havoc Pennington  <hp@redhat.com>
8196
8197         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
8198         a memory leak
8199
8200         * bus/dispatch.c (check_service_activated): fix bug in test
8201
8202         * dbus/dbus-mainloop.c (check_timeout): fix this up
8203
8204         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
8205         verbose output so we can sort out output from different processes,
8206         e.g. in the activation case.
8207
8208 2003-04-08  Colin Walters  <walters@gnu.org>
8209
8210         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
8211         the pid file.
8212         (bus_context_new): Set it.
8213         (bus_context_unref): Use it to delete the pid file.
8214
8215 2003-04-08  Havoc Pennington  <hp@redhat.com>
8216
8217         * test/data/invalid-messages/array-with-mixed-types.message:
8218         regression test that fails for the moment
8219
8220         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
8221         tests for convenience
8222
8223         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
8224         array of nil, it broke things.
8225
8226         * test/data/invalid-messages/array-of-nil.message: regression test
8227
8228         * test/data/valid-messages/array-of-array-of-uint32.message:
8229         happened to write this so added it to suite
8230
8231 2003-04-08  Havoc Pennington  <hp@redhat.com>
8232
8233         * bus/driver.c (bus_driver_handle_acquire_service): init
8234         retval/reply before checking name
8235
8236         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
8237         recursion depth argument
8238
8239         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
8240         in the public struct for future extension
8241
8242         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
8243         typo
8244
8245         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
8246         message
8247
8248         * doc/dbus-specification.sgml: fix typo
8249
8250 2003-04-08  Alexander Larsson  <alexl@redhat.com>
8251
8252         Implemented recursive types, named types and new-style iters
8253
8254         * bus/driver.c:
8255         * glib/test-thread-client.c: (thread_func):
8256         * glib/test-thread-server.c: (handle_test_message):
8257         * test/test-service.c: (handle_echo):
8258         Update to new api
8259
8260         * dbus/Makefile.am:
8261         * dbus/dbus-dict.c:
8262         * dbus/dbus-dict.h:
8263         * dbus/dbus.h
8264         Remove DBusDict
8265
8266         * dbus/dbus-internals.c: (_dbus_type_to_string):
8267         Update for new types.
8268
8269         * dbus/dbus-marshal.[ch]:
8270         Implement recursive types and the new marshalling format.
8271         Remove hardcoded dict marshalling.
8272         Marshal named types.
8273
8274         * dbus/dbus-message-builder.c:
8275         Add BYTE_ARRAY.
8276         Remove references to old types
8277
8278         * dbus/dbus-message.[ch]:
8279         New non-refcounted iter API that supports recursive iters.
8280         Use iters for appending, including support for recursive
8281         iters.
8282         Add byte and named type support.
8283         Update everything to new marshalling formats.
8284         Add tests for new API.
8285
8286         * dbus/dbus-protocol.h:
8287         Remove old array types.
8288         Add types: BYTE, ARRAY, DICT, NAMED
8289
8290         * dbus/dbus-string.c:
8291         * dbus/dbus-sysdeps.c:
8292         Make parse_double locale safe.
8293
8294         * dbus/dbus-test-main.c:
8295         Call setlocale.
8296
8297         * dbus/dbus-test.c:
8298         Kill dict test
8299
8300         * doc/dbus-specification.sgml:
8301         Update spec
8302
8303         * test/data/incomplete-messages/missing-body.message:
8304         * test/data/invalid-messages/bad-boolean.message:
8305         * test/data/invalid-messages/bad-boolean-array.message:
8306         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
8307         * test/data/invalid-messages/boolean-has-no-value.message-raw:
8308         * test/data/invalid-messages/too-short-dict.message:
8309         * test/data/valid-messages/dict-simple.message:
8310         * test/data/valid-messages/dict.message:
8311         * test/data/valid-messages/emptiness.message:
8312         * test/data/valid-messages/lots-of-arguments.message:
8313         * test/data/valid-messages/no-padding.message:
8314         * test/data/valid-messages/recursive-types.message:
8315         Add missing NAME fields
8316         Fix up dicts & arrays
8317
8318         * test/data/invalid-messages/dict-with-nil-value.message:
8319         Removed, this is not invalid anymore.
8320
8321         * test/data/valid-messages/recursive-types.message:
8322         Add new test for deeply recursive types.
8323
8324 2003-04-07  Havoc Pennington  <hp@pobox.com>
8325
8326         * bus/driver.c (bus_driver_handle_acquire_service): return an
8327         error if you try to acquire a service that starts with ':'
8328
8329 2003-04-07  Havoc Pennington  <hp@redhat.com>
8330
8331         * doc/dbus-specification.sgml: require that base service names
8332         start with ':' and that the base service is created/deleted
8333         as first and last things a connection does on the bus
8334
8335         * bus/dispatch.c (check_existent_service_activation): lots more
8336         work on the activation test; it doesn't fully pass yet...
8337
8338         * test/test-service.c (main): fix so we don't memleak the
8339         connection to the message bus
8340         (filter_func): accept a message asking us to exit
8341
8342 2003-04-06  Havoc Pennington  <hp@pobox.com>
8343
8344         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
8345         from Colin Walters
8346
8347         * configure.in: fixes to Qt detection from Colin Walters
8348
8349         * doc/Makefile.am: Only remove generated docbook dirs if they
8350         exist, from Colin Walters
8351
8352         * dbus/dbus-bus.c: change how we set well-known connections to
8353         NULL, so that it works if a single connection is stored in
8354         two well-known array slots.
8355
8356         * test/Makefile.am: remove a lot of stuff that isn't immediately
8357         useful, it's in CVS history if we want it.
8358
8359         * test/test-service.c: use dbus-mainloop instead of that
8360         watch.[hc] crack
8361
8362 2003-04-06  Havoc Pennington  <hp@pobox.com>
8363
8364         * dbus/Makefile.am: split lists of sources into stuff that goes in
8365         the library, util functions that go in the lib and are also used
8366         elsewhere, and util functions that are used in tests/daemon but
8367         don't go in the lib.
8368
8369         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc]
8370         here so it can be used in test binaries also
8371
8372 2003-04-06  Havoc Pennington  <hp@pobox.com>
8373
8374         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
8375         here in the parent process, so we can return an error if it
8376         fails. Also, move some of the code into the child so the parent
8377         is less hosed if we fail midway through.
8378
8379         * bus/bus.c (bus_context_new): move pidfile detection further up
8380         in the function, before we start overwriting sockets and such.
8381
8382         * bus/messagebus.in: adjust this a bit, not sure if it will work.
8383
8384         * configure.in: add --with-system-pid-file and --with-system-socket
8385
8386 2003-04-06  Colin Walters  <walters@verbum.org>
8387
8388         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
8389
8390         * bus/system.conf.in: Declare a pidfile.
8391
8392         * bus/bus.c (bus_context_new): Test for an existing pid file, and
8393         create one (if appropriate).
8394
8395         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
8396         (struct BusConfigParser) [pidfile]: New.
8397         (element_type_to_name, merge_included, start_busconfig_child)
8398         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
8399         (bus_config_parser_unref): Free it.
8400         (bus_config_parser_get_pidfile): New function.
8401
8402         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
8403
8404         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
8405
8406         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
8407
8408         * dbus/dbus-sysdeps.h: Prototype it.
8409
8410 2003-04-06  Havoc Pennington  <hp@pobox.com>
8411
8412         * bus/bus.c (bus_context_new): print the address in here, rather
8413         than in main(), because we need to do it before forking the daemon
8414
8415         * bus/dispatch.c (send_service_nonexistent_error): set the sender
8416         on the service nonexistent error
8417
8418         * bus/driver.c (bus_driver_handle_acquire_service): set the
8419         sender on the AcquireService reply
8420
8421         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
8422         server also listen on a UNIX socket so services can connect to it.
8423
8424 2003-04-06  Havoc Pennington  <hp@pobox.com>
8425
8426         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done
8427         so it detects deadlocks and also we actually init threads when
8428         debugging.
8429
8430 2003-04-06  Havoc Pennington  <hp@pobox.com>
8431
8432         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
8433         save the domain socket name, and unlink it when we disconnect the
8434         server. Means that at least when we exit normally, we won't leave
8435         a bunch of junk in /tmp
8436
8437         * dbus/dbus-transport-unix.c
8438         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
8439         memory management). (I was making a real change here but then
8440         didn't)
8441
8442 2003-04-06  Havoc Pennington  <hp@pobox.com>
8443
8444         * bus/bus.c (bus_context_new): fix wrong handling of
8445         server_data_slot_unref() in the error case.
8446
8447         * dbus/dbus-internals.h (_dbus_assert): change so it passes
8448         "(condition) != 0" to _dbus_real_assert so that
8449         "_dbus_assert (pointer)" doesn't cause a warning
8450
8451         * bus/main.c (main): accept --print-address option to print out
8452         the message bus address
8453
8454         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
8455
8456         * dbus/dbus-transport.c (_dbus_transport_open): special error for
8457         "tmpdir" option to unix: address on client side
8458
8459         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option
8460         to unix: address
8461
8462         * configure.in (TEST_SOCKET_DIR): locate a temporary directory
8463         we can use to create sockets in the test suite.
8464
8465         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
8466         cleanly. To be used for testing.
8467
8468         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
8469
8470         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
8471
8472         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
8473         handle trying to call this when there's no servers active
8474
8475 2003-04-05  Havoc Pennington  <hp@pobox.com>
8476
8477         * NEWS: update
8478
8479         * configure.in: 0.8
8480
8481 2003-04-05  Havoc Pennington  <hp@pobox.com>
8482
8483         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't
8484         crash on startup. Need to get "try starting the daemon"
8485         in the test suite I guess. ;-)
8486
8487         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
8488         tracked the number of open connections; it's better done in
8489         application-specific code as you want it to span all servers etc.
8490
8491 2003-04-05  Havoc Pennington  <hp@pobox.com>
8492
8493         * bus/Makefile.am (install-data-hook): add missing DESTDIR,
8494         patch from Colin Walters
8495
8496 2003-04-05  Havoc Pennington  <hp@pobox.com>
8497
8498         * doc/config-file.txt (Elements): fix docs of <auth> to reflect
8499         reality; in fact multiple mechanisms are allowed.
8500
8501         * dbus/dbus-internals.c (_dbus_real_assert)
8502         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
8503         _dbus_assert_not_reached() into functions, so that they don't show
8504         up in basic block counts for test coverage, and don't use up as
8505         much disk space. Does mean slower execution speed though, so
8506         assumes --disable-asserts is the normal production case.
8507
8508 2003-04-05  Havoc Pennington  <hp@pobox.com>
8509
8510         * test/Makefile.am (dist-hook): also dist *.in files
8511
8512         * NEWS: update
8513
8514         * configure.in: 0.7
8515
8516 2003-04-05  Havoc Pennington  <hp@pobox.com>
8517
8518         * dbus/dbus-string.c: docs warning
8519
8520         * dbus/dbus-spawn.c: missing docs
8521
8522         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
8523
8524 2003-04-05  Havoc Pennington  <hp@pobox.com>
8525
8526         * bus/loop.c (bus_loop_iterate): fix the timeout code, using
8527         magic from GLib
8528
8529         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
8530         to -1 once we've reaped the babysitter
8531         (_dbus_babysitter_handle_watch): do as much work as we can, not
8532         just one go of it
8533
8534         * bus/activation.c: add code using DBusBabysitter so that we
8535         handle it when a service fails to start up properly.
8536         (bus_activation_service_created): don't remove the activation
8537         entries as we go, just let them get removed when we free the pending
8538         activation. Unref reply messages after sending them.
8539
8540 2003-04-05  Havoc Pennington  <hp@pobox.com>
8541
8542         * test/decode-gcov.c (main): print per-directory stats in the report
8543
8544         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
8545
8546 2003-04-05  Havoc Pennington  <hp@pobox.com>
8547
8548         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
8549
8550         * test/decode-gcov.c: hack up a little program to suck data
8551         out of gcov files. Yes this is sort of silly.
8552
8553         * configure.in: define something in config.h and do an
8554         AM_CONDITIONAL when gcov is enabled
8555
8556 2003-04-04  Havoc Pennington  <hp@redhat.com>
8557
8558         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
8559         return a "babysitter" object that is used to monitor the status of
8560         the spawned process and reap it when required.
8561
8562         * test/test-segfault.c, test/test-exit.c,
8563         test/test-sleep-forever.c: binaries that do various lame things,
8564         used in the test suite.
8565
8566         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
8567
8568 2003-04-03  Havoc Pennington  <hp@pobox.com>
8569
8570         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file
8571         in preparation for modifying it, dbus-sysdeps is getting
8572         a bit unmanageable.
8573
8574 2003-04-03  Havoc Pennington  <hp@redhat.com>
8575
8576         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
8577         have multiple ones
8578
8579         * bus/*.[hc]: adapt to mainloop change
8580
8581 2003-04-03  Havoc Pennington  <hp@redhat.com>
8582
8583         * bus/activation.c (load_directory): fix up memleaks
8584         (bus_activation_entry_free): free the entry
8585
8586         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
8587         we get one from the message bus; fix memleaks.
8588
8589         * dbus/dbus-message.c (dbus_set_error_from_message): new function
8590
8591 2003-04-03  Havoc Pennington  <hp@pobox.com>
8592
8593         * bus/config-parser.c (bus_config_parser_unref): free
8594         list of mechanisms, bug discovered by test suite enhancements
8595         (putting system.conf and session.conf into suite)
8596
8597         * test/Makefile.am, test/test-service.c: add placeholder for a
8598         test service that we'll activate as part of test suite. Doesn't
8599         do anything yet.
8600
8601         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by
8602         setting NULL value, and use system malloc not dbus_malloc()
8603         when we have unavoidable memleakage.
8604
8605         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
8606         didn't work, and support DBUS_BUS_ACTIVATION.
8607
8608         * bus/activation.c (child_setup): pass our well-known bus type to
8609         the child
8610
8611         * bus/config-parser.c: support <type> to specify well-known type
8612
8613         * doc/dbus-specification.sgml: document the env variables to
8614         locate well-known buses and find service activator
8615
8616 2003-04-02  Havoc Pennington  <hp@redhat.com>
8617
8618         * test/Makefile.am (all-local): add a rule to copy tests to
8619         builddir, so we can have generated tests. Use this to remove the
8620         silly hack for testing system.conf and session.conf. Will use this
8621         shortly to generate .service files pointing to test binaries.
8622
8623 2003-04-02  Havoc Pennington  <hp@redhat.com>
8624
8625         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
8626         current alloc and needed new length, not max of the doubled
8627         allocation and needed new length. Also, when building tests,
8628         don't do the double-allocation stuff, just realloc every time.
8629
8630 2003-04-02  Havoc Pennington  <hp@redhat.com>
8631
8632         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
8633         in error messages
8634         (_dbus_string_get_dirname): new
8635         (_dbus_sysdeps_test): new
8636         (_dbus_directory_open): include dirnames in error messages
8637
8638         * bus/config-parser.c: interpret <include> and <includedir> and
8639         <servicedir> relative to config file location if the given
8640         filename is not absolute.
8641
8642         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
8643
8644 2003-04-02  Havoc Pennington  <hp@redhat.com>
8645
8646         * bus/connection.c (bus_transaction_send_error_reply): set sender
8647         service for the error, and unref the reply on success
8648
8649         * bus/activation.c: convert to use BusTransaction so OOM can be
8650         handled correctly
8651         (bus_activation_service_created): set sender of the message
8652
8653 2003-04-01  Havoc Pennington  <hp@redhat.com>
8654
8655         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
8656         <includedir> (at least mostly)
8657
8658         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
8659         first, then the user ID
8660
8661 2003-04-01  Havoc Pennington  <hp@pobox.com>
8662
8663         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
8664         function
8665
8666         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
8667
8668         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
8669
8670         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
8671         socket 0777, and unlink any existing socket.
8672
8673         * bus/bus.c (bus_context_new): change our UID/GID and fork if
8674         the configuration file so specifies; set up auth mechanism
8675         restrictions
8676
8677         * bus/config-parser.c (bus_config_parser_content): add support
8678         for <fork> option and fill in code for <auth>
8679
8680         * bus/system.conf.in: add <fork/> to default configuration,
8681         and limit auth mechanisms to EXTERNAL
8682
8683         * doc/config-file.txt (Elements): add <fork>
8684
8685         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
8686         (_dbus_change_identity): new function
8687
8688 2003-03-31  Havoc Pennington  <hp@redhat.com>
8689
8690         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
8691         (_dbus_listen_unix_socket): fix off-by-one error in null
8692         termination spotted by Nalin
8693
8694 2003-03-31  Havoc Pennington  <hp@redhat.com>
8695
8696         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
8697         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
8698         having a real home directory available.
8699
8700 2003-03-31  Havoc Pennington  <hp@redhat.com>
8701
8702         * bus/Makefile.am (install-data-hook): create /var/run/dbus
8703
8704         * bus/messagebus.in: add init script for Red Hat /etc/init.d
8705
8706         * configure.in: add support for specifying a style of init script
8707         to install
8708
8709 2003-03-31  Havoc Pennington  <hp@redhat.com>
8710
8711         Fix some annoying DBusString API and fix all affected code.
8712
8713         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
8714         max_length argument
8715         (_dbus_string_get_data): change to return string instead of using
8716         an out param
8717         (_dbus_string_get_const_data): ditto
8718         (_dbus_string_get_data_len): ditto
8719         (_dbus_string_get_const_data_len): ditto
8720
8721 2003-03-31  Havoc Pennington  <hp@redhat.com>
8722
8723         * bus/main.c (main): fix up the command line arguments to be nicer
8724
8725 2003-03-31  Havoc Pennington  <hp@redhat.com>
8726
8727         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
8728         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same
8729         final location that lands in the config file
8730
8731         * bus/config-loader-expat.c (bus_config_load): fix type of
8732         XML_Parser variable
8733
8734         * doc/TODO: remove TODO item for dbus_bus_get()
8735
8736         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
8737
8738 2003-03-31  Havoc Pennington  <hp@pobox.com>
8739
8740         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
8741         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
8742         argument since they are always client side
8743
8744         * dbus/dbus-server.c (dbus_server_get_address): new function
8745
8746         * bus/main.c (main): take the configuration file as an argument.
8747
8748         * test/data/valid-config-files/debug-allow-all.conf: new file to
8749         use with dispatch.c tests for example
8750
8751         * bus/test-main.c (main): require test data dir
8752
8753         * bus/bus.c (bus_context_new): change this to take a
8754         configuration file name as argument
8755
8756         * doc/config-file.txt (Elements): add <servicedir>
8757
8758         * bus/system.conf, bus/session.conf: new files
8759
8760         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
8761         well-known socket if none set
8762
8763         * configure.in: create system.conf and session.conf
8764
8765 2003-03-30  Havoc Pennington  <hp@pobox.com>
8766
8767         * bus/config-parser.c: hacking
8768
8769         * dbus/dbus-memory.c: don't use DBusList for the list of stuff
8770         to shut down, since it could cause weirdness with the DBusList
8771         lock
8772
8773         * dbus/dbus-list.c (_dbus_list_test): add tests for the
8774         link-oriented stack routines
8775         (alloc_link): free the mempool if the first alloc from it fails
8776
8777         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
8778
8779         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
8780         from GLib
8781         (_dbus_string_skip_white): new
8782
8783         * doc/config-file.txt (Elements): add <includedir>
8784
8785 2003-03-28  Havoc Pennington  <hp@pobox.com>
8786
8787         * dbus/dbus-string.c (_dbus_string_copy_data_len)
8788         (_dbus_string_copy_data): new functions
8789
8790 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
8791
8792         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
8793         * dbus/dbus-bus.h:
8794         Add dbus_bus_get.
8795
8796         * dbus/dbus-memory.c:
8797         Fix a doc comment.
8798
8799 2003-03-28  Havoc Pennington  <hp@pobox.com>
8800
8801         * bus/test.c (bus_test_flush_bus): remove the sleep from here,
8802         I think it may have just been superstition. Not sure.
8803
8804         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
8805         failures that were not being handled.
8806
8807         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
8808
8809         * dbus/dbus-memory.c: add ability to set number of mallocs in a
8810         row that will fail on out-of-memory.
8811
8812         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
8813         function for testing out-of-memory handling.
8814
8815         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
8816         allocation functions, they do map exactly to the expat ones.
8817
8818 2003-03-27  Havoc Pennington  <hp@redhat.com>
8819
8820         * bus/config-loader-libxml.c (bus_config_load): add another error
8821         check
8822
8823 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
8824
8825         * doc/TODO:
8826         Add note about automatic service activation.
8827
8828         * doc/dbus-specification.sgml:
8829         Rename the specification and clarify a few things.
8830
8831 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
8832
8833         * Doxyfile.in:
8834         * dbus/dbus-address.c:
8835         * dbus/dbus-dict.c:
8836         * dbus/dbus-marshal.c:
8837         * dbus/dbus-server-debug-pipe.c:
8838         * dbus/dbus-transport-unix.c:
8839         Fix documentation warnings.
8840
8841 2003-03-26  Havoc Pennington  <hp@pobox.com>
8842
8843         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
8844         after every test so it's quick and easy to see which leaked, and
8845         so we test multiple dbus_shutdown() calls
8846
8847         * configure.in: change configure.in XML stuff to also support
8848         expat
8849
8850         * config-loader-libxml.c: some hacking
8851
8852         * config-loader-expat.c: some hacking
8853
8854         * config-parser.c: some hacking, plus tests
8855
8856 2003-03-25  Havoc Pennington  <hp@redhat.com>
8857
8858         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
8859
8860         * configure.in: add --with-xml option to specify XML library,
8861         right now only libxml is supported.
8862
8863         * bus/config-loader-libxml.c, config-parser.c: sync some minor
8864         nonworking code between home and work, still just stubs
8865
8866 2003-03-24  Havoc Pennington  <hp@redhat.com>
8867
8868         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
8869         file
8870
8871         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow
8872         NULL argument for "message" if the error is a well-known one,
8873         fill in a generic message in this case.
8874
8875         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
8876         favor of DBusError
8877
8878         * bus/test.c (bus_test_flush_bus): add
8879
8880         * bus/policy.c (bus_policy_test): test code stub
8881
8882 2003-03-24  Havoc Pennington  <hp@pobox.com>
8883
8884         * bus/connection.c (bus_connections_setup_connection): set up
8885         the "can this user connect" function, but it always returns
8886         TRUE until we have a config file parser so we can have a config
8887         file that allows connections.
8888
8889 2003-03-23  Havoc Pennington  <hp@pobox.com>
8890
8891         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with
8892         DBUS_BUILD_TESTS, actually alloc/free a block of memory for
8893         the mutex, so we can check for proper memory management
8894         and OOM handling.
8895
8896         * dbus/dbus-dataslot.c: remove the mutex from
8897         DBusDataSlotAllocator and lock it manually when using it,
8898         to simplify fitting it into the global slots framework.
8899
8900         * dbus/dbus-threads.c (init_static_locks): rework how we're
8901         handling global locks so they are easily shut down.
8902
8903         * bus/policy.c (bus_policy_append_rule): fix
8904
8905         * bus/test-main.c (main): check for memleaks
8906
8907         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make
8908         test suite check for memleaks
8909
8910         * dbus/dbus-memory.c: add support in test mode for tracking
8911         number of outstanding blocks
8912
8913 2003-03-23  Havoc Pennington  <hp@pobox.com>
8914
8915         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
8916         policies code
8917
8918         * dbus/dbus-hash.h: add ULONG hash keys
8919
8920         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
8921         (_dbus_get_group_id): new function
8922
8923 2003-03-20  Havoc Pennington  <hp@redhat.com>
8924
8925         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
8926         new function
8927         (dbus_connection_get_unix_user): new function
8928
8929 2003-03-20  Havoc Pennington  <hp@pobox.com>
8930
8931         * bus/connection.c (bus_connection_send_oom_error): assert that
8932         message has a sender
8933         (connection_execute_transaction): ditto
8934         (bus_connection_preallocate_oom_error): fix to set the sender, and
8935         set recipient to the destination service, not the bus driver
8936
8937         * bus/policy.c: hacking
8938
8939         * dbus/dbus-message.c (dbus_message_service_is): new function
8940         (dbus_message_sender_is): new
8941
8942 2003-03-19  Havoc Pennington  <hp@redhat.com>
8943
8944         * bus/policy.c: start sketching code for policy restrictions on
8945         what connections can do.
8946
8947 2003-03-18  Havoc Pennington  <hp@redhat.com>
8948
8949         * doc/TODO: some notes on high-level todo items. Little nitpick
8950         stuff is all in @todo, so no need to add it here.
8951
8952         * doc/config-file.txt: some notes on how config file might look
8953
8954 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
8955
8956         * configure.in: 0.6
8957
8958         * NEWS: Update.
8959
8960 2003-03-17  Havoc Pennington  <hp@redhat.com>
8961
8962         * dbus/dbus-internals.h: add gcc attributes so that
8963         our printf-style functions warn on bad arguments to
8964         format
8965
8966         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf
8967         format bug
8968
8969         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
8970         printf format bug
8971
8972 2003-03-17  Havoc Pennington  <hp@redhat.com>
8973
8974         * bus/test-main.c (main): make it print something as it runs
8975         so make check doesn't look stuck
8976
8977         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove
8978         from CVS, now obsolete
8979
8980 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
8981
8982         * bus/dispatch.c: (bus_dispatch):
8983         Refetch the service name since it may have been reallocated
8984         when dbus_message_set_sender was called.
8985
8986         * dbus/dbus-sysdeps.c: (_dbus_accept):
8987         Add address and address length variables and use them to stop
8988         valgrind from complaining.
8989
8990 2003-03-17  Havoc Pennington  <hp@pobox.com>
8991
8992         All tests pass, no memleaks, no valgrind complaints.
8993
8994         * bus/test.c: refcount handler_slot
8995
8996         * bus/connection.c (bus_connections_new): refcount
8997         connection_data_slot
8998
8999         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
9000         bytes so that auth scripts pass.
9001
9002         * bus/dispatch.c: init message_handler_slot so it gets allocated
9003         properly
9004
9005         * bus/dispatch.c (message_handler_slot_ref): fix memleak
9006
9007         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
9008         dealloc server_pipe_hash when no longer used for benefit of
9009         leak checking
9010
9011         * dbus/dbus-auth.c (process_command): memleak fix
9012
9013         * bus/dispatch.c (check_hello_message): memleak fix
9014
9015 2003-03-16  Havoc Pennington  <hp@pobox.com>
9016
9017         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
9018
9019 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
9020
9021         * bus/activation.c (bus_activation_activate_service): Append
9022         the pending activation entry to the list of pending activations.
9023
9024 2003-03-16  Havoc Pennington  <hp@pobox.com>
9025
9026         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
9027         connections
9028
9029         * dbus/dbus-address.c (create_entry): fix OOM handling when
9030         failing to alloc entry->method
9031
9032 2003-03-16  Havoc Pennington  <hp@pobox.com>
9033
9034         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
9035         the watch
9036
9037         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
9038         add some missing dbus_set_result
9039
9040         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to
9041         alloc the DBusMessageHandler
9042
9043         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
9044         the transport here, since we call this from the finalizer; it
9045         resulted in a double-finalize.
9046
9047         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
9048         where we tried to use transport->connection that was NULL,
9049         happened when transport was disconnected early on due to OOM
9050
9051         * bus/*.c: adapt to handle OOM for watches/timeouts
9052
9053         * dbus/dbus-transport-unix.c: port to handle OOM during
9054         watch handling
9055
9056         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
9057         reference to unused bytes instead of a copy
9058
9059         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
9060         out of memory
9061
9062         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
9063         FALSE on OOM
9064
9065         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
9066         of memory
9067
9068 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
9069
9070         * doc/dbus-specification.sgml:
9071         Document reply message for ActivateService.
9072
9073 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
9074
9075         * bus/activation.c: (bus_pending_activation_entry_free),
9076         (bus_pending_activation_free), (bus_activation_new),
9077         (bus_activation_unref), (bus_activation_service_created),
9078         (bus_activation_activate_service):
9079         * bus/activation.h:
9080         * bus/bus.c: (bus_context_new):
9081         * bus/desktop-file.c: (new_section):
9082         * bus/driver.c: (bus_driver_send_service_deleted),
9083         (bus_driver_handle_activate_service):
9084         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
9085         * bus/services.h:
9086         * dbus/dbus-connection.c:
9087         (dbus_connection_send_with_reply_and_block):
9088         * dbus/dbus-message.c: (dbus_message_append_args_valist):
9089         * dbus/dbus-protocol.h:
9090         Make activation work better. Now pending activations will be queued
9091         and the daemon won't try to activate services that are already registered.
9092
9093 2003-03-16  Havoc Pennington  <hp@pobox.com>
9094
9095         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
9096         connection data
9097
9098         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
9099         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
9100
9101 2003-03-16  Havoc Pennington  <hp@pobox.com>
9102
9103         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
9104         this. always run the test suite before commit...
9105
9106         * bus/*: adapt to DBusConnection API changes
9107
9108         * glib/dbus-gmain.c: adapt to DBusConnection API changes,
9109         requires renaming stuff to avoid dbus_connection_dispatch name
9110         conflict.
9111
9112         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
9113         function
9114
9115         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
9116         separate from _dbus_message_loader_return_buffer()
9117
9118         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
9119         this, because it's now always broken to use; the number of
9120         messages in queue vs. the number still buffered by the message
9121         loader is undefined/meaningless. Should use
9122         dbus_connection_get_dispatch_state().
9123         (dbus_connection_dispatch): rename from
9124         dbus_connection_dispatch_message
9125
9126 2003-03-16  Havoc Pennington  <hp@pobox.com>
9127
9128         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
9129         implementation
9130
9131 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
9132
9133         * dbus/dbus-connection.c:
9134         (dbus_connection_send_with_reply_and_block):
9135         Decrease connection->n_incoming when removing an entry
9136         from the list.
9137         * dbus/dbus-dict.c: (dbus_dict_entry_free),
9138         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
9139         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
9140         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
9141         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
9142         (dbus_dict_get_byte_array):
9143         Handle NULL arrays and strings. Also add support for byte arrays.
9144
9145         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
9146         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
9147         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
9148         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
9149         (_dbus_demarshal_dict), (demarshal_and_validate_len),
9150         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
9151         * dbus/dbus-marshal.h:
9152         Add support for marshalling and demarshalling empty arrays and strings.
9153
9154         * dbus/dbus-message.c: (dbus_message_append_args_valist),
9155         (dbus_message_append_string_array),
9156         (dbus_message_iter_get_boolean),
9157         (dbus_message_iter_get_boolean_array),
9158         (dbus_message_iter_get_int32_array),
9159         (dbus_message_iter_get_uint32_array),
9160         (dbus_message_iter_get_double_array),
9161         (dbus_message_iter_get_byte_array),
9162         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
9163         (check_message_handling):
9164         Add support for getting empty arrays and dicts.
9165
9166         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
9167         Don't do any validation at all for now, that's better than just checking
9168         for ASCII.
9169
9170         * test/data/valid-messages/emptiness.message:
9171         New test message with lots of empty arrays.
9172
9173 2003-03-16  Havoc Pennington  <hp@pobox.com>
9174
9175         * dbus/dbus-connection.c
9176         (_dbus_connection_queue_received_message_link): new function that
9177         can't fail due to OOM
9178
9179         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
9180         new function pops a message together with a list link
9181         containing it.
9182
9183         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
9184         message queuing functions to avoid needing to alloc memory
9185
9186 2003-03-16  Havoc Pennington  <hp@pobox.com>
9187
9188         Oops - test code was only testing failure of around 30 of the
9189         mallocs in the test path, but it turns out there are 500+
9190         mallocs. I believe this was due to misguided linking setup such
9191         that there was one copy of dbus_malloc etc. in the daemon and one
9192         in the shared lib, and only daemon mallocs were tested. In any
9193         case, the test case now tests all 500+ mallocs, and doesn't pass
9194         yet, though there are lots of fixes in this patch.
9195
9196         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
9197         this so that it doesn't need to allocate memory, since it
9198         has no way of indicating failure due to OOM (and would be
9199         annoying if it did).
9200
9201         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
9202
9203         * bus/Makefile.am: rearrange to create two self-contained
9204         libraries, to avoid having libraries with overlapping symbols.
9205         that was resulting in weirdness, e.g. I'm pretty sure there
9206         were two copies of global static variables.
9207
9208         * dbus/dbus-internals.c: move the malloc debug stuff to
9209         dbus-memory.c
9210
9211         * dbus/dbus-list.c (free_link): free list mempool if it becomes
9212         empty.
9213
9214         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
9215
9216         * dbus/dbus-address.c (dbus_parse_address): free list nodes
9217         on failure.
9218
9219         * bus/dispatch.c (bus_dispatch_add_connection): free
9220         message_handler_slot when no longer using it, so
9221         memory leak checkers are happy for the test suite.
9222
9223         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
9224
9225         * bus/bus.c (new_connection_callback): disconnect in here if
9226         bus_connections_setup_connection fails.
9227
9228         * bus/connection.c (bus_connections_unref): fix to free the
9229         connections
9230         (bus_connections_setup_connection): if this fails, don't
9231         disconnect the connection, just be sure there are no side
9232         effects.
9233
9234         * dbus/dbus-string.c (undo_alignment): unbreak this
9235
9236         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
9237         leaking
9238         (_dbus_auth_new): fix the order in which we free strings
9239         on OOM failure
9240
9241         * bus/connection.c (bus_connection_disconnected): fix to
9242         not send ServiceDeleted multiple times in case of memory
9243         allocation failure
9244
9245         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
9246         get the base service name
9247         (dbus_bus_register_client): don't return base service name,
9248         instead store it on the DBusConnection and have an accessor
9249         function for it.
9250         (dbus_bus_register_client): rename dbus_bus_register()
9251
9252         * bus/dispatch.c (check_hello_message): verify that other
9253         connections on the bus also got the correct results, not
9254         just the one sending hello
9255
9256 2003-03-15  Havoc Pennington  <hp@pobox.com>
9257
9258         Make it pass the Hello handling test including all OOM codepaths.
9259         Now to do other messages...
9260
9261         * bus/services.c (bus_service_remove_owner): fix crash when
9262         removing owner from an empty list of owners
9263         (bus_registry_ensure): don't leave service in the list of
9264         a connection's owned services if we fail to put the service
9265         in the hash table.
9266
9267         * bus/connection.c (bus_connection_preallocate_oom_error): set
9268         error flag on the OOM error.
9269
9270         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
9271         handle _dbus_transport_set_connection failure
9272
9273         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
9274         to create watches up front and simply enable/disable them as
9275         needed.
9276         (unix_connection_set): this can now fail on OOM
9277
9278         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
9279         of enabling/disabling a watch or timeout.
9280
9281         * bus/loop.c (bus_loop_iterate): don't touch disabled
9282         watches/timeouts
9283
9284         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
9285
9286 2003-03-15  Havoc Pennington  <hp@pobox.com>
9287
9288         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
9289         write useful test code, after all that futzing around ;-)
9290
9291         Test does not yet pass because we can't handle OOM in
9292         _dbus_transport_messages_pending (basically,
9293         dbus_connection_preallocate_send() does not prealloc the write
9294         watch). To fix this, I think we need to add new stuff to
9295         set_watch_functions, namely a SetEnabled function so we can alloc
9296         the watch earlier, then enable it later.
9297
9298         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
9299         dbus-memory.c to the convenience lib
9300
9301         * bus/test.c: rename some static functions to keep them clearly
9302         distinct from stuff in connection.c. Handle client disconnection.
9303
9304 2003-03-14  Havoc Pennington  <hp@pobox.com>
9305
9306         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
9307         transport, tests more of the real codepath. Set up clients
9308         with bus_setup_debug_client.
9309
9310         * bus/test.c (bus_setup_debug_client): function to set up debug
9311         "clients" on the main loop
9312
9313         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
9314         support
9315
9316         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe
9317         server type
9318
9319         * dbus/dbus-server-debug.c: support a debug server based on pipes
9320
9321         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
9322         (_dbus_close): new function
9323
9324         * configure.in: check for socketpair
9325
9326 2003-03-14  Havoc Pennington  <hp@redhat.com>
9327
9328         * dbus/dbus-memory.c: add a "detect buffer overwrites on free"
9329         cheesy hack
9330
9331         * dbus/dbus-transport-debug.c: rework this a good bit to be
9332         less complicated. hopefully still works.
9333
9334         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
9335         manually
9336
9337         * glib/dbus-gmain.c (timeout_handler): don't remove timeout
9338         after running it
9339
9340         * dbus/dbus-message.c (dbus_message_copy): rename from
9341         dbus_message_new_from_message, fix it up to copy
9342         all the message fields, add test case
9343
9344         * bus/dispatch.c (bus_dispatch_test): add some more test code,
9345         not quite passing yet
9346
9347 2003-03-14  Havoc Pennington  <hp@pobox.com>
9348
9349         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
9350         until no work remains" in test code. (the large diff here
9351         is just code movement, no actual changes)
9352
9353         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
9354         1, no point waiting around for test code.
9355         (_dbus_server_debug_accept_transport): unref the timeout
9356         after adding it (right?)
9357
9358         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
9359
9360 2003-03-13  Havoc Pennington  <hp@redhat.com>
9361
9362         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
9363         out of memory
9364
9365         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
9366         of memory
9367
9368         * dbus/dbus-connection.h: Make AddWatchFunction and
9369         AddTimeoutFunction return a bool so they can fail on out-of-memory
9370
9371         * bus/bus.c (bus_context_new): set up timeout handlers
9372
9373         * bus/connection.c (bus_connections_setup_connection): set up
9374         timeout handlers
9375
9376         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
9377         can fail
9378
9379         * bus/bus.c (bus_context_new): adapt to changes
9380
9381         * bus/connection.c: adapt to changes
9382
9383         * test/watch.c: adapt to DBusWatch changes
9384
9385         * bus/dispatch.c (bus_dispatch_test): started adding this but
9386         didn't finish
9387
9388 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
9389
9390         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
9391
9392 2003-03-13  Havoc Pennington  <hp@pobox.com>
9393
9394         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
9395         set up a test framework as for the library
9396
9397 2003-03-12  Havoc Pennington  <hp@pobox.com>
9398
9399         Throughout: purge global variables, introduce BusActivation,
9400         BusConnections, BusRegistry, etc. objects instead.
9401
9402         * bus/bus.h, bus/bus.c: introduce BusContext as a global
9403         message bus object
9404
9405         * test/Makefile.am (TEST_BINARIES): disable bus-test for now,
9406         going to redo this a bit differently I think
9407
9408 2003-03-12  Havoc Pennington  <hp@redhat.com>
9409
9410         Mega-patch that gets the message bus daemon initially handling
9411         out-of-memory. Work still needed. Also lots of random
9412         moving stuff to DBusError instead of ResultCode.
9413
9414         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
9415
9416         * dbus/dbus-connection.c
9417         (dbus_connection_send_with_reply_and_block): use DBusError
9418
9419         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
9420         DBusResultCode
9421
9422         * dbus/dbus-connection.c (dbus_connection_send): drop the result
9423         code here, as the only failure possible is OOM.
9424
9425         * bus/connection.c (bus_connection_disconnect):
9426         rename bus_connection_disconnected as it's a notification only
9427
9428         * bus/driver.c (bus_driver_handle_acquire_service): don't free
9429         "name" on get_args failure, should be done by get_args;
9430         don't disconnect client for bad args, just return an error.
9431         (bus_driver_handle_service_exists): ditto
9432
9433         * bus/services.c (bus_services_list): NULL-terminate returned array
9434
9435         * bus/driver.c (bus_driver_send_service_lost)
9436         (bus_driver_send_service_acquired): send messages from driver to a
9437         specific client to the client's unique name, not to the broadcast
9438         service.
9439
9440         * dbus/dbus-message.c (decode_header_data): reject messages that
9441         contain no name field
9442         (_dbus_message_get_client_serial): rename to
9443         dbus_message_get_serial and make public
9444         (_dbus_message_set_serial): rename from set_client_serial
9445         (_dbus_message_set_reply_serial): make public
9446         (_dbus_message_get_reply_serial): make public
9447
9448         * bus/connection.c (bus_connection_foreach): allow stopping
9449         iteration by returning FALSE from foreach function.
9450
9451         * dbus/dbus-connection.c (dbus_connection_send_preallocated)
9452         (dbus_connection_free_preallocated_send)
9453         (dbus_connection_preallocate_send): new API for sending a message
9454         without possibility of malloc failure.
9455         (dbus_connection_send_message): rename to just
9456         dbus_connection_send (and same for whole function family)
9457
9458         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
9459
9460         * dbus/dbus-sysdeps.c (_dbus_exit): new function
9461
9462         * bus/activation.c: handle/return errors
9463
9464         * dbus/dbus-errors.h: add more DBUS_ERROR #define
9465
9466         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
9467         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
9468         (_dbus_result_from_errno): move to this file
9469
9470 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
9471
9472         * dbus/dbus-marshal.c:
9473         (_dbus_marshal_set_string):
9474         Take a length argument so we can marshal the correct string
9475         length.
9476
9477         (_dbus_marshal_dict), (_dbus_demarshal_dict),
9478         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
9479         (_dbus_marshal_test):
9480         * dbus/dbus-marshal.h:
9481         Add support for marshalling and demarshalling dicts.
9482
9483         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
9484         Add support for TYPE DICT.
9485
9486         * dbus/dbus-message.c: (set_string_field):
9487         Adjust header padding.
9488
9489         (dbus_message_append_args_valist), (dbus_message_append_dict),
9490         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
9491         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
9492         (check_message_handling), (check_have_valid_message):
9493         * dbus/dbus-message.h:
9494         Add functions for setting and getting dicts.
9495
9496         * dbus/dbus-protocol.h:
9497         Add DBUS_TYPE_DICT.
9498
9499         * dbus/dbus.h:
9500         Add dbus-dict.h
9501
9502         * doc/dbus-specification.sgml:
9503         Add information about how dicts are marshalled.
9504
9505         * test/data/invalid-messages/dict-with-nil-value.message:
9506         * test/data/invalid-messages/too-short-dict.message:
9507         * test/data/valid-messages/dict-simple.message:
9508         * test/data/valid-messages/dict.message:
9509         Add sample messages containing dicts.
9510
9511 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
9512
9513         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
9514
9515 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
9516
9517         * dbus/Makefile.am:
9518         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
9519         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
9520         (dbus_dict_set_int32), (dbus_dict_set_uint32),
9521         (dbus_dict_set_double), (dbus_dict_set_string),
9522         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
9523         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
9524         (dbus_dict_set_string_array), (_dbus_dict_test):
9525         * dbus/dbus-dict.h:
9526         Fix according to comments from Havoc.
9527
9528 2003-03-06  Michael Meeks  <michael@server.home>
9529
9530         * configure.in: if we don't have kde-config, disable have_qt.
9531
9532 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
9533
9534         * dbus/Makefile.am:
9535         Add dbus-dict.[ch]
9536
9537         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
9538         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
9539         (dbus_dict_remove), (dbus_dict_get_value_type),
9540         (dbus_dict_get_keys), (dbus_dict_put_boolean),
9541         (dbus_dict_put_int32), (dbus_dict_put_uint32),
9542         (dbus_dict_put_double), (dbus_dict_put_string),
9543         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
9544         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
9545         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
9546         (dbus_dict_get_int32), (dbus_dict_get_uint32),
9547         (dbus_dict_get_double), (dbus_dict_get_string),
9548         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
9549         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
9550         (dbus_dict_get_string_array), (_dbus_dict_test):
9551         * dbus/dbus-dict.h:
9552         Add DBusDict implementation
9553
9554         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
9555         * dbus/dbus-test.h:
9556         Add _dbus_dict_test
9557
9558 2003-03-04  Havoc Pennington  <hp@pobox.com>
9559
9560         * test/data/auth/*: adapt to changes
9561
9562         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
9563         USERID_BASE64 and change USERNAME_BASE64 to put in username not
9564         userid
9565
9566         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
9567         more stuff from being in a context name, to make the protocol
9568         simpler to deal with
9569
9570         * dbus/dbus-errors.c (dbus_error_has_name): new function
9571         (dbus_error_is_set): new function
9572
9573         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
9574         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
9575
9576         * dbus/dbus-connection.c (dbus_connection_flush): also read
9577         messages during a flush operation
9578
9579         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
9580
9581 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
9582
9583         * configure.in: Check for gethostbyname on Solaris.
9584
9585         * dbus/dbus-transport.c: (_dbus_transport_open):
9586         Remove duplicate "tcp" entry.
9587
9588         * doc/dbus-specification.sgml:
9589         Clarify some things.
9590
9591 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
9592
9593         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
9594         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
9595         (_dbus_keyring_test):
9596         * dbus/dbus-md5.c: (_dbus_md5_compute):
9597         * dbus/dbus-sha.c: (_dbus_sha_compute):
9598         Plug memory leaks.
9599
9600 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
9601
9602         * README: Add some things.
9603
9604 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
9605
9606         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
9607         after case DBUS_TYPE_BOOELAN.
9608
9609 2003-03-02  Havoc Pennington  <hp@pobox.com>
9610
9611         * test/break-loader.c (randomly_set_extreme_ints): add test that
9612         sets really huge and small integers
9613
9614         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
9615         that length of boolean array fits in the string, and that
9616         string has room for boolean value in single-bool case.
9617
9618         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
9619         optional value to "ALIGN" command which is what to fill the
9620         alignment with.
9621
9622         * test/data/valid-messages/no-padding.message: add regression
9623         test for the message padding problem
9624
9625 2003-03-02  Havoc Pennington  <hp@pobox.com>
9626
9627         * dbus/dbus-message.c (decode_header_data): fix to always init
9628         message_padding, from Benjamin Dauvergne
9629
9630 2003-03-02  Havoc Pennington  <hp@pobox.com>
9631
9632         * configure.in: 0.5
9633
9634         * NEWS: Update.
9635
9636 2003-03-01  Joe Shaw  <joe@assbarn.com>
9637
9638         * configure.in: Check for "struct cmsgcred" and try to access its
9639         members for BSD-like unices.
9640
9641         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
9642         _dbus_read_credentials_unix_socket().
9643         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
9644         read() for reading the credential byte off the unix socket.  Use
9645         struct cmsgcred on systems that support it.
9646
9647 2003-02-27  Alexander Larsson  <alexl@redhat.com>
9648
9649         * glib/Makefile.am:
9650         * configure.in:
9651         Make gthreads-2.0 dependency optional. Don't build thread test if
9652         its not found.
9653
9654 2003-02-27  Havoc Pennington  <hp@pobox.com>
9655
9656         * dbus/dbus-connection.c
9657         (dbus_connection_send_message_with_reply_and_block): fix doh!
9658         doh! doh! bug that resulted in never removing a reply from the
9659         queue, no wonder we called get_reply_serial so much ;-)
9660
9661         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
9662         and client serial instead of demarshaling them every time
9663
9664 2003-02-27  Havoc Pennington  <hp@pobox.com>
9665
9666         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
9667         more inlined, using dbus-string-private.h, speeds things up
9668         substantially
9669
9670         * dbus/dbus-string.c (_dbus_string_free): apply align offset
9671         when freeing the string
9672         (_dbus_string_steal_data): fix for align offset
9673         (undo_alignment): new function
9674
9675 2003-02-26  Havoc Pennington  <hp@redhat.com>
9676
9677         All kinds of audit fixes from Owen, plus initial attempt to
9678         handle unaligned memory returned from malloc.
9679
9680         * dbus/dbus-string.c (_dbus_string_init): clamp max length to
9681         leave room for align_offset and nul byte
9682         (fixup_alignment): function to track an align_offset and
9683         ensure real->str is aligned
9684         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
9685         to allow a nul byte plus align offset
9686         (_dbus_string_lock): fix overflow issue
9687         (_dbus_string_init_const_len): add assertions on sanity of len,
9688         assign allocated to be ALLOCATION_PADDING larger than len
9689         (set_length): fixup the overflow handling
9690         (_dbus_string_get_data_len): fix overflow in assertion
9691         (open_gap): detect overflow in size of gap to be opened
9692         (_dbus_string_lengthen): add overflow check
9693         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
9694         (_dbus_string_append): add overflow check
9695         (_dbus_string_append_unichar): overflow
9696         (_dbus_string_delete): fix overflow in assertion
9697         (_dbus_string_copy_len): overflow in assertion
9698         (_dbus_string_replace_len): overflows in assertions
9699         (_dbus_string_find): change to implement in terms of
9700         _dbus_string_find_to
9701         (_dbus_string_find_to): assorted fixage
9702         (_dbus_string_equal_c_str): assert c_str != NULL,
9703         fix logic so the function works
9704         (_dbus_string_ends_with_c_str): fix overflow thingy
9705         (_dbus_string_base64_encode): overflow fix
9706         (_dbus_string_validate_ascii): overflow
9707         (_dbus_string_validate_nul): overflow
9708
9709 2003-02-26  Havoc Pennington  <hp@redhat.com>
9710
9711         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
9712
9713 2003-02-26  Alexander Larsson  <alexl@redhat.com>
9714
9715         * configure.in:
9716         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
9717
9718         * dbus/dbus-connection.c:
9719         * dbus/dbus-connection.h:
9720         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
9721         Add dbus_connection_set_wakeup_main_function and use it when queueing
9722         incoming and outgoing messages.
9723
9724
9725         * dbus/dbus-dataslot.c:
9726         Threadsafe usage of DBusDataSlotAllocator
9727
9728         * dbus/dbus-message.c: (dbus_message_get_args_iter):
9729         dbus_new can fail.
9730
9731         * dbus/dbus-server-unix.c:
9732         Add todo comment
9733
9734         * glib/dbus-gmain.c:
9735         Implement the new wakeup functions for glib.
9736
9737         * glib/Makefile.am:
9738         * glib/test-thread-client.c:
9739         * glib/test-thread-server.c:
9740         * glib/test-thread.h:
9741         Initial cut at some thread test code. Not really done yet.
9742
9743 2003-02-26  Havoc Pennington  <hp@pobox.com>
9744
9745         * dbus/dbus-connection.c
9746         (dbus_connection_send_message_with_reply_and_block): fix crash
9747         where we ref'd the outgoing message instead of the returned reply
9748
9749         * dbus/dbus-transport-unix.c (do_authentication): check read watch
9750         at the end of this function, so if we didn't need to read for
9751         authentication, we reinstall it for receiving messages
9752
9753         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to
9754         a NULL sender for peer-to-peer case
9755
9756         * dbus/dbus-transport-unix.c (check_read_watch): handle
9757         !authenticated case correctly
9758
9759         * glib/dbus-gmain.c: add support for DBusServer
9760
9761         * dbus/dbus-server.c: add data slot support
9762
9763         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
9764         return values and handle errors
9765
9766         * dbus/dbus-dataslot.c: factor out the data slot stuff from
9767         DBusConnection
9768
9769         * Doxyfile.in (INPUT): add glib subdir
9770
9771         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
9772         setup_with_g_main instead of hookup_with_g_main; write docs
9773
9774 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
9775
9776         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
9777         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
9778         * dbus/dbus-message.c: (dbus_message_append_boolean),
9779         (dbus_message_append_boolean_array),
9780         (dbus_message_get_args_valist), (_dbus_message_test):
9781         * dbus/dbus-message.h:
9782         * doc/dbus-specification.sgml:
9783         Various fixes as pointed out by Havoc.
9784
9785         * test/data/invalid-messages/bad-boolean-array.message:
9786         * test/data/invalid-messages/bad-boolean.message:
9787         Add invalid boolean value test cases.
9788
9789 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
9790
9791         * dbus/dbus-internals.c: (_dbus_type_to_string):
9792         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
9793         (_dbus_marshal_validate_arg):
9794         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
9795         * dbus/dbus-message.c: (dbus_message_append_args_valist),
9796         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
9797         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
9798         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
9799         (dbus_message_iter_get_double),
9800         (dbus_message_iter_get_boolean_array), (message_iter_test):
9801         * dbus/dbus-message.h:
9802         * dbus/dbus-protocol.h:
9803         * doc/dbus-specification.sgml:
9804         * test/data/valid-messages/lots-of-arguments.message:
9805         Add support for boolean and boolean array types.
9806
9807 2003-02-23  Havoc Pennington  <hp@pobox.com>
9808
9809         * dbus/dbus-keyring.c: finish most of this implementation and
9810         simple unit test
9811
9812         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
9813         these barf if the error isn't cleared to NULL
9814
9815         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
9816         (_dbus_create_directory): new function
9817
9818         * dbus/dbus-errors.c (dbus_set_error): fix warning
9819
9820         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
9821         (_dbus_string_hex_decode): new function
9822         (test_hex_roundtrip): test code
9823
9824         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
9825
9826         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
9827
9828         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
9829         the save-to-temp/rename trick to atomically write the new file
9830         (_dbus_string_parse_uint): new function
9831
9832 2003-02-22  Havoc Pennington  <hp@pobox.com>
9833
9834         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
9835
9836 2003-02-22  Havoc Pennington  <hp@pobox.com>
9837
9838         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
9839         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
9840
9841         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
9842
9843         * dbus/test/data/sha-1: add US government test suite for SHA-1
9844
9845 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
9846
9847         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
9848         Make string arrays NULL-terminated.
9849
9850         * dbus/dbus-memory.c: (dbus_free_string_array):
9851         * dbus/dbus-memory.h:
9852         New function for freeing NULL-terminated string arrays.
9853
9854         * dbus/dbus-message-builder.c: (append_quoted_string),
9855         (_dbus_message_data_load):
9856         Add support for array types.
9857
9858         * dbus/dbus-message.c: (check_message_handling):
9859         Add more types as test cases.
9860
9861         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
9862         (_dbus_string_parse_double):
9863         Add the start offset to the end offset.
9864
9865         * test/data/valid-messages/lots-of-arguments.message:
9866         New test message with lots of arguments.
9867
9868 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
9869
9870         * dbus/dbus-message.c: (dbus_message_append_nil),
9871         (dbus_message_append_int32), (dbus_message_append_uint32),
9872         (dbus_message_append_double), (dbus_message_append_string),
9873         (dbus_message_append_int32_array),
9874         (dbus_message_append_uint32_array),
9875         (dbus_message_append_double_array),
9876         (dbus_message_append_byte_array),
9877         (dbus_message_append_string_array):
9878         Fix all out-of-memory handling in these functions.
9879
9880 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
9881
9882         * dbus/dbus-message.c: (dbus_message_append_nil):
9883         Fix a silly.
9884
9885 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
9886
9887         * dbus/dbus-message.c: (dbus_message_append_args_valist),
9888         (dbus_message_append_nil), (dbus_message_append_int32_array),
9889         (dbus_message_append_uint32_array),
9890         (dbus_message_append_double_array),
9891         (dbus_message_append_byte_array),
9892         (dbus_message_append_string_array), (dbus_message_get_args_valist),
9893         (dbus_message_iter_get_int32_array),
9894         (dbus_message_iter_get_uint32_array),
9895         (dbus_message_iter_get_double_array),
9896         (dbus_message_iter_get_byte_array),
9897         (dbus_message_iter_get_string_array):
9898
9899         * dbus/dbus-message.h:
9900         Add functions for appending and getting arrays.
9901
9902 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
9903
9904         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
9905         element size at least 8 bytes, fixes mempool tests on
9906         64-bit machines.
9907
9908 2003-02-20  Alexander Larsson  <alexl@redhat.com>
9909
9910         * dbus/dbus-transport-unix.c (unix_do_iteration):
9911         Unlock the connection mutex during a blocking select call.
9912         Add todo about how we need a way to wake up the select.
9913
9914         * dbus/dbus-connection-internal.h:
9915         * dbus/dbus-connection.c:
9916         Add _dbus_connection_lock and _dbus_connection_unlock.
9917
9918 2003-02-19  Havoc Pennington  <hp@pobox.com>
9919
9920         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
9921         Doxyfile.in, not Doxyfile
9922
9923         * dbus/dbus-keyring.c: do some hacking on this
9924
9925         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
9926
9927         * dbus/dbus-errors.c (dbus_set_error_const): do not call
9928         dbus_error_init
9929         (dbus_set_error): remove dbus_error_init, check for message ==
9930         NULL *before* we sprintf into it, and add @todo about including
9931         system headers in this file
9932
9933         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
9934
9935         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
9936
9937         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
9938         get various bits of user information based on either username
9939         or user ID
9940         (_dbus_homedir_from_username): new function
9941
9942 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
9943
9944         * configure.in:
9945         Add check for nonposix getpwnam_r
9946
9947         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
9948         Align the pool element size to a sizeof (void *) boundary.
9949
9950         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
9951         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
9952         General Solaris fixes.
9953
9954         * test/data/valid-messages/simplest-manual.message:
9955         Explicitly state that we want little-endian packing.
9956
9957 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
9958
9959         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
9960
9961         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
9962         Added to create a transport connecting using a tcp/ip socket.
9963
9964         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
9965         to a tcp socket at given host and port.
9966         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
9967         hostname and port.
9968
9969         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
9970
9971         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
9972         Added to create a server listening on a TCP/IP socket.
9973
9974 2003-02-19  Havoc Pennington  <hp@pobox.com>
9975
9976         Throughout: mop up all the Doxygen warnings and undocumented
9977         stuff.
9978
9979         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
9980         to search any paths.
9981
9982         * dbus/dbus-threads.c: move global mutex initializers to
9983         dbus-internals.h, multiple prototypes was confusing doxygen
9984         besides being kind of ugly
9985
9986         * Doxyfile (PREDEFINED): have Doxygen define
9987         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from
9988         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
9989         (do not abuse the feature! it's for stuff like the autogenerated
9990         macros in dbus-md5.c, not just for things you don't feel like
9991         documenting...)
9992
9993 2003-02-18  Havoc Pennington  <hp@pobox.com>
9994
9995         * dbus/dbus-string.c (_dbus_string_zero): new function
9996
9997         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
9998         wrap it in some dbus-friendly API
9999
10000         * dbus/dbus-types.h: add 16-bit types
10001
10002 2003-02-18  Joe Shaw  <joe@assbarn.com>
10003
10004         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
10005         credentials from our currently running process.
10006         (get_word): Fix a buglet where we were copying the entire length
10007         instead of relative to our position.
10008
10009         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
10010         keys on the stack... it's 640k of data.
10011
10012         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
10013         read the credentials byte off the socket, even if we don't have
10014         SO_PEERCRED.
10015         (_dbus_poll): Implement poll() using select() for systems which
10016         don't have it.
10017
10018         * glib/test-dbus-glib.c (main): Print out an error if no
10019         parameters are given.
10020
10021         * test/data/auth/fallback.auth-script: Added.  Tests that a client
10022         can fallback to a secondary auth mechanism if the first fails.
10023
10024 2003-02-18  Havoc Pennington  <hp@pobox.com>
10025
10026         * AUTHORS: add Alex
10027
10028 2003-02-17  Havoc Pennington  <hp@pobox.com>
10029
10030         * doc/dbus-specification.sgml: lots of cosmetic
10031         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
10032         env variable to DBUS_BUS_ADDRESS, s/client/application/,
10033         s/server/bus/ (except in authentication section). Add a section
10034         "Message Bus Message Routing"
10035
10036 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
10037
10038         Release 0.4
10039
10040         * NEWS: Update
10041
10042 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
10043
10044         * doc/dbus-specification.sgml:
10045         Specification updates.
10046
10047 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
10048
10049         * bus/activation.c: (bus_activation_init), (child_setup),
10050         (bus_activation_activate_service):
10051         * bus/activation.h:
10052         * bus/main.c: (main):
10053         Set DBUS_ADDRESS environment variable.
10054
10055         * dbus/dbus-errors.c: (dbus_set_error):
10056         Don't use va_copy since that's a C99 feature.
10057
10058         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
10059         (_dbus_spawn_async):
10060         * dbus/dbus-sysdeps.h:
10061         Add child_setup_func to _dbus_spawn_async.
10062
10063         * doc/dbus-specification.sgml:
10064         Update specification.
10065
10066         * test/spawn-test.c: (setup_func), (main):
10067         Fix test.
10068
10069 2003-02-17  Alexander Larsson  <alexl@redhat.com>
10070
10071         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
10072         Added todo.
10073
10074 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
10075
10076         * doc/.cvsignore:
10077         * doc/Makefile.am:
10078         * doc/dbus-test-plan.sgml:
10079         Add test plan document.
10080
10081         * test/Makefile.am:
10082         Fix distcheck.
10083
10084 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
10085
10086         * dbus/dbus-message.c: (decode_header_data),
10087         (_dbus_message_loader_return_buffer):
10088         Set the header padding amount when loading a message.
10089
10090 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
10091
10092         * bus/dispatch.c: (send_one_message):
10093         Only send broadcast messages to registered connections.
10094
10095         * dbus/dbus-message.c: (dbus_message_name_is):
10096         * dbus/dbus-message.h:
10097         New convenience function.
10098
10099         * dbus/dbus-transport-debug.c: (do_reading):
10100         Only dispatch one message per run.
10101
10102         * test/Makefile.am:
10103         * test/bus-test.c: (new_connection_callback), (die),
10104         (test_hello_client1_handler), (test_hello_client2_handler),
10105         (test_hello_replies), (main):
10106
10107         * test/bus-test-loop.[ch]:
10108         Add these.
10109
10110 2003-02-16  Havoc Pennington  <hp@pobox.com>
10111
10112         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
10113         backward conditional
10114
10115 2003-02-16  Alexander Larsson  <alexl@redhat.com>
10116
10117         * dbus/dbus-connection.c:
10118         Implement sent_message_with_reply. (with_reply_and block is still
10119         busted).
10120         Made dispatch_message not lose message if OOM.
10121
10122         * dbus/dbus-errors.h:
10123         Add NoReply error (for reply timeouts).
10124
10125 2003-02-16  Alexander Larsson  <alexl@redhat.com>
10126
10127         * dbus/dbus-hash.c (_dbus_hash_table_unref):
10128         Actually free keys and values when destroying hashtable.
10129
10130 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
10131
10132         * dbus/dbus-auth.c: (client_try_next_mechanism):
10133         Plug a leak.
10134
10135         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
10136         Return TRUE if there's no thread implementation around.
10137
10138         * glib/dbus-gmain.c: (free_source),
10139         (dbus_connection_hookup_with_g_main):
10140         Make sure to remove the GSource when the connection is finalized.
10141
10142 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
10143
10144         * bus/dispatch.c: (bus_dispatch_message_handler):
10145         * dbus/dbus-errors.h:
10146         Return an error if someone tries to send a message to a service
10147         that doesn't exist.
10148
10149 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
10150
10151         * bus/activation.c: (load_directory), (bus_activation_init),
10152         (bus_activation_activate_service):
10153         * bus/activation.h:
10154         * bus/driver.c:
10155         (bus_driver_handle_activate_service), (bus_driver_handle_message):
10156         More work on the activation handling.
10157
10158         * dbus/dbus-errors.h:
10159         Add some error messages
10160
10161         * dbus/dbus-message.c: (dbus_message_new_error_reply):
10162         * dbus/dbus-message.h:
10163         New function that creates an error message.
10164
10165         * dbus/dbus-protocol.h:
10166         Add ACTIVATE_SERVER message.
10167
10168         * dbus/dbus-server-unix.c: (unix_handle_watch),
10169         (_dbus_server_new_for_domain_socket):
10170         Call _dbus_fd_set_close_on_exec.
10171
10172         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
10173         (_dbus_spawn_async), (_dbus_disable_sigpipe),
10174         (_dbus_fd_set_close_on_exec):
10175         * dbus/dbus-sysdeps.h:
10176         Add _dbus_fd_set_close_on exec function. Also add function that checks
10177         that all open fds are set to close-on-exec and warns otherwise.
10178
10179         * dbus/dbus-transport-unix.c:
10180         (_dbus_transport_new_for_domain_socket):
10181         Call _dbus_fd_set_close_on_exec.
10182
10183 2003-02-16  Havoc Pennington  <hp@pobox.com>
10184
10185         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
10186         allow people to avoid setting SIGPIPE to SIG_IGN
10187         (_dbus_connection_new_for_transport): disable SIGPIPE unless
10188         we've been asked not to
10189
10190 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
10191
10192         * dbus/dbus-list.c: (_dbus_list_append_link),
10193         (_dbus_list_prepend_link):
10194         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
10195         (dbus_realloc):
10196         Warning fixes.
10197
10198 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
10199
10200         * bus/Makefile.am:
10201         * bus/activation.c: (bus_activation_entry_free),
10202         (add_desktop_file_entry), (load_directory), (bus_activation_init):
10203         * bus/activation.h:
10204         * bus/main.c: (main):
10205         Add simple activation support, doesn't work yet though.
10206
10207 2003-02-15   Zack Rusin  <zack@kde.org>
10208
10209         * qt/dbus-qthread.cpp:  small casting fix
10210
10211 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
10212
10213         * dbus/dbus-errors.c: (dbus_set_error):
10214         * dbus/dbus-errors.h:
10215         Add a few errors and make dbus_set_error void.
10216
10217         * dbus/dbus-sysdeps.c:
10218         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
10219         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
10220         * dbus/dbus-sysdeps.h:
10221         Add _dbus_spawn_async.
10222
10223         * test/spawn-test.c: (main):
10224         Test for _dbus_spawn_async.
10225
10226 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
10227
10228         * dbus/dbus-internals.h:
10229         Fix build without tests.
10230
10231         * dbus/dbus-list.c: (alloc_link):
10232         Fix a segfault when a malloc fails.
10233
10234         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
10235         (dbus_malloc0), (dbus_realloc):
10236         Add support for malloc debugging.
10237
10238 2003-02-15  Alexander Larsson  <alexl@redhat.com>
10239
10240         * dbus/dbus-threads.c:
10241         * dbus/dbus-threads.h:
10242         Add condvars. Remove static mutext from API.
10243         Implement static mutexes by initializing them from threads_init.
10244
10245         * glib/dbus-gthread.c:
10246         * qt/dbus-qthread.cpp:
10247         Update with the thread api changes.
10248
10249
10250         * dbus/dbus-list.c:
10251         * dbus/dbus-list.h:
10252         Turn StaticMutex into normal mutex + init function.
10253         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
10254         _dbus_list_append_link, _dbus_list_prepend_link
10255
10256
10257         * dbus/dbus-sysdeps.c:
10258         * dbus/dbus-sysdeps.h:
10259         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
10260         _dbus_atomic_dec. Only slow fallback implementation at the moment.
10261
10262         * dbus/dbus-protocol.h:
10263         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
10264
10265         * dbus/dbus-message.c:
10266         Make ref/unref atomic.
10267         Fix some docs.
10268
10269         * dbus/dbus-connection-internal.h:
10270         * dbus/dbus-connection.c:
10271         * dbus/dbus-connection.h:
10272         Make threadsafe.
10273         Change _peek to _borrow,_return & _steal_borrowed.
10274         Change disconnect callback to event.
10275         Make dbus_connection_dispatch_messages reentrant.
10276
10277         * dbus/dbus-transport.c:
10278         Don't ref the connection on calls to the transport
10279         implementation.
10280
10281         * dbus/dbus-message-handler.c:
10282         Make threadsafe.
10283
10284         * glib/dbus-gmain.c:
10285         Don't use peek_message anymore
10286
10287         * test/Makefile.am:
10288         * test/debug-thread.c:
10289         * test/debug-thread.h:
10290         Simple thread implementation that asserts() on deadlocks in
10291         single-threaded code.
10292
10293         * test/bus-test.c:
10294         (main) Call debug_threads_init.
10295
10296         * test/watch.c:
10297         Use disconnect message instead of disconnect callback.
10298
10299         * bus/connection.c:
10300         * bus/connection.h:
10301         Don't call dbus_connection_set_disconnect_function. Instead export
10302         bus_connection_disconnect.
10303
10304         * bus/dispatch.c:
10305         Call bus_connection_disconnect when we get a disconnected message.
10306
10307 2003-02-15  Havoc Pennington  <hp@pobox.com>
10308
10309         * dbus/dbus-message.c (dbus_message_new): fool around with the
10310         docs
10311
10312 2003-02-14  Havoc Pennington  <hp@pobox.com>
10313
10314         * dbus/dbus-mempool.c: fail if the debug functions so indicate
10315
10316         * dbus/dbus-memory.c: fail if the debug functions indicate we
10317         should
10318
10319         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
10320         (_dbus_decrement_fail_alloc_counter): debug functions to
10321         simulate memory allocation failures
10322
10323 2003-02-14  Havoc Pennington  <hp@pobox.com>
10324
10325         * dbus/dbus-errors.h (struct DBusError): add a word of padding
10326         to DBusError
10327
10328 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10329
10330         * bus/driver.c: (bus_driver_handle_hello):
10331         * bus/driver.h:
10332         * bus/services.c: (bus_service_lookup):
10333         Reorder message sending so we get a more sane order.
10334
10335         * test/bus-test.c: (message_handler):
10336         Fix tyop.
10337
10338 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10339
10340         * bus/driver.c: (bus_driver_send_service_deleted),
10341         (bus_driver_send_service_created), (bus_driver_send_service_lost),
10342         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
10343         (bus_driver_send_welcome_message),
10344         (bus_driver_handle_list_services),
10345         (bus_driver_handle_acquire_service),
10346         (bus_driver_handle_service_exists):
10347         * dbus/dbus-bus.c: (dbus_bus_register_client),
10348         (dbus_bus_acquire_service), (dbus_bus_service_exists):
10349         * dbus/dbus-errors.c: (dbus_result_to_string):
10350         * dbus/dbus-errors.h:
10351         * dbus/dbus-message.c: (dbus_message_append_args),
10352         (dbus_message_append_args_valist), (dbus_message_get_args),
10353         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
10354         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
10355         (dbus_message_iter_get_byte_array),
10356         (dbus_message_iter_get_string_array), (message_iter_test),
10357         (check_message_handling), (_dbus_message_test):
10358         * dbus/dbus-message.h:
10359         * test/bus-test.c: (main):
10360         Change fields to arguments in messages, so that they won't be
10361         confused with header fields.
10362
10363         * glib/test-dbus-glib.c: (main):
10364         Remove append_fields from hello message.
10365
10366 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10367
10368         * dbus/dbus-errors.c:
10369         * dbus/dbus-message.c:
10370         * dbus/dbus-string.c:
10371         Documentation fixes.
10372
10373 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10374
10375         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
10376         (remove_timeout):
10377         Implement support for timeouts in dbus-glib.
10378
10379 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10380
10381         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
10382         * dbus/dbus-message.c: (process_test_subdir):
10383         * test/break-loader.c: (find_breaks_based_on):
10384         Plug some memory leaks.
10385
10386 2003-02-13  Richard Hult  <rhult@codefactory.se>
10387
10388         * bus/main.c: Fix build.
10389
10390         * dbus/dbus-errors.h:
10391         * dbus/dbus-errors.c: Fix copyright for Anders.
10392
10393 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10394
10395         * bus/Makefile.am:
10396         Add utils.[ch]
10397
10398         * bus/connection.c: (bus_connection_foreach):
10399         Fix a warning.
10400
10401         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
10402         (unescape_string), (new_section), (parse_section_start),
10403         (parse_key_value), (report_error), (bus_desktop_file_load),
10404         (bus_desktop_file_get_string):
10405         * bus/desktop-file.h:
10406         Use DBusError for error reporting.
10407
10408         * bus/dispatch.c: (send_one_message),
10409         (bus_dispatch_message_handler):
10410         * bus/driver.c: (bus_driver_send_service_deleted),
10411         (bus_driver_send_service_created), (bus_driver_send_service_lost),
10412         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
10413         (bus_driver_send_welcome_message),
10414         (bus_driver_handle_list_services),
10415         (bus_driver_handle_acquire_service),
10416         (bus_driver_handle_service_exists):
10417         * bus/loop.c: (bus_loop_run):
10418         * bus/main.c:
10419         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
10420
10421         * bus/utils.c: (bus_wait_for_memory):
10422         * bus/utils.h:
10423         New files with general utility functions.
10424
10425         * dbus/dbus-internals.h:
10426         Remove _DBUS_HANDLE_OOM.
10427
10428 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10429
10430         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
10431         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
10432         * dbus/dbus-errors.h:
10433         Add DBusError structure.
10434
10435 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10436
10437         * test/data/valid-messages/standard-acquire-service.message:
10438         * test/data/valid-messages/standard-hello.message:
10439         * test/data/valid-messages/standard-list-services.message:
10440         * test/data/valid-messages/standard-service-exists.message:
10441         Add some standard messages.
10442
10443 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10444
10445         * bus/driver.c: (bus_driver_send_welcome_message),
10446         (bus_driver_handle_list_services),
10447         (bus_driver_handle_acquire_service),
10448         (bus_driver_handle_service_exists), (bus_driver_handle_message):
10449         Update for API changes in libdbus.
10450
10451         * dbus/dbus-message.c: (dbus_message_new_reply):
10452         * dbus/dbus-message.h:
10453         Remove the name argument. The spec states that replies shouldn't
10454         have a name.
10455
10456 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
10457
10458         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
10459         (report_error), (bus_desktop_file_load), (lookup_section),
10460         (lookup_line), (bus_desktop_file_get_raw),
10461         (bus_desktop_file_get_string):
10462         * bus/desktop-file.h:
10463         Some fixes, and new functions for getting a key value from a section.
10464
10465 2003-02-13  Havoc Pennington  <hp@pobox.com>
10466
10467         * test/data/auth/fail-after-n-attempts.auth-script: new test
10468
10469         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
10470         reject the client.
10471
10472 2003-02-13  Havoc Pennington  <hp@pobox.com>
10473
10474         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
10475         dbus_credentials_match were backward
10476
10477         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
10478         NO_CREDENTIALS and ROOT_CREDENTIALS
10479
10480         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine
10481         into here. Never process more commands after we've reached an
10482         end state; store further data as unused bytes.
10483
10484         * test/data/auth/*: add more auth tests
10485
10486         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
10487         command to match exact string and EXPECT_UNUSED to match unused
10488         bytes
10489
10490         * test/Makefile.am (dist-hook): fix to dist all the test stuff
10491
10492 2003-02-12  Havoc Pennington  <hp@pobox.com>
10493
10494         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
10495         \r off of popped lines
10496
10497         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
10498         scripts
10499
10500         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
10501         SEND, append \r\n
10502
10503 2003-02-12  Havoc Pennington  <hp@pobox.com>
10504
10505         * dbus/Makefile.am: remove break-loader from the build, since it
10506         moved.
10507
10508         * configure.in: add --enable-gcov to turn on coverage profiling
10509         flags and disable optimization
10510
10511 2003-02-10  Havoc Pennington  <hp@pobox.com>
10512
10513         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync
10514         initial cut at test framework for DBusAuth from laptop.
10515         Doesn't quite work yet but it compiles and I need to get
10516         it off the 266mhz laptop. ;-)
10517
10518         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
10519         fix a memleak in error case
10520
10521 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
10522
10523         * bus/Makefile.am:
10524         * bus/desktop-file.c:
10525         * bus/desktop-file.h:
10526         Add a desktop file parser.
10527
10528 2003-02-11  Zack Rusin  <zack@kde.org>
10529
10530         * qt/message.[h|cpp]: sample implementation
10531         of the KDE wrapper for DBusMessage
10532
10533 2003-02-09  Zack Rusin  <zack@kde.org>
10534
10535         * test/bus-test.c: make_it_compile
10536         * doc/dbus-specification.sgml: minimal semantic fix
10537
10538 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
10539
10540         Release 0.3
10541
10542         * NEWS: Update
10543
10544 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
10545
10546         * dbus/Makefile.am:
10547         * dbus/dbus-break-loader.c:
10548         * test/Makefile.am:
10549         * test/break-loader.c:
10550         Move dbus-break-loader to test/ and rename it to break-loader.
10551
10552 2003-02-02  Havoc Pennington  <hp@pobox.com>
10553
10554         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files
10555         for code to manage cookies in your home directory
10556
10557         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
10558
10559         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
10560         to authenticate, then disconnect the client.
10561
10562 2003-02-03  Alexander Larsson  <alexl@redhat.com>
10563
10564         * dbus/dbus-message.c (dbus_message_append_fields):
10565         Correct docs.
10566
10567 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10568
10569         * doc/dbus-specification.sgml:
10570         Update address format section.
10571
10572 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10573
10574         * test/Makefile.am:
10575         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
10576         (message_handler), (new_connection_callback), (loop_quit),
10577         (loop_run), (main):
10578         Add bus test.
10579
10580 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10581
10582         * bus/driver.c: (bus_driver_handle_service_exists):
10583         Simplify the code a bit.
10584
10585         * dbus/dbus-bus.c: (dbus_bus_service_exists):
10586         Fix a silly.
10587
10588 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10589
10590         * bus/Makefile.am:
10591         Add libdbus-daemon.la and link to it.
10592
10593 2003-02-01  James Willcox  <jwillcox@gnome.org>
10594
10595         * bus/driver.c: (bus_driver_handle_own_service):
10596         Actually include the service reply code in the message.
10597
10598 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10599
10600         * bus/driver.c: (bus_driver_handle_service_exists):
10601         Don't unref the incoming message.
10602
10603 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10604
10605         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
10606
10607 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
10608
10609         * dbus/dbus-server.c: (dbus_server_listen):
10610         * dbus/dbus-transport.c: (_dbus_transport_open):
10611         ifdef out the calls to the debug transport and server.
10612
10613 2003-02-02  Alexander Larsson  <alexl@redhat.com>
10614
10615         * dbus/dbus-watch.c (dbus_watch_get_flags):
10616         Add note in the docs that ERROR or HANGUP won't be returned
10617         and are assumed always on.
10618
10619         * glib/dbus-gmain.c (add_watch):
10620         Always add IO_ERR | IO_HUP
10621
10622         * dbus/dbus-message.h:
10623         Add semicolon after dbus_message_iter_get_string_array().
10624         Makes qt code build again
10625
10626 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
10627
10628         * bus/driver.c: (create_unique_client_name),
10629         (bus_driver_handle_hello):
10630         Don't take a name, just use a numeric id to identify
10631         each client.
10632
10633         * dbus/Makefile.am:
10634         * dbus/dbus-bus.c: (dbus_bus_register_client),
10635         (dbus_bus_acquire_service), (dbus_bus_service_exists):
10636         * dbus/dbus-bus.h:
10637         Add new convenience functions for communicating with the bus.
10638
10639         * dbus/dbus-message.h:
10640
10641         * dbus/dbus-protocol.h:
10642         Fix a typo.
10643
10644 2003-02-01  Alexander Larsson  <alexl@redhat.com>
10645
10646         * dbus/dbus-message.c (dbus_message_append_fields):
10647         Add some more doc comments.
10648
10649 2003-02-01  Havoc Pennington  <hp@pobox.com>
10650
10651         * dbus/dbus-break-loader.c (randomly_modify_length): change
10652         a 4-byte value in the message as if it were a length
10653
10654         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
10655         execute bit on saved files
10656
10657 2003-02-01  Havoc Pennington  <hp@pobox.com>
10658
10659         * dbus/dbus-break-loader.c (main): new program to find messages
10660         that break the loader.
10661
10662         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
10663         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
10664
10665         * dbus/dbus-string.c (_dbus_string_set_byte): new
10666
10667 2003-01-31  Havoc Pennington  <hp@pobox.com>
10668
10669         * dbus/dbus-message.c: refactor the test code to be more general,
10670         in preparation for writing a "randomly permute test cases to
10671         try to break the loader" program.
10672
10673 2003-01-31  Havoc Pennington  <hp@pobox.com>
10674
10675         * doc/dbus-specification.sgml: work on the specification
10676
10677         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check
10678         the protocol version of the message.
10679
10680         * dbus/dbus-protocol.h: drop special _REPLY names, the spec
10681         no longer specifies that.
10682         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not
10683         1/2/3/4)
10684
10685         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
10686         "break" for DBUS_TYPE_NIL, remove @todo
10687
10688 2003-01-31  Havoc Pennington  <hp@pobox.com>
10689
10690         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename
10691         just set_is_error/get_is_error as this is a commonly-used
10692         function, and write docs.
10693
10694 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
10695
10696         * dbus/dbus-address.c: (dbus_address_entry_free):
10697         Free key and value lists.
10698
10699         * dbus/dbus-internals.c: (_dbus_type_to_string):
10700         Add the types we didn't have.
10701
10702         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
10703         (_dbus_marshal_validate_arg):
10704         Add NIL types.
10705
10706         * dbus/dbus-message.c: (dbus_message_set_sender):
10707         Remove todo about being able to set sender to NULL.
10708
10709         (dbus_message_set_is_error_reply),
10710         (dbus_message_get_is_error_reply):
10711         * dbus/dbus-message.h:
10712         New functions.
10713
10714         * dbus/dbus-protocol.h:
10715         Add error reply flag.
10716
10717         * test/data/valid-messages/opposite-endian.message:
10718         Add NIL type to test.
10719
10720 2003-01-31  Havoc Pennington  <hp@pobox.com>
10721
10722         * doc/dbus-specification.sgml: fully specify the header.  Add
10723         flags and major protocol version, and change header/body len to
10724         unsigned.
10725
10726         * dbus/dbus-message-builder.c (append_saved_length): append length
10727         as uint32
10728
10729         * dbus/dbus-message.c (dbus_message_create_header): change header
10730         length and body length to unsigned. Add the new fields from the
10731         spec
10732         (_dbus_message_loader_return_buffer): unsigned header/body len
10733
10734 2003-01-30  Havoc Pennington  <hp@pobox.com>
10735
10736         * dbus/dbus-auth.c: rework to use only REJECTED, no
10737         MECHANISMS
10738
10739         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just
10740         use REJECTED, suggested by Mark McLoughlin
10741
10742 2003-01-30  Havoc Pennington  <hp@pobox.com>
10743
10744         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
10745         a better way to report errors here. e.g.  "unix address lacks
10746         path" or something. also "no such file" when the path doesn't
10747         exist, etc.
10748
10749         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
10750         leaking list nodes
10751         (dbus_parse_address): add @todo about documenting address format,
10752         and allowing , and ; to be escaped
10753
10754 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
10755
10756         * dbus/Makefile.am:
10757         Add dbus-address.[ch]
10758
10759         * dbus/dbus-address.c: (dbus_address_entry_free),
10760         (dbus_address_entries_free), (create_entry),
10761         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
10762         (dbus_parse_address), (_dbus_address_test):
10763         * dbus/dbus-address.h:
10764         New files for dealing with address parsing.
10765
10766         * dbus/dbus-connection.c:
10767         Document timeout functions.
10768
10769         * dbus/dbus-message.c:
10770         Document dbus_message_new_from_message.
10771
10772         * dbus/dbus-server-debug.c:
10773         Document.
10774
10775         * dbus/dbus-server.c: (dbus_server_listen):
10776         Parse address and use correct server implementation.
10777
10778         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
10779         * dbus/dbus-string.h:
10780         New function with test.
10781
10782         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
10783         * dbus/dbus-test.h:
10784         Add address tests.
10785
10786         * dbus/dbus-transport-debug.c:
10787         Document.
10788
10789         * dbus/dbus-transport.c: (_dbus_transport_open):
10790         Parse address and use correct transport implementation.
10791
10792 2003-01-30  Havoc Pennington  <hp@pobox.com>
10793
10794         * dbus/dbus-message.c: use message->byte_order instead of
10795         DBUS_COMPILER_BYTE_ORDER throughout.
10796         (dbus_message_create_header): pad header to align the
10797         start of the body of the message to 8-byte boundary
10798
10799         * dbus/dbus-marshal.h: make all the demarshalers take const
10800         DBusString arguments.
10801
10802         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
10803         validate message args here, so we don't have to do slow validation
10804         later, and so we catch bad messages as they are incoming. Also add
10805         better checks on header_len and body_len. Also fill in
10806         message->byte_order
10807
10808         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
10809         implemented properly)
10810         (_dbus_string_validate_nul): new function to check all-nul
10811
10812         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
10813         get_arg_end_pos and remove all validation
10814         (_dbus_marshal_validate_arg): actually do validation here.
10815
10816 2003-01-29  Havoc Pennington  <hp@pobox.com>
10817
10818         * dbus/dbus-message.c (check_message_handling): fix assertion
10819         failure on set_client_serial
10820
10821 2003-01-28  Havoc Pennington  <hp@pobox.com>
10822
10823         * dbus/dbus-server-debug.c: Add doc section comments
10824
10825         * dbus/dbus-transport-debug.c: add doc section comments
10826
10827 2003-01-28  Havoc Pennington  <hp@redhat.com>
10828
10829         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
10830         the reverse order from how I had it
10831         (_dbus_string_base64_encode): reverse encoding order. I was
10832         basically byteswapping everything during encoding.
10833
10834 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
10835
10836         * dbus/dbus-connection-internal.h:
10837         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
10838         (_dbus_connection_remove_timeout):
10839         Add functions for adding and removing timeouts.
10840
10841         * dbus/dbus-message.c: (dbus_message_new_from_message):
10842         Add new function that takes a message and creates an exact
10843         copy of it, but with the refcount set to 1.
10844         (check_message_handling):
10845         Fix build error.
10846
10847         * dbus/dbus-server-protected.h:
10848         * dbus/dbus-server.c: (_dbus_server_init_base),
10849         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
10850         (dbus_server_set_timeout_functions):
10851         (_dbus_server_remove_timeout):
10852         New functions so that a server can add and remove timeouts.
10853
10854         (dbus_server_listen):
10855         Add commented out call to dbus_server_debug_new.
10856
10857         * dbus/dbus-timeout.c: (_dbus_timeout_new):
10858         Actually set the handler, doh.
10859
10860         * dbus/dbus-transport.c: (_dbus_transport_open):
10861         Add commented out call to dbus_transport_debug_client_new.
10862
10863         * dbus/Makefile.am:
10864         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
10865
10866 2003-01-28  Havoc Pennington  <hp@pobox.com>
10867
10868         * dbus/dbus-message.c (check_message_handling): function to check
10869         on the loaded message, iterates over it etc.
10870
10871 2003-01-28  Havoc Pennington  <hp@pobox.com>
10872
10873         * test/Makefile.am (dist-hook): fix make distdir
10874
10875         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
10876
10877 2003-01-27  Havoc Pennington  <hp@pobox.com>
10878
10879         * dbus/dbus-mempool.c (time_for_size): replace printf with
10880         _dbus_verbose
10881
10882         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
10883         empty lines; fix the SAVE_LENGTH stuff to be
10884         START_LENGTH/END_LENGTH so it actually works; couple other
10885         bugfixes
10886
10887         * test/Makefile.am (dist-hook): add dist-hook for .message files
10888
10889         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
10890         can be constant or locked.
10891         (_dbus_string_free): allow freeing a const string as
10892         documented/intended
10893
10894         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
10895
10896         * dbus/dbus-test-main.c (main): take an argument which is the
10897         directory containing test data
10898
10899         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
10900         argument to this and load all the messages in test/data/
10901         checking that they can be loaded or not loaded as appropriate.
10902
10903 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
10904
10905         * bus/dispatch.c: (bus_dispatch_message_handler):
10906         Dispatch messages sent to services.
10907
10908         * bus/driver.c: (bus_driver_send_service_deleted),
10909         (bus_driver_send_service_created), (bus_driver_send_service_lost),
10910         (bus_driver_send_service_acquired):
10911         Add helper functions for sending service related messages.
10912
10913         (bus_driver_send_welcome_message):
10914         Send HELLO_REPLY instead of WELCOME.
10915
10916         (bus_driver_handle_list_services):
10917         Send LIST_SERVICES_REPLY instead of SERVICES.
10918
10919         (bus_driver_handle_own_service),
10920         (bus_driver_handle_service_exists):
10921         New message handlers.
10922
10923         (bus_driver_handle_message):
10924         Invoke new message handlers.
10925
10926         (bus_driver_remove_connection):
10927         Don't remove any services here since that's done automatically
10928         by bus_service_remove_owner now.
10929
10930         * bus/driver.h:
10931         New function signatures.
10932
10933         * bus/services.c: (bus_service_add_owner):
10934         Send ServiceAcquired message if we're the only primary owner.
10935
10936         (bus_service_remove_owner):
10937         Send ServiceAcquired/ServiceLost messages.
10938
10939         (bus_service_set_prohibit_replacement),
10940         (bus_service_get_prohibit_replacement):
10941         Functions for setting prohibit replacement.
10942
10943         (bus_service_has_owner):
10944         New function that checks if a connection is in the owner queue of
10945         a certain service.
10946
10947         * bus/services.h:
10948         Add new function signatures.
10949
10950         * dbus/dbus-list.c: (_dbus_list_test):
10951         Add tests for _dbus_list_remove_last and traversing the list backwards.
10952
10953         * dbus/dbus-list.h:
10954         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
10955         go any further, so return NULL then.
10956
10957         * dbus/dbus-protocol.h:
10958         Add new messages, service flags and service replies.
10959
10960 2003-01-26  Havoc Pennington  <hp@pobox.com>
10961
10962         * dbus/dbus-message-builder.c: implement, completely untested.
10963
10964         * test/data/*: add data to be used in testing.
10965         ".message" files are our simple loadable text format.
10966         ".message-raw" will be binary dumps of messages.
10967
10968         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
10969
10970 2003-01-26  Havoc Pennington  <hp@pobox.com>
10971
10972         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
10973
10974         * dbus/dbus-errors.c (dbus_result_to_string): add
10975         file errors
10976
10977         * dbus/dbus-message-builder.c: new file, will contain code to load
10978         up messages from files. Not implemented yet.
10979
10980 2003-01-26  Havoc Pennington  <hp@pobox.com>
10981
10982         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
10983         the sender by setting to NULL
10984
10985 2003-01-26  Havoc Pennington  <hp@pobox.com>
10986
10987         The unit tests pass, but otherwise untested.  If it breaks, the
10988         tests should have been better. ;-)
10989
10990         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
10991         the connection.
10992
10993         * dbus/dbus-message.c: redo everything so we maintain
10994         message->header as the only copy of the various fields.
10995         This avoids the possibility of out-of-memory in some cases,
10996         for example dbus_message_lock() can't run out of memory anymore,
10997         and avoids extra copying. Figured I may as well go ahead and do
10998         this since it was busted for dbus_message_lock to not return
10999         failure on OOM, and dbus_message_write_header was totally
11000         unchecked for OOM. Also fixed some random other bugs.
11001
11002         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
11003         that strings are nul-terminated. Also, end_pos can be equal
11004         to string length just not greater than, I think.
11005         (_dbus_marshal_set_int32): new function
11006         (_dbus_marshal_set_uint32): new function
11007         (_dbus_marshal_set_string): new function
11008
11009         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
11010         a warning, init timeout_list to NULL
11011         (dbus_connection_send_message): don't use uninitialized variable
11012         "serial"
11013
11014         * dbus/dbus-string.c (_dbus_string_replace_len): new function
11015
11016 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
11017
11018         * bus/driver.c: (bus_driver_handle_hello),
11019         (bus_driver_send_welcome_message):
11020         Plug leaks
11021
11022 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
11023
11024         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
11025         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
11026         (dbus_connection_unref):
11027         * dbus/dbus-marshal.c: (_dbus_marshal_test):
11028         * dbus/dbus-message.c: (dbus_message_unref),
11029         Plug memory leaks.
11030
11031         (dbus_message_get_fields):
11032         Remove debugging printout.
11033
11034         (_dbus_message_loader_return_buffer):
11035         Don't store the header string.
11036
11037         (_dbus_message_test):
11038         Plug leaks.
11039
11040 2003-01-26  Richard Hult  <rhult@codefactory.se>
11041
11042         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
11043         the file descriptor list, since it can change under us.
11044
11045 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11046
11047         * glib/dbus-gmain.c: (dbus_connection_prepare),
11048         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
11049         (remove_watch), (dbus_connection_hookup_with_g_main):
11050         Rewrite the glib handling to use its own GSource instead of a
11051         GIOChannel so we can catch messages put in the queue while waiting
11052         for a reply.
11053
11054 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11055
11056         * bus/Makefile.am:
11057         * bus/connection.c: (connection_disconnect_handler),
11058         (connection_watch_callback), (bus_connection_setup):
11059         * bus/dispatch.c: (send_one_message),
11060         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
11061         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
11062         * bus/dispatch.h:
11063         * bus/driver.c: (bus_driver_send_service_deleted),
11064         (bus_driver_send_service_created), (bus_driver_handle_hello),
11065         (bus_driver_send_welcome_message),
11066         (bus_driver_handle_list_services), (bus_driver_remove_connection),
11067         (bus_driver_handle_message):
11068         * bus/driver.h:
11069         Refactor code, put the message dispatching in its own file. Use
11070         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
11071         is disconnected.
11072
11073 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11074
11075         * dbus/dbus-internals.h:
11076         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
11077
11078         * dbus/dbus-message.c: (dbus_message_get_sender):
11079         * dbus/dbus-message.h:
11080         Implement dbus_message_get_sender.
11081
11082         * dbus/dbus-protocol.h:
11083         Add message and service defines.
11084
11085 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11086
11087         * dbus/dbus-connection.c: (dbus_connection_send_message):
11088         * dbus/dbus-message-internal.h:
11089         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
11090         (dbus_message_write_header):
11091         Remove _dbus_messag_unlock and don't set the client serial on a
11092         message if one already exists.
11093
11094 2003-01-24  Havoc Pennington  <hp@pobox.com>
11095
11096         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
11097         list_pool
11098
11099         * bus/driver.c (bus_driver_handle_list_services): fix a leak
11100         on OOM
11101
11102 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11103
11104         * dbus/dbus-list.c: (alloc_link), (free_link):
11105         Use a memory pool for the links.
11106
11107 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11108
11109         * bus/connection.c: (bus_connection_foreach):
11110         * bus/connection.h:
11111         Add new bus_connection_foreach function.
11112
11113         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
11114         Add function that broadcasts a message to all clients.
11115
11116         (bus_driver_send_service_created), (bus_driver_handle_hello),
11117         (bus_driver_send_welcome_message),
11118         (bus_driver_handle_list_services), (bus_driver_message_handler):
11119         Implement functions that take care of listing services, and notifying
11120         clients when new services are created.
11121
11122         * bus/services.c: (bus_services_list):
11123         * bus/services.h:
11124         Add new function that returns an array of strings with the currently
11125         registered services.
11126
11127         * glib/dbus-glib.h:
11128         * glib/dbus-gmain.c:
11129         Update copyright year.
11130
11131 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
11132
11133         * dbus/dbus-connection.c: (dbus_connection_send_message):
11134         Unlock the message in case it was sent earlier.
11135
11136         (dbus_connection_send_message_with_reply_and_block):
11137         Remove the reply message from the list.
11138
11139         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
11140         Set array_len and new_pos correctly.
11141
11142         (_dbus_marshal_test):
11143         Remove debug output.
11144
11145         * dbus/dbus-message-internal.h:
11146         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
11147         New function that returns the reply serial.
11148
11149         (_dbus_message_unlock):
11150         New function that unlocks a message and resets its header.
11151
11152         (dbus_message_append_string_array),
11153         (dbus_message_get_fields_valist),
11154         (dbus_message_iter_get_field_type),
11155         (dbus_message_iter_get_string_array),
11156         (dbus_message_get_fields),
11157         (dbus_message_append_fields_valist):
11158         Handle string arrays.
11159
11160         (dbus_message_set_sender):
11161         Make this function public since the bus daemon needs it.
11162
11163         (decode_header_data):
11164         Set the reply serial to -1 initially.
11165
11166         * dbus/dbus-message.h:
11167         Add dbus_message_set_sender.
11168
11169 2003-01-24  Havoc Pennington  <hp@pobox.com>
11170
11171         * doc/dbus-specification.sgml: add some stuff
11172
11173 2003-01-22  Havoc Pennington  <hp@pobox.com>
11174
11175         * doc/dbus-specification.sgml: Start to document the protocol.
11176
11177 2003-01-22  Havoc Pennington  <hp@pobox.com>
11178
11179         * dbus/dbus-connection.c
11180         (dbus_connection_send_message_with_reply_and_block): add some @todo
11181
11182         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
11183
11184 2003-01-21  Havoc Pennington  <hp@pobox.com>
11185
11186         (patch untested because can't compile)
11187
11188         * bus/driver.c (create_unique_client_name): make this function
11189         never recycle client names. Also, caller should initialize
11190         the DBusString.
11191
11192         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
11193
11194 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
11195
11196         * dbus/dbus-marshal.c: (_dbus_marshal_double),
11197         (_dbus_marshal_int32), (_dbus_marshal_uint32),
11198         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
11199         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
11200         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
11201         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
11202         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
11203         * dbus/dbus-marshal.h:
11204         * dbus/dbus-protocol.h:
11205         Add support for marshalling and demarshalling integer, double
11206         and string arrays.
11207
11208 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
11209
11210         * bus/Makefile.am:
11211         Add driver.[ch]
11212
11213         * bus/connection.c: (connection_disconnect_handler):
11214         Remove the connection from the bus driver's list.
11215
11216         (connection_watch_callback): Dispatch messages.
11217
11218         (free_connection_data): Free connection name.
11219
11220         (bus_connection_setup): Add connection to the bus driver's list.
11221         (bus_connection_remove_owned_service):
11222         (bus_connection_set_name), (bus_connection_get_name):
11223         Add functions for setting and getting the connection's name.
11224
11225         * bus/connection.h:
11226         Add function headers.
11227
11228         * bus/driver.c: (create_unique_client_name),
11229         (bus_driver_handle_hello_message),
11230         (bus_driver_send_welcome_message), (bus_driver_message_handler),
11231         (bus_driver_add_connection), (bus_driver_remove_connection):
11232         * bus/driver.h:
11233         * bus/main.c:
11234         * bus/services.c: (bus_service_free):
11235         * bus/services.h:
11236         New file that handles communication and registreation with the bus
11237         itself.
11238
11239 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
11240
11241         * dbus/dbus-connection.c: (dbus_connection_send_message):
11242         Add a new client_serial parameter.
11243
11244         (dbus_connection_send_message_with_reply):
11245         Remove a @todo since we've implemented the blocking function.
11246
11247         (dbus_connection_send_message_with_reply_and_block):
11248         New function that sends a message and waits for a reply and
11249         then returns the reply.
11250
11251         * dbus/dbus-connection.h:
11252         Add new functions.
11253
11254         * dbus/dbus-errors.c: (dbus_result_to_string):
11255         * dbus/dbus-errors.h:
11256         Add new DBUS_RESULT.
11257
11258         * dbus/dbus-message-internal.h:
11259         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
11260         (_dbus_message_set_sender), (dbus_message_write_header),
11261         (dbus_message_new_reply), (decode_header_data),
11262         (_dbus_message_loader_return_buffer), (_dbus_message_test):
11263         * dbus/dbus-message.h:
11264         Add new functions that set the reply serial and sender.
11265         Also marshal and demarshal them correctly and add test.
11266
11267         * dbus/dbus-protocol.h:
11268         Add new DBUS_MESSAGE_TYPE_SENDER.
11269
11270         * glib/dbus-glib.h:
11271         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
11272         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
11273         (dbus_connection_hookup_with_g_main):
11274         * glib/test-dbus-glib.c: (main):
11275         Rewrite to use GIOChannel and remove the GSource crack.
11276
11277         * test/echo-client.c: (main):
11278         * test/watch.c: (check_messages):
11279         Update for changed APIs
11280
11281 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
11282
11283         * dbus/Makefile.am: Add dbus-timeout.[cħ]
11284
11285         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
11286         Create a DBusTimeoutList.
11287         (dbus_connection_set_timeout_functions): Add new function to
11288         set timeout callbacks
11289
11290         * dbus/dbus-connection.h: Add public DBusTimeout API.
11291
11292         * dbus/dbus-message.c: (dbus_message_get_service):
11293         * dbus/dbus-message.h:  New function.
11294
11295         * dbus/dbus-server.c: Fix small doc typo.
11296
11297         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
11298
11299 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
11300
11301         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
11302         of the string, just as long as specified.
11303
11304 2003-01-19  Havoc Pennington  <hp@pobox.com>
11305
11306         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
11307         new function
11308
11309         * dbus/dbus-server.c (dbus_server_set_max_connections)
11310         (dbus_server_get_max_connections, dbus_server_get_n_connections):
11311         keep track of current number of connections, and add API for
11312         setting a max (but haven't implemented enforcing the max yet)
11313
11314 2003-01-18  Havoc Pennington  <hp@pobox.com>
11315
11316         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
11317         reading/writing if read_watch != NULL or write_watch != NULL.
11318
11319         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
11320         the message loader code to actually load message->header and
11321         message->body into the newly-created message.
11322
11323         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
11324         in OOM case
11325
11326         * dbus/dbus-connection.c (dbus_connection_set_max_message_size)
11327         (dbus_connection_get_max_message_size)
11328         (dbus_connection_set_max_live_messages_size)
11329         (dbus_connection_get_max_live_messages_size): implement some
11330         resource limitation functions
11331
11332         * dbus/dbus-resources.c: new file implementing some of the
11333         resource limits stuff
11334
11335         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
11336         missing docs, add @todo to handle OOM etc.
11337
11338         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
11339         docs
11340
11341 2003-01-18  Havoc Pennington  <hp@pobox.com>
11342
11343         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the
11344         connection if it hasn't been already.
11345
11346         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
11347         replace with DisconnectFunction.
11348
11349 2003-01-18  Havoc Pennington  <hp@pobox.com>
11350
11351         Building --disable-verbose-mode --disable-asserts --disable-tests
11352         cuts the library from 112K to 45K or so
11353
11354         * configure.in: check for varargs macro support,
11355         add --enable-verbose-mode, --enable-asserts.
11356
11357         * dbus/dbus-internals.h (_dbus_assert): support
11358         DBUS_DISABLE_ASSERT
11359         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
11360
11361 2003-01-18  Havoc Pennington  <hp@pobox.com>
11362
11363         * dbus/dbus-test.c: include config.h so that tests actually run
11364
11365         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
11366         so the failure mode when that assumption fails will be plenty
11367         obvious.
11368
11369 2003-01-18  Havoc Pennington  <hp@pobox.com>
11370
11371         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
11372
11373         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
11374         the distribution
11375
11376         * test/Makefile.am: don't use special variable "TESTS" for echo-*
11377         since we don't want to use those in make check
11378
11379 2003-01-15  Havoc Pennington  <hp@redhat.com>
11380
11381         Release 0.2
11382
11383         * NEWS: update
11384
11385 2003-01-15  Havoc Pennington  <hp@redhat.com>
11386
11387         * test/Makefile.am: fix so that test source code ends up in the
11388         distribution on make distcheck
11389
11390 2003-01-15  Havoc Pennington  <hp@redhat.com>
11391
11392         Release 0.1.
11393
11394         * NEWS: update
11395
11396 2003-01-15  Havoc Pennington  <hp@redhat.com>
11397
11398         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
11399         fix build when --disable-tests
11400
11401         * Makefile.am (EXTRA_DIST): put HACKING in here
11402
11403         * HACKING: document procedure for making a tarball release.
11404
11405 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
11406
11407         * bus/connection.c: (connection_error_handler),
11408         (bus_connection_setup):
11409         * bus/main.c: (main):
11410         Make sure that the DBusConnectionData struct is NULLed
11411         out to prevent a segfault.
11412
11413         * dbus/dbus-errors.c: (dbus_result_to_string):
11414         * dbus/dbus-errors.h:
11415         * dbus/dbus-message.c: (dbus_message_get_fields),
11416         (dbus_message_get_fields_valist), (_dbus_message_test):
11417         * dbus/dbus-message.h:
11418         Make dbus_message_get_fields return a result code so we can
11419         track invalid fields as well as oom.
11420
11421 2003-01-11  Havoc Pennington  <hp@pobox.com>
11422
11423         * configure.in: change --enable-test/--enable-ansi action-if-given
11424         to enable_foo=$enableval instead of enable_foo=yes
11425
11426 2003-01-08  Havoc Pennington  <hp@pobox.com>
11427
11428         * dbus/dbus-string.c (_dbus_string_align_length): new function
11429
11430         * dbus/dbus-test-main.c: move main() for test app here
11431         * dbus/dbus-test.c
11432         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
11433         symbol to run tests, because dbus-test isn't in the main
11434         library
11435
11436         Code review nitpicks.
11437
11438         * dbus/dbus-message.c (dbus_message_write_header): add newlines
11439         for people with narrow emacs ;-). Assert client_serial was filled
11440         in. Assert message->name != NULL.
11441         (dbus_message_append_fields): have "first_field_type" arg separate
11442         from va list, needed for C++ binding that also uses varargs IIRC
11443         and helps with type safety
11444         (dbus_message_new): add @todo about using DBusString to store
11445         service/name internally
11446         (dbus_message_new): don't leak ->service and ->name on OOM later
11447         in the function
11448         (dbus_message_unref): free the service name
11449         (dbus_message_get_fields): same change to varargs
11450         i.e. first_field_type
11451         (_dbus_message_loader_return_buffer): assert that the message data
11452         is aligned (if not it's a bug in our code). Put in verbose griping
11453         about why we set corrupted = TRUE.
11454         (decode_header_data): add FIXME that char* is evil.  Was going to
11455         add FIXME about evil locale-specific string.h strncmp, but just
11456         switched to wacky string-as-uint32 optimization. Move check for
11457         "no room for field name" above get_const_data_len() to avoid
11458         assertion failure in get_const_data_len if we have trailing 2
11459         bytes or the like. Check for service and name fields being
11460         provided twice. Don't leak service/name on error. Require field
11461         names to be aligned to 4 bytes.
11462
11463         * dbus/dbus-marshal.c: move byte swap stuff to header
11464         (_dbus_pack_int32): uscore-prefix
11465         (_dbus_unpack_int32): uscore-prefix
11466         (_dbus_unpack_uint32): export
11467         (_dbus_demarshal_string): add @todo complaining about use of
11468         memcpy()
11469         (_dbus_marshal_get_field_end_pos): add @todo about bad error
11470         handling allowing corrupt data to go unchecked
11471
11472 2003-01-08  Havoc Pennington  <hp@redhat.com>
11473
11474         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write
11475         to the select() as needed for authentication. (should be using
11476         _dbus_poll() not select, but for another day)
11477
11478         * dbus/dbus.h: include dbus/dbus-protocol.h
11479
11480 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
11481
11482         * dbus/Makefile.am (dbusinclude_HEADERS): Install
11483         dbus-connection.h
11484
11485 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
11486
11487         * dbus/dbus-internals.c: (_dbus_type_to_string):
11488         New function that returns a string describing a type.
11489
11490         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
11491         * dbus/dbus-marshal.h:
11492         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
11493         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
11494         (dbus_message_iter_get_byte_array):
11495         * dbus/dbus-message.h:
11496         Add new convenience functions for appending and getting message fields.
11497         Also add demarshalling routines for byte arrays.
11498
11499 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
11500
11501         * dbus/dbus-connection-internal.h:
11502         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
11503         (_dbus_connection_get_next_client_serial),
11504         (dbus_connection_send_message):
11505         * dbus/dbus-internals.h:
11506         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
11507         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
11508         (_dbus_marshal_uint32), (_dbus_demarshal_double),
11509         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
11510         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
11511         (_dbus_verbose_bytes), (_dbus_marshal_test):
11512         * dbus/dbus-marshal.h:
11513         * dbus/dbus-message-internal.h:
11514         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
11515         (dbus_message_write_header), (_dbus_message_lock),
11516         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
11517         (dbus_message_get_name), (dbus_message_append_int32),
11518         (dbus_message_append_uint32), (dbus_message_append_double),
11519         (dbus_message_append_string), (dbus_message_append_byte_array),
11520         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
11521         (dbus_message_iter_unref), (dbus_message_iter_has_next),
11522         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
11523         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
11524         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
11525         (decode_header_data), (_dbus_message_loader_return_buffer),
11526         (message_iter_test), (_dbus_message_test):
11527         * dbus/dbus-message.h:
11528         * dbus/dbus-protocol.h:
11529         * dbus/dbus-test.c: (main):
11530         * dbus/dbus-test.h:
11531         * glib/test-dbus-glib.c: (message_handler), (main):
11532         * test/echo-client.c: (main):
11533         * test/watch.c: (check_messages):
11534         Make messages sendable and receivable for real.
11535
11536 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
11537
11538         * dbus/dbus-marshal.c: (_dbus_marshal_double),
11539         (_dbus_marshal_string), (_dbus_marshal_byte_array):
11540         * dbus/dbus-message.c: (dbus_message_append_int32),
11541         (dbus_message_append_uint32), (dbus_message_append_double),
11542         (dbus_message_append_string), (dbus_message_append_byte_array):
11543         Handle OOM restoration.
11544
11545 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
11546
11547         * dbus/dbus-marshal.c: (_dbus_marshal_string),
11548         (_dbus_demarshal_string), (_dbus_marshal_test):
11549         * dbus/dbus-marshal.h:
11550         * dbus/dbus-message.c: (dbus_message_get_name),
11551         Document these functions.
11552
11553         (dbus_message_append_int32), (dbus_message_append_uint32),
11554         (dbus_message_append_double), (dbus_message_append_string),
11555         (dbus_message_append_byte_array):
11556         * dbus/dbus-message.h:
11557         Add functions for adding message fields of different types.
11558
11559         * dbus/dbus-protocol.h:
11560         Add the different types.
11561
11562 2003-01-05  Havoc Pennington  <hp@pobox.com>
11563
11564         * bus/connection.c: implement routines for handling connections,
11565         first thing is keeping a list of owned services on each connection
11566         and setting up watches etc.
11567
11568         * bus/services.c: implement a mapping from service names to lists
11569         of connections
11570
11571         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
11572
11573         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
11574         to use static mutexes for global data
11575
11576         * dbus/dbus-connection.c (dbus_connection_set_data): add new
11577         collection of functions to set/get application-specific data
11578         on the DBusConnection.
11579
11580 2003-01-04  Havoc Pennington  <hp@pobox.com>
11581
11582         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
11583         (_dbus_poll): new function
11584
11585         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
11586         copied from GLib
11587
11588         * bus/loop.c: initial code for the daemon main loop
11589
11590 2003-01-04  Havoc Pennington  <hp@pobox.com>
11591
11592         * test/watch.c (error_handler): make it safe if the error handler
11593         is called multiple times (if we s/error handler/disconnect
11594         handler/ we should just guarantee it's called only once)
11595
11596         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
11597         error handler on disconnect (it's quite possible we should
11598         just change the error handler to a "disconnect handler," I'm
11599         not sure we have any other meaningful errors)
11600
11601         * configure.in: check for getpwnam_r
11602
11603         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
11604         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
11605         mechanism as in SASL spec, using socket credentials
11606
11607         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
11608         (_dbus_send_credentials_unix_socket): new function
11609
11610         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
11611         dbus_accept()
11612         (_dbus_write): only check errno if <0 returned
11613         (_dbus_write_two): ditto
11614
11615 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
11616
11617         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
11618         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
11619         (_dbus_marshal_test):
11620         * dbus/dbus-marshal.h:
11621         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
11622         to _dbus_marshal_utf8_string. Also fix some tests.
11623
11624 2002-12-28  Harri Porten  <porten@kde.org>
11625
11626         * configure.in: added check for C++ compiler and a very cheesy
11627         check for the Qt integration
11628
11629         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
11630
11631         * qt/Makefile.am: added
11632
11633         * qt/.cvsignore: added
11634
11635         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
11636         latter, added #ifdef QT_THREAD_SUPPORT guard.
11637
11638         * dbus/Makefile.am: added missing headers for make dist
11639
11640 2002-12-28  Kristian Rietveld  <kris@gtk.org>
11641
11642         * dbus/Makefile.am: fixup export-symbols-regex.
11643
11644 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
11645
11646         * acinclude.m4: Add this file and put the
11647         PKG_CHECK_MODULE macro in it.
11648
11649 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
11650
11651         * dbus/dbus-marshal.c: (_dbus_marshal_string),
11652         (_dbus_demarshal_double), (_dbus_demarshal_int32),
11653         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
11654         (_dbus_marshal_test):
11655         Make the demarshalling routines align the pos argument.
11656         Add string marshalling tests and fix the obvious bugs
11657         discovered.
11658
11659 2002-12-26  Havoc Pennington  <hp@pobox.com>
11660
11661         * dbus/dbus-auth.c: fixes fixes fixes
11662
11663         * dbus/dbus-transport-unix.c: wire up support for
11664         encoding/decoding data on the wire
11665
11666         * dbus/dbus-auth.c (_dbus_auth_encode_data)
11667         (_dbus_auth_decode_data): append to target string
11668         instead of nuking it.
11669
11670 2002-12-26  Havoc Pennington  <hp@pobox.com>
11671
11672         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
11673         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
11674         doh
11675
11676         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
11677         avoid swap_bytes() overhead (ignoring possible assembly stuff for
11678         now). Main point is because I wanted unpack_uint32 to implement
11679         _dbus_verbose_bytes
11680         (_dbus_verbose_bytes): new function
11681
11682         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
11683
11684         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
11685         mechanism to handle a corrupt message stream
11686         (_dbus_message_loader_new): fix preallocation to only prealloc,
11687         not prelengthen
11688
11689         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
11690         (_dbus_string_test): enhance tests for copy/move and fix the
11691         functions
11692
11693         * dbus/dbus-transport-unix.c: Hold references in more places to
11694         avoid reentrancy problems
11695
11696         * dbus/dbus-transport.c: ditto
11697
11698         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
11699         leak reference count in no-message case
11700
11701         * test/watch.c (do_mainloop): handle adding/removing watches
11702         during iteration over the watches. Also, ref the connection/server
11703         stored on a watch, so we don't try to mangle a destroyed one.
11704
11705         * dbus/dbus-transport-unix.c (do_authentication): perform
11706         authentication
11707
11708         * dbus/dbus-auth.c (get_state): add a state
11709         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
11710         (_dbus_auth_get_unused_bytes): append the unused bytes
11711         to the passed in string, rather than prepend
11712
11713         * dbus/dbus-transport.c (_dbus_transport_init_base): create
11714         the auth conversation DBusAuth
11715
11716         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
11717         (_dbus_transport_new_for_domain_socket): when creating a
11718         transport, pass in whether it's a client-side or server-side
11719         transport so we know which DBusAuth to create
11720
11721 2002-12-03  Havoc Pennington  <hp@pobox.com>
11722
11723         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
11724         _after_ finalizing the derived members
11725         (unix_connection_set): unref watch if we fail to add it
11726
11727         * dbus/dbus-connection.c (dbus_connection_unref): delete the
11728         transport first, so that the connection owned by the
11729         transport will be valid as the transport finalizes.
11730
11731         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
11732         if necessary, and remove watches from the connection.
11733
11734         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
11735
11736 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
11737
11738         * dbus/dbus-marshal.c: (_dbus_marshal_string),
11739         (_dbus_demarshal_double), (_dbus_demarshal_int32),
11740         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
11741         (_dbus_marshal_test):
11742         * dbus/dbus-marshal.h:
11743         Add string marshal functions and have the demarshal functions
11744         return the new position.
11745
11746 2002-12-25  Havoc Pennington  <hp@pobox.com>
11747
11748         * doc/dbus-sasl-profile.txt: docs on the authentication protocol,
11749         it is a simple protocol that just maps directly to SASL.
11750
11751         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
11752         initial implementation, not actually used yet.
11753
11754         * dbus/dbus-string.c (_dbus_string_find): new function
11755         (_dbus_string_equal): new function
11756         (_dbus_string_base64_encode): new function
11757         (_dbus_string_base64_decode): new function
11758
11759 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
11760
11761         * dbus/Makefile.am:
11762         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
11763         (_dbus_marshal_int32), (_dbus_marshal_uint32),
11764         (_dbus_demarshal_double), (_dbus_demarshal_int32),
11765         (_dbus_demarshal_uint32), (_dbus_marshal_test):
11766         * dbus/dbus-marshal.h:
11767         * dbus/dbus-protocol.h:
11768         * dbus/dbus-test.c: (main):
11769         * dbus/dbus-test.h:
11770         Add un-optimized marshalling/demarshalling routines.
11771
11772 2002-12-25  Harri Porten  <porten@kde.org>
11773
11774         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
11775
11776 2002-12-24  Zack Rusin  <zack@kde.org>
11777
11778         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
11779         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
11780         main loop stuff
11781
11782 2002-12-24  Havoc Pennington  <hp@pobox.com>
11783
11784         * glib/dbus-gthread.c: fix include
11785
11786         * glib/dbus-glib.h: rename DBusMessageHandler for now.
11787         I think glib API needs to change, though, as you don't
11788         want to use DBusMessageFunction, you want to use the
11789         DBusMessageHandler object. Probably
11790         dbus_connection_open_with_g_main_loop()
11791         and dbus_connection_setup_g_main_loop() or something like that
11792         (but think of better names...) that just create a connection
11793         that has watch/timeout functions etc. already set up.
11794
11795         * dbus/dbus-connection.c
11796         (dbus_connection_send_message_with_reply): new function just to
11797         show how the message handler helps us deal with replies.
11798
11799         * dbus/dbus-list.c (_dbus_list_remove_last): new function
11800
11801         * dbus/dbus-string.c (_dbus_string_test): free a string that
11802         wasn't
11803
11804         * dbus/dbus-hash.c: use memory pools for the hash entries
11805         (rebuild_table): be more paranoid about overflow, and
11806         shrink table when we can
11807         (_dbus_hash_test): reduce number of sprintfs and write
11808         valid C89. Add tests for case where we grow and then
11809         shrink the hash table.
11810
11811         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
11812
11813         * dbus/dbus-connection.c (dbus_connection_register_handler)
11814         (dbus_connection_unregister_handler): new functions
11815
11816         * dbus/dbus-message.c (dbus_message_get_name): new
11817
11818         * dbus/dbus-list.c: fix docs typo
11819
11820         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
11821         an object representing a handler for messages.
11822
11823 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
11824
11825         * glib/dbus-glib.h:
11826         * glib/dbus-gthread.c: (dbus_gthread_init):
11827         Don't use the gdbus prefix for public functions.
11828
11829 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
11830
11831         * Makefile.am:
11832         * configure.in:
11833         Add GLib checks and fixup .pc files
11834
11835         * glib/Makefile.am:
11836         * glib/dbus-glib.h:
11837         * glib/dbus-gmain.c: (gdbus_connection_prepare),
11838         (gdbus_connection_check), (gdbus_connection_dispatch),
11839         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
11840         (dbus_connection_gsource_new):
11841         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
11842         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
11843         * glib/test-dbus-glib.c: (message_handler), (main):
11844         Add GLib support.
11845
11846 2002-12-15  Harri Porten  <porten@kde.org>
11847
11848         * autogen.sh: check for libtoolize before attempting to use it
11849
11850         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
11851         struct.
11852
11853         * .cvsignore: ignore more stamp files
11854
11855         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
11856
11857         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
11858         without make install.
11859
11860 2002-12-15  Havoc Pennington  <hp@pobox.com>
11861
11862         * dbus/dbus-threads.c: add thread stubs that a higher library
11863         layer can fill in. e.g. the GLib wrapper might fill them in with
11864         GThread stuff. We still need to use this thread API to
11865         thread-safe-ize the library.
11866
11867 2002-12-12  Havoc Pennington  <hp@pobox.com>
11868
11869         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
11870         below new interfaces and include fewer system headers.
11871
11872         * dbus/dbus-sysdeps.c (_dbus_read): new function
11873         (_dbus_write): new function
11874         (_dbus_write_two): new function
11875         (_dbus_connect_unix_socket): new function
11876         (_dbus_listen_unix_socket): new function
11877
11878         * dbus/dbus-message-internal.h: change interfaces to use
11879         DBusString
11880
11881 2002-12-11  Havoc Pennington  <hp@pobox.com>
11882
11883         * dbus/dbus-types.h: add dbus_unichar
11884
11885         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
11886
11887         * dbus/dbus-connection.c (dbus_connection_send_message): return
11888         TRUE on success
11889
11890         * dbus/dbus-transport.c: include dbus-watch.h
11891
11892         * dbus/dbus-connection.c: include dbus-message-internal.h
11893
11894         * HACKING: add file with coding guidelines stuff.
11895
11896         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
11897         handling here, for security purposes (as in vsftpd). Not actually
11898         using this class yet.
11899
11900         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
11901         system/libc usage here, as in vsftpd, for ease of auditing (and
11902         should also simplify portability). Haven't actually moved all the
11903         system/libc usage into here yet.
11904
11905 2002-11-25  Havoc Pennington  <hp@pobox.com>
11906
11907         * dbus/dbus-internals.c (_dbus_verbose): fix to not
11908         always print the first verbose message.
11909
11910 2002-11-24  Havoc Pennington  <hp@pobox.com>
11911
11912         * test/echo-client.c, test/echo-server.c: cheesy test
11913         clients.
11914
11915         * configure.in (AC_CHECK_FUNCS): check for writev
11916
11917         * dbus/dbus-message.c (_dbus_message_get_network_data): new
11918         function
11919
11920         * dbus/dbus-list.c (_dbus_list_foreach): new function
11921
11922         * dbus/dbus-internals.c (_dbus_verbose): new function
11923
11924         * dbus/dbus-server.c, dbus/dbus-server.h: public object
11925         representing a server that listens for connections.
11926
11927         * dbus/.cvsignore: create
11928
11929         * dbus/dbus-errors.h, dbus/dbus-errors.c:
11930         public API for reporting errors
11931
11932         * dbus/dbus-connection.h, dbus/dbus-connection.c:
11933         public object representing a connection that
11934         sends/receives messages. (Same object used for
11935         both client and server.)
11936
11937         * dbus/dbus-transport.h, dbus/dbus-transport.c:
11938         Basic abstraction for different kinds of stream
11939         that we might read/write messages from.
11940
11941 2002-11-23  Havoc Pennington  <hp@pobox.com>
11942
11943         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN
11944         _DBUS_INT_MAX
11945
11946         * dbus/dbus-test.c (main): add list test, and include
11947         dbus-test.h as intended
11948
11949         * dbus/dbus-hash.c (_dbus_hash_table_remove_string)
11950         (_dbus_hash_table_remove_int): return value indicates
11951         whether the entry existed to remove
11952
11953         * dbus/dbus-list.c: add linked list utility class,
11954         with docs and tests
11955
11956         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
11957         array sometimes.
11958
11959 2002-11-23  Havoc Pennington  <hp@pobox.com>
11960
11961         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
11962         DBUS_END_DECLS to nothing, that should fix this once and for all
11963
11964         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
11965
11966         * dbus/dbus-message.c, dbus/dbus-hash.c:
11967         add some missing @brief
11968
11969 2002-11-23  Havoc Pennington  <hp@pobox.com>
11970
11971         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS
11972         to avoid confusing Doxygen
11973
11974         * dbus/dbus-hash.c: @} not }@
11975
11976         * dbus/dbus-message.c (struct DBusMessage): split out
11977         internals docs
11978
11979 2002-11-23  Havoc Pennington  <hp@pobox.com>
11980
11981         * configure.in: pile on more warning flags if using gcc
11982
11983         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have
11984         to document static functions
11985
11986         * configure.in: add summary to end of configure so it
11987         looks nice and attractive
11988
11989         * dbus/dbus-hash.c: finish implementation and write unit
11990         tests and docs
11991
11992         * configure.in: add --enable-tests to enable unit tests
11993
11994         * dbus/dbus-test.c: test program to run unit tests
11995         for all files in dbus/*, initially runs a test for
11996         dbus-hash.c
11997
11998         * dbus/dbus-internals.h: file to hold some internal utility stuff
11999
12000 2002-11-22  Havoc Pennington  <hp@redhat.com>
12001
12002         * dbus/dbus-hash.c: copy in Tcl hash table, not yet
12003         "ported" away from Tcl
12004
12005         * dbus/dbus-types.h: header for types such as dbus_bool_t
12006
12007 2002-11-22  Havoc Pennington  <hp@redhat.com>
12008
12009         * dbus/dbus.h: fixups for doc warnings
12010
12011         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
12012         macros
12013         (QUIET): make it quiet so we can see warnings
12014
12015         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
12016
12017 2002-11-22  Havoc Pennington  <hp@redhat.com>
12018
12019         * Makefile.am: include "Doxyfile" target in all-local
12020
12021         * configure.in: generate the Doxyfile
12022
12023         * Doxyfile.in: move Doxyfile here, so we can use
12024         configure to generate a Doxyfile with the right
12025         version number etc.
12026
12027 2002-11-22  Havoc Pennington  <hp@redhat.com>
12028
12029         * dbus/dbus-message.c: move inline docs into .c file
12030
12031         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
12032         so all docs are under doc/
12033         (MAN_EXTENSION): generate man pages. Use extension
12034         ".3dbus" which matches ".3qt" on my system,
12035         I guess this is OK, I don't know really.
12036         (FILE_PATTERNS): look for .c files not .h, makes sense
12037         for plain C I think
12038
12039 2002-11-22  Havoc Pennington  <hp@pobox.com>
12040
12041         * Makefile.am (SUBDIRS): rename subdir "server" to "bus"
12042         because any app can be a server, and any app can be a client,
12043         the bus is a special kind of server.
12044
12045 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
12046
12047         * Doxyfile : adding. Still needs Makefile rules to be generated
12048         automatically (just run "doxygen" in the toplevel dir for now to
12049         generate docs)
12050
12051         * dbus/dbus-message.h : Adding sample docs (javadoc since
12052         resembles gtk-doc a little more)
12053
12054         * dbus/dbus.h : Adding sample docs
12055
12056 2002-11-21  Havoc Pennington  <hp@redhat.com>
12057
12058         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION
12059         so we can allow ourselves to include files directly,
12060         instead of having to use dbus.h
12061
12062         * dbus/dbus.h: fill in
12063
12064         * dbus/dbus-message.h: sketch out a sample header file.
12065         Include griping if you include it directly instead of
12066         via dbus.h
12067
12068         * dbus/dbus-macros.h: new file with macros for extern "C",
12069         TRUE/FALSE, NULL, etc.
12070
12071         * doc/file-boilerplate.c: put include guards in here
12072
12073 2002-11-21  Havoc Pennington  <hp@redhat.com>
12074
12075         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
12076
12077         * COPYING: include the GPL as well, and license code
12078         under both AFL and GPL.
12079
12080 2002-11-21  Havoc Pennington  <hp@redhat.com>
12081
12082         * acconfig.h: get rid of this
12083
12084         * autogen.sh (run_configure): add --no-configure option
12085
12086         * configure.in: remove AC_ARG_PROGRAM to make
12087         autoconf complain less. add AC_PREREQ.
12088         add AC_DEFINE third arg.
12089
12090 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
12091
12092         * doc/Makefile.am:
12093         Fix references so we can distcheck.
12094
12095 2002-11-21  Havoc Pennington  <hp@redhat.com>
12096
12097         * Initial module creation
12098