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