2f407a46314937c551bdab2e9ffb58d94f4ff921
[platform/upstream/dbus.git] / ChangeLog
1 2003-04-10  Havoc Pennington  <hp@pobox.com>
2
3         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
4         the possible parent failures before we fork, so that we don't 
5         fail to create a babysitter after creating the child.
6
7         * bus/activation.c (bus_activation_activate_service): kill child
8         if we don't successfully complete the activation.
9
10 2003-04-10  Havoc Pennington  <hp@redhat.com>
11
12         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
13         the connection if it's disconnected
14
15         * bus/activation.c (bus_activation_service_created): use new
16         transaction features to roll back removal of pending activation if
17         we don't successfully create the service after all. Don't remove
18         pending activation if the function fails.
19
20         * dbus/dbus-list.c (_dbus_list_insert_before_link) 
21         (_dbus_list_insert_after_link): new code to facilitate
22         services.c fixes
23
24         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
25         new functionality, so we can preallocate the ability to insert
26         into a hash table.
27
28         * bus/connection.c (bus_transaction_add_cancel_hook): new function
29         allowing us to put custom hooks in a transaction to be used for 
30         cancelling said transaction
31
32         * doc/dbus-specification.sgml: add some discussion of secondary
33         service owners, and disallow zero-length service names
34
35         * bus/services.c (bus_registry_acquire_service): new function,
36         splits out part of bus_driver_handle_acquire_service() and fixes 
37         a bug where we didn't remove the service doing the acquiring 
38         from the secondary queue if we failed to remove the current owner
39         from the front of the queue.
40         
41 2003-04-10  Alexander Larsson  <alexl@redhat.com>
42
43         * doc/dbus-specification.sgml:
44         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
45         
46 2003-04-10  Alexander Larsson  <alexl@redhat.com>
47
48         * bus/.cvsignore:
49         * glib/.cvsignore:
50         * test/.cvsignore:
51         Added files to cvsignore
52         
53         * dbus/dbus-message.h:
54         * dbus/dbus-message.c: (dbus_message_iter_get_named):
55         Make get_named() take two out argument and return a boolean.
56         (dbus_message_iter_get_args_valist):
57         Update usage of get_named().
58         (dbus_message_iter_append_byte):
59         Fix typo
60         (dbus_message_iter_append_named)
61         Fix typo
62         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
63         More tests.
64
65 2003-04-10  Alexander Larsson  <alexl@redhat.com>
66
67         * dbus/dbus-marshal.[ch]:
68         Add array_type_pos argument to _dbus_marshal_validate_arg.
69         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
70         
71         * dbus/dbus-message.[ch]:
72         Multi-dimensional arrays have full type specification in the
73         outermost array. Iter code re-arranged to handle this.
74         Added some more iter tests.
75         
76         * doc/dbus-specification.sgml:
77         Add me to authors.
78         Remove old FIXME.
79         Update new array encoding description.
80         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
81         
82         * test/data/invalid-messages/array-with-mixed-types.message:
83         * test/data/valid-messages/array-of-array-of-uint32.message:
84         Change to the new array format.
85         
86         * test/data/invalid-messages/too-short-dict.message:
87         Fix bug in test.
88         
89         * test/data/valid-messages/recursive-types.message:
90         Fix up and extend test.
91
92 2003-04-10  Havoc Pennington  <hp@pobox.com>
93
94         * bus/dispatch.c: lots of fixes
95         
96         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
97         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
98         that was crack, broke the test service.
99
100         * dbus/dbus-transport.c (_dbus_transport_open): fix error
101         handling to avoid piling up errors if we get a failure on the 
102         first address.
103
104         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
105         pid in assertion failures.
106
107         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
108         to some fixed size of file descriptor array. Don't return TRUE
109         anytime a timeout exists, that led to lots of busy loop silliness
110         in the tests.
111
112 2003-04-09  Havoc Pennington  <hp@redhat.com>
113
114         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
115         I'd checked this in earlier but hadn't.
116
117 2003-04-09  Havoc Pennington  <hp@redhat.com>
118
119         * bus/dispatch.c (bus_dispatch_test): get a bit further through
120         the activation test (man this is getting old!)
121
122 2003-04-09  Havoc Pennington  <hp@redhat.com>
123
124         * test/test-utils.c: use dispatch status function to fix this up
125
126         * bus/connection.c (connection_watch_callback): don't dispatch
127         from here
128         (connection_timeout_callback): don't dispatch from here
129         (bus_connections_setup_connection): set the dispatch status function
130         (bus_connection_disconnected): unset it
131
132         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
133         used to add a connection to be dispatched
134         (_dbus_loop_iterate): do the dispatching at the end of each
135         iteration
136
137         * dbus/dbus-connection.c
138         (dbus_connection_set_dispatch_status_function): new function
139         allowing us to fix up main loop usage
140         (_dbus_connection_last_unref): free all the various function
141         user data
142         (dbus_connection_dispatch): call the DispatchStatusFunction 
143         whenever this function returns
144         (dbus_connection_handle_watch): call DispatchStatusFunction
145         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
146         (reply_handler_timeout): call DispatchStatusFunction
147         (dbus_connection_flush): call DispatchStatusFunction
148
149 2003-04-09  Havoc Pennington  <hp@redhat.com>
150
151         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and 
152         a memory leak
153
154         * bus/dispatch.c (check_service_activated): fix bug in test
155
156         * dbus/dbus-mainloop.c (check_timeout): fix this up
157
158         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
159         verbose output so we can sort out output from different processes,
160         e.g. in the activation case.
161
162 2003-04-08  Colin Walters  <walters@gnu.org>
163  
164         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
165         the pid file.
166         (bus_context_new): Set it.
167         (bus_context_unref): Use it to delete the pid file.
168  
169 2003-04-08  Havoc Pennington  <hp@redhat.com>
170
171         * test/data/invalid-messages/array-with-mixed-types.message:
172         regression test that fails for the moment
173
174         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
175         tests for convenience
176
177         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
178         array of nil, it broke things.
179
180         * test/data/invalid-messages/array-of-nil.message: regression test
181
182         * test/data/valid-messages/array-of-array-of-uint32.message:
183         happened to write this so added it to suite
184         
185 2003-04-08  Havoc Pennington  <hp@redhat.com>
186
187         * bus/driver.c (bus_driver_handle_acquire_service): init
188         retval/reply before checking name
189
190         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
191         recursion depth argument
192
193         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
194         in the public struct for future extension
195
196         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
197         typo
198
199         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
200         message
201
202         * doc/dbus-specification.sgml: fix typo
203
204 2003-04-08  Alexander Larsson  <alexl@redhat.com>
205
206         Implemented recursive types, named types and new-style iters
207
208         * bus/driver.c:
209         * glib/test-thread-client.c: (thread_func):
210         * glib/test-thread-server.c: (handle_test_message):
211         * test/test-service.c: (handle_echo):
212         Update to new api
213         
214         * dbus/Makefile.am:
215         * dbus/dbus-dict.c:
216         * dbus/dbus-dict.h:
217         * dbus/dbus.h
218         Remove DBusDict
219
220         * dbus/dbus-internals.c: (_dbus_type_to_string):
221         Update for new types.
222         
223         * dbus/dbus-marshal.[ch]:
224         Implement recursive types and the new marshalling format.
225         Remove hardcoded dict marshalling.
226         Marshal named types.
227         
228         * dbus/dbus-message-builder.c:
229         Add BYTE_ARRAY.
230         Remove references to old types
231         
232         * dbus/dbus-message.[ch]:
233         New non-refcounted iter API that supports recursive iters.
234         Use iters for appending, including support for recursive
235         iters.
236         Add byte and named type support.
237         Update everything to new marshalling formats.
238         Add tests for new API.
239         
240         * dbus/dbus-protocol.h:
241         Remove old array types.
242         Add types: BYTE, ARRAY, DICT, NAMED
243         
244         * dbus/dbus-string.c:
245         * dbus/dbus-sysdeps.c:
246         Make parse_double locale safe.
247         
248         * dbus/dbus-test-main.c:
249         Call setlocale.
250         
251         * dbus/dbus-test.c:
252         Kill dict test
253         
254         * doc/dbus-specification.sgml:
255         Update spec
256         
257         * test/data/incomplete-messages/missing-body.message:
258         * test/data/invalid-messages/bad-boolean.message:
259         * test/data/invalid-messages/bad-boolean-array.message:
260         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
261         * test/data/invalid-messages/boolean-has-no-value.message-raw:
262         * test/data/invalid-messages/too-short-dict.message:
263         * test/data/valid-messages/dict-simple.message:
264         * test/data/valid-messages/dict.message:
265         * test/data/valid-messages/emptiness.message:
266         * test/data/valid-messages/lots-of-arguments.message:
267         * test/data/valid-messages/no-padding.message:
268         * test/data/valid-messages/recursive-types.message:
269         Add missing NAME fields
270         Fix up dicts & arrays
271         
272         * test/data/invalid-messages/dict-with-nil-value.message:
273         Removed, this is not invalid anymore.
274         
275         * test/data/valid-messages/recursive-types.message:
276         Add new test for deeply recursive types.
277
278 2003-04-07  Havoc Pennington  <hp@pobox.com>
279
280         * bus/driver.c (bus_driver_handle_acquire_service): return an
281         error if you try to acquire a service that starts with ':'
282
283 2003-04-07  Havoc Pennington  <hp@redhat.com>
284
285         * doc/dbus-specification.sgml: require that base service names 
286         start with ':' and that the base service is created/deleted 
287         as first and last things a connection does on the bus
288
289         * bus/dispatch.c (check_existent_service_activation): lots more 
290         work on the activation test; it doesn't fully pass yet...
291
292         * test/test-service.c (main): fix so we don't memleak the
293         connection to the message bus
294         (filter_func): accept a message asking us to exit
295
296 2003-04-06  Havoc Pennington  <hp@pobox.com>
297
298         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h, 
299         from Colin Walters
300
301         * configure.in: fixes to Qt detection from Colin Walters
302
303         * doc/Makefile.am: Only remove generated docbook dirs if they
304         exist, from Colin Walters
305
306         * dbus/dbus-bus.c: change how we set well-known connections to
307         NULL, so that it works if a single connection is stored in 
308         two well-known array slots.
309
310         * test/Makefile.am: remove a lot of stuff that isn't immediately
311         useful, it's in CVS history if we want it.
312
313         * test/test-service.c: use dbus-mainloop instead of that
314         watch.[hc] crack
315
316 2003-04-06  Havoc Pennington  <hp@pobox.com>
317
318         * dbus/Makefile.am: split lists of sources into stuff that goes in
319         the library, util functions that go in the lib and are also used
320         elsewhere, and util functions that are used in tests/daemon but
321         don't go in the lib.
322
323         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc] 
324         here so it can be used in test binaries also
325
326 2003-04-06  Havoc Pennington  <hp@pobox.com>
327
328         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
329         here in the parent process, so we can return an error if it
330         fails. Also, move some of the code into the child so the parent 
331         is less hosed if we fail midway through.
332
333         * bus/bus.c (bus_context_new): move pidfile detection further up 
334         in the function, before we start overwriting sockets and such.
335
336         * bus/messagebus.in: adjust this a bit, not sure if it will work.
337
338         * configure.in: add --with-system-pid-file and --with-system-socket
339
340 2003-04-06  Colin Walters  <walters@verbum.org>
341
342         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
343
344         * bus/system.conf.in: Declare a pidfile.
345
346         * bus/bus.c (bus_context_new): Test for an existing pid file, and
347         create one (if appropriate).
348
349         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
350         (struct BusConfigParser) [pidfile]: New.
351         (element_type_to_name, merge_included, start_busconfig_child)
352         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
353         (bus_config_parser_unref): Free it.
354         (bus_config_parser_get_pidfile): New function.
355         
356         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
357
358         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
359
360         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
361         
362         * dbus/dbus-sysdeps.h: Prototype it.
363
364 2003-04-06  Havoc Pennington  <hp@pobox.com>
365
366         * bus/bus.c (bus_context_new): print the address in here, rather
367         than in main(), because we need to do it before forking the daemon
368
369         * bus/dispatch.c (send_service_nonexistent_error): set the sender 
370         on the service nonexistent error
371
372         * bus/driver.c (bus_driver_handle_acquire_service): set the
373         sender on the AcquireService reply
374
375         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
376         server also listen on a UNIX socket so services can connect to it.
377
378 2003-04-06  Havoc Pennington  <hp@pobox.com>
379
380         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done 
381         so it detects deadlocks and also we actually init threads when 
382         debugging.
383
384 2003-04-06  Havoc Pennington  <hp@pobox.com>
385
386         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
387         save the domain socket name, and unlink it when we disconnect the
388         server. Means that at least when we exit normally, we won't leave
389         a bunch of junk in /tmp
390
391         * dbus/dbus-transport-unix.c
392         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
393         memory management). (I was making a real change here but then
394         didn't)
395
396 2003-04-06  Havoc Pennington  <hp@pobox.com>
397
398         * bus/bus.c (bus_context_new): fix wrong handling of
399         server_data_slot_unref() in the error case. 
400
401         * dbus/dbus-internals.h (_dbus_assert): change so it passes
402         "(condition) != 0" to _dbus_real_assert so that
403         "_dbus_assert (pointer)" doesn't cause a warning
404
405         * bus/main.c (main): accept --print-address option to print out
406         the message bus address
407
408         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
409
410         * dbus/dbus-transport.c (_dbus_transport_open): special error for
411         "tmpdir" option to unix: address on client side
412
413         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option 
414         to unix: address
415         
416         * configure.in (TEST_SOCKET_DIR): locate a temporary directory 
417         we can use to create sockets in the test suite.
418
419         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
420         cleanly. To be used for testing.
421
422         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
423
424         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
425
426         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
427         handle trying to call this when there's no servers active
428
429 2003-04-05  Havoc Pennington  <hp@pobox.com>
430
431         * NEWS: update
432
433         * configure.in: 0.8
434
435 2003-04-05  Havoc Pennington  <hp@pobox.com>
436
437         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't 
438         crash on startup. Need to get "try starting the daemon" 
439         in the test suite I guess. ;-)
440
441         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
442         tracked the number of open connections; it's better done in 
443         application-specific code as you want it to span all servers etc.
444
445 2003-04-05  Havoc Pennington  <hp@pobox.com>
446
447         * bus/Makefile.am (install-data-hook): add missing DESTDIR, 
448         patch from Colin Walters
449
450 2003-04-05  Havoc Pennington  <hp@pobox.com>
451
452         * doc/config-file.txt (Elements): fix docs of <auth> to reflect 
453         reality; in fact multiple mechanisms are allowed.
454
455         * dbus/dbus-internals.c (_dbus_real_assert)
456         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
457         _dbus_assert_not_reached() into functions, so that they don't show
458         up in basic block counts for test coverage, and don't use up as
459         much disk space. Does mean slower execution speed though, so
460         assumes --disable-asserts is the normal production case.
461
462 2003-04-05  Havoc Pennington  <hp@pobox.com>
463
464         * test/Makefile.am (dist-hook): also dist *.in files
465
466         * NEWS: update
467
468         * configure.in: 0.7
469         
470 2003-04-05  Havoc Pennington  <hp@pobox.com>
471
472         * dbus/dbus-string.c: docs warning
473         
474         * dbus/dbus-spawn.c: missing docs
475
476         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
477
478 2003-04-05  Havoc Pennington  <hp@pobox.com>
479
480         * bus/loop.c (bus_loop_iterate): fix the timeout code, using 
481         magic from GLib
482
483         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid 
484         to -1 once we've reaped the babysitter
485         (_dbus_babysitter_handle_watch): do as much work as we can, not
486         just one go of it
487
488         * bus/activation.c: add code using DBusBabysitter so that we
489         handle it when a service fails to start up properly.
490         (bus_activation_service_created): don't remove the activation
491         entries as we go, just let them get removed when we free the pending
492         activation. Unref reply messages after sending them.
493
494 2003-04-05  Havoc Pennington  <hp@pobox.com>
495
496         * test/decode-gcov.c (main): print per-directory stats in the report
497
498         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
499
500 2003-04-05  Havoc Pennington  <hp@pobox.com>
501
502         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
503
504         * test/decode-gcov.c: hack up a little program to suck data 
505         out of gcov files. Yes this is sort of silly.
506
507         * configure.in: define something in config.h and do an
508         AM_CONDITIONAL when gcov is enabled
509
510 2003-04-04  Havoc Pennington  <hp@redhat.com>
511
512         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
513         return a "babysitter" object that is used to monitor the status of
514         the spawned process and reap it when required.
515
516         * test/test-segfault.c, test/test-exit.c,
517         test/test-sleep-forever.c: binaries that do various lame things, 
518         used in the test suite.
519
520         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
521         
522 2003-04-03  Havoc Pennington  <hp@pobox.com>
523
524         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file 
525         in preparation for modifying it, dbus-sysdeps is getting 
526         a bit unmanageable.
527
528 2003-04-03  Havoc Pennington  <hp@redhat.com>
529
530         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
531         have multiple ones
532
533         * bus/*.[hc]: adapt to mainloop change
534
535 2003-04-03  Havoc Pennington  <hp@redhat.com>
536
537         * bus/activation.c (load_directory): fix up memleaks
538         (bus_activation_entry_free): free the entry
539
540         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
541         we get one from the message bus; fix memleaks.
542
543         * dbus/dbus-message.c (dbus_set_error_from_message): new function
544
545 2003-04-03  Havoc Pennington  <hp@pobox.com>
546
547         * bus/config-parser.c (bus_config_parser_unref): free 
548         list of mechanisms, bug discovered by test suite enhancements
549         (putting system.conf and session.conf into suite)
550
551         * test/Makefile.am, test/test-service.c: add placeholder for a
552         test service that we'll activate as part of test suite. Doesn't 
553         do anything yet.
554
555         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by 
556         setting NULL value, and use system malloc not dbus_malloc() 
557         when we have unavoidable memleakage.
558
559         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
560         didn't work, and support DBUS_BUS_ACTIVATION.
561         
562         * bus/activation.c (child_setup): pass our well-known bus type to
563         the child
564
565         * bus/config-parser.c: support <type> to specify well-known type
566
567         * doc/dbus-specification.sgml: document the env variables to 
568         locate well-known buses and find service activator
569
570 2003-04-02  Havoc Pennington  <hp@redhat.com>
571
572         * test/Makefile.am (all-local): add a rule to copy tests to
573         builddir, so we can have generated tests. Use this to remove the
574         silly hack for testing system.conf and session.conf. Will use this 
575         shortly to generate .service files pointing to test binaries.
576
577 2003-04-02  Havoc Pennington  <hp@redhat.com>
578
579         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
580         current alloc and needed new length, not max of the doubled
581         allocation and needed new length. Also, when building tests, 
582         don't do the double-allocation stuff, just realloc every time.
583
584 2003-04-02  Havoc Pennington  <hp@redhat.com>
585
586         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
587         in error messages
588         (_dbus_string_get_dirname): new
589         (_dbus_sysdeps_test): new
590         (_dbus_directory_open): include dirnames in error messages
591
592         * bus/config-parser.c: interpret <include> and <includedir> and
593         <servicedir> relative to config file location if the given
594         filename is not absolute.
595
596         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
597
598 2003-04-02  Havoc Pennington  <hp@redhat.com>
599
600         * bus/connection.c (bus_transaction_send_error_reply): set sender
601         service for the error, and unref the reply on success
602
603         * bus/activation.c: convert to use BusTransaction so OOM can be
604         handled correctly
605         (bus_activation_service_created): set sender of the message
606
607 2003-04-01  Havoc Pennington  <hp@redhat.com>
608
609         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
610         <includedir> (at least mostly)
611
612         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
613         first, then the user ID
614
615 2003-04-01  Havoc Pennington  <hp@pobox.com>
616
617         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
618         function
619
620         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
621
622         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
623
624         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
625         socket 0777, and unlink any existing socket.
626
627         * bus/bus.c (bus_context_new): change our UID/GID and fork if
628         the configuration file so specifies; set up auth mechanism 
629         restrictions
630
631         * bus/config-parser.c (bus_config_parser_content): add support
632         for <fork> option and fill in code for <auth> 
633
634         * bus/system.conf.in: add <fork/> to default configuration, 
635         and limit auth mechanisms to EXTERNAL
636
637         * doc/config-file.txt (Elements): add <fork>
638
639         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
640         (_dbus_change_identity): new function
641
642 2003-03-31  Havoc Pennington  <hp@redhat.com>
643
644         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket) 
645         (_dbus_listen_unix_socket): fix off-by-one error in null
646         termination spotted by Nalin
647
648 2003-03-31  Havoc Pennington  <hp@redhat.com>
649
650         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
651         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
652         having a real home directory available.
653
654 2003-03-31  Havoc Pennington  <hp@redhat.com>
655
656         * bus/Makefile.am (install-data-hook): create /var/run/dbus
657
658         * bus/messagebus.in: add init script for Red Hat /etc/init.d
659
660         * configure.in: add support for specifying a style of init script
661         to install
662
663 2003-03-31  Havoc Pennington  <hp@redhat.com>
664
665         Fix some annoying DBusString API and fix all affected code.
666         
667         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
668         max_length argument
669         (_dbus_string_get_data): change to return string instead of using 
670         an out param
671         (_dbus_string_get_const_data): ditto
672         (_dbus_string_get_data_len): ditto
673         (_dbus_string_get_const_data_len): ditto
674
675 2003-03-31  Havoc Pennington  <hp@redhat.com>
676
677         * bus/main.c (main): fix up the command line arguments to be nicer
678
679 2003-03-31  Havoc Pennington  <hp@redhat.com>
680
681         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
682         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same 
683         final location that lands in the config file
684
685         * bus/config-loader-expat.c (bus_config_load): fix type of
686         XML_Parser variable
687
688         * doc/TODO: remove TODO item for dbus_bus_get()
689
690         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
691
692 2003-03-31  Havoc Pennington  <hp@pobox.com>
693
694         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
695         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
696         argument since they are always client side
697
698         * dbus/dbus-server.c (dbus_server_get_address): new function
699
700         * bus/main.c (main): take the configuration file as an argument.
701
702         * test/data/valid-config-files/debug-allow-all.conf: new file to 
703         use with dispatch.c tests for example
704
705         * bus/test-main.c (main): require test data dir
706
707         * bus/bus.c (bus_context_new): change this to take a
708         configuration file name as argument
709
710         * doc/config-file.txt (Elements): add <servicedir>
711
712         * bus/system.conf, bus/session.conf: new files
713         
714         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
715         well-known socket if none set
716
717         * configure.in: create system.conf and session.conf
718
719 2003-03-30  Havoc Pennington  <hp@pobox.com>
720
721         * bus/config-parser.c: hacking
722         
723         * dbus/dbus-memory.c: don't use DBusList for the list of stuff 
724         to shut down, since it could cause weirdness with the DBusList
725         lock
726
727         * dbus/dbus-list.c (_dbus_list_test): add tests for the
728         link-oriented stack routines
729         (alloc_link): free the mempool if the first alloc from it fails
730
731         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
732
733         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
734         from GLib
735         (_dbus_string_skip_white): new
736
737         * doc/config-file.txt (Elements): add <includedir>
738
739 2003-03-28  Havoc Pennington  <hp@pobox.com>
740
741         * dbus/dbus-string.c (_dbus_string_copy_data_len)
742         (_dbus_string_copy_data): new functions
743
744 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
745
746         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
747         * dbus/dbus-bus.h:
748         Add dbus_bus_get.
749         
750         * dbus/dbus-memory.c:
751         Fix a doc comment.
752         
753 2003-03-28  Havoc Pennington  <hp@pobox.com>
754
755         * bus/test.c (bus_test_flush_bus): remove the sleep from here, 
756         I think it may have just been superstition. Not sure.
757
758         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
759         failures that were not being handled.
760
761         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
762
763         * dbus/dbus-memory.c: add ability to set number of mallocs in a
764         row that will fail on out-of-memory.
765
766         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
767         function for testing out-of-memory handling.
768
769         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
770         allocation functions, they do map exactly to the expat ones.
771
772 2003-03-27  Havoc Pennington  <hp@redhat.com>
773
774         * bus/config-loader-libxml.c (bus_config_load): add another error
775         check
776
777 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
778
779         * doc/TODO:
780         Add note about automatic service activation.
781         
782         * doc/dbus-specification.sgml:
783         Rename the specification and clarify a few things.
784         
785 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
786
787         * Doxyfile.in:
788         * dbus/dbus-address.c:
789         * dbus/dbus-dict.c:
790         * dbus/dbus-marshal.c:
791         * dbus/dbus-server-debug-pipe.c:
792         * dbus/dbus-transport-unix.c:
793         Fix documentation warnings.
794         
795 2003-03-26  Havoc Pennington  <hp@pobox.com>
796
797         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
798         after every test so it's quick and easy to see which leaked, and
799         so we test multiple dbus_shutdown() calls
800
801         * configure.in: change configure.in XML stuff to also support
802         expat
803
804         * config-loader-libxml.c: some hacking
805
806         * config-loader-expat.c: some hacking
807
808         * config-parser.c: some hacking, plus tests
809
810 2003-03-25  Havoc Pennington  <hp@redhat.com>
811
812         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
813         
814         * configure.in: add --with-xml option to specify XML library,
815         right now only libxml is supported.
816
817         * bus/config-loader-libxml.c, config-parser.c: sync some minor 
818         nonworking code between home and work, still just stubs
819
820 2003-03-24  Havoc Pennington  <hp@redhat.com>
821
822         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
823         file
824
825         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow 
826         NULL argument for "message" if the error is a well-known one, 
827         fill in a generic message in this case.
828
829         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
830         favor of DBusError
831
832         * bus/test.c (bus_test_flush_bus): add
833
834         * bus/policy.c (bus_policy_test): test code stub
835
836 2003-03-24  Havoc Pennington  <hp@pobox.com>
837
838         * bus/connection.c (bus_connections_setup_connection): set up 
839         the "can this user connect" function, but it always returns 
840         TRUE until we have a config file parser so we can have a config
841         file that allows connections.
842
843 2003-03-23  Havoc Pennington  <hp@pobox.com>
844
845         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with 
846         DBUS_BUILD_TESTS, actually alloc/free a block of memory for 
847         the mutex, so we can check for proper memory management 
848         and OOM handling.
849
850         * dbus/dbus-dataslot.c: remove the mutex from
851         DBusDataSlotAllocator and lock it manually when using it, 
852         to simplify fitting it into the global slots framework.
853
854         * dbus/dbus-threads.c (init_static_locks): rework how we're
855         handling global locks so they are easily shut down.
856
857         * bus/policy.c (bus_policy_append_rule): fix
858
859         * bus/test-main.c (main): check for memleaks
860
861         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make 
862         test suite check for memleaks
863
864         * dbus/dbus-memory.c: add support in test mode for tracking 
865         number of outstanding blocks
866
867 2003-03-23  Havoc Pennington  <hp@pobox.com>
868
869         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
870         policies code
871         
872         * dbus/dbus-hash.h: add ULONG hash keys
873
874         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
875         (_dbus_get_group_id): new function
876
877 2003-03-20  Havoc Pennington  <hp@redhat.com>
878
879         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
880         new function
881         (dbus_connection_get_unix_user): new function
882
883 2003-03-20  Havoc Pennington  <hp@pobox.com>
884
885         * bus/connection.c (bus_connection_send_oom_error): assert that
886         message has a sender
887         (connection_execute_transaction): ditto
888         (bus_connection_preallocate_oom_error): fix to set the sender, and
889         set recipient to the destination service, not the bus driver
890
891         * bus/policy.c: hacking
892
893         * dbus/dbus-message.c (dbus_message_service_is): new function
894         (dbus_message_sender_is): new
895
896 2003-03-19  Havoc Pennington  <hp@redhat.com>
897
898         * bus/policy.c: start sketching code for policy restrictions on 
899         what connections can do.
900
901 2003-03-18  Havoc Pennington  <hp@redhat.com>
902
903         * doc/TODO: some notes on high-level todo items. Little nitpick
904         stuff is all in @todo, so no need to add it here.
905
906         * doc/config-file.txt: some notes on how config file might look
907
908 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
909
910         * configure.in: 0.6
911
912         * NEWS: Update.
913         
914 2003-03-17  Havoc Pennington  <hp@redhat.com>
915
916         * dbus/dbus-internals.h: add gcc attributes so that 
917         our printf-style functions warn on bad arguments to 
918         format
919         
920         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf 
921         format bug
922
923         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
924         printf format bug
925
926 2003-03-17  Havoc Pennington  <hp@redhat.com>
927
928         * bus/test-main.c (main): make it print something as it runs 
929         so make check doesn't look stuck
930
931         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove 
932         from CVS, now obsolete
933
934 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
935
936         * bus/dispatch.c: (bus_dispatch):
937         Refetch the service name since it may have been reallocated
938         when dbus_message_set_sender was called.
939         
940         * dbus/dbus-sysdeps.c: (_dbus_accept):
941         Add address and address length variables and use them to stop
942         valgrind from complaining.
943         
944 2003-03-17  Havoc Pennington  <hp@pobox.com>
945
946         All tests pass, no memleaks, no valgrind complaints.
947         
948         * bus/test.c: refcount handler_slot
949
950         * bus/connection.c (bus_connections_new): refcount
951         connection_data_slot
952
953         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
954         bytes so that auth scripts pass.
955
956         * bus/dispatch.c: init message_handler_slot so it gets allocated
957         properly
958
959         * bus/dispatch.c (message_handler_slot_ref): fix memleak
960
961         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
962         dealloc server_pipe_hash when no longer used for benefit of
963         leak checking
964
965         * dbus/dbus-auth.c (process_command): memleak fix
966
967         * bus/dispatch.c (check_hello_message): memleak fix
968
969 2003-03-16  Havoc Pennington  <hp@pobox.com>
970
971         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
972
973 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
974
975         * bus/activation.c (bus_activation_activate_service): Append
976         the pending activation entry to the list of pending activations.
977
978 2003-03-16  Havoc Pennington  <hp@pobox.com>
979
980         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
981         connections
982
983         * dbus/dbus-address.c (create_entry): fix OOM handling when
984         failing to alloc entry->method
985
986 2003-03-16  Havoc Pennington  <hp@pobox.com>
987
988         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
989         the watch
990
991         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
992         add some missing dbus_set_result
993
994         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to 
995         alloc the DBusMessageHandler
996
997         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
998         the transport here, since we call this from the finalizer; it 
999         resulted in a double-finalize.
1000
1001         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug 
1002         where we tried to use transport->connection that was NULL, 
1003         happened when transport was disconnected early on due to OOM
1004
1005         * bus/*.c: adapt to handle OOM for watches/timeouts
1006
1007         * dbus/dbus-transport-unix.c: port to handle OOM during 
1008         watch handling
1009         
1010         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
1011         reference to unused bytes instead of a copy
1012
1013         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
1014         out of memory
1015
1016         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
1017         FALSE on OOM
1018
1019         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
1020         of memory
1021
1022 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
1023
1024         * doc/dbus-specification.sgml:
1025         Document reply message for ActivateService.
1026         
1027 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
1028
1029         * bus/activation.c: (bus_pending_activation_entry_free),
1030         (bus_pending_activation_free), (bus_activation_new),
1031         (bus_activation_unref), (bus_activation_service_created),
1032         (bus_activation_activate_service):
1033         * bus/activation.h:
1034         * bus/bus.c: (bus_context_new):
1035         * bus/desktop-file.c: (new_section):
1036         * bus/driver.c: (bus_driver_send_service_deleted),
1037         (bus_driver_handle_activate_service):
1038         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
1039         * bus/services.h:
1040         * dbus/dbus-connection.c:
1041         (dbus_connection_send_with_reply_and_block):
1042         * dbus/dbus-message.c: (dbus_message_append_args_valist):
1043         * dbus/dbus-protocol.h:
1044         Make activation work better. Now pending activations will be queued
1045         and the daemon won't try to activate services that are already registered.
1046         
1047 2003-03-16  Havoc Pennington  <hp@pobox.com>
1048
1049         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
1050         connection data
1051
1052         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
1053         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
1054
1055 2003-03-16  Havoc Pennington  <hp@pobox.com>
1056
1057         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
1058         this. always run the test suite before commit...
1059
1060         * bus/*: adapt to DBusConnection API changes
1061
1062         * glib/dbus-gmain.c: adapt to DBusConnection API changes, 
1063         requires renaming stuff to avoid dbus_connection_dispatch name 
1064         conflict.
1065
1066         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
1067         function
1068
1069         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
1070         separate from _dbus_message_loader_return_buffer()
1071
1072         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
1073         this, because it's now always broken to use; the number of
1074         messages in queue vs. the number still buffered by the message
1075         loader is undefined/meaningless. Should use
1076         dbus_connection_get_dispatch_state().
1077         (dbus_connection_dispatch): rename from
1078         dbus_connection_dispatch_message
1079
1080 2003-03-16  Havoc Pennington  <hp@pobox.com>
1081
1082         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
1083         implementation
1084
1085 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
1086
1087         * dbus/dbus-connection.c:
1088         (dbus_connection_send_with_reply_and_block):
1089         Decrease connection->n_incoming when removing an entry 
1090         from the list.
1091         * dbus/dbus-dict.c: (dbus_dict_entry_free),
1092         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
1093         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
1094         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
1095         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
1096         (dbus_dict_get_byte_array):
1097         Handle NULL arrays and strings. Also add support for byte arrays.
1098         
1099         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
1100         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
1101         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
1102         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
1103         (_dbus_demarshal_dict), (demarshal_and_validate_len),
1104         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
1105         * dbus/dbus-marshal.h:
1106         Add support for marshalling and demarshalling empty arrays and strings.
1107         
1108         * dbus/dbus-message.c: (dbus_message_append_args_valist),
1109         (dbus_message_append_string_array),
1110         (dbus_message_iter_get_boolean),
1111         (dbus_message_iter_get_boolean_array),
1112         (dbus_message_iter_get_int32_array),
1113         (dbus_message_iter_get_uint32_array),
1114         (dbus_message_iter_get_double_array),
1115         (dbus_message_iter_get_byte_array),
1116         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
1117         (check_message_handling):
1118         Add support for getting empty arrays and dicts.
1119         
1120         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
1121         Don't do any validation at all for now, that's better than just checking
1122         for ASCII.
1123         
1124         * test/data/valid-messages/emptiness.message:
1125         New test message with lots of empty arrays.
1126         
1127 2003-03-16  Havoc Pennington  <hp@pobox.com>
1128
1129         * dbus/dbus-connection.c
1130         (_dbus_connection_queue_received_message_link): new function that
1131         can't fail due to OOM
1132
1133         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
1134         new function pops a message together with a list link 
1135         containing it.
1136
1137         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
1138         message queuing functions to avoid needing to alloc memory
1139
1140 2003-03-16  Havoc Pennington  <hp@pobox.com>
1141
1142         Oops - test code was only testing failure of around 30 of the
1143         mallocs in the test path, but it turns out there are 500+
1144         mallocs. I believe this was due to misguided linking setup such
1145         that there was one copy of dbus_malloc etc. in the daemon and one
1146         in the shared lib, and only daemon mallocs were tested. In any
1147         case, the test case now tests all 500+ mallocs, and doesn't pass
1148         yet, though there are lots of fixes in this patch.
1149         
1150         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
1151         this so that it doesn't need to allocate memory, since it 
1152         has no way of indicating failure due to OOM (and would be 
1153         annoying if it did).
1154
1155         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
1156
1157         * bus/Makefile.am: rearrange to create two self-contained
1158         libraries, to avoid having libraries with overlapping symbols. 
1159         that was resulting in weirdness, e.g. I'm pretty sure there 
1160         were two copies of global static variables.
1161
1162         * dbus/dbus-internals.c: move the malloc debug stuff to 
1163         dbus-memory.c
1164
1165         * dbus/dbus-list.c (free_link): free list mempool if it becomes
1166         empty.
1167
1168         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
1169
1170         * dbus/dbus-address.c (dbus_parse_address): free list nodes
1171         on failure.
1172
1173         * bus/dispatch.c (bus_dispatch_add_connection): free
1174         message_handler_slot when no longer using it, so 
1175         memory leak checkers are happy for the test suite.
1176
1177         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
1178
1179         * bus/bus.c (new_connection_callback): disconnect in here if 
1180         bus_connections_setup_connection fails.
1181
1182         * bus/connection.c (bus_connections_unref): fix to free the 
1183         connections
1184         (bus_connections_setup_connection): if this fails, don't
1185         disconnect the connection, just be sure there are no side
1186         effects.
1187
1188         * dbus/dbus-string.c (undo_alignment): unbreak this
1189
1190         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
1191         leaking
1192         (_dbus_auth_new): fix the order in which we free strings 
1193         on OOM failure
1194
1195         * bus/connection.c (bus_connection_disconnected): fix to 
1196         not send ServiceDeleted multiple times in case of memory 
1197         allocation failure
1198
1199         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
1200         get the base service name
1201         (dbus_bus_register_client): don't return base service name,
1202         instead store it on the DBusConnection and have an accessor
1203         function for it.
1204         (dbus_bus_register_client): rename dbus_bus_register()
1205
1206         * bus/dispatch.c (check_hello_message): verify that other 
1207         connections on the bus also got the correct results, not 
1208         just the one sending hello
1209
1210 2003-03-15  Havoc Pennington  <hp@pobox.com>
1211
1212         Make it pass the Hello handling test including all OOM codepaths.
1213         Now to do other messages...
1214         
1215         * bus/services.c (bus_service_remove_owner): fix crash when
1216         removing owner from an empty list of owners
1217         (bus_registry_ensure): don't leave service in the list of 
1218         a connection's owned services if we fail to put the service
1219         in the hash table.
1220
1221         * bus/connection.c (bus_connection_preallocate_oom_error): set
1222         error flag on the OOM error.
1223
1224         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
1225         handle _dbus_transport_set_connection failure
1226
1227         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
1228         to create watches up front and simply enable/disable them as
1229         needed.
1230         (unix_connection_set): this can now fail on OOM
1231
1232         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept 
1233         of enabling/disabling a watch or timeout.
1234
1235         * bus/loop.c (bus_loop_iterate): don't touch disabled
1236         watches/timeouts
1237
1238         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
1239
1240 2003-03-15  Havoc Pennington  <hp@pobox.com>
1241
1242         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
1243         write useful test code, after all that futzing around ;-)
1244
1245         Test does not yet pass because we can't handle OOM in
1246         _dbus_transport_messages_pending (basically,
1247         dbus_connection_preallocate_send() does not prealloc the write
1248         watch). To fix this, I think we need to add new stuff to
1249         set_watch_functions, namely a SetEnabled function so we can alloc
1250         the watch earlier, then enable it later.
1251         
1252         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
1253         dbus-memory.c to the convenience lib
1254
1255         * bus/test.c: rename some static functions to keep them clearly 
1256         distinct from stuff in connection.c. Handle client disconnection.
1257
1258 2003-03-14  Havoc Pennington  <hp@pobox.com>
1259
1260         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe 
1261         transport, tests more of the real codepath. Set up clients 
1262         with bus_setup_debug_client.
1263
1264         * bus/test.c (bus_setup_debug_client): function to set up debug 
1265         "clients" on the main loop
1266
1267         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe 
1268         support
1269
1270         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe 
1271         server type
1272
1273         * dbus/dbus-server-debug.c: support a debug server based on pipes
1274
1275         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
1276         (_dbus_close): new function
1277         
1278         * configure.in: check for socketpair
1279
1280 2003-03-14  Havoc Pennington  <hp@redhat.com>
1281
1282         * dbus/dbus-memory.c: add a "detect buffer overwrites on free" 
1283         cheesy hack
1284
1285         * dbus/dbus-transport-debug.c: rework this a good bit to be 
1286         less complicated. hopefully still works.
1287
1288         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
1289         manually
1290
1291         * glib/dbus-gmain.c (timeout_handler): don't remove timeout 
1292         after running it
1293
1294         * dbus/dbus-message.c (dbus_message_copy): rename from 
1295         dbus_message_new_from_message, fix it up to copy 
1296         all the message fields, add test case
1297
1298         * bus/dispatch.c (bus_dispatch_test): add some more test code, 
1299         not quite passing yet
1300
1301 2003-03-14  Havoc Pennington  <hp@pobox.com>
1302
1303         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
1304         until no work remains" in test code. (the large diff here 
1305         is just code movement, no actual changes)
1306
1307         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
1308         1, no point waiting around for test code.
1309         (_dbus_server_debug_accept_transport): unref the timeout 
1310         after adding it (right?)
1311
1312         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
1313         
1314 2003-03-13  Havoc Pennington  <hp@redhat.com>
1315
1316         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
1317         out of memory
1318
1319         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
1320         of memory
1321
1322         * dbus/dbus-connection.h: Make AddWatchFunction and
1323         AddTimeoutFunction return a bool so they can fail on out-of-memory
1324
1325         * bus/bus.c (bus_context_new): set up timeout handlers
1326
1327         * bus/connection.c (bus_connections_setup_connection): set up
1328         timeout handlers
1329
1330         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
1331         can fail
1332
1333         * bus/bus.c (bus_context_new): adapt to changes
1334
1335         * bus/connection.c: adapt to changes
1336
1337         * test/watch.c: adapt to DBusWatch changes
1338
1339         * bus/dispatch.c (bus_dispatch_test): started adding this but
1340         didn't finish
1341         
1342 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
1343
1344         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
1345
1346 2003-03-13  Havoc Pennington  <hp@pobox.com>
1347
1348         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c: 
1349         set up a test framework as for the library
1350
1351 2003-03-12  Havoc Pennington  <hp@pobox.com>
1352
1353         Throughout: purge global variables, introduce BusActivation, 
1354         BusConnections, BusRegistry, etc. objects instead.
1355         
1356         * bus/bus.h, bus/bus.c: introduce BusContext as a global 
1357         message bus object
1358
1359         * test/Makefile.am (TEST_BINARIES): disable bus-test for now, 
1360         going to redo this a bit differently I think
1361         
1362 2003-03-12  Havoc Pennington  <hp@redhat.com>
1363
1364         Mega-patch that gets the message bus daemon initially handling 
1365         out-of-memory. Work still needed. Also lots of random 
1366         moving stuff to DBusError instead of ResultCode.
1367         
1368         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
1369
1370         * dbus/dbus-connection.c
1371         (dbus_connection_send_with_reply_and_block): use DBusError
1372
1373         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
1374         DBusResultCode
1375
1376         * dbus/dbus-connection.c (dbus_connection_send): drop the result
1377         code here, as the only failure possible is OOM.
1378
1379         * bus/connection.c (bus_connection_disconnect):
1380         rename bus_connection_disconnected as it's a notification only
1381
1382         * bus/driver.c (bus_driver_handle_acquire_service): don't free
1383         "name" on get_args failure, should be done by get_args; 
1384         don't disconnect client for bad args, just return an error.
1385         (bus_driver_handle_service_exists): ditto
1386
1387         * bus/services.c (bus_services_list): NULL-terminate returned array
1388
1389         * bus/driver.c (bus_driver_send_service_lost)
1390         (bus_driver_send_service_acquired): send messages from driver to a
1391         specific client to the client's unique name, not to the broadcast
1392         service.
1393
1394         * dbus/dbus-message.c (decode_header_data): reject messages that
1395         contain no name field
1396         (_dbus_message_get_client_serial): rename to
1397         dbus_message_get_serial and make public
1398         (_dbus_message_set_serial): rename from set_client_serial
1399         (_dbus_message_set_reply_serial): make public
1400         (_dbus_message_get_reply_serial): make public
1401
1402         * bus/connection.c (bus_connection_foreach): allow stopping
1403         iteration by returning FALSE from foreach function.
1404
1405         * dbus/dbus-connection.c (dbus_connection_send_preallocated) 
1406         (dbus_connection_free_preallocated_send) 
1407         (dbus_connection_preallocate_send): new API for sending a message
1408         without possibility of malloc failure.
1409         (dbus_connection_send_message): rename to just
1410         dbus_connection_send (and same for whole function family)
1411
1412         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
1413
1414         * dbus/dbus-sysdeps.c (_dbus_exit): new function
1415
1416         * bus/activation.c: handle/return errors
1417
1418         * dbus/dbus-errors.h: add more DBUS_ERROR #define
1419
1420         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
1421         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
1422         (_dbus_result_from_errno): move to this file
1423
1424 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
1425
1426         * dbus/dbus-marshal.c: 
1427         (_dbus_marshal_set_string):
1428         Take a length argument so we can marshal the correct string
1429         length.
1430         
1431         (_dbus_marshal_dict), (_dbus_demarshal_dict),
1432         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
1433         (_dbus_marshal_test):
1434         * dbus/dbus-marshal.h:  
1435         Add support for marshalling and demarshalling dicts.
1436         
1437         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
1438         Add support for TYPE DICT.
1439         
1440         * dbus/dbus-message.c: (set_string_field):
1441         Adjust header padding.
1442         
1443         (dbus_message_append_args_valist), (dbus_message_append_dict),
1444         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
1445         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
1446         (check_message_handling), (check_have_valid_message):
1447         * dbus/dbus-message.h:
1448         Add functions for setting and getting dicts.
1449
1450         * dbus/dbus-protocol.h:
1451         Add DBUS_TYPE_DICT.
1452         
1453         * dbus/dbus.h:
1454         Add dbus-dict.h
1455         
1456         * doc/dbus-specification.sgml:
1457         Add information about how dicts are marshalled.
1458         
1459         * test/data/invalid-messages/dict-with-nil-value.message:
1460         * test/data/invalid-messages/too-short-dict.message:
1461         * test/data/valid-messages/dict-simple.message:
1462         * test/data/valid-messages/dict.message:
1463         Add sample messages containing dicts.
1464
1465 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
1466
1467         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
1468
1469 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
1470
1471         * dbus/Makefile.am:
1472         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
1473         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
1474         (dbus_dict_set_int32), (dbus_dict_set_uint32),
1475         (dbus_dict_set_double), (dbus_dict_set_string),
1476         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
1477         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
1478         (dbus_dict_set_string_array), (_dbus_dict_test):
1479         * dbus/dbus-dict.h:
1480         Fix according to comments from Havoc.
1481         
1482 2003-03-06  Michael Meeks  <michael@server.home>
1483
1484         * configure.in: if we don't have kde-config, disable have_qt.
1485
1486 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
1487
1488         * dbus/Makefile.am:
1489         Add dbus-dict.[ch]
1490         
1491         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
1492         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
1493         (dbus_dict_remove), (dbus_dict_get_value_type),
1494         (dbus_dict_get_keys), (dbus_dict_put_boolean),
1495         (dbus_dict_put_int32), (dbus_dict_put_uint32),
1496         (dbus_dict_put_double), (dbus_dict_put_string),
1497         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
1498         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
1499         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
1500         (dbus_dict_get_int32), (dbus_dict_get_uint32),
1501         (dbus_dict_get_double), (dbus_dict_get_string),
1502         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
1503         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
1504         (dbus_dict_get_string_array), (_dbus_dict_test):
1505         * dbus/dbus-dict.h:
1506         Add DBusDict implementation
1507         
1508         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
1509         * dbus/dbus-test.h:
1510         Add _dbus_dict_test
1511         
1512 2003-03-04  Havoc Pennington  <hp@pobox.com>
1513
1514         * test/data/auth/*: adapt to changes
1515
1516         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
1517         USERID_BASE64 and change USERNAME_BASE64 to put in username not
1518         userid
1519
1520         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
1521         more stuff from being in a context name, to make the protocol 
1522         simpler to deal with
1523
1524         * dbus/dbus-errors.c (dbus_error_has_name): new function
1525         (dbus_error_is_set): new function
1526
1527         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth 
1528         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
1529         
1530         * dbus/dbus-connection.c (dbus_connection_flush): also read
1531         messages during a flush operation
1532
1533         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
1534
1535 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
1536
1537         * configure.in: Check for gethostbyname on Solaris.
1538
1539         * dbus/dbus-transport.c: (_dbus_transport_open):
1540         Remove duplicate "tcp" entry.
1541         
1542         * doc/dbus-specification.sgml:
1543         Clarify some things.
1544         
1545 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
1546
1547         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
1548         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
1549         (_dbus_keyring_test):
1550         * dbus/dbus-md5.c: (_dbus_md5_compute):
1551         * dbus/dbus-sha.c: (_dbus_sha_compute):
1552         Plug memory leaks.
1553
1554 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
1555
1556         * README: Add some things.
1557
1558 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
1559
1560         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
1561         after case DBUS_TYPE_BOOELAN.
1562
1563 2003-03-02  Havoc Pennington  <hp@pobox.com>
1564
1565         * test/break-loader.c (randomly_set_extreme_ints): add test that
1566         sets really huge and small integers
1567
1568         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
1569         that length of boolean array fits in the string, and that 
1570         string has room for boolean value in single-bool case.
1571
1572         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
1573         optional value to "ALIGN" command which is what to fill the
1574         alignment with.
1575
1576         * test/data/valid-messages/no-padding.message: add regression
1577         test for the message padding problem
1578
1579 2003-03-02  Havoc Pennington  <hp@pobox.com>
1580
1581         * dbus/dbus-message.c (decode_header_data): fix to always init
1582         message_padding, from Benjamin Dauvergne
1583
1584 2003-03-02  Havoc Pennington  <hp@pobox.com>
1585
1586         * configure.in: 0.5
1587
1588         * NEWS: Update.
1589
1590 2003-03-01  Joe Shaw  <joe@assbarn.com>
1591
1592         * configure.in: Check for "struct cmsgcred" and try to access its
1593         members for BSD-like unices.
1594
1595         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
1596         _dbus_read_credentials_unix_socket().
1597         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
1598         read() for reading the credential byte off the unix socket.  Use
1599         struct cmsgcred on systems that support it.
1600
1601 2003-02-27  Alexander Larsson  <alexl@redhat.com>
1602
1603         * glib/Makefile.am: 
1604         * configure.in:
1605         Make gthreads-2.0 dependency optional. Don't build thread test if
1606         its not found.
1607
1608 2003-02-27  Havoc Pennington  <hp@pobox.com>
1609
1610         * dbus/dbus-connection.c
1611         (dbus_connection_send_message_with_reply_and_block): fix doh!
1612         doh! doh! bug that resulted in never removing a reply from the
1613         queue, no wonder we called get_reply_serial so much ;-)
1614         
1615         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
1616         and client serial instead of demarshaling them every time
1617
1618 2003-02-27  Havoc Pennington  <hp@pobox.com>
1619
1620         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
1621         more inlined, using dbus-string-private.h, speeds things up 
1622         substantially
1623
1624         * dbus/dbus-string.c (_dbus_string_free): apply align offset
1625         when freeing the string
1626         (_dbus_string_steal_data): fix for align offset
1627         (undo_alignment): new function
1628
1629 2003-02-26  Havoc Pennington  <hp@redhat.com>
1630
1631         All kinds of audit fixes from Owen, plus initial attempt to 
1632         handle unaligned memory returned from malloc.
1633         
1634         * dbus/dbus-string.c (_dbus_string_init): clamp max length to 
1635         leave room for align_offset and nul byte
1636         (fixup_alignment): function to track an align_offset and 
1637         ensure real->str is aligned
1638         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated, 
1639         to allow a nul byte plus align offset
1640         (_dbus_string_lock): fix overflow issue
1641         (_dbus_string_init_const_len): add assertions on sanity of len, 
1642         assign allocated to be ALLOCATION_PADDING larger than len
1643         (set_length): fixup the overflow handling
1644         (_dbus_string_get_data_len): fix overflow in assertion
1645         (open_gap): detect overflow in size of gap to be opened
1646         (_dbus_string_lengthen): add overflow check
1647         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
1648         (_dbus_string_append): add overflow check
1649         (_dbus_string_append_unichar): overflow
1650         (_dbus_string_delete): fix overflow in assertion
1651         (_dbus_string_copy_len): overflow in assertion
1652         (_dbus_string_replace_len): overflows in assertions
1653         (_dbus_string_find): change to implement in terms of 
1654         _dbus_string_find_to
1655         (_dbus_string_find_to): assorted fixage
1656         (_dbus_string_equal_c_str): assert c_str != NULL, 
1657         fix logic so the function works
1658         (_dbus_string_ends_with_c_str): fix overflow thingy
1659         (_dbus_string_base64_encode): overflow fix
1660         (_dbus_string_validate_ascii): overflow
1661         (_dbus_string_validate_nul): overflow
1662         
1663 2003-02-26  Havoc Pennington  <hp@redhat.com>
1664
1665         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
1666
1667 2003-02-26  Alexander Larsson  <alexl@redhat.com>
1668
1669         * configure.in:
1670         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
1671         
1672         * dbus/dbus-connection.c:
1673         * dbus/dbus-connection.h:
1674         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
1675         Add dbus_connection_set_wakeup_main_function and use it when queueing
1676         incoming and outgoing messages.
1677         
1678         
1679         * dbus/dbus-dataslot.c:
1680         Threadsafe usage of DBusDataSlotAllocator
1681         
1682         * dbus/dbus-message.c: (dbus_message_get_args_iter):
1683         dbus_new can fail.
1684         
1685         * dbus/dbus-server-unix.c:
1686         Add todo comment
1687         
1688         * glib/dbus-gmain.c:
1689         Implement the new wakeup functions for glib.
1690         
1691         * glib/Makefile.am:
1692         * glib/test-thread-client.c: 
1693         * glib/test-thread-server.c: 
1694         * glib/test-thread.h:
1695         Initial cut at some thread test code. Not really done yet.
1696
1697 2003-02-26  Havoc Pennington  <hp@pobox.com>
1698
1699         * dbus/dbus-connection.c
1700         (dbus_connection_send_message_with_reply_and_block): fix crash
1701         where we ref'd the outgoing message instead of the returned reply
1702
1703         * dbus/dbus-transport-unix.c (do_authentication): check read watch
1704         at the end of this function, so if we didn't need to read for
1705         authentication, we reinstall it for receiving messages
1706
1707         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to 
1708         a NULL sender for peer-to-peer case
1709
1710         * dbus/dbus-transport-unix.c (check_read_watch): handle
1711         !authenticated case correctly
1712
1713         * glib/dbus-gmain.c: add support for DBusServer
1714
1715         * dbus/dbus-server.c: add data slot support
1716
1717         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
1718         return values and handle errors
1719
1720         * dbus/dbus-dataslot.c: factor out the data slot stuff from
1721         DBusConnection
1722
1723         * Doxyfile.in (INPUT): add glib subdir
1724
1725         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename 
1726         setup_with_g_main instead of hookup_with_g_main; write docs
1727         
1728 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
1729
1730         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
1731         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
1732         * dbus/dbus-message.c: (dbus_message_append_boolean),
1733         (dbus_message_append_boolean_array),
1734         (dbus_message_get_args_valist), (_dbus_message_test):
1735         * dbus/dbus-message.h:
1736         * doc/dbus-specification.sgml:
1737         Various fixes as pointed out by Havoc.
1738         
1739         * test/data/invalid-messages/bad-boolean-array.message:
1740         * test/data/invalid-messages/bad-boolean.message:
1741         Add invalid boolean value test cases.
1742         
1743 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
1744
1745         * dbus/dbus-internals.c: (_dbus_type_to_string):
1746         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
1747         (_dbus_marshal_validate_arg):
1748         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
1749         * dbus/dbus-message.c: (dbus_message_append_args_valist),
1750         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
1751         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
1752         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
1753         (dbus_message_iter_get_double),
1754         (dbus_message_iter_get_boolean_array), (message_iter_test):
1755         * dbus/dbus-message.h:
1756         * dbus/dbus-protocol.h:
1757         * doc/dbus-specification.sgml:
1758         * test/data/valid-messages/lots-of-arguments.message:
1759         Add support for boolean and boolean array types.
1760         
1761 2003-02-23  Havoc Pennington  <hp@pobox.com>
1762
1763         * dbus/dbus-keyring.c: finish most of this implementation and 
1764         simple unit test
1765
1766         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
1767         these barf if the error isn't cleared to NULL
1768
1769         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
1770         (_dbus_create_directory): new function
1771
1772         * dbus/dbus-errors.c (dbus_set_error): fix warning
1773
1774         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
1775         (_dbus_string_hex_decode): new function
1776         (test_hex_roundtrip): test code
1777
1778         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
1779
1780         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
1781
1782         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use 
1783         the save-to-temp/rename trick to atomically write the new file
1784         (_dbus_string_parse_uint): new function
1785
1786 2003-02-22  Havoc Pennington  <hp@pobox.com>
1787
1788         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
1789
1790 2003-02-22  Havoc Pennington  <hp@pobox.com>
1791
1792         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
1793         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
1794
1795         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
1796
1797         * dbus/test/data/sha-1: add US government test suite for SHA-1
1798
1799 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1800
1801         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
1802         Make string arrays NULL-terminated.
1803         
1804         * dbus/dbus-memory.c: (dbus_free_string_array):
1805         * dbus/dbus-memory.h:
1806         New function for freeing NULL-terminated string arrays.
1807         
1808         * dbus/dbus-message-builder.c: (append_quoted_string),
1809         (_dbus_message_data_load):
1810         Add support for array types.
1811         
1812         * dbus/dbus-message.c: (check_message_handling):
1813         Add more types as test cases.
1814         
1815         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
1816         (_dbus_string_parse_double):
1817         Add the start offset to the end offset.
1818         
1819         * test/data/valid-messages/lots-of-arguments.message:
1820         New test message with lots of arguments.
1821         
1822 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1823
1824         * dbus/dbus-message.c: (dbus_message_append_nil),
1825         (dbus_message_append_int32), (dbus_message_append_uint32),
1826         (dbus_message_append_double), (dbus_message_append_string),
1827         (dbus_message_append_int32_array),
1828         (dbus_message_append_uint32_array),
1829         (dbus_message_append_double_array),
1830         (dbus_message_append_byte_array),
1831         (dbus_message_append_string_array):
1832         Fix all out-of-memory handling in these functions.
1833
1834 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1835
1836         * dbus/dbus-message.c: (dbus_message_append_nil):
1837         Fix a silly.
1838         
1839 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1840
1841         * dbus/dbus-message.c: (dbus_message_append_args_valist),
1842         (dbus_message_append_nil), (dbus_message_append_int32_array),
1843         (dbus_message_append_uint32_array),
1844         (dbus_message_append_double_array),
1845         (dbus_message_append_byte_array),
1846         (dbus_message_append_string_array), (dbus_message_get_args_valist),
1847         (dbus_message_iter_get_int32_array),
1848         (dbus_message_iter_get_uint32_array),
1849         (dbus_message_iter_get_double_array),
1850         (dbus_message_iter_get_byte_array),
1851         (dbus_message_iter_get_string_array):
1852
1853         * dbus/dbus-message.h:
1854         Add functions for appending and getting arrays.
1855         
1856 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1857
1858         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
1859         element size at least 8 bytes, fixes mempool tests on
1860         64-bit machines.
1861
1862 2003-02-20  Alexander Larsson  <alexl@redhat.com>
1863
1864         * dbus/dbus-transport-unix.c (unix_do_iteration):
1865         Unlock the connection mutex during a blocking select call.
1866         Add todo about how we need a way to wake up the select.
1867
1868         * dbus/dbus-connection-internal.h: 
1869         * dbus/dbus-connection.c:
1870         Add _dbus_connection_lock and _dbus_connection_unlock.
1871
1872 2003-02-19  Havoc Pennington  <hp@pobox.com>
1873
1874         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
1875         Doxyfile.in, not Doxyfile
1876
1877         * dbus/dbus-keyring.c: do some hacking on this
1878
1879         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
1880
1881         * dbus/dbus-errors.c (dbus_set_error_const): do not call
1882         dbus_error_init
1883         (dbus_set_error): remove dbus_error_init, check for message ==
1884         NULL *before* we sprintf into it, and add @todo about including 
1885         system headers in this file
1886
1887         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
1888
1889         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
1890
1891         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
1892         get various bits of user information based on either username 
1893         or user ID
1894         (_dbus_homedir_from_username): new function
1895
1896 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
1897
1898         * configure.in:
1899         Add check for nonposix getpwnam_r
1900         
1901         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
1902         Align the pool element size to a sizeof (void *) boundary.
1903         
1904         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
1905         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
1906         General Solaris fixes.
1907         
1908         * test/data/valid-messages/simplest-manual.message:
1909         Explicitly state that we want little-endian packing.
1910         
1911 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
1912
1913         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
1914
1915         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket): 
1916         Added to create a transport connecting using a tcp/ip socket.
1917
1918         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
1919         to a tcp socket at given host and port.
1920         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
1921         hostname and port.
1922
1923         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
1924
1925         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket): 
1926         Added to create a server listening on a TCP/IP socket.
1927
1928 2003-02-19  Havoc Pennington  <hp@pobox.com>
1929
1930         Throughout: mop up all the Doxygen warnings and undocumented
1931         stuff.
1932         
1933         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
1934         to search any paths.
1935
1936         * dbus/dbus-threads.c: move global mutex initializers to
1937         dbus-internals.h, multiple prototypes was confusing doxygen
1938         besides being kind of ugly
1939
1940         * Doxyfile (PREDEFINED): have Doxygen define
1941         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from 
1942         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
1943         (do not abuse the feature! it's for stuff like the autogenerated 
1944         macros in dbus-md5.c, not just for things you don't feel like 
1945         documenting...)
1946
1947 2003-02-18  Havoc Pennington  <hp@pobox.com>
1948
1949         * dbus/dbus-string.c (_dbus_string_zero): new function
1950
1951         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
1952         wrap it in some dbus-friendly API
1953
1954         * dbus/dbus-types.h: add 16-bit types
1955
1956 2003-02-18  Joe Shaw  <joe@assbarn.com>
1957
1958         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
1959         credentials from our currently running process.
1960         (get_word): Fix a buglet where we were copying the entire length
1961         instead of relative to our position.
1962
1963         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
1964         keys on the stack... it's 640k of data.
1965
1966         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
1967         read the credentials byte off the socket, even if we don't have
1968         SO_PEERCRED.
1969         (_dbus_poll): Implement poll() using select() for systems which
1970         don't have it.
1971
1972         * glib/test-dbus-glib.c (main): Print out an error if no
1973         parameters are given.
1974
1975         * test/data/auth/fallback.auth-script: Added.  Tests that a client
1976         can fallback to a secondary auth mechanism if the first fails.
1977
1978 2003-02-18  Havoc Pennington  <hp@pobox.com>
1979
1980         * AUTHORS: add Alex
1981
1982 2003-02-17  Havoc Pennington  <hp@pobox.com>
1983
1984         * doc/dbus-specification.sgml: lots of cosmetic
1985         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
1986         env variable to DBUS_BUS_ADDRESS, s/client/application/,
1987         s/server/bus/ (except in authentication section). Add a section
1988         "Message Bus Message Routing"
1989
1990 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
1991
1992         Release 0.4
1993         
1994         * NEWS: Update
1995
1996 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
1997
1998         * doc/dbus-specification.sgml:
1999         Specification updates.
2000         
2001 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
2002
2003         * bus/activation.c: (bus_activation_init), (child_setup),
2004         (bus_activation_activate_service):
2005         * bus/activation.h:
2006         * bus/main.c: (main):
2007         Set DBUS_ADDRESS environment variable.
2008         
2009         * dbus/dbus-errors.c: (dbus_set_error):
2010         Don't use va_copy since that's a C99 feature.
2011         
2012         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
2013         (_dbus_spawn_async):
2014         * dbus/dbus-sysdeps.h:
2015         Add child_setup_func to _dbus_spawn_async.
2016         
2017         * doc/dbus-specification.sgml:
2018         Update specification.
2019         
2020         * test/spawn-test.c: (setup_func), (main):
2021         Fix test.
2022         
2023 2003-02-17  Alexander Larsson  <alexl@redhat.com>
2024
2025         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
2026         Added todo.
2027
2028 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
2029
2030         * doc/.cvsignore:
2031         * doc/Makefile.am:
2032         * doc/dbus-test-plan.sgml:
2033         Add test plan document.
2034         
2035         * test/Makefile.am:
2036         Fix distcheck.
2037         
2038 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
2039
2040         * dbus/dbus-message.c: (decode_header_data),
2041         (_dbus_message_loader_return_buffer):
2042         Set the header padding amount when loading a message.
2043
2044 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
2045
2046         * bus/dispatch.c: (send_one_message):
2047         Only send broadcast messages to registered connections.
2048         
2049         * dbus/dbus-message.c: (dbus_message_name_is):
2050         * dbus/dbus-message.h:
2051         New convenience function.
2052         
2053         * dbus/dbus-transport-debug.c: (do_reading):
2054         Only dispatch one message per run.
2055
2056         * test/Makefile.am:
2057         * test/bus-test.c: (new_connection_callback), (die),
2058         (test_hello_client1_handler), (test_hello_client2_handler),
2059         (test_hello_replies), (main):
2060
2061         * test/bus-test-loop.[ch]:
2062         Add these.
2063         
2064 2003-02-16  Havoc Pennington  <hp@pobox.com>
2065
2066         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
2067         backward conditional
2068
2069 2003-02-16  Alexander Larsson  <alexl@redhat.com>
2070
2071         * dbus/dbus-connection.c:
2072         Implement sent_message_with_reply. (with_reply_and block is still
2073         busted).
2074         Made dispatch_message not lose message if OOM.
2075         
2076         * dbus/dbus-errors.h:
2077         Add NoReply error (for reply timeouts).
2078
2079 2003-02-16  Alexander Larsson  <alexl@redhat.com>
2080
2081         * dbus/dbus-hash.c (_dbus_hash_table_unref):
2082         Actually free keys and values when destroying hashtable.
2083
2084 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
2085
2086         * dbus/dbus-auth.c: (client_try_next_mechanism):
2087         Plug a leak.
2088         
2089         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
2090         Return TRUE if there's no thread implementation around.
2091         
2092         * glib/dbus-gmain.c: (free_source),
2093         (dbus_connection_hookup_with_g_main):
2094         Make sure to remove the GSource when the connection is finalized.
2095         
2096 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
2097
2098         * bus/dispatch.c: (bus_dispatch_message_handler):
2099         * dbus/dbus-errors.h:
2100         Return an error if someone tries to send a message to a service
2101         that doesn't exist.
2102         
2103 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
2104
2105         * bus/activation.c: (load_directory), (bus_activation_init),
2106         (bus_activation_activate_service):
2107         * bus/activation.h:
2108         * bus/driver.c: 
2109         (bus_driver_handle_activate_service), (bus_driver_handle_message):
2110         More work on the activation handling.
2111         
2112         * dbus/dbus-errors.h:
2113         Add some error messages
2114         
2115         * dbus/dbus-message.c: (dbus_message_new_error_reply):
2116         * dbus/dbus-message.h:
2117         New function that creates an error message.
2118         
2119         * dbus/dbus-protocol.h:
2120         Add ACTIVATE_SERVER message.
2121         
2122         * dbus/dbus-server-unix.c: (unix_handle_watch),
2123         (_dbus_server_new_for_domain_socket):
2124         Call _dbus_fd_set_close_on_exec.
2125         
2126         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
2127         (_dbus_spawn_async), (_dbus_disable_sigpipe),
2128         (_dbus_fd_set_close_on_exec):
2129         * dbus/dbus-sysdeps.h:
2130         Add _dbus_fd_set_close_on exec function. Also add function that checks
2131         that all open fds are set to close-on-exec and warns otherwise.
2132         
2133         * dbus/dbus-transport-unix.c:
2134         (_dbus_transport_new_for_domain_socket):
2135         Call _dbus_fd_set_close_on_exec.
2136
2137 2003-02-16  Havoc Pennington  <hp@pobox.com>
2138
2139         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
2140         allow people to avoid setting SIGPIPE to SIG_IGN
2141         (_dbus_connection_new_for_transport): disable SIGPIPE unless 
2142         we've been asked not to
2143
2144 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
2145
2146         * dbus/dbus-list.c: (_dbus_list_append_link),
2147         (_dbus_list_prepend_link):
2148         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
2149         (dbus_realloc):
2150         Warning fixes.
2151
2152 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
2153
2154         * bus/Makefile.am:
2155         * bus/activation.c: (bus_activation_entry_free),
2156         (add_desktop_file_entry), (load_directory), (bus_activation_init):
2157         * bus/activation.h:
2158         * bus/main.c: (main):
2159         Add simple activation support, doesn't work yet though.
2160
2161 2003-02-15   Zack Rusin  <zack@kde.org>
2162
2163         * qt/dbus-qthread.cpp:  small casting fix
2164
2165 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
2166
2167         * dbus/dbus-errors.c: (dbus_set_error):
2168         * dbus/dbus-errors.h:
2169         Add a few errors and make dbus_set_error void.
2170         
2171         * dbus/dbus-sysdeps.c: 
2172         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
2173         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
2174         * dbus/dbus-sysdeps.h:
2175         Add _dbus_spawn_async.
2176         
2177         * test/spawn-test.c: (main):
2178         Test for _dbus_spawn_async.
2179         
2180 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
2181
2182         * dbus/dbus-internals.h:
2183         Fix build without tests.
2184         
2185         * dbus/dbus-list.c: (alloc_link):
2186         Fix a segfault when a malloc fails.
2187         
2188         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
2189         (dbus_malloc0), (dbus_realloc):
2190         Add support for malloc debugging.
2191
2192 2003-02-15  Alexander Larsson  <alexl@redhat.com>
2193
2194         * dbus/dbus-threads.c:
2195         * dbus/dbus-threads.h:
2196         Add condvars. Remove static mutext from API.
2197         Implement static mutexes by initializing them from threads_init.
2198         
2199         * glib/dbus-gthread.c:
2200         * qt/dbus-qthread.cpp:
2201         Update with the thread api changes.
2202
2203                 
2204         * dbus/dbus-list.c:
2205         * dbus/dbus-list.h:
2206         Turn StaticMutex into normal mutex + init function.
2207         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
2208         _dbus_list_append_link, _dbus_list_prepend_link
2209
2210
2211         * dbus/dbus-sysdeps.c: 
2212         * dbus/dbus-sysdeps.h:
2213         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
2214         _dbus_atomic_dec. Only slow fallback implementation at the moment.
2215         
2216         * dbus/dbus-protocol.h:
2217         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
2218         
2219         * dbus/dbus-message.c:
2220         Make ref/unref atomic.
2221         Fix some docs.
2222         
2223         * dbus/dbus-connection-internal.h:
2224         * dbus/dbus-connection.c:
2225         * dbus/dbus-connection.h:
2226         Make threadsafe.
2227         Change _peek to _borrow,_return & _steal_borrowed.
2228         Change disconnect callback to event.
2229         Make dbus_connection_dispatch_messages reentrant.
2230         
2231         * dbus/dbus-transport.c:
2232         Don't ref the connection on calls to the transport
2233         implementation.
2234         
2235         * dbus/dbus-message-handler.c:
2236         Make threadsafe.
2237         
2238         * glib/dbus-gmain.c:
2239         Don't use peek_message anymore
2240         
2241         * test/Makefile.am:
2242         * test/debug-thread.c:
2243         * test/debug-thread.h:
2244         Simple thread implementation that asserts() on deadlocks in
2245         single-threaded code.
2246         
2247         * test/bus-test.c:
2248         (main) Call debug_threads_init.
2249
2250         * test/watch.c:
2251         Use disconnect message instead of disconnect callback.
2252
2253         * bus/connection.c:
2254         * bus/connection.h:
2255         Don't call dbus_connection_set_disconnect_function. Instead export
2256         bus_connection_disconnect.
2257         
2258         * bus/dispatch.c:
2259         Call bus_connection_disconnect when we get a disconnected message.
2260         
2261 2003-02-15  Havoc Pennington  <hp@pobox.com>
2262
2263         * dbus/dbus-message.c (dbus_message_new): fool around with the
2264         docs
2265
2266 2003-02-14  Havoc Pennington  <hp@pobox.com>
2267
2268         * dbus/dbus-mempool.c: fail if the debug functions so indicate
2269
2270         * dbus/dbus-memory.c: fail if the debug functions indicate we
2271         should
2272
2273         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
2274         (_dbus_decrement_fail_alloc_counter): debug functions to 
2275         simulate memory allocation failures
2276
2277 2003-02-14  Havoc Pennington  <hp@pobox.com>
2278
2279         * dbus/dbus-errors.h (struct DBusError): add a word of padding 
2280         to DBusError
2281
2282 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2283
2284         * bus/driver.c: (bus_driver_handle_hello):
2285         * bus/driver.h:
2286         * bus/services.c: (bus_service_lookup):
2287         Reorder message sending so we get a more sane order.
2288         
2289         * test/bus-test.c: (message_handler):
2290         Fix tyop.
2291         
2292 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2293
2294         * bus/driver.c: (bus_driver_send_service_deleted),
2295         (bus_driver_send_service_created), (bus_driver_send_service_lost),
2296         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
2297         (bus_driver_send_welcome_message),
2298         (bus_driver_handle_list_services),
2299         (bus_driver_handle_acquire_service),
2300         (bus_driver_handle_service_exists):
2301         * dbus/dbus-bus.c: (dbus_bus_register_client),
2302         (dbus_bus_acquire_service), (dbus_bus_service_exists):
2303         * dbus/dbus-errors.c: (dbus_result_to_string):
2304         * dbus/dbus-errors.h:
2305         * dbus/dbus-message.c: (dbus_message_append_args),
2306         (dbus_message_append_args_valist), (dbus_message_get_args),
2307         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
2308         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
2309         (dbus_message_iter_get_byte_array),
2310         (dbus_message_iter_get_string_array), (message_iter_test),
2311         (check_message_handling), (_dbus_message_test):
2312         * dbus/dbus-message.h:
2313         * test/bus-test.c: (main):
2314         Change fields to arguments in messages, so that they won't be
2315         confused with header fields.
2316         
2317         * glib/test-dbus-glib.c: (main):
2318         Remove append_fields from hello message.
2319         
2320 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2321
2322         * dbus/dbus-errors.c:
2323         * dbus/dbus-message.c:
2324         * dbus/dbus-string.c:
2325         Documentation fixes.
2326
2327 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2328
2329         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
2330         (remove_timeout):
2331         Implement support for timeouts in dbus-glib.
2332         
2333 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2334
2335         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
2336         * dbus/dbus-message.c: (process_test_subdir):
2337         * test/break-loader.c: (find_breaks_based_on):
2338         Plug some memory leaks.
2339         
2340 2003-02-13  Richard Hult  <rhult@codefactory.se>
2341
2342         * bus/main.c: Fix build.
2343
2344         * dbus/dbus-errors.h: 
2345         * dbus/dbus-errors.c: Fix copyright for Anders.
2346
2347 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2348
2349         * bus/Makefile.am:
2350         Add utils.[ch]
2351         
2352         * bus/connection.c: (bus_connection_foreach):
2353         Fix a warning.
2354         
2355         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
2356         (unescape_string), (new_section), (parse_section_start),
2357         (parse_key_value), (report_error), (bus_desktop_file_load),
2358         (bus_desktop_file_get_string):
2359         * bus/desktop-file.h:
2360         Use DBusError for error reporting.
2361         
2362         * bus/dispatch.c: (send_one_message),
2363         (bus_dispatch_message_handler):
2364         * bus/driver.c: (bus_driver_send_service_deleted),
2365         (bus_driver_send_service_created), (bus_driver_send_service_lost),
2366         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
2367         (bus_driver_send_welcome_message),
2368         (bus_driver_handle_list_services),
2369         (bus_driver_handle_acquire_service),
2370         (bus_driver_handle_service_exists):
2371         * bus/loop.c: (bus_loop_run):
2372         * bus/main.c:
2373         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
2374         
2375         * bus/utils.c: (bus_wait_for_memory):
2376         * bus/utils.h:
2377         New files with general utility functions.
2378         
2379         * dbus/dbus-internals.h:
2380         Remove _DBUS_HANDLE_OOM.
2381         
2382 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2383
2384         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
2385         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
2386         * dbus/dbus-errors.h:
2387         Add DBusError structure.
2388         
2389 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2390
2391         * test/data/valid-messages/standard-acquire-service.message:
2392         * test/data/valid-messages/standard-hello.message:
2393         * test/data/valid-messages/standard-list-services.message:
2394         * test/data/valid-messages/standard-service-exists.message:
2395         Add some standard messages.
2396         
2397 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2398
2399         * bus/driver.c: (bus_driver_send_welcome_message),
2400         (bus_driver_handle_list_services),
2401         (bus_driver_handle_acquire_service),
2402         (bus_driver_handle_service_exists), (bus_driver_handle_message):
2403         Update for API changes in libdbus.
2404         
2405         * dbus/dbus-message.c: (dbus_message_new_reply):
2406         * dbus/dbus-message.h:
2407         Remove the name argument. The spec states that replies shouldn't
2408         have a name.
2409
2410 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
2411
2412         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
2413         (report_error), (bus_desktop_file_load), (lookup_section),
2414         (lookup_line), (bus_desktop_file_get_raw),
2415         (bus_desktop_file_get_string):
2416         * bus/desktop-file.h:
2417         Some fixes, and new functions for getting a key value from a section.
2418         
2419 2003-02-13  Havoc Pennington  <hp@pobox.com>
2420
2421         * test/data/auth/fail-after-n-attempts.auth-script: new test
2422
2423         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
2424         reject the client.
2425
2426 2003-02-13  Havoc Pennington  <hp@pobox.com>
2427
2428         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
2429         dbus_credentials_match were backward
2430
2431         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
2432         NO_CREDENTIALS and ROOT_CREDENTIALS
2433
2434         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine 
2435         into here. Never process more commands after we've reached an 
2436         end state; store further data as unused bytes.
2437
2438         * test/data/auth/*: add more auth tests
2439         
2440         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
2441         command to match exact string and EXPECT_UNUSED to match unused
2442         bytes
2443
2444         * test/Makefile.am (dist-hook): fix to dist all the test stuff
2445
2446 2003-02-12  Havoc Pennington  <hp@pobox.com>
2447
2448         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
2449         \r off of popped lines
2450
2451         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
2452         scripts
2453
2454         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
2455         SEND, append \r\n
2456
2457 2003-02-12  Havoc Pennington  <hp@pobox.com>
2458
2459         * dbus/Makefile.am: remove break-loader from the build, since it
2460         moved.
2461
2462         * configure.in: add --enable-gcov to turn on coverage profiling
2463         flags and disable optimization
2464
2465 2003-02-10  Havoc Pennington  <hp@pobox.com>
2466
2467         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync 
2468         initial cut at test framework for DBusAuth from laptop.
2469         Doesn't quite work yet but it compiles and I need to get 
2470         it off the 266mhz laptop. ;-)
2471         
2472         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
2473         fix a memleak in error case
2474
2475 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
2476
2477         * bus/Makefile.am:
2478         * bus/desktop-file.c:
2479         * bus/desktop-file.h:
2480         Add a desktop file parser.
2481
2482 2003-02-11  Zack Rusin  <zack@kde.org>
2483
2484         * qt/message.[h|cpp]: sample implementation
2485         of the KDE wrapper for DBusMessage
2486
2487 2003-02-09  Zack Rusin  <zack@kde.org>
2488
2489         * test/bus-test.c: make_it_compile
2490         * doc/dbus-specification.sgml: minimal semantic fix
2491
2492 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
2493
2494         Release 0.3
2495         
2496         * NEWS: Update
2497
2498 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
2499
2500         * dbus/Makefile.am:
2501         * dbus/dbus-break-loader.c:
2502         * test/Makefile.am:
2503         * test/break-loader.c:
2504         Move dbus-break-loader to test/ and rename it to break-loader.
2505
2506 2003-02-02  Havoc Pennington  <hp@pobox.com>
2507
2508         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files 
2509         for code to manage cookies in your home directory
2510
2511         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
2512
2513         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
2514         to authenticate, then disconnect the client.
2515
2516 2003-02-03  Alexander Larsson  <alexl@redhat.com>
2517
2518         * dbus/dbus-message.c (dbus_message_append_fields):
2519         Correct docs.
2520
2521 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2522
2523         * doc/dbus-specification.sgml:
2524         Update address format section.
2525         
2526 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2527
2528         * test/Makefile.am:
2529         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
2530         (message_handler), (new_connection_callback), (loop_quit),
2531         (loop_run), (main):
2532         Add bus test.
2533         
2534 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2535
2536         * bus/driver.c: (bus_driver_handle_service_exists):
2537         Simplify the code a bit.
2538         
2539         * dbus/dbus-bus.c: (dbus_bus_service_exists):
2540         Fix a silly. 
2541         
2542 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2543
2544         * bus/Makefile.am:
2545         Add libdbus-daemon.la and link to it.
2546
2547 2003-02-01  James Willcox  <jwillcox@gnome.org>
2548
2549         * bus/driver.c: (bus_driver_handle_own_service):
2550         Actually include the service reply code in the message.
2551
2552 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2553
2554         * bus/driver.c: (bus_driver_handle_service_exists):
2555         Don't unref the incoming message.
2556         
2557 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2558
2559         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
2560
2561 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2562
2563         * dbus/dbus-server.c: (dbus_server_listen):
2564         * dbus/dbus-transport.c: (_dbus_transport_open):
2565         ifdef out the calls to the debug transport and server.
2566         
2567 2003-02-02  Alexander Larsson  <alexl@redhat.com>
2568
2569         * dbus/dbus-watch.c (dbus_watch_get_flags):
2570         Add note in the docs that ERROR or HANGUP won't be returned
2571         and are assumed always on.
2572
2573         * glib/dbus-gmain.c (add_watch):
2574         Always add IO_ERR | IO_HUP
2575
2576         * dbus/dbus-message.h:
2577         Add semicolon after dbus_message_iter_get_string_array().
2578         Makes qt code build again
2579
2580 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
2581
2582         * bus/driver.c: (create_unique_client_name),
2583         (bus_driver_handle_hello):
2584         Don't take a name, just use a numeric id to identify
2585         each client.
2586         
2587         * dbus/Makefile.am:
2588         * dbus/dbus-bus.c: (dbus_bus_register_client),
2589         (dbus_bus_acquire_service), (dbus_bus_service_exists):
2590         * dbus/dbus-bus.h:
2591         Add new convenience functions for communicating with the bus.
2592         
2593         * dbus/dbus-message.h:
2594         
2595         * dbus/dbus-protocol.h:
2596         Fix a typo.
2597         
2598 2003-02-01  Alexander Larsson  <alexl@redhat.com>
2599
2600         * dbus/dbus-message.c (dbus_message_append_fields):
2601         Add some more doc comments.
2602
2603 2003-02-01  Havoc Pennington  <hp@pobox.com>
2604
2605         * dbus/dbus-break-loader.c (randomly_modify_length): change 
2606         a 4-byte value in the message as if it were a length
2607
2608         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
2609         execute bit on saved files
2610
2611 2003-02-01  Havoc Pennington  <hp@pobox.com>
2612
2613         * dbus/dbus-break-loader.c (main): new program to find messages
2614         that break the loader.
2615
2616         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
2617         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
2618
2619         * dbus/dbus-string.c (_dbus_string_set_byte): new
2620         
2621 2003-01-31  Havoc Pennington  <hp@pobox.com>
2622
2623         * dbus/dbus-message.c: refactor the test code to be more general, 
2624         in preparation for writing a "randomly permute test cases to 
2625         try to break the loader" program.
2626
2627 2003-01-31  Havoc Pennington  <hp@pobox.com>
2628         
2629         * doc/dbus-specification.sgml: work on the specification
2630
2631         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check 
2632         the protocol version of the message.
2633
2634         * dbus/dbus-protocol.h: drop special _REPLY names, the spec 
2635         no longer specifies that.
2636         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not 
2637         1/2/3/4)
2638
2639         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
2640         "break" for DBUS_TYPE_NIL, remove @todo
2641
2642 2003-01-31  Havoc Pennington  <hp@pobox.com>
2643
2644         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename 
2645         just set_is_error/get_is_error as this is a commonly-used
2646         function, and write docs.
2647
2648 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
2649
2650         * dbus/dbus-address.c: (dbus_address_entry_free):
2651         Free key and value lists.
2652         
2653         * dbus/dbus-internals.c: (_dbus_type_to_string):
2654         Add the types we didn't have.
2655         
2656         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
2657         (_dbus_marshal_validate_arg):
2658         Add NIL types.
2659         
2660         * dbus/dbus-message.c: (dbus_message_set_sender):
2661         Remove todo about being able to set sender to NULL.
2662         
2663         (dbus_message_set_is_error_reply),
2664         (dbus_message_get_is_error_reply):
2665         * dbus/dbus-message.h:
2666         New functions.
2667         
2668         * dbus/dbus-protocol.h:
2669         Add error reply flag.
2670         
2671         * test/data/valid-messages/opposite-endian.message:
2672         Add NIL type to test.
2673         
2674 2003-01-31  Havoc Pennington  <hp@pobox.com>
2675
2676         * doc/dbus-specification.sgml: fully specify the header.  Add
2677         flags and major protocol version, and change header/body len to
2678         unsigned.
2679
2680         * dbus/dbus-message-builder.c (append_saved_length): append length
2681         as uint32
2682
2683         * dbus/dbus-message.c (dbus_message_create_header): change header
2684         length and body length to unsigned. Add the new fields from the
2685         spec
2686         (_dbus_message_loader_return_buffer): unsigned header/body len
2687
2688 2003-01-30  Havoc Pennington  <hp@pobox.com>
2689
2690         * dbus/dbus-auth.c: rework to use only REJECTED, no 
2691         MECHANISMS
2692
2693         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just 
2694         use REJECTED, suggested by Mark McLoughlin
2695
2696 2003-01-30  Havoc Pennington  <hp@pobox.com>
2697
2698         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
2699         a better way to report errors here. e.g.  "unix address lacks
2700         path" or something. also "no such file" when the path doesn't
2701         exist, etc.
2702
2703         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
2704         leaking list nodes
2705         (dbus_parse_address): add @todo about documenting address format, 
2706         and allowing , and ; to be escaped
2707
2708 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
2709
2710         * dbus/Makefile.am:
2711         Add dbus-address.[ch]
2712         
2713         * dbus/dbus-address.c: (dbus_address_entry_free),
2714         (dbus_address_entries_free), (create_entry),
2715         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
2716         (dbus_parse_address), (_dbus_address_test):
2717         * dbus/dbus-address.h:
2718         New files for dealing with address parsing.
2719         
2720         * dbus/dbus-connection.c:
2721         Document timeout functions.
2722         
2723         * dbus/dbus-message.c:
2724         Document dbus_message_new_from_message.
2725         
2726         * dbus/dbus-server-debug.c:
2727         Document.
2728         
2729         * dbus/dbus-server.c: (dbus_server_listen):
2730         Parse address and use correct server implementation.
2731         
2732         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
2733         * dbus/dbus-string.h:
2734         New function with test.
2735         
2736         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
2737         * dbus/dbus-test.h:
2738         Add address tests.
2739         
2740         * dbus/dbus-transport-debug.c:
2741         Document.
2742         
2743         * dbus/dbus-transport.c: (_dbus_transport_open):
2744         Parse address and use correct transport implementation. 
2745
2746 2003-01-30  Havoc Pennington  <hp@pobox.com>
2747
2748         * dbus/dbus-message.c: use message->byte_order instead of 
2749         DBUS_COMPILER_BYTE_ORDER throughout.
2750         (dbus_message_create_header): pad header to align the 
2751         start of the body of the message to 8-byte boundary
2752
2753         * dbus/dbus-marshal.h: make all the demarshalers take const 
2754         DBusString arguments.
2755
2756         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
2757         validate message args here, so we don't have to do slow validation
2758         later, and so we catch bad messages as they are incoming. Also add
2759         better checks on header_len and body_len. Also fill in
2760         message->byte_order
2761
2762         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
2763         implemented properly)
2764         (_dbus_string_validate_nul): new function to check all-nul
2765
2766         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename 
2767         get_arg_end_pos and remove all validation
2768         (_dbus_marshal_validate_arg): actually do validation here.
2769
2770 2003-01-29  Havoc Pennington  <hp@pobox.com>
2771
2772         * dbus/dbus-message.c (check_message_handling): fix assertion
2773         failure on set_client_serial
2774
2775 2003-01-28  Havoc Pennington  <hp@pobox.com>
2776
2777         * dbus/dbus-server-debug.c: Add doc section comments
2778         
2779         * dbus/dbus-transport-debug.c: add doc section comments
2780         
2781 2003-01-28  Havoc Pennington  <hp@redhat.com>
2782
2783         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
2784         the reverse order from how I had it
2785         (_dbus_string_base64_encode): reverse encoding order. I was
2786         basically byteswapping everything during encoding.
2787
2788 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
2789
2790         * dbus/dbus-connection-internal.h:
2791         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
2792         (_dbus_connection_remove_timeout):
2793         Add functions for adding and removing timeouts.
2794         
2795         * dbus/dbus-message.c: (dbus_message_new_from_message):
2796         Add new function that takes a message and creates an exact
2797         copy of it, but with the refcount set to 1.
2798         (check_message_handling):
2799         Fix build error.
2800         
2801         * dbus/dbus-server-protected.h:
2802         * dbus/dbus-server.c: (_dbus_server_init_base),
2803         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
2804         (dbus_server_set_timeout_functions):
2805         (_dbus_server_remove_timeout):
2806         New functions so that a server can add and remove timeouts.
2807
2808         (dbus_server_listen):
2809         Add commented out call to dbus_server_debug_new.
2810
2811         * dbus/dbus-timeout.c: (_dbus_timeout_new):
2812         Actually set the handler, doh.
2813         
2814         * dbus/dbus-transport.c: (_dbus_transport_open):
2815         Add commented out call to dbus_transport_debug_client_new.
2816         
2817         * dbus/Makefile.am:
2818         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
2819         
2820 2003-01-28  Havoc Pennington  <hp@pobox.com>
2821
2822         * dbus/dbus-message.c (check_message_handling): function to check 
2823         on the loaded message, iterates over it etc.
2824
2825 2003-01-28  Havoc Pennington  <hp@pobox.com>
2826
2827         * test/Makefile.am (dist-hook): fix make distdir
2828
2829         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
2830
2831 2003-01-27  Havoc Pennington  <hp@pobox.com>
2832
2833         * dbus/dbus-mempool.c (time_for_size): replace printf with 
2834         _dbus_verbose
2835
2836         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
2837         empty lines; fix the SAVE_LENGTH stuff to be
2838         START_LENGTH/END_LENGTH so it actually works; couple other 
2839         bugfixes
2840         
2841         * test/Makefile.am (dist-hook): add dist-hook for .message files
2842
2843         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
2844         can be constant or locked.
2845         (_dbus_string_free): allow freeing a const string as
2846         documented/intended
2847
2848         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
2849
2850         * dbus/dbus-test-main.c (main): take an argument which is the 
2851         directory containing test data
2852
2853         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
2854         argument to this and load all the messages in test/data/
2855         checking that they can be loaded or not loaded as appropriate.
2856
2857 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
2858
2859         * bus/dispatch.c: (bus_dispatch_message_handler):
2860         Dispatch messages sent to services.
2861         
2862         * bus/driver.c: (bus_driver_send_service_deleted),
2863         (bus_driver_send_service_created), (bus_driver_send_service_lost),
2864         (bus_driver_send_service_acquired):
2865         Add helper functions for sending service related messages.
2866
2867         (bus_driver_send_welcome_message):
2868         Send HELLO_REPLY instead of WELCOME.
2869         
2870         (bus_driver_handle_list_services):
2871         Send LIST_SERVICES_REPLY instead of SERVICES.
2872         
2873         (bus_driver_handle_own_service),
2874         (bus_driver_handle_service_exists):
2875         New message handlers.
2876         
2877         (bus_driver_handle_message):
2878         Invoke new message handlers.
2879         
2880         (bus_driver_remove_connection):
2881         Don't remove any services here since that's done automatically
2882         by bus_service_remove_owner now.
2883         
2884         * bus/driver.h:
2885         New function signatures.
2886         
2887         * bus/services.c: (bus_service_add_owner):
2888         Send ServiceAcquired message if we're the only primary owner.
2889         
2890         (bus_service_remove_owner):
2891         Send ServiceAcquired/ServiceLost messages.
2892         
2893         (bus_service_set_prohibit_replacement),
2894         (bus_service_get_prohibit_replacement):
2895         Functions for setting prohibit replacement.
2896         
2897         (bus_service_has_owner):
2898         New function that checks if a connection is in the owner queue of 
2899         a certain service.
2900         
2901         * bus/services.h:
2902         Add new function signatures.
2903         
2904         * dbus/dbus-list.c: (_dbus_list_test):
2905         Add tests for _dbus_list_remove_last and traversing the list backwards.
2906         
2907         * dbus/dbus-list.h:
2908         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
2909         go any further, so return NULL then.
2910         
2911         * dbus/dbus-protocol.h:
2912         Add new messages, service flags and service replies.
2913         
2914 2003-01-26  Havoc Pennington  <hp@pobox.com>
2915
2916         * dbus/dbus-message-builder.c: implement, completely untested.
2917
2918         * test/data/*: add data to be used in testing. 
2919         ".message" files are our simple loadable text format.
2920         ".message-raw" will be binary dumps of messages.
2921
2922         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
2923
2924 2003-01-26  Havoc Pennington  <hp@pobox.com>
2925
2926         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
2927
2928         * dbus/dbus-errors.c (dbus_result_to_string): add
2929         file errors
2930
2931         * dbus/dbus-message-builder.c: new file, will contain code to load
2932         up messages from files. Not implemented yet.
2933
2934 2003-01-26  Havoc Pennington  <hp@pobox.com>
2935
2936         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
2937         the sender by setting to NULL
2938
2939 2003-01-26  Havoc Pennington  <hp@pobox.com>
2940
2941         The unit tests pass, but otherwise untested.  If it breaks, the
2942         tests should have been better. ;-)
2943         
2944         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
2945         the connection.
2946
2947         * dbus/dbus-message.c: redo everything so we maintain 
2948         message->header as the only copy of the various fields.
2949         This avoids the possibility of out-of-memory in some cases,
2950         for example dbus_message_lock() can't run out of memory anymore,
2951         and avoids extra copying. Figured I may as well go ahead and do 
2952         this since it was busted for dbus_message_lock to not return 
2953         failure on OOM, and dbus_message_write_header was totally
2954         unchecked for OOM. Also fixed some random other bugs.
2955
2956         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
2957         that strings are nul-terminated. Also, end_pos can be equal 
2958         to string length just not greater than, I think.
2959         (_dbus_marshal_set_int32): new function
2960         (_dbus_marshal_set_uint32): new function
2961         (_dbus_marshal_set_string): new function
2962
2963         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
2964         a warning, init timeout_list to NULL
2965         (dbus_connection_send_message): don't use uninitialized variable
2966         "serial"
2967
2968         * dbus/dbus-string.c (_dbus_string_replace_len): new function
2969
2970 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
2971
2972         * bus/driver.c: (bus_driver_handle_hello),
2973         (bus_driver_send_welcome_message):
2974         Plug leaks
2975         
2976 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
2977
2978         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
2979         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
2980         (dbus_connection_unref):
2981         * dbus/dbus-marshal.c: (_dbus_marshal_test):
2982         * dbus/dbus-message.c: (dbus_message_unref),
2983         Plug memory leaks.
2984         
2985         (dbus_message_get_fields): 
2986         Remove debugging printout.
2987
2988         (_dbus_message_loader_return_buffer):
2989         Don't store the header string.
2990         
2991         (_dbus_message_test):
2992         Plug leaks.
2993
2994 2003-01-26  Richard Hult  <rhult@codefactory.se>
2995
2996         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
2997         the file descriptor list, since it can change under us.
2998
2999 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3000
3001         * glib/dbus-gmain.c: (dbus_connection_prepare),
3002         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
3003         (remove_watch), (dbus_connection_hookup_with_g_main):
3004         Rewrite the glib handling to use its own GSource instead of a 
3005         GIOChannel so we can catch messages put in the queue while waiting
3006         for a reply.
3007         
3008 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3009
3010         * bus/Makefile.am:
3011         * bus/connection.c: (connection_disconnect_handler),
3012         (connection_watch_callback), (bus_connection_setup):
3013         * bus/dispatch.c: (send_one_message),
3014         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
3015         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
3016         * bus/dispatch.h:
3017         * bus/driver.c: (bus_driver_send_service_deleted),
3018         (bus_driver_send_service_created), (bus_driver_handle_hello),
3019         (bus_driver_send_welcome_message),
3020         (bus_driver_handle_list_services), (bus_driver_remove_connection),
3021         (bus_driver_handle_message):
3022         * bus/driver.h:
3023         Refactor code, put the message dispatching in its own file. Use 
3024         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
3025         is disconnected.
3026         
3027 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3028
3029         * dbus/dbus-internals.h:
3030         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
3031         
3032         * dbus/dbus-message.c: (dbus_message_get_sender):
3033         * dbus/dbus-message.h:
3034         Implement dbus_message_get_sender.
3035         
3036         * dbus/dbus-protocol.h:
3037         Add message and service defines.
3038         
3039 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3040
3041         * dbus/dbus-connection.c: (dbus_connection_send_message):
3042         * dbus/dbus-message-internal.h:
3043         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
3044         (dbus_message_write_header):
3045         Remove _dbus_messag_unlock and don't set the client serial on a 
3046         message if one already exists.
3047         
3048 2003-01-24  Havoc Pennington  <hp@pobox.com>
3049
3050         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
3051         list_pool
3052
3053         * bus/driver.c (bus_driver_handle_list_services): fix a leak 
3054         on OOM
3055
3056 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3057
3058         * dbus/dbus-list.c: (alloc_link), (free_link):
3059         Use a memory pool for the links.
3060         
3061 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3062
3063         * bus/connection.c: (bus_connection_foreach):
3064         * bus/connection.h:
3065         Add new bus_connection_foreach function.
3066         
3067         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
3068         Add function that broadcasts a message to all clients.
3069         
3070         (bus_driver_send_service_created), (bus_driver_handle_hello),
3071         (bus_driver_send_welcome_message),
3072         (bus_driver_handle_list_services), (bus_driver_message_handler):
3073         Implement functions that take care of listing services, and notifying
3074         clients when new services are created.
3075         
3076         * bus/services.c: (bus_services_list):
3077         * bus/services.h:
3078         Add new function that returns an array of strings with the currently
3079         registered services.
3080         
3081         * glib/dbus-glib.h:
3082         * glib/dbus-gmain.c:
3083         Update copyright year.
3084         
3085 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
3086
3087         * dbus/dbus-connection.c: (dbus_connection_send_message):
3088         Unlock the message in case it was sent earlier.
3089         
3090         (dbus_connection_send_message_with_reply_and_block):
3091         Remove the reply message from the list.
3092         
3093         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
3094         Set array_len and new_pos correctly.
3095         
3096         (_dbus_marshal_test):
3097         Remove debug output.
3098         
3099         * dbus/dbus-message-internal.h:
3100         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
3101         New function that returns the reply serial.
3102         
3103         (_dbus_message_unlock):
3104         New function that unlocks a message and resets its header.
3105
3106         (dbus_message_append_string_array), 
3107         (dbus_message_get_fields_valist),
3108         (dbus_message_iter_get_field_type),
3109         (dbus_message_iter_get_string_array),   
3110         (dbus_message_get_fields),      
3111         (dbus_message_append_fields_valist):
3112         Handle string arrays.
3113         
3114         (dbus_message_set_sender):
3115         Make this function public since the bus daemon needs it.
3116         
3117         (decode_header_data):
3118         Set the reply serial to -1 initially.
3119
3120         * dbus/dbus-message.h:
3121         Add dbus_message_set_sender.    
3122
3123 2003-01-24  Havoc Pennington  <hp@pobox.com>
3124
3125         * doc/dbus-specification.sgml: add some stuff
3126
3127 2003-01-22  Havoc Pennington  <hp@pobox.com>
3128
3129         * doc/dbus-specification.sgml: Start to document the protocol.
3130
3131 2003-01-22  Havoc Pennington  <hp@pobox.com>
3132
3133         * dbus/dbus-connection.c
3134         (dbus_connection_send_message_with_reply_and_block): add some @todo
3135
3136         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
3137
3138 2003-01-21  Havoc Pennington  <hp@pobox.com>
3139
3140         (patch untested because can't compile)
3141         
3142         * bus/driver.c (create_unique_client_name): make this function
3143         never recycle client names. Also, caller should initialize 
3144         the DBusString.
3145
3146         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
3147
3148 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
3149
3150         * dbus/dbus-marshal.c: (_dbus_marshal_double),
3151         (_dbus_marshal_int32), (_dbus_marshal_uint32),
3152         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
3153         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
3154         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
3155         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
3156         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
3157         * dbus/dbus-marshal.h:
3158         * dbus/dbus-protocol.h:
3159         Add support for marshalling and demarshalling integer, double
3160         and string arrays.
3161         
3162 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
3163
3164         * bus/Makefile.am:
3165         Add driver.[ch]
3166         
3167         * bus/connection.c: (connection_disconnect_handler):
3168         Remove the connection from the bus driver's list.
3169         
3170         (connection_watch_callback): Dispatch messages.
3171
3172         (free_connection_data): Free connection name.
3173         
3174         (bus_connection_setup): Add connection to the bus driver's list.
3175         (bus_connection_remove_owned_service): 
3176         (bus_connection_set_name), (bus_connection_get_name):
3177         Add functions for setting and getting the connection's name.
3178         
3179         * bus/connection.h:
3180         Add function headers.
3181         
3182         * bus/driver.c: (create_unique_client_name),
3183         (bus_driver_handle_hello_message),
3184         (bus_driver_send_welcome_message), (bus_driver_message_handler),
3185         (bus_driver_add_connection), (bus_driver_remove_connection):
3186         * bus/driver.h:
3187         * bus/main.c:
3188         * bus/services.c: (bus_service_free):
3189         * bus/services.h:
3190         New file that handles communication and registreation with the bus
3191         itself. 
3192         
3193 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
3194
3195         * dbus/dbus-connection.c: (dbus_connection_send_message):
3196         Add a new client_serial parameter.
3197         
3198         (dbus_connection_send_message_with_reply):
3199         Remove a @todo since we've implemented the blocking function.
3200         
3201         (dbus_connection_send_message_with_reply_and_block):
3202         New function that sends a message and waits for a reply and
3203         then returns the reply.
3204         
3205         * dbus/dbus-connection.h:
3206         Add new functions.
3207         
3208         * dbus/dbus-errors.c: (dbus_result_to_string):
3209         * dbus/dbus-errors.h:
3210         Add new DBUS_RESULT.
3211         
3212         * dbus/dbus-message-internal.h:
3213         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
3214         (_dbus_message_set_sender), (dbus_message_write_header),
3215         (dbus_message_new_reply), (decode_header_data),
3216         (_dbus_message_loader_return_buffer), (_dbus_message_test):
3217         * dbus/dbus-message.h:
3218         Add new functions that set the reply serial and sender.
3219         Also marshal and demarshal them correctly and add test.
3220         
3221         * dbus/dbus-protocol.h:
3222         Add new DBUS_MESSAGE_TYPE_SENDER.
3223         
3224         * glib/dbus-glib.h:
3225         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
3226         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
3227         (dbus_connection_hookup_with_g_main):
3228         * glib/test-dbus-glib.c: (main):
3229         Rewrite to use GIOChannel and remove the GSource crack.
3230         
3231         * test/echo-client.c: (main):
3232         * test/watch.c: (check_messages):
3233         Update for changed APIs
3234         
3235 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
3236
3237         * dbus/Makefile.am: Add dbus-timeout.[cħ]
3238         
3239         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
3240         Create a DBusTimeoutList.       
3241         (dbus_connection_set_timeout_functions): Add new function to
3242         set timeout callbacks
3243         
3244         * dbus/dbus-connection.h: Add public DBusTimeout API.
3245         
3246         * dbus/dbus-message.c: (dbus_message_get_service):
3247         * dbus/dbus-message.h:  New function.
3248
3249         * dbus/dbus-server.c: Fix small doc typo.
3250         
3251         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
3252
3253 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
3254
3255         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
3256         of the string, just as long as specified.
3257
3258 2003-01-19  Havoc Pennington  <hp@pobox.com>
3259
3260         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
3261         new function
3262
3263         * dbus/dbus-server.c (dbus_server_set_max_connections)
3264         (dbus_server_get_max_connections, dbus_server_get_n_connections):
3265         keep track of current number of connections, and add API for
3266         setting a max (but haven't implemented enforcing the max yet)
3267
3268 2003-01-18  Havoc Pennington  <hp@pobox.com>
3269
3270         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
3271         reading/writing if read_watch != NULL or write_watch != NULL.
3272
3273         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
3274         the message loader code to actually load message->header and
3275         message->body into the newly-created message.
3276
3277         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
3278         in OOM case
3279
3280         * dbus/dbus-connection.c (dbus_connection_set_max_message_size) 
3281         (dbus_connection_get_max_message_size) 
3282         (dbus_connection_set_max_live_messages_size) 
3283         (dbus_connection_get_max_live_messages_size): implement some
3284         resource limitation functions
3285
3286         * dbus/dbus-resources.c: new file implementing some of the
3287         resource limits stuff
3288
3289         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
3290         missing docs, add @todo to handle OOM etc.
3291
3292         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
3293         docs
3294         
3295 2003-01-18  Havoc Pennington  <hp@pobox.com>
3296
3297         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the 
3298         connection if it hasn't been already.
3299
3300         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
3301         replace with DisconnectFunction.
3302
3303 2003-01-18  Havoc Pennington  <hp@pobox.com>
3304
3305         Building --disable-verbose-mode --disable-asserts --disable-tests
3306         cuts the library from 112K to 45K or so
3307         
3308         * configure.in: check for varargs macro support, 
3309         add --enable-verbose-mode, --enable-asserts. 
3310
3311         * dbus/dbus-internals.h (_dbus_assert): support
3312         DBUS_DISABLE_ASSERT
3313         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
3314
3315 2003-01-18  Havoc Pennington  <hp@pobox.com>
3316
3317         * dbus/dbus-test.c: include config.h so that tests actually run
3318
3319         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
3320         so the failure mode when that assumption fails will be plenty
3321         obvious.
3322
3323 2003-01-18  Havoc Pennington  <hp@pobox.com>
3324
3325         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
3326
3327         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
3328         the distribution
3329
3330         * test/Makefile.am: don't use special variable "TESTS" for echo-*
3331         since we don't want to use those in make check
3332
3333 2003-01-15  Havoc Pennington  <hp@redhat.com>
3334
3335         Release 0.2
3336         
3337         * NEWS: update
3338
3339 2003-01-15  Havoc Pennington  <hp@redhat.com>
3340
3341         * test/Makefile.am: fix so that test source code ends up in the
3342         distribution on make distcheck
3343
3344 2003-01-15  Havoc Pennington  <hp@redhat.com>
3345
3346         Release 0.1.
3347         
3348         * NEWS: update  
3349
3350 2003-01-15  Havoc Pennington  <hp@redhat.com>
3351
3352         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
3353         fix build when --disable-tests
3354
3355         * Makefile.am (EXTRA_DIST): put HACKING in here
3356
3357         * HACKING: document procedure for making a tarball release.
3358
3359 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
3360
3361         * bus/connection.c: (connection_error_handler),
3362         (bus_connection_setup):
3363         * bus/main.c: (main):
3364         Make sure that the DBusConnectionData struct is NULLed
3365         out to prevent a segfault.
3366         
3367         * dbus/dbus-errors.c: (dbus_result_to_string):
3368         * dbus/dbus-errors.h:
3369         * dbus/dbus-message.c: (dbus_message_get_fields),
3370         (dbus_message_get_fields_valist), (_dbus_message_test):
3371         * dbus/dbus-message.h:
3372         Make dbus_message_get_fields return a result code so we can
3373         track invalid fields as well as oom.
3374         
3375 2003-01-11  Havoc Pennington  <hp@pobox.com>
3376
3377         * configure.in: change --enable-test/--enable-ansi action-if-given
3378         to enable_foo=$enableval instead of enable_foo=yes
3379
3380 2003-01-08  Havoc Pennington  <hp@pobox.com>
3381
3382         * dbus/dbus-string.c (_dbus_string_align_length): new function
3383
3384         * dbus/dbus-test-main.c: move main() for test app here
3385         * dbus/dbus-test.c
3386         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
3387         symbol to run tests, because dbus-test isn't in the main 
3388         library
3389
3390         Code review nitpicks.
3391         
3392         * dbus/dbus-message.c (dbus_message_write_header): add newlines
3393         for people with narrow emacs ;-). Assert client_serial was filled
3394         in. Assert message->name != NULL.
3395         (dbus_message_append_fields): have "first_field_type" arg separate
3396         from va list, needed for C++ binding that also uses varargs IIRC
3397         and helps with type safety
3398         (dbus_message_new): add @todo about using DBusString to store
3399         service/name internally
3400         (dbus_message_new): don't leak ->service and ->name on OOM later
3401         in the function
3402         (dbus_message_unref): free the service name
3403         (dbus_message_get_fields): same change to varargs
3404         i.e. first_field_type
3405         (_dbus_message_loader_return_buffer): assert that the message data
3406         is aligned (if not it's a bug in our code). Put in verbose griping
3407         about why we set corrupted = TRUE.
3408         (decode_header_data): add FIXME that char* is evil.  Was going to
3409         add FIXME about evil locale-specific string.h strncmp, but just
3410         switched to wacky string-as-uint32 optimization. Move check for
3411         "no room for field name" above get_const_data_len() to avoid
3412         assertion failure in get_const_data_len if we have trailing 2
3413         bytes or the like. Check for service and name fields being
3414         provided twice. Don't leak service/name on error. Require field
3415         names to be aligned to 4 bytes.
3416
3417         * dbus/dbus-marshal.c: move byte swap stuff to header
3418         (_dbus_pack_int32): uscore-prefix
3419         (_dbus_unpack_int32): uscore-prefix
3420         (_dbus_unpack_uint32): export
3421         (_dbus_demarshal_string): add @todo complaining about use of
3422         memcpy()
3423         (_dbus_marshal_get_field_end_pos): add @todo about bad error
3424         handling allowing corrupt data to go unchecked
3425
3426 2003-01-08  Havoc Pennington  <hp@redhat.com>
3427
3428         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write 
3429         to the select() as needed for authentication. (should be using
3430         _dbus_poll() not select, but for another day)
3431
3432         * dbus/dbus.h: include dbus/dbus-protocol.h
3433
3434 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
3435
3436         * dbus/Makefile.am (dbusinclude_HEADERS): Install
3437         dbus-connection.h
3438
3439 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
3440
3441         * dbus/dbus-internals.c: (_dbus_type_to_string):
3442         New function that returns a string describing a type.
3443         
3444         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
3445         * dbus/dbus-marshal.h:
3446         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
3447         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
3448         (dbus_message_iter_get_byte_array):
3449         * dbus/dbus-message.h:
3450         Add new convenience functions for appending and getting message fields.
3451         Also add demarshalling routines for byte arrays.
3452
3453 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
3454
3455         * dbus/dbus-connection-internal.h:
3456         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
3457         (_dbus_connection_get_next_client_serial),
3458         (dbus_connection_send_message):
3459         * dbus/dbus-internals.h:
3460         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
3461         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
3462         (_dbus_marshal_uint32), (_dbus_demarshal_double),
3463         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
3464         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
3465         (_dbus_verbose_bytes), (_dbus_marshal_test):
3466         * dbus/dbus-marshal.h:
3467         * dbus/dbus-message-internal.h:
3468         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
3469         (dbus_message_write_header), (_dbus_message_lock),
3470         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
3471         (dbus_message_get_name), (dbus_message_append_int32),
3472         (dbus_message_append_uint32), (dbus_message_append_double),
3473         (dbus_message_append_string), (dbus_message_append_byte_array),
3474         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
3475         (dbus_message_iter_unref), (dbus_message_iter_has_next),
3476         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
3477         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
3478         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
3479         (decode_header_data), (_dbus_message_loader_return_buffer),
3480         (message_iter_test), (_dbus_message_test):
3481         * dbus/dbus-message.h:
3482         * dbus/dbus-protocol.h:
3483         * dbus/dbus-test.c: (main):
3484         * dbus/dbus-test.h:
3485         * glib/test-dbus-glib.c: (message_handler), (main):
3486         * test/echo-client.c: (main):
3487         * test/watch.c: (check_messages):
3488         Make messages sendable and receivable for real.
3489         
3490 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
3491
3492         * dbus/dbus-marshal.c: (_dbus_marshal_double),
3493         (_dbus_marshal_string), (_dbus_marshal_byte_array):
3494         * dbus/dbus-message.c: (dbus_message_append_int32),
3495         (dbus_message_append_uint32), (dbus_message_append_double),
3496         (dbus_message_append_string), (dbus_message_append_byte_array):
3497         Handle OOM restoration.
3498         
3499 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
3500
3501         * dbus/dbus-marshal.c: (_dbus_marshal_string),
3502         (_dbus_demarshal_string), (_dbus_marshal_test):
3503         * dbus/dbus-marshal.h:
3504         * dbus/dbus-message.c: (dbus_message_get_name),
3505         Document these functions.
3506         
3507         (dbus_message_append_int32), (dbus_message_append_uint32),
3508         (dbus_message_append_double), (dbus_message_append_string),
3509         (dbus_message_append_byte_array):
3510         * dbus/dbus-message.h:
3511         Add functions for adding message fields of different types.
3512         
3513         * dbus/dbus-protocol.h:
3514         Add the different types.
3515
3516 2003-01-05  Havoc Pennington  <hp@pobox.com>
3517
3518         * bus/connection.c: implement routines for handling connections,
3519         first thing is keeping a list of owned services on each connection
3520         and setting up watches etc.
3521
3522         * bus/services.c: implement a mapping from service names to lists
3523         of connections
3524
3525         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
3526
3527         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
3528         to use static mutexes for global data
3529
3530         * dbus/dbus-connection.c (dbus_connection_set_data): add new
3531         collection of functions to set/get application-specific data
3532         on the DBusConnection.
3533
3534 2003-01-04  Havoc Pennington  <hp@pobox.com>
3535
3536         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
3537         (_dbus_poll): new function
3538
3539         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
3540         copied from GLib
3541
3542         * bus/loop.c: initial code for the daemon main loop
3543
3544 2003-01-04  Havoc Pennington  <hp@pobox.com>
3545
3546         * test/watch.c (error_handler): make it safe if the error handler 
3547         is called multiple times (if we s/error handler/disconnect
3548         handler/ we should just guarantee it's called only once)
3549
3550         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
3551         error handler on disconnect (it's quite possible we should
3552         just change the error handler to a "disconnect handler," I'm 
3553         not sure we have any other meaningful errors)
3554
3555         * configure.in: check for getpwnam_r
3556
3557         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
3558         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
3559         mechanism as in SASL spec, using socket credentials
3560
3561         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
3562         (_dbus_send_credentials_unix_socket): new function
3563
3564         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
3565         dbus_accept()
3566         (_dbus_write): only check errno if <0 returned
3567         (_dbus_write_two): ditto
3568
3569 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
3570
3571         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
3572         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
3573         (_dbus_marshal_test):
3574         * dbus/dbus-marshal.h:
3575         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
3576         to _dbus_marshal_utf8_string. Also fix some tests.
3577         
3578 2002-12-28  Harri Porten  <porten@kde.org>
3579
3580         * configure.in: added check for C++ compiler and a very cheesy
3581         check for the Qt integration
3582
3583         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
3584
3585         * qt/Makefile.am: added 
3586
3587         * qt/.cvsignore: added  
3588
3589         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
3590         latter, added #ifdef QT_THREAD_SUPPORT guard.
3591
3592         * dbus/Makefile.am: added missing headers for make dist
3593
3594 2002-12-28  Kristian Rietveld  <kris@gtk.org>
3595
3596         * dbus/Makefile.am: fixup export-symbols-regex.
3597
3598 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
3599
3600         * acinclude.m4: Add this file and put the 
3601         PKG_CHECK_MODULE macro in it.
3602
3603 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
3604
3605         * dbus/dbus-marshal.c: (_dbus_marshal_string),
3606         (_dbus_demarshal_double), (_dbus_demarshal_int32),
3607         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
3608         (_dbus_marshal_test):
3609         Make the demarshalling routines align the pos argument.
3610         Add string marshalling tests and fix the obvious bugs 
3611         discovered.
3612         
3613 2002-12-26  Havoc Pennington  <hp@pobox.com>
3614
3615         * dbus/dbus-auth.c: fixes fixes fixes
3616
3617         * dbus/dbus-transport-unix.c: wire up support for
3618         encoding/decoding data on the wire
3619
3620         * dbus/dbus-auth.c (_dbus_auth_encode_data) 
3621         (_dbus_auth_decode_data): append to target string 
3622         instead of nuking it.
3623
3624 2002-12-26  Havoc Pennington  <hp@pobox.com>
3625
3626         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
3627         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
3628         doh
3629
3630         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
3631         avoid swap_bytes() overhead (ignoring possible assembly stuff for 
3632         now). Main point is because I wanted unpack_uint32 to implement
3633         _dbus_verbose_bytes
3634         (_dbus_verbose_bytes): new function
3635
3636         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
3637
3638         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
3639         mechanism to handle a corrupt message stream
3640         (_dbus_message_loader_new): fix preallocation to only prealloc, 
3641         not prelengthen
3642         
3643         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
3644         (_dbus_string_test): enhance tests for copy/move and fix the
3645         functions
3646
3647         * dbus/dbus-transport-unix.c: Hold references in more places to 
3648         avoid reentrancy problems
3649
3650         * dbus/dbus-transport.c: ditto
3651
3652         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
3653         leak reference count in no-message case
3654
3655         * test/watch.c (do_mainloop): handle adding/removing watches
3656         during iteration over the watches. Also, ref the connection/server
3657         stored on a watch, so we don't try to mangle a destroyed one.
3658
3659         * dbus/dbus-transport-unix.c (do_authentication): perform
3660         authentication
3661
3662         * dbus/dbus-auth.c (get_state): add a state
3663         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
3664         (_dbus_auth_get_unused_bytes): append the unused bytes
3665         to the passed in string, rather than prepend
3666
3667         * dbus/dbus-transport.c (_dbus_transport_init_base): create 
3668         the auth conversation DBusAuth
3669
3670         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
3671         (_dbus_transport_new_for_domain_socket): when creating a
3672         transport, pass in whether it's a client-side or server-side
3673         transport so we know which DBusAuth to create
3674
3675 2002-12-03  Havoc Pennington  <hp@pobox.com>
3676
3677         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
3678         _after_ finalizing the derived members
3679         (unix_connection_set): unref watch if we fail to add it
3680
3681         * dbus/dbus-connection.c (dbus_connection_unref): delete the
3682         transport first, so that the connection owned by the 
3683         transport will be valid as the transport finalizes.
3684
3685         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
3686         if necessary, and remove watches from the connection.
3687         
3688         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
3689         
3690 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
3691
3692         * dbus/dbus-marshal.c: (_dbus_marshal_string),
3693         (_dbus_demarshal_double), (_dbus_demarshal_int32),
3694         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
3695         (_dbus_marshal_test):
3696         * dbus/dbus-marshal.h:
3697         Add string marshal functions and have the demarshal functions
3698         return the new position.
3699         
3700 2002-12-25  Havoc Pennington  <hp@pobox.com>
3701
3702         * doc/dbus-sasl-profile.txt: docs on the authentication protocol, 
3703         it is a simple protocol that just maps directly to SASL.
3704
3705         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
3706         initial implementation, not actually used yet.
3707         
3708         * dbus/dbus-string.c (_dbus_string_find): new function
3709         (_dbus_string_equal): new function
3710         (_dbus_string_base64_encode): new function
3711         (_dbus_string_base64_decode): new function
3712
3713 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
3714
3715         * dbus/Makefile.am:
3716         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
3717         (_dbus_marshal_int32), (_dbus_marshal_uint32),
3718         (_dbus_demarshal_double), (_dbus_demarshal_int32),
3719         (_dbus_demarshal_uint32), (_dbus_marshal_test):
3720         * dbus/dbus-marshal.h:
3721         * dbus/dbus-protocol.h:
3722         * dbus/dbus-test.c: (main):
3723         * dbus/dbus-test.h:
3724         Add un-optimized marshalling/demarshalling routines.
3725         
3726 2002-12-25  Harri Porten  <porten@kde.org>
3727
3728         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
3729
3730 2002-12-24  Zack Rusin  <zack@kde.org>
3731
3732         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
3733         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
3734         main loop stuff
3735
3736 2002-12-24  Havoc Pennington  <hp@pobox.com>
3737
3738         * glib/dbus-gthread.c: fix include
3739
3740         * glib/dbus-glib.h: rename DBusMessageHandler for now. 
3741         I think glib API needs to change, though, as you don't 
3742         want to use DBusMessageFunction, you want to use the 
3743         DBusMessageHandler object. Probably 
3744         dbus_connection_open_with_g_main_loop()
3745         and dbus_connection_setup_g_main_loop() or something like that
3746         (but think of better names...) that just create a connection 
3747         that has watch/timeout functions etc. already set up.
3748
3749         * dbus/dbus-connection.c
3750         (dbus_connection_send_message_with_reply): new function just to 
3751         show how the message handler helps us deal with replies.
3752
3753         * dbus/dbus-list.c (_dbus_list_remove_last): new function
3754
3755         * dbus/dbus-string.c (_dbus_string_test): free a string that
3756         wasn't
3757
3758         * dbus/dbus-hash.c: use memory pools for the hash entries
3759         (rebuild_table): be more paranoid about overflow, and 
3760         shrink table when we can
3761         (_dbus_hash_test): reduce number of sprintfs and write
3762         valid C89. Add tests for case where we grow and then 
3763         shrink the hash table.
3764
3765         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
3766
3767         * dbus/dbus-connection.c (dbus_connection_register_handler) 
3768         (dbus_connection_unregister_handler): new functions
3769
3770         * dbus/dbus-message.c (dbus_message_get_name): new
3771
3772         * dbus/dbus-list.c: fix docs typo
3773
3774         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
3775         an object representing a handler for messages.
3776
3777 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
3778
3779         * glib/dbus-glib.h:
3780         * glib/dbus-gthread.c: (dbus_gthread_init):
3781         Don't use the gdbus prefix for public functions.
3782         
3783 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
3784
3785         * Makefile.am:
3786         * configure.in:
3787         Add GLib checks and fixup .pc files
3788         
3789         * glib/Makefile.am:
3790         * glib/dbus-glib.h:
3791         * glib/dbus-gmain.c: (gdbus_connection_prepare),
3792         (gdbus_connection_check), (gdbus_connection_dispatch),
3793         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
3794         (dbus_connection_gsource_new):
3795         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
3796         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
3797         * glib/test-dbus-glib.c: (message_handler), (main):
3798         Add GLib support.
3799         
3800 2002-12-15  Harri Porten  <porten@kde.org>
3801
3802         * autogen.sh: check for libtoolize before attempting to use it 
3803         
3804         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
3805         struct.
3806         
3807         * .cvsignore: ignore more stamp files
3808
3809         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
3810
3811         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
3812         without make install.
3813
3814 2002-12-15  Havoc Pennington  <hp@pobox.com>
3815
3816         * dbus/dbus-threads.c: add thread stubs that a higher library
3817         layer can fill in. e.g. the GLib wrapper might fill them in with
3818         GThread stuff. We still need to use this thread API to
3819         thread-safe-ize the library.
3820
3821 2002-12-12  Havoc Pennington  <hp@pobox.com>
3822
3823         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
3824         below new interfaces and include fewer system headers.
3825
3826         * dbus/dbus-sysdeps.c (_dbus_read): new function
3827         (_dbus_write): new function
3828         (_dbus_write_two): new function
3829         (_dbus_connect_unix_socket): new function
3830         (_dbus_listen_unix_socket): new function
3831
3832         * dbus/dbus-message-internal.h: change interfaces to use
3833         DBusString
3834
3835 2002-12-11  Havoc Pennington  <hp@pobox.com>
3836
3837         * dbus/dbus-types.h: add dbus_unichar
3838
3839         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
3840
3841         * dbus/dbus-connection.c (dbus_connection_send_message): return
3842         TRUE on success
3843
3844         * dbus/dbus-transport.c: include dbus-watch.h   
3845
3846         * dbus/dbus-connection.c: include dbus-message-internal.h
3847
3848         * HACKING: add file with coding guidelines stuff.
3849
3850         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
3851         handling here, for security purposes (as in vsftpd). Not actually
3852         using this class yet.
3853
3854         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
3855         system/libc usage here, as in vsftpd, for ease of auditing (and
3856         should also simplify portability). Haven't actually moved all the
3857         system/libc usage into here yet.
3858         
3859 2002-11-25  Havoc Pennington  <hp@pobox.com>
3860
3861         * dbus/dbus-internals.c (_dbus_verbose): fix to not 
3862         always print the first verbose message.
3863
3864 2002-11-24  Havoc Pennington  <hp@pobox.com>
3865
3866         * test/echo-client.c, test/echo-server.c: cheesy test 
3867         clients.
3868         
3869         * configure.in (AC_CHECK_FUNCS): check for writev
3870
3871         * dbus/dbus-message.c (_dbus_message_get_network_data): new
3872         function
3873
3874         * dbus/dbus-list.c (_dbus_list_foreach): new function
3875
3876         * dbus/dbus-internals.c (_dbus_verbose): new function
3877
3878         * dbus/dbus-server.c, dbus/dbus-server.h: public object
3879         representing a server that listens for connections.
3880
3881         * dbus/.cvsignore: create
3882
3883         * dbus/dbus-errors.h, dbus/dbus-errors.c:
3884         public API for reporting errors
3885
3886         * dbus/dbus-connection.h, dbus/dbus-connection.c:
3887         public object representing a connection that 
3888         sends/receives messages. (Same object used for 
3889         both client and server.)
3890
3891         * dbus/dbus-transport.h, dbus/dbus-transport.c:
3892         Basic abstraction for different kinds of stream
3893         that we might read/write messages from.
3894
3895 2002-11-23  Havoc Pennington  <hp@pobox.com>
3896
3897         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN 
3898         _DBUS_INT_MAX
3899
3900         * dbus/dbus-test.c (main): add list test, and include 
3901         dbus-test.h as intended
3902
3903         * dbus/dbus-hash.c (_dbus_hash_table_remove_string) 
3904         (_dbus_hash_table_remove_int): return value indicates 
3905         whether the entry existed to remove
3906
3907         * dbus/dbus-list.c: add linked list utility class, 
3908         with docs and tests
3909
3910         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket 
3911         array sometimes.
3912
3913 2002-11-23  Havoc Pennington  <hp@pobox.com>
3914
3915         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
3916         DBUS_END_DECLS to nothing, that should fix this once and for all
3917
3918         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
3919
3920         * dbus/dbus-message.c, dbus/dbus-hash.c: 
3921         add some missing @brief
3922
3923 2002-11-23  Havoc Pennington  <hp@pobox.com>
3924
3925         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS 
3926         to avoid confusing Doxygen
3927
3928         * dbus/dbus-hash.c: @} not }@
3929
3930         * dbus/dbus-message.c (struct DBusMessage): split out 
3931         internals docs
3932
3933 2002-11-23  Havoc Pennington  <hp@pobox.com>
3934
3935         * configure.in: pile on more warning flags if using gcc
3936
3937         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have 
3938         to document static functions
3939
3940         * configure.in: add summary to end of configure so it 
3941         looks nice and attractive
3942
3943         * dbus/dbus-hash.c: finish implementation and write unit 
3944         tests and docs
3945
3946         * configure.in: add --enable-tests to enable unit tests
3947
3948         * dbus/dbus-test.c: test program to run unit tests 
3949         for all files in dbus/*, initially runs a test for 
3950         dbus-hash.c
3951         
3952         * dbus/dbus-internals.h: file to hold some internal utility stuff
3953
3954 2002-11-22  Havoc Pennington  <hp@redhat.com>
3955
3956         * dbus/dbus-hash.c: copy in Tcl hash table, not yet 
3957         "ported" away from Tcl
3958
3959         * dbus/dbus-types.h: header for types such as dbus_bool_t
3960
3961 2002-11-22  Havoc Pennington  <hp@redhat.com>
3962
3963         * dbus/dbus.h: fixups for doc warnings
3964
3965         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up 
3966         macros
3967         (QUIET): make it quiet so we can see warnings
3968
3969         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
3970
3971 2002-11-22  Havoc Pennington  <hp@redhat.com>
3972
3973         * Makefile.am: include "Doxyfile" target in all-local
3974
3975         * configure.in: generate the Doxyfile
3976
3977         * Doxyfile.in: move Doxyfile here, so we can use 
3978         configure to generate a Doxyfile with the right 
3979         version number etc.
3980
3981 2002-11-22  Havoc Pennington  <hp@redhat.com>
3982
3983         * dbus/dbus-message.c: move inline docs into .c file
3984
3985         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
3986         so all docs are under doc/
3987         (MAN_EXTENSION): generate man pages. Use extension 
3988         ".3dbus" which matches ".3qt" on my system, 
3989         I guess this is OK, I don't know really.
3990         (FILE_PATTERNS): look for .c files not .h, makes sense
3991         for plain C I think
3992
3993 2002-11-22  Havoc Pennington  <hp@pobox.com>
3994
3995         * Makefile.am (SUBDIRS): rename subdir "server" to "bus" 
3996         because any app can be a server, and any app can be a client, 
3997         the bus is a special kind of server.
3998
3999 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
4000
4001         * Doxyfile : adding. Still needs Makefile rules to be generated
4002         automatically (just run "doxygen" in the toplevel dir for now to
4003         generate docs)
4004         
4005         * dbus/dbus-message.h : Adding sample docs (javadoc since
4006         resembles gtk-doc a little more)
4007
4008         * dbus/dbus.h : Adding sample docs
4009
4010 2002-11-21  Havoc Pennington  <hp@redhat.com>
4011
4012         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION 
4013         so we can allow ourselves to include files directly, 
4014         instead of having to use dbus.h
4015
4016         * dbus/dbus.h: fill in
4017
4018         * dbus/dbus-message.h: sketch out a sample header file.
4019         Include griping if you include it directly instead of 
4020         via dbus.h
4021
4022         * dbus/dbus-macros.h: new file with macros for extern "C", 
4023         TRUE/FALSE, NULL, etc.
4024
4025         * doc/file-boilerplate.c: put include guards in here
4026
4027 2002-11-21  Havoc Pennington  <hp@redhat.com>
4028
4029         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
4030
4031         * COPYING: include the GPL as well, and license code 
4032         under both AFL and GPL.
4033
4034 2002-11-21  Havoc Pennington  <hp@redhat.com>
4035
4036         * acconfig.h: get rid of this
4037
4038         * autogen.sh (run_configure): add --no-configure option
4039
4040         * configure.in: remove AC_ARG_PROGRAM to make
4041         autoconf complain less. add AC_PREREQ. 
4042         add AC_DEFINE third arg.
4043         
4044 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
4045
4046         * doc/Makefile.am:
4047         Fix references so we can distcheck.
4048
4049 2002-11-21  Havoc Pennington  <hp@redhat.com>
4050
4051         * Initial module creation
4052