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