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