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