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