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