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