2005-01-16 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / ChangeLog
1 2005-01-16  Havoc Pennington  <hp@redhat.com>
2
3         * test/unused-code-gc.py: hacky script to find code that's used
4         only by the bus (not libdbus) or used only by tests or not used at
5         all. It has some false alarms, but looks like we can clean up a
6         lot of size from libdbus.
7
8         * dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
9         dbus/Makefile.am: initially move 10K of binary size out of libdbus
10         
11 2005-01-16  Havoc Pennington  <hp@redhat.com>
12
13         * Add and fix docs according to Doxygen warnings throughout
14         source.
15         
16         * dbus/dbus-marshal-recursive.c
17         (_dbus_type_reader_array_is_empty): change this to just call
18         array_reader_get_array_len() and make it static
19
20         * dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
21         from get_array_type
22         (dbus_message_iter_init_append): rename from append_iter_init
23
24         * dbus/dbus-marshal-recursive.c
25         (_dbus_type_reader_get_element_type): rename from
26         _dbus_type_reader_get_array_type
27
28 2005-01-15  Havoc Pennington  <hp@redhat.com>
29
30         * test/glib/test-profile.c (with_bus_server_filter): fix crash
31
32         * dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
33         when DBUS_DISABLE_ASSERT
34         (_dbus_marshal_set_basic): be sure we align for the string length
35
36         * dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
37         this look faster
38
39         * dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
40         inline macro version
41         (_dbus_string_set_byte): provide inline macro version
42
43 2005-01-15  Havoc Pennington  <hp@redhat.com>
44
45         * Land the new message args API and type system.
46
47         This patch is huge, but the public API change is not 
48         really large. The set of D-BUS types has changed somewhat, 
49         and the arg "getters" are more geared toward language bindings;
50         they don't make a copy, etc.
51
52         There are also some known issues. See these emails for details
53         on this huge patch:
54         http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
55         http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
56         
57         * dbus/dbus-marshal-*: all the new stuff
58
59         * dbus/dbus-message.c: basically rewritten
60
61         * dbus/dbus-memory.c (check_guards): with "guards" enabled, init
62         freed blocks to be all non-nul bytes so using freed memory is less
63         likely to work right
64
65         * dbus/dbus-internals.c (_dbus_test_oom_handling): add
66         DBUS_FAIL_MALLOC=N environment variable, so you can do
67         DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
68         DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
69         thorough.
70
71         * qt/message.cpp: port to the new message args API
72         (operator<<): use str.utf8() rather than str.unicode()
73         (pretty sure this is right from the Qt docs?)
74
75         * glib/dbus-gvalue.c: port to the new message args API
76
77         * bus/dispatch.c, bus/driver.c: port to the new message args API
78
79         * dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
80         "locked" flag to TRUE and align_offset to 0; I guess we never
81         looked at these anyhow, but seems cleaner.
82
83         * dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
84         move allocation padding macro to this header; use it to implement
85         (_DBUS_STRING_STATIC): ability to declare a static string.
86
87         * dbus/dbus-message.c (_dbus_message_has_type_interface_member):
88         change to return TRUE if the interface is not set.
89
90         * dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
91         to dbus-marshal-validate.[hc]
92
93         * dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
94         dbus-internals.c
95
96         * dbus/Makefile.am: cut over from dbus-marshal.[hc]
97         to dbus-marshal-*.[hc]
98
99         * dbus/dbus-object-tree.c (_dbus_decompose_path): move this
100         function here from dbus-marshal.c
101
102 2005-01-12  Joe Shaw  <joeshaw@novell.com>
103
104         * NEWS: Update for 0.23.
105
106         * configure.in: Release 0.23.
107
108 2005-01-12  Joe Shaw  <joeshaw@novell.com>
109
110         * mono/Makefile.am, mono/example/Makefile.am: Always build the 
111         dbus DLL with --debug.  Clean up after the .mdb files this leaves
112         behind.
113
114         * mono/doc/Makefile.am: Need to uninstall the docs on "make
115         uninstall"
116
117         * mono/Arguments.cs (GetDBusTypeConstructor): If the type
118         is an enum, get the enum's underlying type.  Another mono
119         1.1.3 fix.
120
121 2005-01-11  Joe Shaw  <joeshaw@novell.com>
122
123         Patch from Sjoerd Simons <sjoerd@luon.net>
124
125         * mono/Makefile.am, mono/example/Makefile.am: Don't redefine
126         DESTDIR.  It breaks stuff.
127
128 2005-01-11  Joe Shaw  <joeshaw@novell.com>
129
130         Patch from Tambet Ingo <tambet@ximian.com>
131
132         * mono/DBusType/Array.cs (Get): Get the underlying element type by
133         calling type.GetElementType().  The code previously depended on
134         broken Mono behavior, which was fixed in Mono 1.1.3.
135
136         * mono/DBusType/Dict.cs (constructor): Fix the parameters for
137         Activator.CreateInstance() so that the class's constructor is
138         called with the right parameters.
139
140 2005-01-11  Joe Shaw  <joeshaw@novell.com>
141
142         Patch from Timo Teräs <ext-timo.teras@nokia.com>
143
144         * dbus/dbus-connection.c
145         (_dbus_connection_queue_received_message_link): Call
146         _dbus_connection_remove_timeout() instead of the _locked()
147         variant, since it's always called from
148         _dbus_connection_handle_watch(), which handles the locking.
149         Removed the _locked() variant since it's no longer used.
150
151 2005-01-03  Havoc Pennington  <hp@redhat.com>
152
153         * dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
154         return
155         
156 2004-12-26  Havoc Pennington  <hp@redhat.com>
157
158         * dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert
159
160 2005-01-03  Havoc Pennington  <hp@redhat.com>
161
162         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
163         floating point
164
165         * dbus/dbus-string.c (_dbus_string_insert_alignment): new function
166
167 2005-01-02  Havoc Pennington  <hp@redhat.com>
168
169         * dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro
170
171 2005-01-01  Havoc Pennington  <hp@redhat.com>
172
173         * configure.in: add -Wfloat-equal
174
175 2005-01-01  Havoc Pennington  <hp@redhat.com>
176
177         * dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
178         for a variety of reasons '==' doesn't do this.
179
180 2004-12-31  Havoc Pennington  <hp@redhat.com>
181
182         * dbus/dbus-string.c (_dbus_string_equal_substrings): new function
183         I keep wishing I had
184
185 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
186
187         * python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED
188
189 2004-12-30  John (J5) Palmieri  <johnp@redhat.com>
190
191         * python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
192         and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
193         dbus-protocol.h.  Because they are defines and not enums they are not
194         autogenerated.
195
196 2004-12-26  John (J5) Palmieri  <johnp@redhat.com>
197
198         * python/dbus_bindings.pyx.in (bus_activate_service): Bind
199         dbus_bus_activate_service
200
201         * python/dbus.py (Bus.activate_service): activate a service on the
202         bus.
203
204 2004-12-24  Havoc Pennington  <hp@redhat.com>
205
206         * test/decode-gcov.c: change to use .gcno and .gcda files, but the
207         file format has also changed and I haven't adapted to that yet
208         
209         * Makefile.am: load .gcno files from latest gcc
210
211 2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
212         * Patch from Rob Taylor <robtaylor@fastmail.fm>
213
214         * python/dbus_bindings.pyx.in (bus_get_unix_user): New
215         lowlevel binding
216
217         * python/dbus.py (get_unix_user): Added binding to 
218         call dbus_bindings.bus_get_unix_user
219
220         * python/extract.py: Modified the proto_pat regex to
221         handle unsigned long
222
223 2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
224
225         * dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
226         better POSIX compliance.
227
228 2004-12-19  Havoc Pennington  <hp@redhat.com>
229
230         * dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
231         (_dbus_string_insert_8_aligned): new functions
232
233         * dbus/dbus-string.c (_dbus_string_alloc_space): new function
234
235 2004-12-18  Havoc Pennington  <hp@redhat.com>
236
237         * dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
238         macro
239
240         * dbus/dbus-message.c: fix a comment, and add a still-unused
241         not-implemented function
242
243         * dbus/dbus-marshal.h: fix comment
244
245         * dbus/dbus-internals.h (_DBUS_ISASCII): new macro
246
247 2004-12-17  Joe Shaw  <joeshaw@novell.com>
248
249         * mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
250         mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
251         mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
252         Type.UnderlyingSystemType to get the actual system type
253         underneath.  This code previously depended on the broken Mono
254         behavior, which was fixed in 1.1.3.
255
256 2004-11-27  Havoc Pennington  <hp@redhat.com>
257
258         * dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
259         are disabled
260         (_dbus_string_get_const_data): inline when asserts are disabled
261
262         * dbus/dbus-message.c: record the _dbus_current_generation of
263         creation so we can complain if dbus_shutdown() is used improperly.
264         Do this only if checks are enabled.
265
266         * dbus/dbus-connection.c: ditto
267         
268 2004-11-26  Havoc Pennington  <hp@redhat.com>
269
270         * test/glib/test-profile.c: add with_bus mode to profile echoes
271         that go through the bus.
272
273         * test/glib/run-test.sh: add ability to run test-profile
274
275         * bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
276         config file reload.
277
278 2004-11-26  Havoc Pennington  <hp@redhat.com>
279
280         * test/glib/test-profile.c: clean up how the fake_malloc_overhead
281         thing was implemented
282
283 2004-11-26  Havoc Pennington  <hp@redhat.com>
284
285         * test/glib/test-profile.c: tweak a bit, add support for some
286         made-up minimal malloc overhead with plain sockets, since in 
287         real life some sort of buffers are unavoidable thus we could 
288         count them in the theoretical best case
289
290 2004-11-26  Havoc Pennington  <hp@redhat.com>
291
292         * dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
293         where I was trying to cache one too many messages
294
295 2004-11-26  Havoc Pennington  <hp@redhat.com>
296
297         * dbus/dbus-message.c: reimplement message cache as an array which 
298         makes the cache about twice as fast and saves maybe 1.5% overall
299
300 2004-11-26  Havoc Pennington  <hp@redhat.com>
301
302         * dbus/dbus-threads.c (init_global_locks): forgot to put the
303         message cache lock here
304
305 2004-11-26  Havoc Pennington  <hp@redhat.com>
306
307         * dbus/dbus-message.c (struct DBusMessage): put the locked bit and
308         the "char byte_order" next to each other to save 4 bytes
309         (dbus_message_new_empty_header): reduce preallocation, since the
310         message cache should achieve a similar effect
311         (dbus_message_cache_or_finalize, dbus_message_get_cached): add a
312         message cache that keeps a few DBusMessage around in a pool,
313         another 8% speedup or so.
314
315         * dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function
316
317 2004-11-25  Havoc Pennington  <hp@redhat.com>
318
319         * dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
320         to write, without reading or blocking, try it before the poll()
321         and skip the poll() if nothing remains to write. This is about a
322         3% speedup in the echo client/server
323
324 2004-11-25  Havoc Pennington  <hp@redhat.com>
325
326         The primary change here is to always write() once before adding
327         the write watch, which gives us about a 10% performance increase.
328         
329         * dbus/dbus-transport-unix.c: a number of modifications to cope
330         with removing messages_pending
331         (check_write_watch): properly handle
332         DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
333         messages_pending stuff
334         (check_read_watch): properly handle WAITING_FOR_MEMORY and
335         AUTHENTICATED cases
336         (unix_handle_watch): after writing, see if the write watch can be
337         removed
338         (unix_do_iteration): assert that write_watch/read_watch are
339         non-NULL rather than testing that they aren't, since they 
340         aren't allowed to be NULL. check_write_watch() at the end so 
341         we add the watch if we did not finish writing (e.g. got EAGAIN)
342
343         * dbus/dbus-transport-protected.h: remove messages_pending call,
344         since it resulted in too much inefficient watch adding/removing; 
345         instead we now require that the transport user does an iteration 
346         after queueing outgoing messages, and after trying the first
347         write() we add a write watch if we got EAGAIN or exceeded our 
348         max bytes to write per iteration setting
349
350         * dbus/dbus-string.c (_dbus_string_validate_signature): add this
351         function
352
353         * dbus/dbus-server-unix.c (unix_finalize): the socket name was
354         freed and then accessed, valgrind flagged this bug, fix it
355
356         * dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
357         as the last valid field plus 1, where really it is equal to the
358         last valid field. Corrects some message corruption issues.
359
360         * dbus/dbus-mainloop.c: verbosity changes
361
362         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
363         instead of aborting in one of the test codepaths
364
365         * dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
366         caused not printing the pid ever again if a verbose was missing
367         the newline at the end
368         (_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE
369
370         * dbus/dbus-connection.c: verbosity changes; 
371         (dbus_connection_has_messages_to_send): new function
372         (_dbus_connection_message_sent): no longer call transport->messages_pending
373         (_dbus_connection_send_preallocated_unlocked): do one iteration to
374         try to write() immediately, so we can avoid the write watch. This
375         is the core purpose of this patchset
376         (_dbus_connection_get_dispatch_status_unlocked): if disconnected,
377         dump the outgoing message queue, so nobody will get confused
378         trying to send them or thinking stuff is pending to be sent
379
380         * bus/test.c: verbosity changes
381
382         * bus/driver.c: verbosity/assertion changes
383
384         * bus/dispatch.c: a bunch of little tweaks to get it working again
385         because this patchset changes when/where you need to block.
386
387 2004-11-23  Havoc Pennington  <hp@redhat.com>
388
389         * test/glib/test-profile.c: modify to accept a plain_sockets
390         argument in which case it will bench plain sockets instead of
391         libdbus, for comparison purposes.
392
393 2004-11-22  Havoc Pennington  <hp@redhat.com>
394
395         * test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
396         threads for more time, so sysprof can get a grip on it.
397
398         * dbus/dbus-string.c (_dbus_string_validate_utf8): remove
399         pointless variable
400
401 2004-11-13  Havoc Pennington  <hp@redhat.com>
402
403         * test/glib/test-profile.c: fix this thing up a bit
404
405         * dbus/dbus-message.c (dbus_message_new_empty_header): increase
406         preallocation sizes by a fair bit; not sure if this will be an
407         overall performance win or not, but it does reduce reallocs.
408
409         * dbus/dbus-string.c (set_length, reallocate_for_length): ignore
410         the test hack that forced constant realloc if asserts are
411         disabled, so we can profile sanely. Sprinkle in some
412         _DBUS_UNLIKELY() which are probably pointless, but before I
413         noticed the real performance problem I put them in.
414         (_dbus_string_validate_utf8): micro-optimize this thing a little
415         bit, though callgrind says it didn't help; then special-case
416         ascii, which did help a lot; then be sure we detect nul bytes as
417         invalid, which is a bugfix.
418         (align_length_then_lengthen): add some more _DBUS_UNLIKELY
419         superstition; use memset to nul the padding instead of a manual
420         loop.
421         (_dbus_string_get_length): inline this as a
422         macro; it showed up in the profile because it's used for loop
423         tests and so forth
424
425 2004-11-10  Colin Walters  <walters@verbum.org>
426
427         * dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
428         for extra paranoia.
429
430 2004-11-09  Colin Walters  <walters@verbum.org>
431
432         * dbus/dbus-string.c (_dbus_string_get_length): New
433         function, writes DBusString to C buffer.
434
435         * dbus/dbus-string.h: Prototype it.
436
437         * dbus/dbus-message.c (dbus_message_type_to_string): New
438         function, converts message type into C string.
439
440         * dbus/dbus-message.h: Prototype it.
441
442         * bus/selinux.c (bus_selinux_check): Take source pid,
443         target pid, and audit data.  Pass audit data to
444         avc_has_perm.
445         (log_audit_callback): New function, appends extra
446         audit information.
447         (bus_selinux_allows_acquire_service): Also take
448         service name, add it to audit data.
449         (bus_selinux_allows_send): Also take message
450         type, interface, method member, error name,
451         and destination, and add them to audit data.
452         (log_cb): Initialize func_audit.
453         
454         * bus/selinux.h (bus_selinux_allows_acquire_service)
455         (bus_selinux_allows_send): Update prototypes 
456
457         * bus/services.c (bus_registry_acquire_service): Pass
458         service name to bus_selinux_allows_acquire_service.
459
460         * bus/bus.c (bus_context_check_security_policy): Pass
461         additional audit data.  Move assignment of dest
462         to its own line.
463
464 2004-11-07  Colin Walters  <walters@verbum.org>
465
466         * dbus/dbus-transport-unix.c (do_authentication): Always
467         initialize auth_completed.
468         
469 2004-11-07  Colin Walters  <walters@verbum.org>
470
471         * bus/bus.c (load_config): Break into three
472         separate functions: process_config_first_time_only,
473         process_config_every_time, and process_config_postinit.
474         (process_config_every_time): Move call of
475         bus_registry_set_service_context_table into
476         process_config_postinit.
477         (process_config_postinit): New function, does
478         any processing that needs to happen late
479         in initialization (and also on reload).
480         (bus_context_new): Instead of calling load_config,
481         open config parser here and call process_config_first_time_only
482         and process_config_every_time directly.  Later, after
483         we have forked but before changing UID,
484         invoke bus_selinux_full_init, and then call
485         process_config_postinit.
486         (bus_context_reload_config): As in bus_context_new,
487         load parse file inside here, and call process_config_every_time
488         and process_config_postinit.
489
490         * bus/services.h, bus/services.c
491         (bus_registry_set_service_context_table): Rename
492         from bus_registry_set_sid_table.  Take string hash from config
493         parser, and convert them here into SIDs.
494
495         * bus/config-parser.c (struct BusConfigParser): Have
496         config parser only store a mapping of service->context
497         string.
498         (merge_service_context_hash): New function.
499         (merge_included): Merge context string hashes instead
500         of using bus_selinux_id_table_union.
501         (bus_config_parser_new): Don't use bus_selinux_id_table_new;
502         simply create a new string hash.
503         (bus_config_parser_unref): Unref it.
504         (start_selinux_child): Simply insert strings into hash,
505         don't call bus_selinux_id_table_copy_over.
506
507         * bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
508         (bus_selinux_id_table_copy_over): Delete.
509
510 2004-11-03  Colin Walters  <walters@verbum.org>
511
512         * bus/selinux.c (bus_selinux_pre_init): Kill some unused
513         variables.
514         
515 2004-11-03  Colin Walters  <walters@verbum.org>
516
517         * bus/test-main.c (test_pre_hook): Fix test logic,
518         thanks Joerg Barfurth <Joerg.Barfurth@Sun.COM>.
519
520 2004-11-02  Colin Walters  <walters@redhat.com>
521
522         * bus/selinux.c (bus_selinux_init): Split into two functions,
523         bus_selinux_pre_init and bus_selinux_post_init.
524         (bus_selinux_pre_init): Just determine whether SELinux is
525         enabled.
526         (bus_selinux_post_init): Do everything else.
527
528         * bus/main.c (main): Call bus_selinux_pre_init before parsing
529         config file, and bus_selinux_post_init after.  This ensures that
530         we don't lose the policyreload notification thread that
531         bus_selinux_init created before forking previously.
532         
533         * bus/test-main.c (test_pre_hook): Update for split.
534
535 2004-10-31  Owen Fraser-Green  <owen@discobabe.net>
536
537         Patch from Johan Fischer <linux@fischaz.com>
538         
539         * mono/doc/Makefile.am (install-data-local): Added directory
540         install for DESTDIR
541
542 2004-10-29  Colin Walters  <walters@redhat.com>
543
544         * dbus/dbus-sysdeps.h (_dbus_become_daemon): Also take
545         parameter for fd to write pid to.       
546
547         * dbus/dbus-sysdeps.c (_dbus_become_daemon): Implement it.
548         
549         * bus/bus.c (bus_context_new): Pass print_pid_fd
550         to _dbus_become_daemon (bug #1720)
551
552 2004-10-29  Colin Walters  <walters@redhat.com>
553
554         Patch from Ed Catmur <ed@catmur.co.uk>
555
556         * mono/doc/Makefile.am (install-data-local): Handle
557         DESTDIR.
558
559 2004-10-29  Colin Walters  <walters@redhat.com>
560
561         * bus/.cvsignore, qt/.cvsignore: Update.
562
563 2004-10-29  Colin Walters  <walters@redhat.com>
564
565         Patch from Kristof Vansant <de_lupus@pandora.be>
566
567         * configure.in: Detect Slackware.
568         * bus/Makefile.am (SCRIPT_IN_FILES): Add rc.messagebus.in.
569         * bus/rc.messagebus.in: New file.
570
571 2004-10-29  Colin Walters  <walters@redhat.com>
572
573         * tools/dbus-monitor.c (filter_func): Return
574         DBUS_HANDLER_RESULT_HANDLED in filter function
575         for now.  See:
576         http://freedesktop.org/pipermail/dbus/2004-August/001433.html
577
578 2004-10-29  Colin Walters  <walters@redhat.com>
579
580         Patch from Matthew Rickard <mjricka@epoch.ncsc.mil>
581
582         * bus/services.c (bus_registry_acquire_service): 
583         Correctly retrieve service name from DBusString
584         for printing.
585
586 2004-10-29  Colin Walters  <walters@redhat.com>
587
588         * dbus/dbus-glib.h: Update documentation to not
589         refer to internal APIs.
590
591 2004-10-27  Joe Shaw  <joeshaw@novell.com>
592
593         * mono/Arguments.cs (GetDBusTypeConstructor):
594         type.UnderlyingSystemType will return "System.Byte" if you do it
595         on "byte[]", which is not what we want.  So check the type.IsArray
596         property and use System.Array instead.
597
598 2004-10-25  John (J5) Palmieri  <johnp@redhat.com>
599
600         * dbus/dbus-sysdeps.c (fill_user_info): On errors do not free
601         the DBusUserInfo structure since this is passed into the function.
602         This would cause a double free when the function that allocated
603         the structure would try to free it when an error occured.
604
605         * (bus/session.conf.in, bus/Makefile.am, dbus/configure.in):
606         use /usr/share/dbus-1/services instead of /usr/lib/dbus-1.0/services
607         for service activation to avoid 32bit/64bit parallel install issues
608
609 2004-10-21  Colin Walters  <walters@verbum.org>
610
611         * AUTHORS: Fix my email address, the @gnu.org one
612         has been bouncing for some time.  Also add J5.
613         
614 2004-10-21  Colin Walters  <walters@verbum.org>
615
616         * dbus/dbus-transport-unix.c (do_authentication): Return
617         authentication status to callers.
618         (unix_handle_watch): If we completed authentication this round,
619         don't do another read.  Instead wait until the next iteration,
620         after we've read any pending data in the auth buffer.
621         (unix_do_iteration): Ditto.
622         (unix_handle_watch): Updated for new do_authentication prototype.
623
624 2004-10-18  Colin Walters  <walters@verbum.org>
625
626         * bus/selinux.c (bus_selinux_enabled): Handle
627         --disable-selinux case.
628         
629 2004-10-18  Colin Walters  <walters@verbum.org>
630
631         * bus/selinux.h: Add bus_selinux_enabled.
632         
633         * bus/selinux.c (bus_selinux_enabled): Implement it.
634         
635         * bus/config-parser.c (struct include): Add
636         if_selinux_enabled member.
637         (start_busconfig_child): Parse if_selinux_enabled
638         attribute for include.
639         (bus_config_parser_content): Handle it.
640
641         * bus/session.conf.in, bus/system.conf.in: Add
642         inclusion of context mapping to default config files;
643         conditional on SELinux being enabled.
644         
645         * doc/busconfig.dtd: Add to if_selinux_enabled to default DTD.
646         
647         * test/data/invalid-config-files/badselinux-1.conf, 
648         test/data/invalid-config-files/badselinux-2.conf:
649         Test files for bad syntax.
650         
651 2004-10-17  Colin Walters  <walters@verbum.org>
652
653         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug, check_guards)
654         (dbus_malloc, dbus_malloc0, dbus_realloc): Fix up printf
655         format specifier mismatches.
656
657 2004-10-07  Olivier Andrieu  <oliv__a@users.sourceforge.net>
658
659         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): fix an incorrect
660         format string.
661
662         * glib/dbus-dbus-gmain.c (dbus_g_bus_get): do not mangle NULL
663         pointer (bug #1540, Leonardo Boiko).
664
665 2004-09-28  Jon Trowbridge  <trow@ximian.com>
666
667         * mono/BusDriver.cs: Changed BusDriver struct to remove
668         the ServiceCreated and ServiceDeleted events and replace them
669         with the new ServiceOwnerChanged event.
670
671         * mono/example/BusListener.cs: Added a new example program,
672         which listens for and reports any ServiceOwnerChanged events
673         on the bus driver.
674
675         * mono/example/Makefile.am (DESTDIR): Build changes for the
676         new BusListener.cs example.
677
678 2004-09-27  Olivier Andrieu  <oliv__a@users.sourceforge.net>
679
680         * bus/signals.c (bus_match_rule_parse): validate the components of
681         match rules (bug #1439).
682
683         * dbus/dbus-bus.c (dbus_bus_add_match): add a missing OOM test.
684
685 2004-09-24  Olivier Andrieu  <oliv__a@users.sourceforge.net>
686
687         * doc/dbus-specification.xml: document ServiceOwnerChanged
688         signal.
689         
690         * bus/driver.c, bus/driver.h, bus/services.c: Use
691         ServiceOwnerChanged signal instead of ServiceCreated and
692         ServiceDeleted.
693         
694         * bus/dispatch.c: update testcase for the new signal.
695
696 2004-09-20  Jon Trowbridge  <trow@ximian.com>
697
698         Patch from Nat Friedman <nat@novell.com>
699
700         * mono/Makefile.am: A number of small build fixes to allow "make
701         distcheck" to succeed.
702
703         * mono/example/Makefile.am: "make distcheck" fixes.
704
705         * mono/AssemblyInfo.cs.in: When signing the assembly, look for the
706         key in @srcdir@.
707
708         * test/Makefile.am: "make distcheck" fixes.
709
710 2004-09-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
711
712         * dbus/dbus-sysdeps.c (_dbus_user_at_console): fix memleak in OOM.
713
714         * doc/busconfig.dtd: update the DTD for the at_console attribute.
715
716         * bus/driver.c (bus_driver_handle_hello): correctly handle Hello
717         messages after the first one (bug #1389).
718         
719         * bus/dispatch.c (check_double_hello_message): add a test case for
720         the double hello message bug.
721         (check_existent_service_activation): fix check of spawning error.
722         
723 2004-09-16  David Zeuthen  <david@fubar.dk>
724
725         * python/dbus_bindings.pyx.in: Add support for int64 and uint64
726
727 2004-09-12  David Zeuthen  <david@fubar.dk>
728
729         Patch from Kay Sievers <kay.sievers@vrfy.org>
730
731         * bus/bus.c (bus_context_new):
732         * bus/bus.h:
733         * bus/main.c (usage)
734         (main):
735         Add commandline option --nofork to override configuration file
736         setting.
737
738 2004-09-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
739
740         * dbus/dbus-*.h: remove the ; after DBUS_(BEGIN|END)_DECLS. Some C
741         compilers don't like it (bug #974).
742
743 2004-09-04  Harald Fernengel  <harry@kdevelop.org>
744
745         * qt/connection.*: Applied patch by JĂ©rĂ´me Lodewyck
746         <lodewyck@clipper.ens.fr> to integrate an existing
747         connection into the Qt eventloop
748
749 2004-08-30  Jon Trowbridge  <trow@ximian.com>
750
751         * mono/BusDriver.cs: Added.  This is a class for interacting with
752         the org.freedesktop.DBus service.
753
754         * mono/Message.cs: Added a mechanism to expose the message that is
755         currently being dispatched via the static Message.Current
756         property.  Added Message.Sender and Message.Destination
757         properties.
758
759         * mono/Handler.cs: Expose the dispatched message via
760         Message.Current when handling method calls.
761
762         * mono/Service.cs: Expose the dispatched message via
763         Message.Current when handling signal emissions.
764         
765         * mono/Connection.cs: Bind dbus_bus_get_base_service via the
766         Connection.BaseService property.
767
768 2004-08-28  Havoc Pennington  <hp@redhat.com>
769
770         * dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable
771
772         More fixes from Steve Grubb
773         
774         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix fd leak
775         (_dbus_listen_tcp_socket): fix fd leak
776
777         * dbus/dbus-spawn.c (read_pid, read_ints): move the "again:" for
778         EINTR to a bit lower in the code
779
780 2004-08-26  Jon Trowbridge  <trow@ximian.com>
781
782         * bus/driver.c (bus_driver_handle_service_exists): Respond with
783         TRUE if we are inquiring about the existence of the built-in
784         org.freedesktop.DBus service.
785
786 2004-08-25  John Palmieri  <johnp@redhat.com>
787         * bus/config-parser.c:
788         (struct PolicyType): Add POLICY_CONSOLE
789         (struct Element.d.policy): s/gid_or_uid/gid_uid_or_at_console
790         (start_busconfig_child): Sets up console element when
791         <policy at_console=""> is encountered in a policy file
792         (append_rule_from_element): Convert console elements to console
793         rules.
794
795         * bus/policy.c: 
796         (bus_policy_create_client_policy): Add console rules to the client
797         policy based on if the client is at the console
798         (bus_policy_append_console_rule): New function for adding a
799         console rule to a policy
800         (bus_policy_merge): Handle console rule merging
801
802         * dbus/dbus-sysdeps.h: Added the DBUS_CONSOLE_DIR constant
803         where we check for console user files
804         
805         * dbus/dbus-sysdeps.c:
806         (_dbus_file_exists): New function which checks if the given
807         file exists
808         (_dbus_user_at_console): New function which does the system
809         specific process of checking if the user is at the console
810
811         * dbus/dbus-userdb.c:
812         (_dbus_is_console_user): New function converts a UID to user name
813         and then calls the system specific _dbus_user_at_console to 
814         see if the user is at the console and therefor a console user
815
816 2004-08-25  Olivier Andrieu  <oliv__a@users.sourceforge.net>
817
818         * bus/config-parser.c (set_limit):
819         * bus/dbus-daemon-1.1.in:
820         * test/data/valid-config-files/many-rules.conf: set the
821         max_match_rules_per_connection limt from the config file. 
822
823         * doc/busconfig.dtd: update the DTD.
824
825         * bus/driver.c: remove some unused variables.
826
827 2004-08-24  Mikael Hallendal  <micke@imendio.com>
828
829         * dbus/dbus-glib-lowlevel.h: Removed dbus_bus_get_with_g_main since 
830         it's been replaced by dbus_g_bus_get
831
832 2004-08-23  Colin Walters  <walters@redhat.com>
833
834         Updated SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
835
836         * bus/selinux.h: Prototype bus_selinux_get_policy_root.
837
838         * bus/selinux.c: Create a thread for policy reload notification.
839         (bus_selinux_get_policy_root): Implement.
840
841         * bus/config-parser.c (start_busconfig_child)
842         (bus_config_parser_content): Support SELinux-root relative
843         inclusion.
844
845         * configure.in <HAVE_SELINUX>: Add -lpthread.
846         
847         * bus/test-main.c (test_pre_hook, test_post_hook): New.
848         (test_post_hook): Move memory checking into here.
849         (test_pre_hook, test_post_hook): Move SELinux checks in
850         here, but conditional on a DBUS_TEST_SELINUX environment
851         variable.  Unfortunately we can't run the SELinux checks
852         as a normal user, since they won't have any permissions
853         for /selinux.  So this will have to be tested manually
854         for now, until we have virtualization for most of
855         libselinux.
856         
857 2004-08-23  Havoc Pennington  <hp@redhat.com>
858
859         * dbus/dbus-sysdeps.c (_dbus_change_identity): add setgroups() to
860         drop supplementary groups, suggested by Steve Grubb
861
862 2004-08-20  Colin Walters  <walters@redhat.com>
863
864         * bus/config-parser.c (start_busconfig_child): Remove some unused
865         variables.
866         
867         * bus/selinux.c (bus_selinux_id_table_insert): Avoid compiler
868         warning.
869
870 2004-08-17  Joe Shaw  <joeshaw@novell.com>
871
872         * configure.in: If --enable-mono is passed in, if we can't find
873         mono error out.
874
875         * mono/Makefile.am: Use /gacutil to install assemblies into the
876         GAC and not /root.
877
878 2004-08-12  Havoc Pennington  <hp@redhat.com>
879
880         * NEWS: update for 0.22
881
882         * configure.in: release 0.22
883
884 2004-08-11  Colin Walters  <walters@redhat.com>
885
886         * tools/dbus-send.c (main, usage): Add --reply-timeout
887         argument.
888
889 2004-08-10  Olivier Andrieu  <oliv__a@users.sourceforge.net>
890
891         * bus/bus.c (process_config_first_time_only): get rid of an unused
892         DBusError that was causing a memoy leak (bug #989).
893
894         * dbus/dbus-keyring.c, dbus/dbus-message.c:
895         fix compilation on Solaris/Forte C (bug #974)
896
897         * bus/main.c (main): plug two minuscule memleaks.
898
899 2004-08-10  Havoc Pennington  <hp@redhat.com>
900
901         * doc/dbus-tutorial.xml: add some more info on GLib bindings
902
903 2004-08-09  Havoc Pennington  <hp@redhat.com>
904
905         * COPYING: switch to Academic Free License version 2.1 instead of
906         2.0, to resolve complaints about patent termination clause.
907
908 2004-07-31  John (J5) Palmieri  <johnp@redhat.com>
909
910         * README: added documentation for the --enable-python 
911         configure switch.
912
913 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
914
915         * bus/config-parser.c (bus_config_parser_new): fix an invalid
916         _unref in the SELinux support.
917
918         * doc/busconfig.dtd: update DTD for SELinux support.
919
920         * bus/config-loader-libxml.c: fix error handler and parser
921         initialisation/cleanup. OOM test now works with libxml2 HEAD.
922
923         * configure.in: remove the warning about libxml2.
924
925         * dbus/dbus-bus.c: silence doxygen warning.
926
927 2004-07-31  Colin Walters  <walters@redhat.com>
928
929         * configure.in: Move #error in SELinux check to its own line.
930
931 2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>
932
933         * dbus/dbus-internals.h (_DBUS_SET_OOM):
934         * bus/utils.h (BUS_SET_OOM): use dbus_error_set_const instead of
935         dbus_error_set.
936
937         * bus/dispatch.c (check_send_exit_to_service): fix the test case,
938         broken by the change in the _SET_OOM macros.
939
940 2004-07-31  Colin Walters  <walters@redhat.com>
941
942         * bus/selinux.c <HAVE_SELINUX>: Include utils.h to get
943         BUS_SET_OOM.
944
945 2004-07-31  Colin Walters  <walters@redhat.com>
946
947         * configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER
948         to correctly detect DBUS__ACQUIRE_SVC.  Also add an
949         AC_MSG_CHECKING.
950
951 2004-07-24  Havoc Pennington  <hp@redhat.com>
952
953         SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>
954
955         * bus/selinux.c, bus/selinux.h: new file encapsulating selinux
956         functionality
957
958         * configure.in: add --enable-selinux
959         
960         * bus/policy.c (bus_policy_merge): add FIXME to a comment
961
962         * bus/main.c (main): initialize and shut down selinux
963
964         * bus/connection.c: store SELinux ID on each connection, to avoid 
965         repeated getting of the string context and converting it into 
966         an ID
967
968         * bus/bus.c (bus_context_get_policy): new accessor, though it
969         isn't used
970         (bus_context_check_security_policy): check whether the security
971         context of sender connection can send to the security context of
972         recipient connection
973
974         * bus/config-parser.c: add parsing for <selinux> and <associate>
975         
976         * dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
977         implement dbus_connection_get_unix_fd()
978
979         * dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
980         function, used by the selinux stuff
981         
982 2004-07-29  Olivier Andrieu  <oliv__a@users.sourceforge.net>
983
984         * bus/config-loader-libxml.c: complete the implementation of
985         libxml backend for config file loader. Doesn't work with full OOM
986         test yet. 
987         
988         * configure.in: change error when selecting libxml into a warning.
989         
990         * test/data/invalid-config-files: add two non-well-formed XML
991         files. 
992         
993         * glib/Makefile.am: libdbus_gtool always uses expat, not libxml.
994         
995         * dbus/dbus-transport-unix.c (unix_handle_watch): do not
996         disconnect in case of DBUS_WATCH_HANGUP, several do_reading() may
997         be necessary to read all the buffer. (bug #894)
998
999         * bus/activation.c (bus_activation_activate_service): fix a
1000         potential assertion failure (bug #896). Small optimization in the
1001         case of auto-activation messages.
1002
1003         * dbus/dbus-message.c (verify_test_message, _dbus_message_test):
1004         add test case for byte-through-vararg bug (#901). patch by Kimmo
1005         Hämäläinen. 
1006
1007 2004-07-28  Anders Carlsson  <andersca@gnome.org>
1008
1009         * python/dbus.py:
1010         * python/dbus_bindings.pyx.in:
1011         Add dbus.init_gthreads (), allow emit_signal to pass
1012         arguments to the signal.
1013         
1014 2004-07-24  Havoc Pennington  <hp@redhat.com>
1015
1016         * AUTHORS: add some people, not really comprehensively, let me
1017         know if I missed you
1018
1019 2004-07-24  Havoc Pennington  <hp@redhat.com>
1020
1021         * Makefile.am (DIST_SUBDIRS): add DIST_SUBDIRS, problem solved by
1022         Owen
1023
1024         * test/Makefile.am (DIST_SUBDIRS): here also
1025
1026 2004-07-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1027
1028         * dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
1029         breaking build on Solaris, reported by Farhad Saberi on the ML.
1030
1031         * dbus/dbus-message.c (dbus_message_append_args_valist): fix the
1032         va_arg invocation to account for integer promotion in the case of
1033         DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)
1034
1035         * bus/services.c (bus_service_remove_owner): fix bug #902, use
1036         _dbus_list_get_first_link, not _dbus_list_get_first.
1037
1038         * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.
1039
1040         * dbus/dbus-object-tree.c (free_subtree_recurse): always null
1041         handler functions so that the asserts in _dbus_object_subtree_unref
1042         do not fail.
1043
1044         * dbus/dbus-transport-unix.c (do_reading):
1045         _dbus_transport_queue_messages return value is of type
1046         dbus_bool_t, not DBusDispatchStatus.
1047         
1048 2004-07-19  David Zeuthen  <david@fubar.dk>
1049
1050         * dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
1051
1052         * bus/dispatch.c:
1053         (check_get_connection_unix_user): Debug says GetProperty; but the
1054         method is called GetConnectionUnixUser
1055         (check_get_connection_unix_process_id): New function
1056         (bus_dispatch_test): Actually call check_get_connection_unix_user();
1057         also call check_get_connection_unix_process_id()
1058         
1059         * bus/driver.c:
1060         (bus_driver_handle_get_connection_unix_process_id): New function,
1061         handles GetConnectionUnixProcessID on the org.freedesktop.DBus
1062         interface
1063         
1064         * dbus/dbus-auth.c:
1065         (handle_server_data_external_mech): Set pid from the credentials
1066         obtained from the socket
1067         
1068         * dbus/dbus-connection.c:
1069         (dbus_connection_get_unix_process_id): New function
1070         
1071         * dbus/dbus-connection.h: 
1072         Add prototype for dbus_connection_get_unix_process_id
1073         
1074         * dbus/dbus-transport.c:
1075         (_dbus_transport_get_unix_process_id): New function
1076         
1077         * dbus/dbus-transport.h:
1078         Add prototype for _dbus_transport_get_unix_process_id
1079         
1080 2004-07-19  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1081
1082         * dbus/dbus-message.c: Message counter fix, patch by Christian
1083         Hammond <chipx86@gnupdate.org>
1084
1085 2004-07-18  Seth Nickell  <seth@gnome.org>
1086
1087         * python/dbus.py:
1088         * python/dbus_bindings.pyx.in:
1089         * python/tests/test-client.py:
1090
1091         Add dbus.ByteArray and dbus_bindings.ByteArray
1092         types so that byte streams can be passed back.
1093
1094         Give jdahlin the heaps of credit that are so
1095         rightfully his.
1096         
1097 2004-07-12  Seth Nickell  <seth@gnome.org>
1098
1099         * python/dbus.py:
1100
1101         Add message argument to the default object_method_handler
1102         function.
1103         
1104         * python/dbus_bindings.pyx.in:
1105
1106         Automatically return NIL when passed an empty list
1107         (we can't pass back a list since lists are typed
1108         and we don't have any idea what type the the client
1109         intended the list to be... :-( )
1110         
1111 2004-07-10  Seth Nickell  <seth@gnome.org>
1112
1113         * python/examples/Makefile.am:
1114
1115         Fix distcheck breakage caused by new examples.
1116
1117 2004-07-10  Seth Nickell  <seth@gnome.org>
1118
1119         * python/dbus.py:
1120
1121         Add "message" argument to service-side dbus.Object
1122         methods. This will break existing services written
1123         using the python bindings, but will allow extraction
1124         of all the message information (e.g. who its from).
1125
1126         Add improved "object oriented" signal handling/emission.
1127         
1128         * python/examples/example-service.py:
1129
1130         Nix this example.
1131         
1132         * python/examples/example-signal-emitter.py:
1133         * python/examples/example-signal-recipient.py:
1134
1135         Two new examples that show how to emit and receive
1136         signals using the new APIs.
1137         
1138         * python/examples/example-signals.py:
1139         * python/examples/gconf-proxy-service.py:
1140         * python/examples/gconf-proxy-service2.py:
1141
1142         Add "message" argument to service methods.
1143
1144 2004-06-28  Kay Sievers <kay.sievers@vrfy.org>
1145
1146         * bus/driver.c (bus_driver_handle_get_connection_unix_user)
1147         * dbus/bus.c (dbus_bus_get_unix_user)
1148         * doc/dbus-specification.xml: implement GetConnectionUnixUser
1149         method of org.freedesktop.DBus interface.
1150
1151         * bus/dispatch.c: test case
1152
1153 2004-06-23  John (J5) Palmieri  <johnp@redhat.com>
1154
1155         * python/Makefile.am: switched include directory from glib/ to dbus/
1156         since dbus-glib.h moved
1157  
1158 2004-06-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1159
1160         * configure.in: prevent building the gcj stuff and libxml loader
1161         since they are broken.
1162
1163 2004-06-20  Havoc Pennington  <hp@redhat.com>
1164
1165         * dbus/dbus-glib-error-enum.h: autogenerate the GError enum 
1166         codes from the dbus error names
1167         
1168         * glib/dbus-glib.h: move to subdir dbus/ since it's included 
1169         as dbus/dbus-glib.h and that breakage is now visible due to 
1170         including dbus/dbus-glib.h in dbus-glib-lowlevel.h
1171         
1172         * glib/dbus-glib.h: s/gproxy/g_proxy/
1173
1174         * dbus/dbus-shared.h: new header to hold stuff shared with
1175         binding APIs
1176         
1177         * dbus/dbus-protocol.h (DBUS_ERROR_*): move errors here rather
1178         than dbus-errors.h
1179
1180         * glib/dbus-glib.h (dbus_set_g_error): move to
1181         dbus-glib-lowlevel.h
1182
1183         * glib/dbus-glib.h: remove dbus/dbus.h from here; change a bunch
1184         of stuff to enable this
1185
1186         * dbus/dbus-glib-lowlevel.h: put dbus/dbus.h here
1187
1188         * a bunch of other changes with the same basic "separate glib 
1189         bindings from dbus.h" theme
1190         
1191 2004-06-10  Owen Fraser-Green  <owen@discobabe.net>
1192
1193         * dbus-sharp.pc.in: Removed glib-sharp inclusion in Libs.
1194
1195         * python/examples/Makefile.am: Fixed typo in EXTRA_DIST.
1196
1197 2004-06-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1198
1199         * bus/driver.c, dbus/dbus-bus.c: use BOOLEAN instead of UINT32 for
1200         the reply value of the ServiceExists message.
1201
1202 2004-06-07  John (J5) Palmieri  <johnp@redhat.com>
1203
1204         * python/dbus_bindings.pyx.in: No longer need to parse path
1205         elements and pass them as arrays of strings.  The C API now
1206         accepts plain path strings.
1207         (_build_parsed_path): removed 
1208
1209 2004-06-07  Havoc Pennington  <hp@redhat.com>
1210
1211         * doc/TODO: remove auto-activation item since it's done; sort
1212         items by importance/milestone
1213
1214 2004-06-07  Havoc Pennington  <hp@redhat.com>
1215
1216         * dbus/dbus-message-builder.c (_dbus_message_data_load): append
1217         random signature when using REQUIRED_FIELDS (this hack won't work
1218         in the long term)
1219
1220         * dbus/dbus-message.c: change the signature to be a header field,
1221         instead of message->signature special-case string. Incremental
1222         step forward. Then we can fix up code to send the signature in the
1223         message, then fix up code to validate said signature, then fix up
1224         code to not put the typecodes inline, etc.
1225         (load_one_message): don't make up the signature after the fact
1226         (decode_header_data): require signature field for the known
1227         message types
1228
1229         * dbus/dbus-marshal.c (_dbus_marshal_string_len): new
1230
1231         * dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE
1232
1233 2004-06-07  Owen Fraser-Green  <owen@discobabe.net>
1234
1235         * mono/DBusType/ObjectPath.cs: Renamed PathName argument to Path
1236
1237         * mono/Handler.cs: Updated to follow new path argument for
1238         (un-)registering objects.
1239
1240         * mono/example/Makefile.am:
1241         * mono/Makefile.am:
1242         * configure.in: Bumped required version for mono and use new -pkg
1243         syntax for deps
1244
1245 2004-06-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1246
1247         * dbus/dbus-connection.h, dbus/dbus-connection.c: have object path
1248         registration functions take the path argument as char* instead of
1249         char**.
1250
1251         * dbus/dbus-marshal.h, dbus/dbus-marshal.c (_dbus_decompose_path):
1252         split off the path decompostion part of
1253         _dbus_demarshal_object_path. Some misc. fixes to silence compiler
1254         warnings. 
1255
1256         * glib/dbus-gobject.c, test/test-service.c: update accordingly.
1257         
1258 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
1259  
1260         * dbus/dbus-auth.c: Rewrite auth protocol handling to use a state
1261         machine approach.  A state is implemented as a function that
1262         handles incoming events as specified for that state.
1263         
1264         * doc/dbus-specification.xml: Update auth protocol state machine
1265         specification to match implementation.  Remove some leftover
1266         base64 examples.
1267
1268 2004-06-02  Kristian Høgsberg  <krh@redhat.com>
1269
1270         * glib/dbus-gproxy.c, glib/dbus-gmain.c, dbus/dbus-string.c,
1271         dbus/dbus-object-tree.c, dbus/dbus-message.c: add comments to
1272         quiet doxygen.
1273
1274         * Doxyfile.in: remove deprecated options.
1275
1276         * dbus/dbus-message-handler.c, dbus/dbus-message-handler.h,
1277         glib/test-thread.h, glib/test-thread-client.c,
1278         glib/test-thread-server.c, glib/test-profile.c,
1279         glib/test-dbus-glib.c: remove these unused files.
1280
1281 2004-06-01  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1282
1283         * dbus/dbus-object-tree.c
1284         (_dbus_object_tree_dispatch_and_unlock): fix dispatch for
1285         non-fallback handlers (bug #684).
1286         (_dbus_object_subtree_new): initialize invoke_as_fallback field.
1287         (find_subtree_recurse): report wether the returned subtree is an
1288         exact match or a "fallback" match higher up in the tree.
1289         (object_tree_test_iteration): update test case.
1290
1291 2004-06-01  Seth Nickell  <seth@gnome.org>
1292
1293         * python/dbus_bindings.pyx.in:
1294         * python/tests/test-client.py:
1295
1296         Round off basic type support. Add dicts (yay!), and 
1297         remaining array types.
1298
1299         Make MessageIter more general so it works for dicts too.
1300
1301         Mark all loop variables as C integers.
1302         
1303 2004-05-31  Havoc Pennington  <hp@redhat.com>
1304
1305         * glib/dbus-gidl.c (method_info_add_arg): keep args sorted with
1306         "in" before "out"
1307
1308         * glib/dbus-gobject.c (dbus_type_to_string): move to dbus-gutils.c
1309
1310         * glib/dbus-glib-tool.c (main): set up to have a --self-test
1311         option that runs the tests, and start filling in some code
1312         including for starters just dumping the interfaces to stdout
1313
1314         * glib/Makefile.am (INCLUDES): define DBUS_LOCALEDIR
1315
1316         * test/data/valid-introspection-files/lots-of-types.xml: test of
1317         an example introspection file
1318
1319         * glib/dbus-gparser.c (parser_check_doctype): doctype should be
1320         "node" (I think...)
1321
1322 2004-05-31  Seth Nickell  <seth@gnome.org>
1323
1324         * python/dbus_bindings.pyx.in:
1325         * python/tests/test-client.py:
1326
1327         Test Suite: 1
1328         Python Bindings: 0
1329
1330         Fix string array memory trashing bug... oops...
1331
1332 2004-05-30  Seth Nickell  <seth@gnome.org>
1333
1334         * python/dbus.py:
1335
1336         Add a nicer-but-less-flexible alternate API for handling 
1337         calls to virtual objects in dbus.ObjectTree.
1338
1339         Screw up the argument order to the dbus.Object constructor
1340         for consistency with dbus.ObjectTree (and to make dbus_methods
1341         optional for future extension)
1342         
1343         * python/examples/Makefile.am:
1344         * python/examples/gconf-proxy-service.py:
1345         * python/examples/gconf-proxy-service2.py:
1346
1347         Alternate implementation of gconf-proxy-service using the
1348         nicer dbus.ObjectTree API.
1349         
1350         * python/examples/example-service.py:
1351         * python/tests/test-server.py
1352
1353         Reverse the argument order to deal with dbus.Object constructor
1354         changes.
1355         
1356 2004-05-30  Seth Nickell  <seth@gnome.org>
1357
1358         * python/examples/example-client.py:
1359         * python/examples/example-service.py:
1360
1361         Take it back. Lists seem to work but they're broken
1362         in the test suite. Make the base examples use
1363         lists (works fine).
1364
1365 2004-05-30  Seth Nickell  <seth@gnome.org>
1366
1367         * python/dbus_bindings.pyx.in:
1368         * python/tests/test-client.py:
1369
1370         Add some more tests and fix errors that crop up.
1371         Unfortunately, currently it seems like marshalling
1372         and unmarshalling of lists is completely broken :-(
1373
1374 2004-05-30  Seth Nickell  <seth@gnome.org>
1375
1376         * python/dbus_bindings.pyx.in:
1377
1378         Add support for ObjectPath type.
1379
1380         * python/dbus.py:
1381
1382         Refactor message handling code to a common function.
1383         
1384         * python/tests/test-client.py:
1385         * python/tests/test-server.py:
1386
1387         Add tests that check to make sure values of all types
1388         can be echoed from a service w/o mangling.
1389         
1390 2004-05-29  Seth Nickell  <seth@gnome.org>
1391
1392         * python/dbus.py:
1393
1394         Add ObjectTree class which allows implementation
1395         of trees of "virtual" objects. Basically the python
1396         wrapper for "register_fallback".
1397         
1398         * python/examples/Makefile.am
1399         * python/examples/gconf-proxy-client.py:
1400         * python/examples/gconf-proxy-service.py:
1401
1402         Implement a simple GConf proxy service that supports
1403         get/set on string and int GConf keys using the ObjectTree.
1404         
1405 2004-05-29  Seth Nickell  <seth@gnome.org>
1406
1407         * python/dbus.py:
1408         * python/examples/example-client.py:
1409         * python/examples/example-service.py:
1410         * python/examples/list-system-services.py:
1411
1412         Add SessionBus, SystemBus and ActivationBus classes
1413         so you don't need to know the special little BUS_TYPE
1414         flag.
1415         
1416 2004-05-29  Havoc Pennington  <hp@redhat.com>
1417
1418         * bus/config-parser.c (process_test_valid_subdir): temporarily
1419         stop testing config parser OOM handling, since expat has issues
1420         http://freedesktop.org/pipermail/dbus/2004-May/001153.html
1421
1422         * bus/dbus-daemon-1.1.in: change requested_reply to
1423         send_requested_reply/receive_requested_reply so we can send the
1424         replies, not just receive them.
1425
1426         * bus/config-parser.c: parse the new
1427         send_requested_reply/receive_requested_reply
1428
1429         * bus/policy.c (bus_client_policy_check_can_send): add
1430         requested_reply argument and use it
1431
1432         * bus/bus.c (bus_context_check_security_policy): pass through
1433         requested_reply status to message send check
1434
1435         * bus/system.conf.in: adapt to requested_reply change
1436         
1437 2004-05-28  Havoc Pennington  <hp@redhat.com>
1438
1439         * test/glib/test-service-glib.c (main): remove unused variable
1440
1441         * glib/dbus-gidl.c (base_info_ref): fix a silly compiler warning
1442
1443         * dbus/dbus-auth.h (enum): remove AUTHENTICATED_WITH_UNUSED_BYTES
1444         from the enum, no longer in use.
1445
1446         * dbus/dbus-sysdeps.h: include config.h so DBUS_VA_COPY actually
1447         works right.
1448
1449         * dbus/dbus-message.c: add various _dbus_return_val_if_fail for
1450         whether error_name passed in is a valid error name.
1451
1452 2004-05-28  John (J5) Palmieri  <johnp@redhat.com>
1453
1454         * dbus/dbus-message.c (dbus_message_get_args): Added support for
1455         OBJECT_PATH and OBJECT_PATH_ARRAY
1456
1457 2004-05-28  Seth Nickell  <seth@gnome.org>
1458
1459         * python/examples/Makefile.am:
1460
1461         Forget to add Makefile.am. Do not pass go.
1462
1463 2004-05-28  Michael Meeks  <michael@ximian.com>
1464
1465         * glib/dbus-gvalue.c (dbus_gvalue_marshal, dbus_gvalue_demarshal): 
1466         fix no int64 case.
1467
1468         * dbus/dbus-string.c (_dbus_string_parse_basic_type): impl.
1469
1470         * dbus/dbus-message.c (_dbus_message_iter_get_basic_type),
1471         (_dbus_message_iter_get_basic_type_array): impl.
1472         drastically simplify ~all relevant _get methods to use these.
1473         (_dbus_message_iter_append_basic_array),
1474         (dbus_message_iter_append_basic): impl
1475         drastically simplify ~all relevant _append methods to use these.
1476
1477         * dbus/dbus-message-builder.c (parse_basic_type) 
1478         (parse_basic_array, lookup_basic_type): impl.
1479         (_dbus_message_data_load): prune scads of duplicate /
1480         cut & paste coding.
1481
1482         * dbus/dbus-marshal.c (_dbus_demarshal_basic_type_array) 
1483         (_dbus_demarshal_basic_type): implement,
1484         (demarshal_and_validate_len/arg): beef up debug.
1485         (_dbus_marshal_basic_type, _dbus_marshal_basic_type_array): impl.
1486
1487 2004-05-27  Seth Nickell  <seth@gnome.org>
1488
1489         * configure.in:
1490         * python/Makefile.am:
1491
1492         Include the example python apps in the tarball.
1493         
1494         * python/examples/list-system-services.py
1495
1496         Add a python new example that fetches the list of services
1497         from the system bus.
1498         
1499 2004-05-27  Seth Nickell  <seth@gnome.org>
1500
1501         * python/dbus.py:
1502         * python/dbus_bindings.pyx.in:
1503
1504         Fix failure to notify that a signal was not handled,
1505         resulted in hung functions.
1506         
1507 2004-05-25  Colin Walters  <walters@redhat.com>
1508
1509         * tools/dbus-monitor.c (main): Monitor all types of messages.
1510
1511 2004-05-23  Owen Fraser-Green  <owen@discobabe.net>
1512
1513         * mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
1514         which unregisters the object path and disposes the handler.
1515
1516 2004-05-23  Kristian Høgsberg  <krh@redhat.com>
1517  
1518         Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
1519          
1520         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): Swap
1521         operands to && so we call dbus_message_iter_next () for the last
1522         argument also.
1523
1524 2004-05-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1525
1526         * dbus/dbus-object-tree.c
1527         (_dbus_object_tree_list_registered_unlock, lookup_subtree): return
1528         children even if the requested path isn't registered.
1529         (object_tree_test_iteration): test object_tree_list_registered.
1530
1531         * configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
1532         it to 0.
1533         
1534 2004-05-20  Kristian Høgsberg  <krh@redhat.com>
1535
1536         * doc/TODO: Remove resolved items.
1537
1538         * bus/expirelist.h (struct BusExpireList): remove unused n_items
1539         field.
1540         
1541         * bus/connection.c (bus_connections_expect_reply): Enforce the
1542         per-connection limit on pending replies.
1543         
1544         Patch from Jon Trowbridge <trow@ximian.com>:
1545  
1546         * bus/main.c (setup_reload_pipe): Added.  Creates a pipe and sets
1547         up a watch that triggers a config reload when one end of the pipe
1548         becomes readable.
1549         (signal_handler): Instead of doing the config reload in our SIGHUP
1550         handler, just write to the reload pipe and let the associated
1551         watch handle the reload when control returns to the main loop.
1552  
1553         * bus/driver.c (bus_driver_handle_reload_config): Added.
1554         Implements a ReloadConfig method for requesting a configuration
1555         file reload via the bus driver.
1556  
1557 2004-05-19  Owen Fraser-Green  <owen@discobabe.net>
1558
1559         * HACKING: Updated release instructions concerning the wiki page.
1560
1561 2004-05-18  Kristian Høgsberg  <krh@redhat.com>
1562
1563         * dbus/dbus-auth.c (client_try_next_mechanism): Remove logic to
1564         filter against auth->allowed_mechs; we only add allowed mechs in
1565         record_mechanisms().
1566  
1567         * dbus/dbus-auth-script.c (_dbus_auth_script_run): Add an
1568         ALLOWED_MECHS to auth-script format so we can set the list of
1569         allowed mechanisms.
1570  
1571         * data/auth/client-out-of-mechanisms.auth-script: New test to
1572         check client disconnects when it is out of mechanisms to try.
1573  
1574         * dbus/dbus-auth.c (process_command): Remove check for lines
1575         longer that 1 MB; we only buffer up maximum 16 kB.
1576  
1577         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
1578         dbus/dbus-auth-script.c, dbus/dbus-auth.c, dbus/dbus-auth.h:
1579         Remove auth state AUTHENTICATED_WITH_UNUSED_BYTES, instead always
1580         assume there might be unused bytes.
1581  
1582         * dbus/dbus-auth.c (_dbus_auth_do_work): Remove check for
1583         client-out-of-mechs, it is handled in process_reject(). Move check
1584         for max failures to send_rejected(), as it's a server-only thing.
1585
1586         * dbus/dbus-auth.c: Factor out protocol reply code into functions
1587         send_auth(), send_data(), send_rejected(), send_error(),
1588         send_ok(), send_begin() and send_cancel().
1589
1590 2004-05-17  Kristian Høgsberg  <krh@redhat.com>
1591
1592         Remove base64 encoding, replace with hex encoding. Original patch
1593         from trow@ximian.com, added error handling.
1594
1595         * dbus/dbus-string.c (_dbus_string_base64_encode)
1596         (_dbus_string_base64_decode): Remove.
1597         (_dbus_string_hex_decode): Add end_return argument so we can
1598         distinguish between OOM and invalid hex encoding.
1599         (_dbus_string_test): Remove base64 tests and add test case for
1600         invalid hex.
1601
1602         * dbus/dbus-keyring.c, dbus/dbus-auth-script.c, dbus/dbus-auth.c:
1603         Replace base64 with hex.
1604
1605         * test/data/auth/invalid-hex-encoding.auth-script: New test case
1606         for invalid hex encoded data in auth protocol.
1607
1608 2004-05-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1609
1610         * dbus/dbus-connection.c (check_for_reply_unlocked): plug a memory
1611         leak.
1612
1613 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
1614
1615         * mono/dbus-sharp.dll.config.in: Added for GAC
1616         * mono/dbus-sharp.snk: Added for GAC
1617         * mono/Assembly.cs.in: Added for GAC
1618         * mono/Makefile.am: Changes for GAC installation        
1619         * configure.in: Added refs for dbus-sharp.dll.config.in and
1620         Assembly.cs.in. More fixes for mono testing
1621         * mono/example/Makefile.am: Changed var to CSC
1622         * Makefile.am: Changed flag name to DBUS_USE_CSC
1623
1624 2004-05-15  Owen Fraser-Green  <owen@discobabe.net>
1625
1626         * mono/Makefile.am: Added SUBDIRS for docs. Changed SUBDIRS order
1627         * mono/doc/*: Added documentation framework
1628         * configure.in: Added monodoc check
1629         * README: Added description of mono configure flags
1630
1631 2004-05-11  John (J5) Palmieri  <johnp@redhat.com>:
1632
1633         * doc/dbus-specification.xml: Added a "Required" column to the 
1634         header fields table and changed the "zero or more" verbage in
1635         the above paragraph to read "The header must contain the required 
1636         named header fields and zero or more of the optional named header 
1637         fields".
1638         * test/data/invalid-messages/*.message: Added the required PATH 
1639         named header field to the tests so that they don't fail on 
1640         'Missing path field'
1641
1642 2004-05-07  John (J5) Palmieri  <johnp@redhat.com>
1643
1644         * python/dbus-bindings.pyx.in: Stopped the bindings from trashing
1645         the stack by implicitly defining variable and parameter types and
1646         removing the hack of defining C pointers as python objects and later
1647         casting them.
1648
1649 2004-05-02  Owen Fraser-Green  <owen@discobabe.net>
1650
1651         * mono/Makefile.am: Removed test-dbus-sharp.exe from all target
1652
1653 2004-05-01  Owen Fraser-Green  <owen@discobabe.net>
1654
1655         * mono/DBusType/Dict.cs: Handle empty dicts
1656         * mono/DBusType/Array.cs: Handle empty arrays
1657         * mono/Arguments.cs: Handle empty arguments
1658
1659 2004-04-30  Owen Fraser-Green  <owen@discobabe.net>
1660
1661         * dbus-sharp.pc.in: Modified to include include Libs and Requires
1662         field
1663
1664 2004-04-25  Kristian Høgsberg  <krh@redhat.com>
1665
1666         * test/data/valid-messages/standard-*.message: Update message
1667         test scripts to new header field names.
1668
1669 2004-04-22  John (J5) Palmieri  <johnp@redhat.com>
1670
1671         * test/break-loader.c (randomly_do_n_things): tracked down buffer
1672         overflow to times_we_did_each_thing array which would chop off the
1673         first character of the failure_dir string. Increased the size of
1674         the array to 7 to reflect the number of random mutation functions
1675         we have.
1676
1677 2004-04-21  Kristian Høgsberg  <krh@redhat.com>
1678
1679         * dbus/dbus-server-unix.c (unix_finalize): Don't unref
1680         unix_server->watch here, it is unreffed in disconnect.
1681         (_dbus_server_new_for_tcp_socket): convert NULL host to
1682         "localhost" here so we don't append NULL to address.
1683         
1684         * dbus/dbus-server.c (_dbus_server_test): Add test case for
1685         various addresses, including tcp with no explicit host.
1686
1687 2004-04-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1688
1689         * dbus/dbus-message.c (decode_header_data, decode_string_field):
1690         fix incorrect setting of .name_offset in the HeaderField (it was
1691         off by two bytes, positioned right after the name and typecode)
1692
1693         * bus/bus.c (bus_context_new, bus_context_unref): test before
1694         calling dbus_server_free_data_slot and _dbus_user_database_unref
1695         in case of an error.
1696
1697         * tools/Makefile.am: add $(DBUS_GLIB_TOOL_LIBS), xml libs needed
1698         by libdbus-gtool.
1699
1700 2004-04-19  Kristian Høgsberg  <krh@redhat.com>
1701
1702         * dbus/dbus-transport-unix.c (unix_do_iteration): Rewrite to use
1703         _dbus_poll() instead of select().
1704
1705 2004-04-15  Jon Trowbridge  <trow@ximian.com>
1706
1707         * bus/main.c (signal_handler): Reload the configuration files
1708         on SIGHUP.
1709         (main): Set up our SIGHUP handler.
1710
1711         * bus/bus.c (struct BusContext): Store the config file, user and
1712         fork flag in the BusContext.
1713         (process_config_first_time_only): Added.  Contains the code
1714         (previously in bus_context_new) for setting up the BusContext from
1715         the BusConfigParser that should only be run the first time the
1716         config files are read.
1717         (process_config_every_time): Added.  Contains the code (previously
1718         in bus_context_new) for setting up the BusContext from the
1719         BusConfigParser that should be run every time the config files are
1720         read.
1721         (load_config): Added.  Builds a BusConfigParser from the config
1722         files and passes the resulting structure off to
1723         process_config_first_time_only (assuming this is the first time)
1724         and process_config_every_time.
1725         (bus_context_new): All of the config-related code has been moved
1726         to process_config_first_time_only and process_config_every_time.
1727         Now this function just does the non-config-related initializations
1728         and calls load_config.
1729         (bus_context_reload_config): Added.
1730
1731 2004-04-15  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1732
1733         * bus/driver.c (bus_driver_handle_get_service_owner):
1734         implement a GetServiceOwner method.
1735         * doc/dbus-specification.xml: document it.
1736         * dbus/dbus-errors.h: add a 'ServiceHasNoOwner' error.
1737         
1738         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service_owner):
1739         implement, using the bus GetServiceOwner method.
1740
1741         * test/glib/test-dbus-glib.c:
1742         use dbus_gproxy_new_for_service_owner so that we can receive the
1743         signal. 
1744
1745 2004-04-15  John (J5) Palmieri  <johnp@redhat.com>
1746
1747         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
1748         dbus/dbus-message.c, dbus/dbus-protocol.h
1749         (DBUS_HEADER_FIELD_SERVICE): renamed DBUS_HEADER_FIELD_DESTINATION
1750
1751         * dbus/dbus-internals.c, dbus/dbus-message-builder.c,
1752         dbus/dbus-message.c, dbus/dbus-protocol.h
1753         (DBUS_HEADER_FIELD_SENDER_SERVICE): renamed DBUS_HEADER_FIELD_SENDER
1754
1755         * dbus/dbus-internals.c (_dbus_header_field_to_string):
1756         DBUS_HEADER_FIELD_DESTINATION resolves to "destination"
1757         DBUS_HEADER_FIELD_SENDER resolves to "sender"
1758
1759         * doc/dbus-specification.xml (Header Fields Table):
1760         s/SERVICE/DESTINATION
1761         s/SENDER_SERVICE/SENDER
1762
1763
1764 2004-04-14  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1765
1766         * test/glib/test-dbus-glib.c (timed_exit): fail the test after
1767         a few seconds.
1768
1769 2004-04-13  Michael Meeks  <michael@ximian.com>
1770
1771         * glib/dbus-gobject.c (handle_introspect): split out
1772         (introspect_properties): this.
1773         (handle_introspect): implement this.
1774
1775         * test/glib/Makefile.am: use the absolute path so the bus
1776         daemon's chdir ("/") doesn't kill us dead.
1777
1778         * configure.in: subst ABSOLUTE_TOP_BUILDDIR
1779
1780 2004-04-12  Jon Trowbridge  <trow@ximian.com>
1781
1782         * bus/config-parser.c (struct BusConfigParser): Added
1783         included_files field.
1784         (seen_include): Added.  Checks whether or not a file has already
1785         been included by any parent BusConfigParser.
1786         (bus_config_parser_new): Copy the parent's included_files.
1787         (include_file): Track which files have been included, and fail on
1788         circular inclusions.
1789         (process_test_valid_subdir): Changed printf to report if we are
1790         testing valid or invalid conf files.
1791         (all_are_equiv): Changed printf to be a bit clearer about
1792         what we are actually doing.
1793         (bus_config_parser_test): Test invalid configuration files.
1794
1795 2004-04-09  Jon Trowbridge  <trow@ximian.com>
1796
1797         * bus/config-parser.c (bus_config_parser_new): Added a 'parent'
1798         argument.  If non-null, the newly-constructed BusConfigParser will
1799         be initialized with the parent's BusLimits instead of the default
1800         values.
1801         (include_file): When including a config file, pass in
1802         the current parser as the parent and then copy the BusLimits
1803         from the included BusConfigParser pack to the current parser.
1804         (process_test_valid_subdir): Renamed from process_test_subdir.
1805         (process_test_equiv_subdir): Added.  Walks through a directory,
1806         descending into each subdirectory and loading the config files
1807         it finds there.  If any subdirectory contains two config files
1808         that don't produce identical BusConfigParser structs, fail.
1809         For now, the BusConfigParser's BusPolicies are not compared.
1810         (bus_config_parser_test): Call both process_test_valid_subdir and
1811         process_test_equiv_subdir.
1812
1813         * bus/config-loader-libxml.c (bus_config_load): Take a parent
1814         argument and pass it along to the call to bus_config_parser_new.
1815         Also made a few small changes to allow this code to compile.
1816
1817         * bus/config-loader-expat.c (bus_config_load): Take a parent
1818         argument and pass it along to the call to bus_config_parser_new.
1819
1820         * bus/bus.c (bus_context_new): Load the config file
1821         with a NULL parent argument.
1822
1823 2004-03-29  Michael Meeks  <michael@ximian.com>
1824
1825         * glib/dbus-gobject.c (introspect_properties): split
1826         out, fix mangled 'while' flow control.
1827         (introspect_signals): implement.
1828         (handle_introspect): update.
1829
1830 2004-03-29  Michael Meeks  <michael@ximian.com>
1831
1832         * glib/dbus-gobject.c (set_object_property): split out / 
1833         re-work, use the property type, and not the message type(!)
1834         (get_object_property): ditto.
1835
1836         * glib/dbus-gvalue.c (dbus_gvalue_demarshal),
1837         (dbus_gvalue_marshal): make this code re-usable, needed
1838         for signals too, also on both proxy and server side.
1839         Re-write for more efficiency / readability.
1840
1841 2004-03-29  Michael Meeks  <michael@ximian.com>
1842
1843         * dbus/dbus-message.c
1844         (dbus_message_new_error_printf): impl.
1845
1846         * dbus/dbus-connection.c
1847         (dbus_connection_unregister_object_path): fix warning.
1848
1849         * configure.in: fix no-mono-installed situation.
1850
1851 2004-03-27  Havoc Pennington  <hp@redhat.com>
1852
1853         Patch from Timo Teräs:
1854         
1855         * tools/dbus-send.c (main): if --print-reply, assume type is
1856         method call; support boolean type args
1857         
1858         * dbus/dbus-connection.c (dbus_connection_send_with_reply): fix a
1859         bunch of memleak and logic bugs
1860         
1861 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
1862
1863         * mono/Arguments.cs:
1864         * mono/Introspector.cs:
1865         * mono/Handler.cs:
1866         * mono/InterfaceProxy.cs:
1867         * mono/Message.cs
1868         * mono/ProxyBuilder.cs:
1869         * mono/Service.cs:
1870         Added InterfaceProxy class to avoid building proxies for every
1871         object.
1872
1873         * dbus-message.h:
1874         * dbus-message.c (dbus_message_append_args_valist)
1875         (dbus_message_iter_get_object_path)
1876         (dbus_message_iter_get_object_path_array)
1877         (dbus_message_iter_append_object_path)
1878         (dbus_message_iter_append_object_path_array):
1879         Added object_path iter functions to handle OBJECT_PATH arguments
1880         
1881 2004-03-23  Owen Fraser-Green  <owen@discobabe.net>
1882
1883         First checkin of mono bindings.
1884         * configure.in:
1885         * Makefile.am:
1886         Build stuff for the bindings
1887         * dbus-sharp.pc.in: Added for pkgconfig
1888         
1889 2004-03-21  Havoc Pennington  <hp@redhat.com>
1890
1891         * test/test-service.c (main): remove debug spew
1892
1893 2004-03-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1894
1895         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): accept empty
1896         arrays
1897
1898         * dbus/dbus-message.h, bus/dbus-message.c (dbus_message_iter_init)
1899         (dbus_message_iter_init_array_iterator)
1900         (dbus_message_iter_init_dict_iterator): return a dbus_bool_t to
1901         indicate whether the iterator is empty
1902
1903         * dbus/dbus-pending-call.c, dbus/dbus-server.c: silence compiler
1904         warnings
1905
1906 2004-03-19  Havoc Pennington  <hp@redhat.com>
1907
1908         * NEWS: 0.21 updates
1909
1910         * configure.in: 0.21
1911
1912         * doc/Makefile.am: add all XMLTO usage to DBUS_XML_DOCS_ENABLED
1913         
1914         * python/Makefile.am: change to avoid dist of dbus_bindings.c so
1915         you don't need pyrex to make dist
1916
1917         * qt/Makefile.am (libdbus_qt_1_la_SOURCES): add integrator.h to
1918         sources; run moc
1919         
1920 2004-03-18  Richard Hult  <richard@imendio.com>
1921
1922         * dbus/dbus-message.c (dbus_message_get_auto_activation) 
1923         (dbus_message_set_auto_activation): Add doxygen docs.
1924
1925 2004-03-16  Richard Hult  <richard@imendio.com>
1926
1927         * bus/activation.c: (bus_activation_service_created),
1928         (bus_activation_send_pending_auto_activation_messages),
1929         (bus_activation_activate_service):
1930         * bus/activation.h:
1931         * bus/dispatch.c: (bus_dispatch),
1932         (check_nonexistent_service_auto_activation),
1933         (check_service_auto_activated),
1934         (check_segfault_service_auto_activation),
1935         (check_existent_service_auto_activation), (bus_dispatch_test):
1936         * bus/driver.c: (bus_driver_handle_activate_service):
1937         * bus/services.c: (bus_registry_acquire_service):
1938         * dbus/dbus-message.c: (dbus_message_set_auto_activation),
1939         (dbus_message_get_auto_activation):
1940         * dbus/dbus-message.h:
1941         * dbus/dbus-protocol.h: Implement auto-activation.
1942         
1943         * doc/dbus-specification.xml: Add auto-activation to the spec.
1944
1945 2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net>
1946
1947         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos):
1948         fix a bug with CUSTOM types.
1949
1950         * dbus/dbus-message.c (message_iter_test, _dbus_message_test): add
1951         a unit test for this bug (used to fail).
1952
1953 2004-03-12  Mikael Hallendal  <micke@imendio.com>
1954
1955         * bus/activation.c:
1956         (babysitter_watch_callback): notify all pending activations waiting for
1957           the same exec that the activation failed.
1958         (bus_activation_activate_service): shortcut the activation if we 
1959           already waiting for the same executable to start up.
1960
1961 2004-03-12  Mikael Hallendal  <micke@imendio.com>
1962
1963         * bus/activation.c: 
1964         - Added service file reloading. 
1965           Each service files directory is kept in an hash table in 
1966           BusActivation and each BusActivationEntry knows what .service-file it
1967           was read from. So when you try to activate a service the bus will 
1968           check if it's been updated, removed or if new .service-files has 
1969           been installed.
1970         - Test code at the bottom for the service file reloading.
1971         * bus/test-main.c: (main):
1972         * bus/test.h:
1973         - added service reloading test.
1974         * dbus/dbus-sysdeps.c: 
1975         * dbus/dbus-sysdeps.h: (_dbus_delete_directory): Added.
1976
1977 2004-03-08  Michael Meeks  <michael@ximian.com>
1978
1979         * dbus/dbus-connection.c (_dbus_connection_block_for_reply): 
1980         bail immediately if disconnected, to avoid busy loop.
1981
1982         * dbus/dbus-message.c (dbus_message_iter_get_args_valist):
1983         cleanup cut/paste/inefficiency.
1984
1985 2004-03-01  David Zeuthen  <david@fubar.dk>
1986
1987         * dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
1988         bug where args were used twice. This bug resulted in a segfault
1989         on a Debian/PPC system when starting the messagebus daemon. Include
1990         dbus-sysdeps.h for DBUS_VA_COPY
1991
1992         * dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib
1993
1994         * configure.in: Check for va_copy; define DBUS_VA_COPY to the
1995         appropriate va_copy implementation. From GLib
1996         
1997 2004-02-24  Joe Shaw  <joe@ximian.com>
1998
1999         * bus/services.c (bus_registry_acquire_service): We need to pass
2000         in the service name to dbus_set_error() to prevent a crash.
2001
2002 2003-12-26  Anders Carlsson  <andersca@gnome.org>
2003
2004         * AUTHORS: Reveal my True identity.
2005
2006 2003-12-17  Mikael Hallendal  <micke@imendio.com>
2007
2008         * dbus/dbus-message.c: (dbus_message_append_args_valist): 
2009         - Added case for DBUS_TYPE_BYTE, patch from Johan Hedberg.
2010
2011 2003-12-13  Mikael Hallendal  <micke@imendio.com>
2012
2013         * doc/TODO: Added not about better error check of configuration files.
2014
2015 2003-12-02  Richard Hult  <richard@imendio.com>
2016
2017         * Update AFL version to 2.0 throughout the source files to reflect
2018         the update that was done a while ago.
2019
2020 2003-12-02  Richard Hult  <richard@imendio.com>
2021
2022         * dbus/dbus-message.c (dbus_message_iter_append_dict): Set
2023         wrote_dict_key to FALSE on the iter that the dict is appended to,
2024         just like when appending other types. Fixes a bug where a dict
2025         couldn't be put inside a dict.
2026         (dbus_message_iter_append_dict_key): Fix typo in warning message.
2027         (message_iter_test, _dbus_message_test): Add test case for dict
2028         inside dict.
2029
2030 2003-12-01  David Zeuthen  <david@fubar.dk>
2031
2032         * python/dbus.py: Add the actual message when calling the reciever
2033         of a signal such that parameters can be inspected. Add the method
2034         remove_signal_receiver
2035         
2036 2003-11-26  Mikael Hallendal  <micke@imendio.com>
2037
2038         * bus/*.[ch]:
2039         * dbus/*.[ch]:
2040         * glib/*.[ch]: Made ref functions return the pointer
2041
2042 2003-11-25  Zack Rusin  <zack@kde.org>
2043
2044         * qt/integrator.h, qt/integrator.cpp: Adding handling of DBusServer,
2045
2046         * qt/server.h, qt/server.cpp, qt/Makefile.am: Adding DBusServer 
2047         wrappers,
2048
2049         * qt/connection.h, qt/connection.cpp: Adjusting to changes in 
2050         the Integrator and to better fit with the server,
2051
2052 2003-11-24  Zack Rusin  <zack@kde.org>
2053
2054         * qt/connection.h, qt/connection.cpp: removing initDbus method since
2055         the integrator handles it now
2056
2057         * qt/integrator.h, qt/integrator.cpp: reworking handling of timeouts,
2058         since QTimer wasn't really meant to be used the way DBusTimeout is
2059
2060 2003-11-24  Zack Rusin  <zack@kde.org>
2061
2062         * qt/integrator.h, qt/integrator.cpp, Makefile.am: Adding 
2063         Integrator class which integrates D-BUS with the Qt event loop,
2064
2065         * qt/connection.h, qt/connection.cpp: Move all the code which
2066         was dealing with D-BUS integration to the Integrator class,
2067         and start using Integrator,
2068
2069 2003-11-23  Zack Rusin  <zack@kde.org>
2070
2071         * qt/connection.h, qt/connection.cpp: Adding the DBusConnection 
2072         wrapper
2073
2074         * qt/message.h, qt/message.cpp: updating to the current D-BUS api,
2075         switching namespaces to DBusQt, reworking the class,
2076
2077         * Makefile.cvs: switching dependencies so that it matches KDE 
2078         schematics,
2079         
2080         * qt/Makefile.am: adding connection.{h,cpp} and message.{h,cpp} to 
2081         the library
2082
2083 2003-11-19  Havoc Pennington  <hp@redhat.com>
2084
2085         * NEWS: update
2086
2087         * configure.in: bump version to 0.20
2088
2089         * configure.in (have_qt): add yet another place to look for qt
2090         (someone hand trolltech a .pc file...)
2091
2092 2003-11-01  Havoc Pennington  <hp@redhat.com>
2093
2094         * doc/dbus-specification.xml: add state machine docs on the auth
2095         protocol; just a first draft, I'm sure it's wrong.      
2096
2097 2003-10-28  David Zeuthen  <david@fubar.dk>
2098
2099         * python/dbus_bindings.pyx.in: add get_dict to handle dictionaries
2100         return types. Fixup TYPE_* to reflect changes in dbus/dbus-protocol.h
2101         
2102 2003-10-28  Havoc Pennington  <hp@redhat.com>
2103
2104         * dbus/dbus-message.c (get_next_field): delete unused function
2105
2106 2003-10-28  Havoc Pennington  <hp@redhat.com>
2107
2108         * bus/expirelist.c (do_expiration_with_current_time): detect
2109         failure of the expire_func due to OOM
2110
2111         * bus/connection.c (bus_pending_reply_expired): return FALSE on OOM
2112
2113         * bus/dispatch.c (check_send_exit_to_service): fix to handle the
2114         NoReply error that's now created by the bus when the service exits
2115
2116 2003-10-28  Havoc Pennington  <hp@redhat.com>
2117
2118         * dbus/dbus-message.c (_dbus_message_test): enable and fix the
2119         tests for set_path, set_interface, set_member, etc.
2120
2121         * dbus/dbus-string.c (_dbus_string_insert_bytes): allow 0 bytes
2122
2123         * dbus/dbus-message.c (set_string_field): always just delete and
2124         re-append the field; accept NULL for deletion
2125         (re_align_fields_recurse): reimplement
2126         
2127 2003-10-26  Havoc Pennington  <hp@redhat.com>
2128
2129         * dbus/dbus-connection.c: fix docs to properly describe the
2130         disconnected message
2131         (_dbus_connection_notify_disconnected): remove this function; 
2132         we can't synchronously add the disconnected message, we have to 
2133         do it after we've queued any remaining real messages
2134         (_dbus_connection_get_dispatch_status_unlocked): queue the
2135         disconnect message only if the transport has finished queueing all
2136         its real messages and is disconnected.
2137         (dbus_connection_disconnect): update the dispatch status here
2138
2139 2003-10-22  Havoc Pennington  <hp@redhat.com>
2140
2141         * bus/bus.c (bus_context_check_security_policy): fix up assertion
2142
2143         * bus/connection.c (bus_transaction_send_from_driver): set the
2144         destination to the connection's base service
2145
2146 2003-10-20  Havoc Pennington  <hp@redhat.com>
2147
2148         hmm, make check is currently not passing.
2149         
2150         * doc/dbus-specification.xml: add requirement that custom type
2151         names follow the same rules as interface names.
2152
2153         * dbus/dbus-protocol.h: change some of the byte codes, to avoid
2154         duplication and allow 'c' to be 'custom'; dict is now 'm' for
2155         'map'
2156
2157         * doc/dbus-specification.xml: update type codes to match
2158         dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
2159         CUSTOM. Add type OBJECT_PATH to the spec.
2160
2161 2003-10-17  Havoc Pennington  <hp@redhat.com>
2162
2163         * bus/driver.c (create_unique_client_name): use "." as separator
2164         in base service names instead of '-'
2165
2166         * dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
2167         byte at the end of the string
2168
2169         * dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
2170         optimization macros since string validation seems to be a slow
2171         point.
2172         
2173         * doc/dbus-specification.xml: restrict valid
2174         service/interface/member/error names. Add test suite code for the
2175         name validation.
2176
2177         * dbus/dbus-string.c: limit service/interface/member/error names 
2178         to [0-9][A-Z][a-z]_
2179
2180         * dbus/dbus-connection.c (dbus_connection_dispatch): add missing
2181         format arg to verbose spew
2182
2183         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
2184         memory, return instead of g_error
2185
2186         * test/test-service.c (path_message_func): support emitting a
2187         signal on request
2188
2189         * dbus/dbus-bus.c (init_connections_unlocked): only fill in
2190         activation bus type if DBUS_BUS_ACTIVATION was set; default to
2191         assuming the activation bus was the session bus so that services
2192         started manually will still register.
2193         (init_connections_unlocked): fix so that in OOM situation we get
2194         the same semantics when retrying the function
2195         
2196         * test/test-service.c (main): change to use path registration, to
2197         test those codepaths; register with DBUS_BUS_ACTIVATION rather
2198         than DBUS_BUS_SESSION
2199
2200 2003-10-16  Havoc Pennington  <hp@redhat.com>
2201
2202         * glib/dbus-gtest-main.c: bracket with #ifdef DBUS_BUILD_TESTS
2203
2204         * Makefile.am (GCOV_DIRS): remove "test", we don't care about test
2205         coverage of the tests
2206         (coverage-report.txt): don't move the .da and .bbg files around
2207
2208 2003-10-16  Havoc Pennington  <hp@redhat.com>
2209
2210         * bus/bus.c (struct BusContext): remove struct field I didn't mean
2211         to put there
2212
2213 2003-10-16  Havoc Pennington  <hp@redhat.com>
2214
2215         * bus/connection.c (bus_pending_reply_expired): either cancel or
2216         execute, not both
2217         (bus_connections_check_reply): use unlink, not remove_link, as we
2218         don't want to free the link; fixes double free mess
2219
2220         * dbus/dbus-pending-call.c (dbus_pending_call_block): fix in case
2221         where no reply was received
2222
2223         * dbus/dbus-connection.c (_dbus_pending_call_complete_and_unlock):
2224         fix a refcount leak
2225
2226         * bus/signals.c (match_rule_matches): add special cases for the
2227         bus driver, so you can match on sender/destination for it.
2228
2229         * dbus/dbus-sysdeps.c (_dbus_abort): print backtrace if
2230         DBUS_PRINT_BACKTRACE is set
2231
2232         * dbus/dbus-internals.c: add pid to assertion failure messages
2233
2234         * dbus/dbus-connection.c: add message type code to the debug spew
2235
2236         * glib/dbus-gproxy.c (gproxy_get_match_rule): match rules want
2237         sender=foo not service=foo
2238
2239         * dbus/dbus-bus.c (dbus_bus_get): if the activation bus is the
2240         session bus but DBUS_SESSION_BUS_ADDRESS isn't set, use 
2241         DBUS_ACTIVATION_ADDRESS instead
2242
2243         * bus/activation.c: set DBUS_SESSION_BUS_ADDRESS,
2244         DBUS_SYSTEM_BUS_ADDRESS if appropriate
2245
2246         * bus/bus.c (bus_context_new): handle OOM copying bus type into
2247         context struct
2248
2249         * dbus/dbus-message.c (dbus_message_iter_get_object_path): new function
2250         (dbus_message_iter_get_object_path_array): new function (half
2251         finished, disabled for the moment)
2252         
2253         * glib/dbus-gproxy.c (dbus_gproxy_end_call): properly handle
2254         DBUS_MESSAGE_TYPE_ERROR
2255
2256         * tools/dbus-launch.c (babysit): support DBUS_DEBUG_OUTPUT to
2257         avoid redirecting stderr to /dev/null
2258         (babysit): close stdin if not doing the "exit_with_session" thing
2259
2260         * dbus/dbus-sysdeps.c (_dbus_become_daemon): delete some leftover
2261         debug code; change DBUS_DEBUG_OUTPUT to only enable stderr, not
2262         stdout/stdin, so things don't get confused
2263         
2264         * bus/system.conf.in: fix to allow replies, I modified .conf
2265         instead of .conf.in again.
2266
2267 2003-10-14  David Zeuthen  <david@fubar.dk>
2268
2269         * python/dbus_bindings.pyx.in (MessageIter.get): fixed typo in
2270         argtype to arg_type when raising unknown arg type exception.
2271         Changed type list to reflect the changes in dbus-protocol.h so 
2272         the bindings actually work.
2273
2274 2003-10-14  Havoc Pennington  <hp@redhat.com>
2275
2276         * test/decode-gcov.c: support gcc 3.3 also, though gcc 3.3 seems
2277         to have a bug keeping it from outputting the .da files sometimes
2278         (string_get_string): don't append garbage nul bytes to the string.
2279
2280 2003-10-15  Seth Nickell  <seth@gnome.org>
2281
2282         * python/Makefile.am:
2283
2284         Include dbus_h_wrapper.h in the dist tarball.
2285
2286 2003-10-14  Havoc Pennington  <hp@redhat.com>
2287
2288         * bus/bus.c (bus_context_check_security_policy): revamp this to
2289         work more sanely with new policy-based requested reply setup
2290
2291         * bus/connection.c (bus_transaction_send_from_driver): set bus
2292         driver messages as no reply
2293
2294         * bus/policy.c (bus_client_policy_check_can_receive): handle a
2295         requested_reply attribute on allow/deny rules
2296
2297         * bus/system.conf: add <allow requested_reply="true"/>
2298
2299         * bus/driver.c (bus_driver_handle_message): fix check for replies
2300         sent to the bus driver, which was backward. How did this ever work
2301         at all though? I think I'm missing something.
2302
2303         * dbus/dbus-message.c (decode_header_data): require error and
2304         method return messages to have a reply serial field to be valid
2305         (_dbus_message_loader_queue_messages): break up this function;
2306         validate that reply serial and plain serial are nonzero; 
2307         clean up the OOM/error handling.
2308         (get_uint_field): don't return -1 from this
2309         (dbus_message_create_header): fix signed/unsigned bug
2310
2311         * bus/connection.c (bus_connections_expect_reply): save serial of
2312         the incoming message, not reply serial
2313
2314 2003-10-14  Havoc Pennington  <hp@redhat.com>
2315
2316         * bus/connection.c: implement pending reply tracking using
2317         BusExpireList
2318
2319         * bus/bus.c (bus_context_check_security_policy): verify that a
2320         reply is pending in order to allow a reply to be sent. Deny 
2321         messages of unknown type.
2322
2323         * bus/dbus-daemon-1.1.in: update to mention new resource limits
2324
2325         * bus/bus.c (bus_context_get_max_replies_per_connection): new
2326         (bus_context_get_reply_timeout): new
2327
2328 2003-10-13  Seth Nickell  <seth@gnome.org>
2329
2330         * python/Makefile.am:
2331
2332         Pass "make distcheck": remove a couple files from DIST_FILES
2333         that weren't included in the final version.
2334
2335 2003-10-12  Havoc Pennington  <hp@pobox.com>
2336
2337         Added test code that 1) starts an actual bus daemon and 2) uses
2338         DBusGProxy; fixed bugs that were revealed by the test. Lots 
2339         more testing possible, but this is the basic framework.
2340         
2341         * glib/dbus-gproxy.c (dbus_gproxy_manager_unregister): remove
2342         empty proxy lists from the proxy list hash
2343
2344         * dbus/dbus-message.c (dbus_message_iter_get_args_valist): add a
2345         couple of return_if_fail checks
2346
2347         * dbus/dbus-pending-call.c (_dbus_pending_call_new): use dbus_new0
2348         to allocate, so everything is cleared to NULL as it should be.
2349
2350         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): pass
2351         source as data to dbus_connection_set_timeout_functions() as the 
2352         timeout functions expected
2353
2354         * test/glib/run-test.sh: add a little script to start up a message
2355         bus and run tests using it
2356
2357         * tools/dbus-launch.1: updates
2358
2359         * tools/dbus-launch.c (main): add --config-file option
2360
2361         * tools/dbus-launch.c (main): remove confusing else if (runprog)
2362         that could never be reached.
2363
2364         * dbus/dbus-message.c (dbus_message_new_method_return) 
2365         (dbus_message_new_error, dbus_message_new_signal): set the
2366         no-reply-expected flag on all these. Redundant, but may
2367         as well be consistent.
2368
2369 2003-10-11  Havoc Pennington  <hp@pobox.com>
2370
2371         * test/decode-gcov.c (function_solve_graph): make broken block
2372         graph a nonfatal error since it seems to be broken. Need to debug
2373         this.
2374
2375         * dbus/dbus-marshal.c (_dbus_type_is_valid): new function since we
2376         can't just check type > INVALID < LAST anymore
2377
2378         * dbus/dbus-message.c (dbus_message_get_signature): new function
2379         (dbus_message_has_signature): new function
2380         (struct DBusMessage): add signature field (right now it isn't sent
2381         over the wire, just generated on the fly)
2382         (dbus_message_copy): copy the signature, and init strings to
2383         proper length to avoid some reallocs
2384         (dbus_message_iter_init_array_iterator): return void, since it
2385         can't fail
2386         (dbus_message_iter_init_dict_iterator): return void since it can't fail
2387         (_dbus_message_loader_queue_messages): add silly temporary hack to
2388         fill in message->signature on load
2389
2390         * dbus/dbus-protocol.h: change DBUS_TYPE_* values to be ASCII
2391         characters, so they are relatively human-readable.
2392
2393 2003-10-11  Havoc Pennington  <hp@pobox.com>
2394
2395         * dbus/dbus-message.c (_dbus_message_test): add more test
2396         coverage, but #if 0 for now since they uncover a bug 
2397         not fixed yet; I think in re_align_field_recurse()
2398         (re_align_field_recurse): add FIXME about broken assertion
2399
2400         * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage
2401
2402         * bus/connection.c: share a couple code bits with expirelist.c
2403
2404         * bus/expirelist.h, bus/expirelist.c: implement a generic
2405         expire-items-after-N-seconds facility, was going to share between
2406         expiring connections and replies, decided not to use for expiring
2407         connections for now.
2408
2409         * COPYING: include AFL 2.0 (still need to change all the file headers)
2410
2411 2003-10-09  Havoc Pennington  <hp@redhat.com>
2412
2413         * configure.in: define DBUS_HAVE_GCC33_GCOV if we have
2414         gcc 3.3. Not that we do anything about it yet.
2415
2416         * bus/signals.c (bus_match_rule_parse): impose max length on the
2417         match rule text
2418
2419         * dbus/dbus-protocol.h: add DBUS_MAXIMUM_MATCH_RULE_LENGTH
2420
2421 2003-10-09  Havoc Pennington  <hp@redhat.com>
2422
2423         Make matching rules theoretically work (add parser).
2424         
2425         * bus/bus.c (bus_context_check_security_policy): fix up to handle
2426         the case where destination is explicitly specified as bus driver
2427         and someone else is eavesdropping.
2428         
2429         * bus/policy.c (bus_client_policy_check_can_receive): fix up
2430         definition of eavesdropping and assertion
2431
2432         * tools/dbus-send.c (main): use dbus_message_type_from_string
2433
2434         * bus/signals.c (bus_match_rule_parse): implement
2435
2436         * dbus/dbus-message.c (dbus_message_type_from_string): new
2437
2438         * dbus/dbus-errors.h (DBUS_ERROR_MATCH_RULE_INVALID): add
2439
2440 2003-10-02  Havoc Pennington  <hp@pobox.com>
2441
2442         * glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): rename from
2443         dbus_gproxy_oneway_call
2444
2445         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main) 
2446         (dbus_server_setup_with_g_main): fix to allow calling them more
2447         than once on the same args
2448         (dbus_bus_get_with_g_main): new function
2449
2450 2003-10-02  Havoc Pennington  <hp@redhat.com>
2451
2452         * doc/dbus-tutorial.xml: write some stuff
2453
2454 2003-09-29  Havoc Pennington  <hp@pobox.com>
2455
2456         * configure.in: split checks for Doxygen from XML docs, check for
2457         xmlto
2458
2459         * doc/Makefile.am: XML-ify all the docs, and add a blank
2460         dbus-tutorial.xml
2461
2462 2003-09-29  Havoc Pennington  <hp@pobox.com>
2463
2464         * Merge dbus-object-names branch. To see the entire patch 
2465         do cvs diff -r DBUS_OBJECT_NAMES_BRANCHPOINT -r dbus-object-names,
2466         it's huuuuge though.
2467         To revert, I tagged DBUS_BEFORE_OBJECT_NAMES_MERGE.
2468         
2469 2003-09-28  Havoc Pennington  <hp@pobox.com>
2470
2471         * HACKING: update to reflect new server
2472
2473 2003-09-26  Seth Nickell  <seth@gnome.org>
2474
2475         * python/dbus.py:
2476         * python/examples/example-signals.py:
2477
2478         Start implementing some notions of signals. The API
2479         is really terrible, but they sort of work (with the
2480         exception of being able to filter by service, and to
2481         transmit signals *as* a particular service). Need to
2482         figure out how to make messages come from the service
2483         we registered :-(
2484         
2485         * python/dbus_bindings.pyx.in:
2486
2487         Removed duplicate message_handler callbacks.
2488         
2489 2003-09-25  Havoc Pennington  <hp@redhat.com>
2490
2491         * bus/session.conf.in: fix my mess
2492
2493 2003-09-25  Havoc Pennington  <hp@pobox.com>
2494
2495         * bus/session.conf.in: fix security policy, reported by Seth Nickell
2496
2497 2003-09-25  Seth Nickell  <seth@gnome.org>
2498
2499         * python/examples/example-service.py:
2500
2501         Johan notices complete wrong code in example-service, but
2502         completely wrong in a way that works exactly the same (!).
2503         Johan is confused, how could this possibly work? Example
2504         code fails to serve purpose of making things clear.
2505         Seth fixes.
2506
2507 2003-09-25  Mark McLoughlin  <mark@skynet.ie>
2508
2509         * doc/dbus-specification.sgml: don't require header fields
2510         to be 4-byte aligned and specify that fields should be
2511         distinguished from padding by the fact that zero is not
2512         a valid field name.
2513         
2514         * doc/TODO: remove re-alignment item and add item to doc
2515         the OBJECT_PATH type.
2516         
2517         * dbus/dbus-message.c:
2518         (HeaderField): rename the original member to value_offset
2519         and introduce a name_offset member to keep track of where
2520         the field actually begins.
2521         (adjust_field_offsets): remove.
2522         (append_int_field), (append_uint_field),
2523         (append_string_field): don't align the start of the header
2524         field to a 4-byte boundary.
2525         (get_next_field): impl finding the next marhsalled field
2526         after a given field.
2527         (re_align_field_recurse): impl re-aligning a number of
2528         already marshalled fields.
2529         (delete_field): impl deleting a field of any type and
2530         re-aligning any following fields.
2531         (delete_int_or_uint_field), (delete_string_field): remove.
2532         (set_int_field), (set_uint_field): no need to re-check
2533         that we have the correct type for the field.
2534         (set_string_field): ditto and impl re-aligning any
2535         following fields.
2536         (decode_header_data): update to take into account that
2537         the fields aren't 4-byte aligned any more and the new
2538         way to distinguish padding from header fields. Also,
2539         don't exit when there is too much header padding.
2540         (process_test_subdir): print the directory.
2541         (_dbus_message_test): add test to make sure a following
2542         field is re-aligned correctly after field deletion.
2543         
2544         * dbus/dbus-string.[ch]:
2545         (_dbus_string_insert_bytes): rename from insert_byte and
2546         allow the insert of multiple bytes.
2547         (_dbus_string_test): test inserting multiple bytes.
2548
2549         * dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
2550         warning note to docs about having to re-align any
2551         marshalled values following the string.
2552         
2553         * dbus/dbus-message-builder.c:
2554         (append_string_field), (_dbus_message_data_load):
2555         don't align the header field.
2556         
2557         * dbus/dbus-auth.c: (process_test_subdir): print the
2558         directory.
2559         
2560         * test/break-loader.c: (randomly_add_one_byte): upd. for
2561         insert_byte change.
2562         
2563         * test/data/invalid-messages/bad-header-field-alignment.message:
2564         new test case.
2565         
2566         * test/data/valid-messages/unknown-header-field.message: shove
2567         a dict in the unknown field.
2568
2569 2003-09-25  Seth Nickell  <seth@gnome.org>
2570
2571         * python/dbus.py:
2572         * python/dbus_bindings.pyx.in:
2573
2574         Handle return values.
2575         
2576         * python/examples/example-client.py:
2577         * python/examples/example-service.py:
2578
2579         Pass back return values from the service to the client.
2580         
2581 2003-09-24  Seth Nickell  <seth@gnome.org>
2582
2583         * python/dbus.py:
2584
2585         Connect Object methods (when you are sharing an object) up... pass
2586         in a list of methods to be shared. Sharing all the methods just
2587         worked out too weird. You can now create nice Services over the
2588         DBus in Python. :-)
2589         
2590         * python/dbus_bindings.pyx.in:
2591
2592         Keep references to user_data tuples passed into C functions so 
2593         Python doesn't garbage collect on us.
2594
2595         Implement MethodReturn and Error subclasses of Message for creating
2596         DBusMessage's of those types.
2597         
2598         * python/examples/example-client.py:
2599         * python/examples/example-service.py:
2600
2601         Simple example code showing both how create DBus services and objects,
2602         and how to use them.
2603
2604 2003-09-23  Havoc Pennington  <hp@pobox.com>
2605
2606         * glib/dbus-gproxy.c (dbus_gproxy_manager_filter): implement
2607
2608 2003-09-23  Havoc Pennington  <hp@redhat.com>
2609
2610         * glib/dbus-gproxy.c (dbus_gproxy_connect_signal): implement
2611         (dbus_gproxy_disconnect_signal): implement
2612         (dbus_gproxy_manager_remove_signal_match): implement
2613         (dbus_gproxy_manager_add_signal_match): implement
2614         (dbus_gproxy_oneway_call): implement
2615
2616 2003-09-23  Havoc Pennington  <hp@pobox.com>
2617
2618         * glib/dbus-gproxy.c (struct DBusGProxy): convert to a GObject
2619         subclass. This means dropping the transparent thread safety of the
2620         proxy; you now need a separate proxy per-thread, or your own
2621         locking on the proxy. Probably right anyway.
2622         (dbus_gproxy_ref, dbus_gproxy_unref): nuke, just use g_object_ref
2623
2624 2003-09-22  Havoc Pennington  <hp@redhat.com>
2625
2626         * glib/dbus-gproxy.c (dbus_gproxy_manager_get): implement
2627
2628 2003-09-21  Seth Nickell  <seth@gnome.org>
2629
2630         First checkin of the Python bindings.
2631         
2632         * python/.cvsignore:
2633         * python/Makefile.am:
2634         * python/dbus_bindings.pyx.in:
2635         * python/dbus_h_wrapper.h:
2636
2637         Pieces for Pyrex to operate on, building a dbus_bindings.so
2638         python module for low-level access to the DBus APIs.
2639         
2640         * python/dbus.py:
2641
2642         High-level Python module for accessing DBus objects.
2643
2644         * configure.in:
2645         * Makefile.am:
2646
2647         Build stuff for the python bindings.
2648
2649         * acinclude.m4:
2650
2651         Extra macro needed for finding the Python C header files.
2652
2653 2003-09-21  Havoc Pennington  <hp@pobox.com>
2654
2655         * glib/dbus-gproxy.c (dbus_gproxy_manager_new): start
2656         implementing the proxy manager, didn't get very far.
2657
2658         * dbus/dbus-bus.c (dbus_bus_add_match): new
2659         (dbus_bus_remove_match): new
2660
2661         * glib/dbus-gproxy.c (dbus_gproxy_new_for_service): add a
2662         path_name argument; adjust the other not-yet-implemented 
2663         gproxy constructors to be what I think they should be.
2664
2665 2003-09-21  Havoc Pennington  <hp@pobox.com>
2666
2667         * dbus/dbus-bus.c (dbus_bus_get): set exit_on_disconnect to TRUE
2668         by default for message bus connections.
2669
2670         * dbus/dbus-connection.c (dbus_connection_dispatch): exit if
2671         exit_on_disconnect flag is set and we process the disconnected
2672         signal.
2673         (dbus_connection_set_exit_on_disconnect): new function
2674
2675 2003-09-21  Havoc Pennington  <hp@pobox.com>
2676
2677         Get matching rules mostly working in the bus; only actually
2678         parsing the rule text remains. However, the client side of
2679         "signal connections" hasn't been started, this patch is only the
2680         bus side.
2681         
2682         * dbus/dispatch.c: fix for the matching rules changes
2683         
2684         * bus/driver.c (bus_driver_handle_remove_match)
2685         (bus_driver_handle_add_match): send an ack reply from these
2686         method calls
2687
2688         * glib/dbus-gproxy.c (dbus_gproxy_begin_call): fix order of
2689         arguments, reported by Seth Nickell
2690
2691         * bus/config-parser.c (append_rule_from_element): support
2692         eavesdrop=true|false attribute on policies so match rules 
2693         can be prevented from snooping on the system bus.
2694
2695         * bus/dbus-daemon-1.1.in: consistently use terminology "sender"
2696         and "destination" in attribute names; fix some docs bugs; 
2697         add eavesdrop=true|false attribute
2698
2699         * bus/driver.c (bus_driver_handle_add_match)
2700         (bus_driver_handle_remove_match): handle AddMatch, RemoveMatch
2701         messages
2702
2703         * dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST): get
2704         rid of broadcast service concept, signals are just always broadcast
2705
2706         * bus/signals.c, bus/dispatch.c, bus/connection.c, bus/bus.c:
2707         mostly implement matching rules stuff (currently only exposed as signal
2708         connections)
2709
2710 2003-09-21  Mark McLoughlin  <mark@skynet.ie>
2711
2712         * doc/dbus-specification.sgml: Change the header field name
2713         to be an enum and update the rest of the spec to reference
2714         the fields using the conventinal name.
2715
2716         * dbus/dbus-protocol.h: update to reflect the spec.
2717
2718         * doc/TODO: add item to remove the 4 byte alignment requirement.
2719         
2720         * dbus/dbus-message.c: Remove the code to generalise the
2721         header/body length and serial number header fields as named
2722         header fields so we can reference field names using the 
2723         protocol values.
2724         (append_int_field), (append_uint_field), (append_string_field):
2725         Append the field name as a byte rather than four chars.
2726         (delete_int_or_uint_field), (delete_string_field): reflect the
2727         fact that the field name and typecode now occupy 4 bytes instead
2728         of 8.
2729         (decode_string_field), (decode_header_data): update to reflect
2730         protocol changes and move the field specific encoding from
2731         decode_string_field() back into decode_header_data().
2732         
2733         * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
2734         Add utility to aid debugging.
2735         
2736         * dbus/dbus-message-builder.c:
2737         (append_string_field), (_dbus_message_data_load): Update to
2738         reflect protocol changes; Change the FIELD_NAME directive
2739         to HEADER_FIELD and allow it to take the field's conventional
2740         name rather than the actual value.
2741         
2742         * test/data/*/*.message: Update to use HEADER_FIELD instead
2743         of FIELD_NAME; Always align the header on an 8 byte boundary
2744         *before* updating the header length.
2745
2746 2003-09-15  Havoc Pennington  <hp@pobox.com>
2747
2748         * dbus/dbus-pending-call.c: add the get/set object data
2749         boilerplate as for DBusConnection, etc. Use generic object data
2750         for the notify callback.
2751
2752         * glib/dbus-gparser.c (parse_node): parse child nodes
2753
2754         * tools/dbus-viewer.c: more hacking on the dbus-viewer
2755         
2756         * glib/dbus-gutils.c (_dbus_gutils_split_path): add a file to
2757         contain functions shared between the convenience lib and the
2758         installed lib
2759
2760         * glib/Makefile.am (libdbus_glib_1_la_LDFLAGS): add
2761         -export-symbols-regex to the GLib library
2762
2763         * dbus/dbus-object-tree.c (_dbus_object_tree_dispatch_and_unlock):
2764         fix the locking in here, and add a default handler for
2765         Introspect() that just returns sub-nodes.
2766
2767 2003-09-14  Havoc Pennington  <hp@pobox.com>
2768
2769         * glib/dbus-gthread.c (dbus_g_thread_init): rename to make g_foo
2770         rather than gfoo consistent
2771
2772         * glib/dbus-gproxy.h: delete for now, move contents to
2773         dbus-glib.h, because the include files don't work right since we
2774         aren't in the dbus/ subdir.
2775         
2776         * glib/dbus-gproxy.c (dbus_gproxy_send): finish implementing
2777         (dbus_gproxy_end_call): finish
2778         (dbus_gproxy_begin_call): finish
2779
2780         * glib/dbus-gmain.c (dbus_set_g_error): new
2781
2782         * glib/dbus-gobject.c (handle_introspect): include information
2783         about child nodes in the introspection
2784
2785         * dbus/dbus-connection.c (dbus_connection_list_registered): new
2786         function to help in implementation of introspection
2787
2788         * dbus/dbus-object-tree.c
2789         (_dbus_object_tree_list_registered_and_unlock): new function
2790
2791 2003-09-12  Havoc Pennington  <hp@pobox.com>
2792
2793         * glib/dbus-gidl.h: add common base class for all the foo_info
2794         types
2795
2796         * tools/dbus-viewer.c: add GTK-based introspection UI thingy
2797         similar to kdcop
2798
2799         * test/Makefile.am: try test srcdir -ef . in addition to test
2800         srcdir = ., one of them should work (yeah lame)
2801         
2802         * glib/Makefile.am: build the "idl" parser stuff as a convenience
2803         library
2804         
2805         * glib/dbus-gparser.h: make description_load routines return
2806         NodeInfo* not Parser*
2807
2808         * Makefile.am (SUBDIRS): build test dir after all library dirs
2809
2810         * configure.in: add GTK+ detection
2811
2812 2003-09-07  Havoc Pennington  <hp@pobox.com>
2813
2814         * Make Doxygen contented.
2815
2816 2003-09-07  Havoc Pennington  <hp@pobox.com>
2817
2818         * doc/dbus-specification.sgml: more updates
2819
2820 2003-09-06  Havoc Pennington  <hp@pobox.com>
2821
2822         * doc/dbus-specification.sgml: partial updates
2823
2824         * bus/dbus-daemon-1.1.in: fix the config file docs for the
2825         zillionth time; hopefully I edited the right file this time.
2826
2827         * bus/config-parser.c (append_rule_from_element): support
2828         send_type, send_path, receive_type, receive_path
2829
2830         * bus/policy.c: add message type and path to the list of things
2831         that can be "firewalled"
2832
2833 2003-09-06  Havoc Pennington  <hp@pobox.com>
2834
2835         * dbus/dbus-connection.c (dbus_connection_register_fallback): add this
2836         (dbus_connection_register_object_path): make this not handle
2837         messages to paths below the given path
2838
2839 2003-09-03  Havoc Pennington  <hp@pobox.com>
2840
2841         * test/glib/Makefile.am: add this with random glib-linked test
2842         programs
2843
2844         * glib/Makefile.am: remove the random test programs from here,
2845         leave only the unit tests
2846
2847         * glib/dbus-gobject.c (_dbus_gobject_test): add test for 
2848         uscore/javacaps conversion, and fix     
2849         (get_object_property, set_object_property): change to .NET
2850         convention for mapping props to methods, set_FooBar/get_FooBar, 
2851         since one language has such a convention we may as well copy it. 
2852         Plus real methods in either getFooBar or get_foo_bar style won't 
2853         collide with this convention.
2854
2855 2003-09-01  Havoc Pennington  <hp@pobox.com>
2856
2857         * glib/dbus-gparser.c: implement
2858
2859         * glib/dbus-gobject.c: start implementing skeletons support
2860
2861         * configure.in: when disabling checks/assert, also define
2862         G_DISABLE_ASSERT and G_DISABLE_CHECKS
2863
2864 2003-09-01  Havoc Pennington  <hp@pobox.com>
2865
2866         * glib/Makefile.am: rearrange a bunch of files and get "make
2867         check" framework set up
2868
2869 2003-08-31  Havoc Pennington  <hp@pobox.com>
2870
2871         * fix build with --disable-tests
2872
2873 2003-08-30  Havoc Pennington  <hp@pobox.com>
2874
2875         * dbus/dbus-connection.c: purge DBusMessageHandler
2876
2877         * dbus/dbus-message-handler.c: remove DBusMessageHandler, just 
2878         use callbacks everywhere
2879
2880 2003-08-30  Havoc Pennington  <hp@pobox.com>
2881
2882         * test/data/valid-config-files/system.d/test.conf: change to 
2883         root for the user so warnings don't get printed
2884
2885         * dbus/dbus-message.c: add dbus_message_get_path,
2886         dbus_message_set_path
2887         
2888         * dbus/dbus-object-tree.c (do_test_dispatch): add test of
2889         dispatching to a path
2890
2891         * dbus/dbus-string.c (_dbus_string_validate_path): add
2892
2893         * dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
2894         (_dbus_marshal_object_path): implement
2895
2896         * dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
2897         to contain the path to the target object
2898         (DBUS_HEADER_FIELD_SENDER_SERVICE): rename
2899         DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
2900
2901 2003-08-30  Havoc Pennington  <hp@pobox.com>
2902
2903         * dbus/dbus-object-tree.c: write tests and fix the discovered bugs
2904
2905 2003-08-29  Havoc Pennington  <hp@pobox.com>
2906
2907         * dbus/dbus-object-tree.c: modify to allow overlapping paths to be
2908         registered
2909         (struct DBusObjectSubtree): shrink this
2910         a lot, since we may have a lot of them
2911         (_dbus_object_tree_free_all_unlocked): implement
2912         (_dbus_object_tree_dispatch_and_unlock): implement
2913
2914 2003-08-29  Havoc Pennington  <hp@pobox.com>
2915
2916         * dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS
2917
2918 2003-08-28  Havoc Pennington  <hp@pobox.com>
2919
2920         purge DBusObjectID
2921         
2922         * dbus/dbus-connection.c: port to no ObjectID, create a
2923         DBusObjectTree, rename ObjectTree to ObjectPath in public API
2924
2925         * dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
2926         everything except UnregisterFunction and MessageFunction
2927         
2928         * dbus/dbus-marshal.c: port away from DBusObjectID, 
2929         add DBUS_TYPE_OBJECT_PATH
2930         
2931         * dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
2932         dbus/dbus-objectid.[hc]: remove these, we are moving to 
2933         path-based object IDs
2934
2935 2003-08-25  Havoc Pennington  <hp@pobox.com>
2936
2937         Just noticed that dbus_message_test is hosed, I wonder when I
2938         broke that. I thought make check was passing earlier...
2939         
2940         * dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
2941         container tree, will replace most of dbus-object-registry
2942
2943         * dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
2944         screwup
2945
2946 2003-08-19  Havoc Pennington  <hp@pobox.com>
2947
2948         * dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
2949         (dbus_message_is_error): fix this function
2950
2951         * bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
2952         match
2953
2954         * bus/policy.c (bus_client_policy_check_can_receive): fix code to
2955         reflect clarified man page
2956         (bus_client_policy_check_can_send): ditto
2957         
2958         * bus/session.conf.in: fixup
2959
2960         * bus/system.conf.in: fixup
2961
2962 2003-08-18  Havoc Pennington  <hp@redhat.com>
2963
2964         * dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix
2965
2966         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
2967         dumb bug created earlier (wrong order of args to
2968         decode_header_data())
2969         
2970         * tools/dbus-send.c: port
2971
2972         * tools/dbus-print-message.c (print_message): port
2973
2974         * test/data/*messages: port all messages over
2975         
2976         * dbus/dbus-message-builder.c: support including 
2977         message type
2978         
2979         * bus/driver.c: port over
2980         
2981         * bus/dispatch.c: port over to new stuff
2982
2983         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
2984         rename disconnect signal to "Disconnected"
2985
2986 2003-08-17  Havoc Pennington  <hp@pobox.com>
2987
2988         This doesn't compile yet, but syncing up so I can hack on it from
2989         work. What are branches for if not broken code? ;-)
2990         
2991         * dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
2992         DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
2993         DBUS_HEADER_FIELD_ERROR_NAME
2994         
2995         * dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
2996         for the interface+member pairs
2997         (string_hash): change to use g_str_hash algorithm
2998         (find_direct_function, find_string_function): refactor these to
2999         share most code.
3000         
3001         * dbus/dbus-message.c: port all of this over to support 
3002         interface/member fields instead of name field
3003
3004         * dbus/dbus-object-registry.c: port over
3005         
3006         * dbus/dbus-string.c (_dbus_string_validate_interface): rename
3007         from _dbus_string_validate_name
3008
3009         * bus/dbus-daemon-1.1: change file format for the 
3010         <deny>/<allow> stuff to match new message naming scheme
3011
3012         * bus/policy.c: port over
3013
3014         * bus/config-parser.c: parse new format
3015         
3016 2003-08-16  Havoc Pennington  <hp@pobox.com>
3017
3018         * dbus/dbus-object-registry.c (add_and_remove_objects): remove
3019         broken assertion
3020
3021         * glib/dbus-gproxy.c: some hacking
3022
3023 2003-08-15  Havoc Pennington  <hp@redhat.com>
3024
3025         * dbus/dbus-pending-call.c (dbus_pending_call_block): implement
3026
3027         * dbus/dbus-connection.c
3028         (dbus_connection_send_with_reply_and_block): factor out internals;
3029         change to convert any error replies to DBusError instead of 
3030         returning them as a message
3031
3032 2003-08-15  Havoc Pennington  <hp@pobox.com>
3033
3034         * dbus/dbus-connection.c, 
3035         dbus/dbus-pending-call.c: Finish the pending call stuff
3036
3037 2003-08-14  Havoc Pennington  <hp@redhat.com>
3038
3039         * dbus/dbus-pending-call.c: start on new object that will replace
3040         DBusMessageHandler and ReplyHandlerData for tracking outstanding
3041         replies
3042
3043         * dbus/dbus-gproxy.c: start on proxy object used to communicate
3044         with remote interfaces
3045
3046         * dbus/dbus-gidl.c: do the boring boilerplate in here
3047         
3048 2003-08-12  Havoc Pennington  <hp@pobox.com>
3049
3050         * bus/dispatch.c (bus_dispatch): make this return proper 
3051         DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD
3052
3053         * dbus/dbus-errors.c (dbus_set_error): use
3054         _dbus_string_append_printf_valist
3055
3056         * dbus/dbus-string.c (_dbus_string_append_printf_valist)
3057         (_dbus_string_append_printf): new
3058
3059         * dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
3060         UNKNOWN_METHOD
3061
3062         * dbus/dbus-connection.c (dbus_connection_dispatch): handle
3063         DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
3064         message is unhandled.
3065
3066 2003-08-11  Havoc Pennington  <hp@pobox.com>
3067
3068         * bus/test.c (client_disconnect_handler): change to return
3069         HANDLED (would have been REMOVE_MESSAGE)
3070
3071         * dbus/dbus-object.h (enum DBusHandlerResult): rename to
3072         HANDLED/NOT_YET_HANDLED instead of
3073         REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
3074         should be used.
3075
3076 2003-08-10  Havoc Pennington  <hp@pobox.com>
3077
3078         * tools/dbus-send.c (main): add --type argument, for now
3079         supporting only method_call and signal types.
3080
3081         * tools/dbus-print-message.c: print message type
3082
3083         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
3084         init connection->objects
3085
3086         * doc/dbus-specification.sgml: fix sgml
3087
3088         * bus/*.c: port over to object-instance API changes
3089
3090         * test/test-service.c: ditto
3091         
3092         * dbus/dbus-message.c (dbus_message_create_header): allow #NULL
3093         name, we will have to fix up the rest of the code to also handle
3094         this
3095         (dbus_message_new): generic message-creation call
3096         (set_string_field): allow appending name field
3097
3098 2003-08-06  Havoc Pennington  <hp@pobox.com>
3099
3100         * dbus/dbus-object-registry.c: implement signal connection 
3101         and dispatch
3102
3103         * dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new
3104
3105         * dbus/dbus-internals.c (_dbus_memdup): new function
3106
3107 2003-08-02  Havoc Pennington  <hp@pobox.com>
3108
3109         * dbus/dbus-message.c (dbus_message_get_no_reply)
3110         (dbus_message_set_no_reply): add these and remove
3111         set_is_error/get_is_error
3112
3113         * dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
3114         remove the ERROR flag, since there's now an ERROR type
3115
3116 2003-08-01  Havoc Pennington  <hp@pobox.com>
3117
3118         * dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
3119         implement
3120
3121         * dbus/dbus-message.c (dbus_message_get_type): new function
3122
3123         * doc/dbus-specification.sgml: add "type" byte to messages
3124
3125 2003-08-01  Havoc Pennington  <hp@pobox.com>
3126
3127         * dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
3128         a message type enum to distinguish kinds of message
3129         (DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
3130         that need not be replied to
3131
3132 2003-08-01  Havoc Pennington  <hp@pobox.com>
3133
3134         * dbus/dbus-marshal.c: adapt to DBusObjectID changes
3135         (unpack_8_octets): fix no-64-bit-int bug
3136
3137         * dbus/dbus-object-registry.c (validate_id): validate the 
3138         connection ID bits, not just the instance ID.
3139
3140         * dbus/dbus-connection.c (_dbus_connection_init_id): initialize
3141         the connection-global 33 bits of the object ID
3142
3143         * dbus/dbus-object-registry.c (info_from_entry): fill in 
3144         object ID in the new way
3145
3146         * dbus/dbus-objectid.h: rather than high/low bits, specifically 
3147         define server/client/instance bits.
3148
3149 2003-07-30  Havoc Pennington  <hp@pobox.com>
3150
3151         * dbus/dbus-connection.c (dbus_connection_register_object): fix
3152         build
3153
3154 2003-07-13  Havoc Pennington  <hp@pobox.com>
3155
3156         * dbus/dbus-object.h (struct DBusObjectVTable): add padding
3157         fields to DBusObjectVTable and DBusObjectInfo
3158
3159 2003-07-12  Havoc Pennington  <hp@pobox.com>
3160
3161         * dbus/dbus-object-registry.c: implement unit test,
3162         fix bugs discovered in process
3163
3164         * dbus/dbus-connection.c: remove handler_table and
3165         register_handler(), add DBusObjectRegistry usage
3166
3167         * dbus/dbus-objectid.c (dbus_object_id_is_null)
3168         (dbus_object_id_set_null): new functions
3169
3170 2003-07-08  Havoc Pennington  <hp@pobox.com>
3171
3172         * dbus/dbus-object.c: implement some of this
3173
3174         * dbus/dbus-object-registry.c
3175         (_dbus_object_registry_add_and_unlock): fill in the object_id out
3176         param
3177         (_dbus_object_registry_new): handle OOM
3178
3179 2003-07-08  Havoc Pennington  <hp@pobox.com>
3180
3181         * dbus/dbus-object.h: sketch out an API for registering objects
3182         with a connection, that allows us to use as little as 24 bytes
3183         per object and lets application code represent an object in 
3184         any conceivable way.
3185
3186         * dbus/dbus-object-registry.c: implement the hard bits of the
3187         DBusConnection aspect of object API. Not yet wired up.
3188         
3189 2003-07-06  Havoc Pennington  <hp@pobox.com>
3190
3191         * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function
3192         (_dbus_marshal_object_id): new
3193         (_dbus_demarshal_object_id): new
3194         (_dbus_marshal_get_arg_end_pos): support object ID type, and
3195         consolidate identical switch cases. Don't conditionalize handling
3196         of DBUS_TYPE_UINT64, need to handle the type always.
3197         (_dbus_marshal_validate_arg): consolidate identical cases, and
3198         handle DBUS_TYPE_OBJECT_ID
3199
3200         * dbus/dbus-objectid.c: new file with DBusObjectID data type.
3201
3202         * dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID
3203
3204 2003-09-28  Havoc Pennington  <hp@pobox.com>
3205
3206         * real 0.13 release
3207
3208 2003-09-28  Havoc Pennington  <hp@pobox.com>
3209
3210         * doc/Makefile.am (dbus-specification.html): testing a funky hack
3211         to work with Debian db2html
3212
3213 2003-09-28  Havoc Pennington  <hp@pobox.com>
3214
3215         * configure.in: 0.13
3216
3217         * doc/Makefile.am (dbus-test-plan.html): accept nonexistence of
3218         stylesheet-images for benefit of Debian
3219         
3220         Change back to using filesystem-linked sockets for the system
3221         bus, so only root can create the default system bus address.
3222         
3223         * bus/system.conf.in: change to use
3224         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
3225
3226         * dbus/Makefile.am (INCLUDES): remove DBUS_SYSTEM_BUS_PATH define
3227         from here.
3228
3229         * configure.in: define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
3230         here, and AC_DEFINE DBUS_SYSTEM_PATH
3231
3232 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
3233
3234         * doc/TODO:
3235         * doc/busconfig.dtd:
3236         Add busconfig DTD.
3237         
3238 2003-08-09  Anders Carlsson  <andersca@codefactory.se>
3239
3240         * doc/dbus-specification.sgml:
3241         Add activation reply values.
3242         
3243 2003-08-05  Havoc Pennington  <hp@redhat.com>
3244
3245         * configure.in: 0.12
3246
3247 2003-08-05  Anders Carlsson  <andersca@codefactory.se>
3248
3249         * glib/dbus-gmain.c: (watch_fd_new), (watch_fd_ref),
3250         (watch_fd_unref), (dbus_gsource_check), (dbus_gsource_dispatch),
3251         (add_watch), (remove_watch), (create_source):
3252         Refcount fds, fixes some reentrancy issues.
3253         
3254 2003-07-30  Havoc Pennington  <hp@redhat.com>
3255
3256         * dbus/dbus-bus.c (init_connections_unlocked): fix default system
3257         bus address to be abstract if we have abstract sockets
3258
3259         * NEWS: update
3260
3261 2003-07-28  Havoc Pennington  <hp@redhat.com>
3262
3263         * bus/messagebus.in: fix to avoid processname/servicename 
3264         confusion, from Michael Kearey
3265         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100965
3266         
3267 2003-07-23  Havoc Pennington  <hp@pobox.com>
3268
3269         * dbus/dbus-message.c (dbus_message_iter_get_named): 
3270         fix from Andy Hanton to remove broken "+1"
3271
3272 2003-07-16  Havoc Pennington  <hp@pobox.com>
3273
3274         * tools/dbus-launch.c (babysit): close stdout/stderr in the
3275         babysitter process, as suggested by Thomas Leonard, so 
3276         an "eval `dbus-launch --exit-with-session`" will actually 
3277         return
3278
3279 2003-07-16  Havoc Pennington  <hp@pobox.com>
3280
3281         * configure.in: print out EXPANDED_* variables in the summary at
3282         the end; clean up the code that computes EXPANDED_ variables and
3283         get the ones using exec_prefix right. Should make things work
3284         when you build without --prefix
3285
3286 2003-06-29  Havoc Pennington  <hp@pobox.com>
3287
3288         * mono/Test.cs (class Test): fire up a main loop and run it
3289
3290         * mono/DBus.cs (DBus): don't g_thread_init since it can only be
3291         done once, the app has to do it
3292
3293 2003-06-26  Havoc Pennington  <hp@pobox.com>
3294
3295         * mono/Connection.cs: set up connection with the glib main loop
3296
3297 2003-07-01  Havoc Pennington  <hp@redhat.com>
3298
3299         * doc/dbus-specification.sgml: clarify the format of a type code,
3300         change suggested by Jim Blandy
3301
3302 2003-06-29  Miloslav Trmac  <mitr@volny.cz>
3303
3304         * doc/Makefile.am:
3305         * tools/Makefile.am: Don't assume srcdir == builddir.
3306
3307         * dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
3308         the allocated block.
3309         (_dbus_memory_test): New function.
3310         * dbus/dbus-test.h: Add _dbus_memory_test ().
3311         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.
3312
3313         * dbus/dbus-message.c (decode_header_data): Use %.4s instead
3314         of %c%c%c%c.
3315         (dbus_message_new): Remove obsolete @todo.
3316
3317         * dbus/dbus-marshal.c (_dbus_marshal_set_int64)
3318         (_dbus_marshal_set_uint64): Fix comment.
3319
3320         * dbus/dbus-message.c (append_int_field, append_uint_field): Don't
3321         hardcode FIELD_REPLY_SERIAL.
3322
3323         * dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
3324         (_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p
3325
3326         * configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
3327         and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used
3328
3329 2003-06-24  Havoc Pennington  <hp@pobox.com>
3330
3331         * mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)
3332
3333 2003-06-23  Anders Carlsson  <andersca@codefactory.se>
3334
3335         * configure.in:
3336         * gcj/.cvsignore:
3337         * gcj/Hello.java:
3338         * gcj/Makefile.am:
3339         * gcj/TestMessage.java: (TestMessage), (TestMessage.main):
3340         * gcj/org/.cvsignore:
3341         * gcj/org/Makefile.am:
3342         * gcj/org/freedesktop/.cvsignore:
3343         * gcj/org/freedesktop/Makefile.am:
3344         * gcj/org/freedesktop/dbus/.cvsignore:
3345         * gcj/org/freedesktop/dbus/Makefile.am:
3346         * gcj/org/freedesktop/dbus/Message.java: (Message),
3347         (Message.Message):
3348         * gcj/org/freedesktop/dbus/natMessage.cc:
3349         Fix the build system.
3350
3351 2003-06-22  Havoc Pennington  <hp@pobox.com>
3352
3353         * mono/Connection.cs: add more bindings
3354
3355         * dbus/dbus-threads.c (dbus_threads_init): allow calling this
3356         more than once.
3357
3358 2003-06-22  Havoc Pennington  <hp@pobox.com>
3359
3360         * mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
3361         Start wrapping more stuff.
3362
3363 2003-06-22  Havoc Pennington  <hp@pobox.com>
3364
3365         * mono/Message.cs: implement Message.Wrap() that ensures we only
3366         have a single C# wrapper per DBusMessage, assuming it works which
3367         it probably doesn't.
3368
3369         * dbus/dbus-message.c (dbus_message_allocate_data_slot): new
3370         (dbus_message_free_data_slot): new
3371         (dbus_message_set_data): new
3372         (dbus_message_get_data): new
3373
3374 2003-06-22  Havoc Pennington  <hp@pobox.com>
3375
3376         * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
3377         (_dbus_data_slot_allocator_alloc): rework these to keep a
3378         reference count on each slot and automatically manage a global
3379         slot ID variable passed in by address
3380
3381         * bus/bus.c: convert to new dataslot API
3382
3383         * dbus/dbus-bus.c: convert to new dataslot API
3384
3385         * dbus/dbus-connection.c: convert to new dataslot API
3386
3387         * dbus/dbus-server.c: convert to new dataslot API
3388
3389         * glib/dbus-gmain.c: ditto
3390
3391         * bus/test.c: ditto
3392
3393         * bus/connection.c: ditto
3394
3395 2003-06-22  Anders Carlsson  <andersca@codefactory.se>
3396
3397         * configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
3398         after the gcj checks so that the correct configuration tags
3399         will be added to libtool.
3400
3401         * dbus-glib-1.pc.in: No need to specify any includes since
3402         dbus-1.pc.in has those.
3403
3404 2003-06-22  Havoc Pennington  <hp@pobox.com>
3405
3406         * mono/*, gcj/*, configure.in, Makefile.am:
3407         Check in makefiles and subdirs for mono and gcj bindings.
3408         Neither binding actually exists, just trying to get through
3409         all the build and other boring bits.
3410
3411 2003-06-21  Philip Blundell  <philb@gnu.org>
3412
3413         * tools/dbus-monitor.1: Updated.
3414
3415         * tools/dbus-send.1: Likewise.
3416
3417 2003-06-20  Anders Carlsson  <andersca@codefactory.se>
3418
3419         * dbus/dbus-transport-unix.c (unix_handle_watch): Check
3420         for hangup and error after checking read so we won't discard
3421         pending data if both hangup and read are set.
3422
3423 2003-06-19  Philip Blundell  <philb@gnu.org>
3424
3425         * tools/dbus-print-message.c (print_message): Handle BOOLEAN.
3426
3427         * tools/dbus-send.c: Accept both --system and --session.
3428
3429         * tools/dbus-monitor.c: Same here.
3430
3431 2003-06-19  Anders Carlsson  <andersca@codefactory.se>
3432
3433         * glib/dbus-glib.h: Fix so that dbus-glib.h can be used
3434         from C++ (Patch by Miloslav Trmac).
3435
3436 2003-06-15  Joe Shaw  <joe@assbarn.com>
3437
3438         * configure.in: Check for socklen_t.
3439
3440         * dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.
3441
3442         * test/test-segfault.c: Add #include <sys/time.h>
3443
3444         * tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
3445         dbus-launch needs it.
3446
3447 2003-06-09  Havoc Pennington  <hp@redhat.com>
3448
3449         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
3450         SUN_LEN, it breaks abstract socket usage
3451
3452         * dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
3453         starts of lines.
3454
3455 2003-06-04  Havoc Pennington  <hp@pobox.com>
3456
3457         * dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
3458         using unix:abstract=/foo, and when listening in a tmpdir
3459         i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.
3460
3461         * dbus/dbus-transport.c (_dbus_transport_open): support
3462         unix:abstract=/foo
3463
3464         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
3465         support abstract sockets
3466
3467         * dbus/dbus-transport-unix.c
3468         (_dbus_transport_new_for_domain_socket): support abstract sockets
3469
3470         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
3471         toggle as an argument, implement abstract namespace support
3472         (_dbus_listen_unix_socket): ditto
3473
3474         * configure.in: add --enable-abstract-sockets and implement
3475         a configure check for autodetection of the right value.
3476
3477 2003-06-01  Havoc Pennington  <hp@pobox.com>
3478
3479         * tools/dbus-cleanup-sockets.c: add utility to clean up sockets
3480         in /tmp (though on Linux this will end up being useless,
3481         when we add abstract namespace support)
3482
3483         * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to
3484         subst'ing it
3485
3486 2003-05-28  Colin Walters  <walters@verbum.org>
3487
3488         * tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).
3489
3490 2003-05-18  Anders Carlsson  <andersca@codefactory.se>
3491
3492         * dbus/dbus-message.c (dbus_message_new): Remove @todo.
3493
3494 2003-05-17  Colin Walters  <walters@gnu.org>
3495
3496         * tools/dbus-send.c: Don't exit with an error code if --help was
3497         passed.  Default to using the session bus instead of the system
3498         one.
3499
3500         * tools/dbus-launch.c: Ditto.
3501
3502         * tools/dbus-monitor.c: Ditto.
3503
3504         * tools/dbus-send.1: Update with new arguments.
3505
3506         * tools/dbus-launch.c: Emit code to export variables.  New
3507         arguments -s and -c to specify shell syntax, and a bit of code to
3508         autodetect syntax.  Also, allow specifying a program to run.
3509
3510         * tools/dbus-launch.1: Update with new arguments.
3511
3512         * tools/dbus-send.1: Ditto.
3513
3514         * tools/dbus-monitor.1: Ditto.
3515
3516 2003-05-17  Havoc Pennington  <hp@pobox.com>
3517
3518         * bus/config-parser.c (merge_included): merge in policies from
3519         child configuration file.
3520
3521         * bus/policy.c (bus_policy_merge): function to merge two policies
3522         together
3523
3524 2003-05-16  Havoc Pennington  <hp@redhat.com>
3525
3526         * dbus/dbus-connection.c: disable verbose lock spew
3527
3528         * tools/dbus-send.c: add --print-reply command line option
3529
3530         * tools/dbus-print-message.h (print_message): new util function
3531         shared by dbus-send and dbus-monitor
3532
3533         * tools/dbus-monitor.c (handler_func): exit on disconnect
3534
3535         * dbus/dbus-transport-unix.c (do_reading): if the transport is
3536         disconnected, don't try to use the read_watch
3537
3538         * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
3539         so we can find this bug more easily
3540
3541 2003-05-16  Havoc Pennington  <hp@redhat.com>
3542
3543         * bus/policy.c (free_rule_list_func): avoid a crash when passed
3544         NULL as DBusHashTable is annoyingly likely to do.
3545
3546 2003-05-16  Colin Walters  <walters@verbum.org>
3547
3548         * tools/dbus-monitor.c: Add --session argument and usage()
3549         function.
3550
3551         * tools/dbus-monitor.1: Update with new --session arg.
3552
3553         * bus/Makefile.am (install-data-hook): Create
3554         $(libdir)/dbus-1.0/services so that the session bus is happy.
3555
3556 2003-05-15  Havoc Pennington  <hp@redhat.com>
3557
3558         * dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
3559         on non-x86. ifdef's are evil.
3560
3561 2003-05-15  Havoc Pennington  <hp@redhat.com>
3562
3563         * configure.in: 0.11
3564
3565         * NEWS: update
3566
3567         * bus/Makefile.am (initddir): apparently we are supposed to put
3568         init scripts in /etc/rc.d/init.d not /etc/init.d
3569
3570         * bus/Makefile.am: remove the "you must --enable-tests to make
3571         check" as it broke distcheck
3572
3573         * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d
3574
3575 2003-05-13  James Willcox  <jwillcox@gnome.org>
3576
3577         * configure.in:
3578         * bus/activation.c: (bus_activation_service_created),
3579         (bus_activation_activate_service):
3580         * bus/driver.c: (bus_driver_send_service_deleted),
3581         (bus_driver_send_service_created), (bus_driver_send_service_lost),
3582         (bus_driver_send_service_acquired),
3583         (bus_driver_send_welcome_message),
3584         (bus_driver_handle_list_services):
3585         * bus/session.conf.in:
3586         * dbus/dbus-bus.c: (dbus_bus_acquire_service),
3587         (dbus_bus_service_exists), (dbus_bus_activate_service):
3588         * dbus/dbus-bus.h:
3589
3590         Add some convenience API which lets you activate a service, and did a
3591         bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
3592         and dbus_message_get_args()
3593
3594 2003-05-11  Havoc Pennington  <hp@pobox.com>
3595
3596         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid
3597         calling _dbus_marshal_validate_arg() for every byte in a byte
3598         array, etc.
3599
3600         * dbus/dbus-message-handler.c: use atomic reference counting to
3601         reduce number of locks slightly; the global lock in here sucks
3602
3603         * dbus/dbus-connection.c
3604         (_dbus_connection_update_dispatch_status_and_unlock): variant of
3605         update_dispatch_status that can be called with lock held; then use
3606         in a couple places to reduce locking/unlocking
3607         (dbus_connection_send): hold the lock over the whole function
3608         instead of acquiring it twice.
3609
3610         * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM
3611
3612         * bus/connection.c (bus_connections_setup_connection): fix access
3613         to already-freed memory.
3614
3615         * dbus/dbus-connection.c: keep a little cache of linked list
3616         nodes, to avoid using the global linked list alloc lock in the
3617         normal send-message case. Instead we just use the connection lock
3618         that we already have to take.
3619
3620         * dbus/dbus-list.c (_dbus_list_find_last): new function
3621
3622         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec):
3623         change to use a struct for the atomic type; fix docs,
3624         they return value before increment, not after increment.
3625
3626         * dbus/dbus-string.c (_dbus_string_append_4_aligned)
3627         (_dbus_string_append_8_aligned): new functions to try to
3628         microoptimize this operation.
3629         (reallocate_for_length): break this out of set_length(), to
3630         improve profile info, and also so we can consider inlining the
3631         set_length() part.
3632
3633         * dbus/dbus-message.c (dbus_message_new_empty_header): init data
3634         strings with some preallocation, cuts down on our calls to realloc
3635         a fair bit. Though if we can get the "move entire string to empty
3636         string" optimization below to kick in here, it would be better.
3637
3638         * dbus/dbus-string.c (_dbus_string_move): just call
3639         _dbus_string_move_len
3640         (_dbus_string_move_len): add a special case for moving
3641         an entire string into an empty string; we can just
3642         swap the string data instead of doing any reallocs.
3643         (_dbus_string_init_preallocated): new function
3644
3645 2003-05-11  Havoc Pennington  <hp@pobox.com>
3646
3647         Write a "test-profile" that does echo client-server with threads;
3648         profile reveals lock contention, memcpy/realloc of buffers, and
3649         UTF-8 validation as hot spots. 20% of lock contention eliminated
3650         with dbus_atomic_inc/dec implementation on x86.  Much remaining
3651         contention is global mempool locks for GList and DBusList.
3652
3653         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add
3654         x86 implementation
3655
3656         * dbus/dbus-connection.c (struct DBusConnection): use
3657         dbus_atomic_t for the reference count
3658
3659         * dbus/dbus-message.c (struct DBusMessage): declare
3660         dbus_atomic_t values as volatile
3661
3662         * configure.in: code to detect ability to use atomic integer
3663         operations in assembly, from GLib patch
3664
3665         * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every
3666         time, tired of it being wrong in threads and forked processes
3667
3668         * glib/test-profile.c: a little program to bounce messages back
3669         and forth between threads and eat CPU
3670
3671         * dbus/dbus-connection.c: add debug spew macros for debugging
3672         thread locks; include config.h at top; fix deadlock in
3673         dbus_connection_flush()
3674
3675 2003-05-08  Havoc Pennington  <hp@pobox.com>
3676
3677         * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
3678         data from getting written, and there wasn't a good reason to
3679         use _exit really.
3680
3681         * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
3682         dbus_verbose lines in test coverage
3683         (main): add list of functions sorted by # of untested blocks
3684         to the coverage report
3685
3686         * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS
3687
3688         * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage
3689
3690         * dbus/dbus-message-handler.c (_dbus_message_handler_test):
3691         extend test coverage
3692
3693         * test/data/auth/cancel.auth-script: test canceling an
3694         authentication
3695
3696         * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
3697         aren't used. in CVS history if we end up needing them.
3698
3699 2003-05-04  Havoc Pennington  <hp@pobox.com>
3700
3701         * dbus/dbus-message-handler.c (_dbus_message_handler_test): add
3702         unit test
3703
3704         * dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
3705         function, which assumed length was in # of strings, not bytes
3706
3707         * dbus/dbus-message.c (_dbus_message_test): add tests for some
3708         missing coverage
3709
3710         * dbus/dbus-connection.c
3711         (_dbus_connection_queue_received_message): disable function for
3712         now, we are only using it in test mode
3713
3714         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
3715         remove a mistaken FIXME
3716
3717 2003-05-04  Havoc Pennington  <hp@pobox.com>
3718
3719         * dbus/dbus-connection.c (dbus_connection_preallocate_send):
3720         unlock mutex on successful return, patch from Anders Gustafsson
3721
3722 2003-05-04  Havoc Pennington  <hp@pobox.com>
3723
3724         * dbus-glib-1.pc.in (Requires): fix dependencies, from
3725         Anders Gustafsson
3726
3727 2003-05-04  Havoc Pennington  <hp@pobox.com>
3728
3729         * tools/dbus-launch.c: implement
3730
3731         * bus/main.c (main), bus/bus.c (bus_context_new):
3732         implement --print-pid and --fork
3733
3734 2003-05-03  Havoc Pennington  <hp@redhat.com>
3735
3736         * dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
3737         the address had no value, and add to test suite. Fix and
3738         regression test from Miloslav Trmac
3739
3740 2003-05-03  Havoc Pennington  <hp@pobox.com>
3741
3742         * dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
3743         watch is invalid when handled
3744
3745         * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add
3746         dbus-launch utility to launch the bus from a shell script.  Didn't
3747         actually implement dbus-launch yet, it's just a placeholder still.
3748
3749 2003-05-03  Havoc Pennington  <hp@pobox.com>
3750
3751         * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
3752         daemon; also documents daemon config file, so replaces
3753         doc/config-file.txt. Corrected some stuff from config-file.txt in
3754         the process of moving it.
3755
3756 2003-05-03  Havoc Pennington  <hp@pobox.com>
3757
3758         * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
3759         add some man pages
3760
3761 2003-05-03  Colin Walters  <walters@verbum.org>
3762
3763         * dbus/dbus-sysdeps.c (fill_user_info): Test against
3764         DBUS_UID_UNSET to determine whether to do a uid lookup or not.
3765
3766         * Makefile.am: Update to use new .pc versioning scheme.
3767
3768 2003-05-02  Havoc Pennington  <hp@redhat.com>
3769
3770         * bus/system.conf.in: allow send/receive to/from message bus
3771         service
3772
3773 2003-04-30  Havoc Pennington  <hp@redhat.com>
3774
3775         * configure.in: print a note when building with unit tests and
3776         without assertions
3777
3778 2003-04-30  Havoc Pennington  <hp@redhat.com>
3779
3780         * Makefile.am: add a check-local that complains if you didn't
3781         configure with --enable-tests
3782
3783 2003-04-29  Havoc Pennington  <hp@redhat.com>
3784
3785         * glib/dbus-gmain.c: docs cleanups
3786
3787         * dbus/dbus-types.h: add docs on int64 types
3788
3789         * dbus/dbus-memory.c: fix docs to avoid putting private API in
3790         public API docs section
3791
3792 2003-04-29  Havoc Pennington  <hp@redhat.com>
3793
3794         * dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
3795         dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
3796         parallel install API version, not with the D-BUS package version.
3797
3798         * HACKING: move some of README over here
3799
3800         * README: updates, and document API/ABI policy
3801
3802         * configure.in: reindentation
3803
3804 2003-04-29  Havoc Pennington  <hp@redhat.com>
3805
3806         * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE
3807         to use this library" to be sure people have the right
3808         expectations.
3809
3810 2003-04-28  Havoc Pennington  <hp@redhat.com>
3811
3812         * configure.in: add --enable-docs which by default is auto yes if
3813         doxygen and db2html found, no otherwise; but can be forced on/off
3814
3815         * doc/Makefile.am: conditionalize whether to build docs on
3816         --enable-docs
3817
3818 2003-04-28  Havoc Pennington  <hp@redhat.com>
3819
3820         * configure.in: 0.10
3821
3822         * NEWS: update
3823
3824         * bus/system.conf.in: add <includedir>system.d</includedir>
3825
3826         * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when
3827         username was provided but not uid
3828
3829         * bus/config-parser.c (struct BusConfigParser): keep track of
3830         whether the parser is toplevel or was included; change some
3831         of the error handling if it's included.
3832
3833 2003-04-27  Havoc Pennington  <hp@pobox.com>
3834
3835         Unbreak my code...
3836
3837         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
3838         report correct status if we finish processing authentication
3839         inside this function.
3840
3841         * bus/activation.c (try_send_activation_failure): use
3842         bus_transaction_send_error_reply
3843
3844         * bus/connection.c (bus_connection_get_groups): return an error
3845         explaining the problem
3846
3847         * bus/bus.c (bus_context_check_security_policy): implement
3848         restriction here that inactive connections can only send the
3849         hello message. Also, allow bus driver to send anything to
3850         any recipient.
3851
3852         * bus/connection.c (bus_connection_complete): create the
3853         BusClientPolicy here instead of on-demand.
3854         (bus_connection_get_policy): don't return an error
3855
3856         * dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
3857         sender field in message being replied to
3858
3859         * bus/bus.c (bus_context_check_security_policy): fix silly typo
3860         causing it to return FALSE always
3861
3862         * bus/policy.c (bus_client_policy_check_can_send): fix bug where
3863         we checked sender rather than destination
3864
3865 2003-04-25  Havoc Pennington  <hp@redhat.com>
3866
3867         test suite is slightly hosed at the moment, will fix soon
3868
3869         * bus/connection.c (bus_connections_expire_incomplete): fix to
3870         properly disable the timeout when required
3871         (bus_connection_set_name): check whether we can remove incomplete
3872         connections timeout after we complete each connection.
3873
3874         * dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
3875         probably still broken.
3876
3877         * bus/services.c (bus_registry_acquire_service): implement max
3878         number of services owned, and honor allow/deny rules on which
3879         services a connection can own.
3880
3881         * bus/connection.c (bus_connection_get_policy): report errors here
3882
3883         * bus/activation.c: implement limit on number of pending
3884         activations
3885
3886 2003-04-25  Havoc Pennington  <hp@redhat.com>
3887
3888         * dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
3889         where we used >= 0 instead of != DBUS_UID_UNSET.
3890
3891 2003-04-25  Havoc Pennington  <hp@redhat.com>
3892
3893         * glib/dbus-gmain.c (remove_watch): fix for a crash when watches
3894         were toggled without add/remove, fix from Anders Gustafsson
3895
3896 2003-04-24  Havoc Pennington  <hp@redhat.com>
3897
3898         * test/data/valid-config-files/basic.conf: add <limit> tags to
3899         this test
3900
3901         * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
3902         <limit> tag in configuration file.
3903
3904 2003-04-24  Havoc Pennington  <hp@redhat.com>
3905
3906         * bus/dispatch.c: somehow missed some name_is
3907
3908         * dbus/dbus-timeout.c (_dbus_timeout_set_enabled)
3909         (_dbus_timeout_set_interval): new
3910
3911         * bus/connection.c (bus_connections_setup_connection): record time
3912         when each connection is first set up, and expire them after the
3913         auth timeout passes.
3914
3915 2003-04-24  Havoc Pennington  <hp@redhat.com>
3916
3917         * dbus/dbus-message.c (dbus_message_name_is): rename
3918         (dbus_message_service_is): rename
3919         (dbus_message_sender_is): rename
3920         (dbus_message_get_service): rename
3921
3922 2003-04-24  Havoc Pennington  <hp@redhat.com>
3923
3924         * configure.in: add --enable-checks
3925
3926         * dbus/dbus-message.c (dbus_message_new): reverse name/service arguments
3927
3928         * dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
3929         to use thread locks.
3930         (_dbus_connection_handler_destroyed_locked): move some private
3931         functions into proper docs group
3932
3933         * dbus/dbus-internals.h: add _dbus_return_if_fail,
3934         _dbus_return_val_if_fail
3935
3936         Throughout: use dbus_return_if_fail
3937
3938 2003-04-23  James Willcox  <jwillcox@gnome.org>
3939
3940         * glib/dbus-glib.h:
3941         * glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
3942         (dbus_connection_setup_with_g_main),
3943         (dbus_server_setup_with_g_main):
3944         * glib/test-dbus-glib.c: (main):
3945         * glib/test-thread-client.c: (main):
3946         * glib/test-thread-server.c: (new_connection_callback), (main):
3947         * tools/dbus-monitor.c: (main):
3948
3949         Added a GMainContext argument to dbus_connection_setup_with_g_main()
3950         and dbus_server_setup_with_g_main().
3951
3952 2003-04-20  Havoc Pennington  <hp@pobox.com>
3953
3954         * doc/dbus-specification.sgml: document the restrictions on
3955         message and service names
3956
3957 2003-04-22  Havoc Pennington  <hp@redhat.com>
3958
3959         * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
3960         support, and do some code cleanups to share more code and
3961         speed up array marshal/demarshal.
3962
3963         * dbus-1.0.pc.in (Cflags): put libdir include file in cflags
3964
3965         * configure.in: generate dbus-arch-deps.h
3966
3967         * dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
3968         64-bit typecodes
3969
3970 2003-04-22  Havoc Pennington  <hp@redhat.com>
3971
3972         * test/data/valid-messages/opposite-endian.message: fix test
3973         to use proper type for rply field
3974
3975         * test/data/invalid-messages: add tests for below validation
3976
3977         * dbus/dbus-message.c (decode_header_data): validate field types,
3978         and validate that named fields are valid names
3979         (decode_name_field): consider messages in the
3980         org.freedesktop.Local. namespace to be invalid.
3981
3982         * dbus/dbus-string.c (_dbus_string_validate_name): new
3983
3984 2003-04-19  Havoc Pennington  <hp@pobox.com>
3985
3986         * bus/driver.c (bus_driver_handle_hello): check limits and
3987         return an error if they are exceeded.
3988
3989         * bus/connection.c: maintain separate lists of active and inactive
3990         connections, and a count of each. Maintain count of completed
3991         connections per user. Implement code to check connection limits.
3992
3993         * dbus/dbus-list.c (_dbus_list_unlink): export
3994
3995         * bus/bus.c (bus_context_check_security_policy): enforce a maximum
3996         number of bytes in the message queue for a connection
3997
3998 2003-04-18  Havoc Pennington  <hp@pobox.com>
3999
4000         * dbus/dbus-auth.c (record_mechanisms): memleak fixes
4001
4002         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
4003         memleaks
4004
4005         * dbus/dbus-keyring.c (add_new_key): fix a memleak, and
4006         on realloc be sure to update the pointer in the keyring
4007
4008         * dbus/dbus-string.c (_dbus_string_zero): compensate for align
4009         offset to avoid writing to unallocated memory
4010
4011         * dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
4012         try the next mechanism, so we properly handle OOM
4013
4014         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
4015         on OOM.
4016         (_dbus_keyring_new): fix OOM bug
4017         (_dbus_keyring_new_homedir): always set error; impose a maximum
4018         number of keys we'll load from the file, mostly to speed up the
4019         test suite and make its OOM checks more useful, but also for
4020         general sanity.
4021
4022         * dbus/dbus-auth.c (process_error_server): reject authentication
4023         if we get an error from the client
4024         (process_cancel): on cancel, send REJECTED, per the spec
4025         (process_error_client): send CANCEL if we get an error from the
4026         server.
4027
4028 2003-04-18  Havoc Pennington  <hp@pobox.com>
4029
4030         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
4031         debug spew
4032
4033         * dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
4034         handling problem
4035
4036         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
4037         about DBUS_TEST_HOMEDIR once
4038
4039         * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in
4040         the environment
4041
4042         * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1
4043         config file so we test the right thing
4044
4045         Throughout: assorted docs improvements
4046
4047 2003-04-18  Havoc Pennington  <hp@pobox.com>
4048
4049         * glib/dbus-gmain.c: adapt to watch changes
4050
4051         * bus/bus.c, bus/activation.c, etc.: adjust to watch changes
4052
4053         * dbus/dbus-server.h: remove dbus_server_handle_watch
4054
4055         * dbus/dbus-connection.h: remove dbus_connection_handle_watch
4056
4057         * dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
4058         like DBusTimeout, so we don't need dbus_connection_handle_watch
4059         etc.
4060
4061 2003-04-17  Havoc Pennington  <hp@redhat.com>
4062
4063         * dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
4064         database usage so it all goes via the DBusUserDatabase cache.
4065
4066 2003-04-17  Havoc Pennington  <hp@redhat.com>
4067
4068         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
4069         there was an OOM watch we skipped, we always return TRUE so we
4070         iterate again to have a look at it again. Fixes test suite hang.
4071         Code rearrangement also lets us lose some memset and only iterate
4072         over callbacks once.
4073
4074         * bus/driver.c (bus_driver_handle_message): sense of test for
4075         reply was backward
4076
4077 2003-04-16  Havoc Pennington  <hp@pobox.com>
4078
4079         * doc/dbus-specification.sgml: make spec say serials are unsigned
4080
4081         * dbus/dbus-message.h: change message serials to unsigned
4082
4083         * dbus/dbus-connection.c: adapt to message serials being unsigned
4084
4085 2003-04-15  Havoc Pennington  <hp@pobox.com>
4086
4087         * bus/bus.c: create and keep around a shared DBusUserDatabase
4088         object.
4089
4090         * bus/connection.c (bus_connection_get_groups): don't cache
4091         groups for user in the connection object, since user database
4092         object now does that.
4093
4094 2003-04-16  Havoc Pennington  <hp@redhat.com>
4095
4096         * dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
4097         list of size counters
4098         (_dbus_message_loader_putback_message_link): put back a popped link
4099
4100         * dbus/dbus-connection.c
4101         (dbus_connection_set_max_live_messages_size): rename
4102         max_received_size
4103         (dbus_connection_get_outgoing_size): get size of outgoing
4104         queue
4105         (_dbus_connection_set_connection_counter): remove this cruft
4106
4107 2003-04-14  Havoc Pennington  <hp@redhat.com>
4108
4109         * dbus/dbus-userdb.c: user database abstraction, mostly to get
4110         caching, but at some point we might want to be able to use a
4111         different database.
4112
4113         * bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
4114         SHA1 conf file to test the sha1 auth mechanism, since the regular
4115         test always uses EXTERNAL when available.
4116
4117         * configure.in,
4118         test/data/valid-config-files/debug-allow-all-sha1.conf.in:
4119         add conf file that requires use of sha1 auth
4120
4121 2003-04-13  Havoc Pennington  <hp@pobox.com>
4122
4123         * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs
4124         from Philip Blundell to send messages and monitor them.
4125
4126 2003-04-13  Havoc Pennington  <hp@pobox.com>
4127
4128         * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
4129         callbacks
4130
4131         * test/data/valid-config-files/debug-allow-all.conf.in: allow all
4132         users
4133
4134         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
4135         fix to only recover unused bytes if we're already authenticated
4136         (_dbus_transport_get_is_authenticated): fix to still mark us
4137         authenticated if there are unused bytes.
4138
4139         * bus/dispatch.c: implement security policy checking
4140
4141         * bus/connection.c (bus_transaction_send_from_driver): new
4142
4143         * bus/bus.c (bus_context_check_security_policy): new
4144
4145         * bus/dispatch.c (send_service_nonexistent_error): delete this,
4146         now we just set the DBusError and it gets converted to an error
4147         reply.
4148
4149         * bus/connection.c (allow_user_function): enable code using actual
4150         data from the config file
4151
4152         * bus/policy.c (list_allows_user): handle wildcard rules for
4153         user/group connection perms
4154
4155 2003-04-13  Havoc Pennington  <hp@pobox.com>
4156
4157         * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules
4158
4159         * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function
4160
4161         * bus/policy.c (bus_policy_append_mandatory_rule)
4162         (bus_policy_append_default_rule, bus_policy_append_user_rule)
4163         (bus_policy_append_group_rule): new functions
4164
4165 2003-04-12  Havoc Pennington  <hp@pobox.com>
4166
4167         * bus/config-parser.c (bus_config_parser_new): fix a memleak
4168
4169         * dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
4170         the pid/gid/uid, just for paranoia.
4171
4172         * test/break-loader.c (randomly_do_n_things): find a byte
4173         containing a type code, and randomly change it to a different
4174         type code.
4175
4176 2003-04-12  Havoc Pennington  <hp@pobox.com>
4177
4178         * bus/policy.h: change BusPolicy to be the thing from the config
4179         file, and rename old BusPolicy to BusClientPolicy
4180
4181         * bus/bus.c, bus/connection.c, bus/config-parser.c: change to
4182         match change in how policy works
4183
4184         * dbus/dbus-internals.h: mark assert_not_reached as
4185         __attribute((noreturn))__
4186
4187 2003-04-11  Havoc Pennington  <hp@redhat.com>
4188
4189         * doc/dbus-specification.sgml: fix a spot with the wrong name for
4190         the broadcast service. Use boolean return for ServiceExists.
4191
4192 2003-04-11  Havoc Pennington  <hp@redhat.com>
4193
4194         * configure.in: add another directory to look for qt in.
4195
4196 2003-04-11  Havoc Pennington  <hp@redhat.com>
4197
4198         * AUTHORS: add Colin Walters
4199
4200 2003-04-11  Havoc Pennington  <hp@redhat.com>
4201
4202         * NEWS: update
4203
4204         * configure.in: 0.9
4205
4206 2003-04-11  Havoc Pennington  <hp@redhat.com>
4207
4208         * bus/messagebus.in: remove pid file when stopping the
4209         message bus, since the bus won't have privileges to remove it
4210         itself.
4211
4212 2003-04-11  Havoc Pennington  <hp@redhat.com>
4213
4214         * bus/bus.c (bus_context_new): move credentials change after
4215         creating pidfile
4216
4217 2003-04-11  Havoc Pennington  <hp@pobox.com>
4218
4219         * test/decode-gcov.c: add "below average functions" to the
4220         coverage report, and change how some of the code works.
4221
4222         * bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
4223         not in the coverage stats.
4224
4225         * test/test-service.c (main): use _dbus_verbose not fprintf in a
4226         couple places so running the test suite doesn't result in megaspam.
4227
4228 2003-04-11  Havoc Pennington  <hp@pobox.com>
4229
4230         * bus/dispatch.c (check_existent_service_activation): accept a no
4231         memory error in a place we didn't before
4232
4233         * bus/test.c (bus_test_run_everything): remove hacky "do it twice
4234         in case the first one failed," since the test suite is less
4235         broken now.
4236
4237 2003-04-10  Havoc Pennington  <hp@pobox.com>
4238
4239         * bus/dispatch.c (check_segfault_service_activation): add test
4240         for launching an executable that just crashes.
4241
4242         * test/test-segfault.c (main): try setting coredumpsize to 0 so we
4243         don't leave a million cores. We'll see how portable this is.
4244
4245 2003-04-10  Havoc Pennington  <hp@pobox.com>
4246
4247         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
4248         the possible parent failures before we fork, so that we don't
4249         fail to create a babysitter after creating the child.
4250
4251         * bus/activation.c (bus_activation_activate_service): kill child
4252         if we don't successfully complete the activation.
4253
4254 2003-04-10  Havoc Pennington  <hp@redhat.com>
4255
4256         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
4257         the connection if it's disconnected
4258
4259         * bus/activation.c (bus_activation_service_created): use new
4260         transaction features to roll back removal of pending activation if
4261         we don't successfully create the service after all. Don't remove
4262         pending activation if the function fails.
4263
4264         * dbus/dbus-list.c (_dbus_list_insert_before_link)
4265         (_dbus_list_insert_after_link): new code to facilitate
4266         services.c fixes
4267
4268         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
4269         new functionality, so we can preallocate the ability to insert
4270         into a hash table.
4271
4272         * bus/connection.c (bus_transaction_add_cancel_hook): new function
4273         allowing us to put custom hooks in a transaction to be used for
4274         cancelling said transaction
4275
4276         * doc/dbus-specification.sgml: add some discussion of secondary
4277         service owners, and disallow zero-length service names
4278
4279         * bus/services.c (bus_registry_acquire_service): new function,
4280         splits out part of bus_driver_handle_acquire_service() and fixes
4281         a bug where we didn't remove the service doing the acquiring
4282         from the secondary queue if we failed to remove the current owner
4283         from the front of the queue.
4284
4285 2003-04-10  Alexander Larsson  <alexl@redhat.com>
4286
4287         * doc/dbus-specification.sgml:
4288         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
4289
4290 2003-04-10  Alexander Larsson  <alexl@redhat.com>
4291
4292         * bus/.cvsignore:
4293         * glib/.cvsignore:
4294         * test/.cvsignore:
4295         Added files to cvsignore
4296
4297         * dbus/dbus-message.h:
4298         * dbus/dbus-message.c: (dbus_message_iter_get_named):
4299         Make get_named() take two out argument and return a boolean.
4300         (dbus_message_iter_get_args_valist):
4301         Update usage of get_named().
4302         (dbus_message_iter_append_byte):
4303         Fix typo
4304         (dbus_message_iter_append_named)
4305         Fix typo
4306         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
4307         More tests.
4308
4309 2003-04-10  Alexander Larsson  <alexl@redhat.com>
4310
4311         * dbus/dbus-marshal.[ch]:
4312         Add array_type_pos argument to _dbus_marshal_validate_arg.
4313         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
4314
4315         * dbus/dbus-message.[ch]:
4316         Multi-dimensional arrays have full type specification in the
4317         outermost array. Iter code re-arranged to handle this.
4318         Added some more iter tests.
4319
4320         * doc/dbus-specification.sgml:
4321         Add me to authors.
4322         Remove old FIXME.
4323         Update new array encoding description.
4324         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
4325
4326         * test/data/invalid-messages/array-with-mixed-types.message:
4327         * test/data/valid-messages/array-of-array-of-uint32.message:
4328         Change to the new array format.
4329
4330         * test/data/invalid-messages/too-short-dict.message:
4331         Fix bug in test.
4332
4333         * test/data/valid-messages/recursive-types.message:
4334         Fix up and extend test.
4335
4336 2003-04-10  Havoc Pennington  <hp@pobox.com>
4337
4338         * bus/dispatch.c: lots of fixes
4339
4340         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
4341         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
4342         that was crack, broke the test service.
4343
4344         * dbus/dbus-transport.c (_dbus_transport_open): fix error
4345         handling to avoid piling up errors if we get a failure on the
4346         first address.
4347
4348         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
4349         pid in assertion failures.
4350
4351         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
4352         to some fixed size of file descriptor array. Don't return TRUE
4353         anytime a timeout exists, that led to lots of busy loop silliness
4354         in the tests.
4355
4356 2003-04-09  Havoc Pennington  <hp@redhat.com>
4357
4358         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
4359         I'd checked this in earlier but hadn't.
4360
4361 2003-04-09  Havoc Pennington  <hp@redhat.com>
4362
4363         * bus/dispatch.c (bus_dispatch_test): get a bit further through
4364         the activation test (man this is getting old!)
4365
4366 2003-04-09  Havoc Pennington  <hp@redhat.com>
4367
4368         * test/test-utils.c: use dispatch status function to fix this up
4369
4370         * bus/connection.c (connection_watch_callback): don't dispatch
4371         from here
4372         (connection_timeout_callback): don't dispatch from here
4373         (bus_connections_setup_connection): set the dispatch status function
4374         (bus_connection_disconnected): unset it
4375
4376         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
4377         used to add a connection to be dispatched
4378         (_dbus_loop_iterate): do the dispatching at the end of each
4379         iteration
4380
4381         * dbus/dbus-connection.c
4382         (dbus_connection_set_dispatch_status_function): new function
4383         allowing us to fix up main loop usage
4384         (_dbus_connection_last_unref): free all the various function
4385         user data
4386         (dbus_connection_dispatch): call the DispatchStatusFunction
4387         whenever this function returns
4388         (dbus_connection_handle_watch): call DispatchStatusFunction
4389         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
4390         (reply_handler_timeout): call DispatchStatusFunction
4391         (dbus_connection_flush): call DispatchStatusFunction
4392
4393 2003-04-09  Havoc Pennington  <hp@redhat.com>
4394
4395         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
4396         a memory leak
4397
4398         * bus/dispatch.c (check_service_activated): fix bug in test
4399
4400         * dbus/dbus-mainloop.c (check_timeout): fix this up
4401
4402         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
4403         verbose output so we can sort out output from different processes,
4404         e.g. in the activation case.
4405
4406 2003-04-08  Colin Walters  <walters@gnu.org>
4407
4408         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
4409         the pid file.
4410         (bus_context_new): Set it.
4411         (bus_context_unref): Use it to delete the pid file.
4412
4413 2003-04-08  Havoc Pennington  <hp@redhat.com>
4414
4415         * test/data/invalid-messages/array-with-mixed-types.message:
4416         regression test that fails for the moment
4417
4418         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
4419         tests for convenience
4420
4421         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
4422         array of nil, it broke things.
4423
4424         * test/data/invalid-messages/array-of-nil.message: regression test
4425
4426         * test/data/valid-messages/array-of-array-of-uint32.message:
4427         happened to write this so added it to suite
4428
4429 2003-04-08  Havoc Pennington  <hp@redhat.com>
4430
4431         * bus/driver.c (bus_driver_handle_acquire_service): init
4432         retval/reply before checking name
4433
4434         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
4435         recursion depth argument
4436
4437         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
4438         in the public struct for future extension
4439
4440         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
4441         typo
4442
4443         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
4444         message
4445
4446         * doc/dbus-specification.sgml: fix typo
4447
4448 2003-04-08  Alexander Larsson  <alexl@redhat.com>
4449
4450         Implemented recursive types, named types and new-style iters
4451
4452         * bus/driver.c:
4453         * glib/test-thread-client.c: (thread_func):
4454         * glib/test-thread-server.c: (handle_test_message):
4455         * test/test-service.c: (handle_echo):
4456         Update to new api
4457
4458         * dbus/Makefile.am:
4459         * dbus/dbus-dict.c:
4460         * dbus/dbus-dict.h:
4461         * dbus/dbus.h
4462         Remove DBusDict
4463
4464         * dbus/dbus-internals.c: (_dbus_type_to_string):
4465         Update for new types.
4466
4467         * dbus/dbus-marshal.[ch]:
4468         Implement recursive types and the new marshalling format.
4469         Remove hardcoded dict marshalling.
4470         Marshal named types.
4471
4472         * dbus/dbus-message-builder.c:
4473         Add BYTE_ARRAY.
4474         Remove references to old types
4475
4476         * dbus/dbus-message.[ch]:
4477         New non-refcounted iter API that supports recursive iters.
4478         Use iters for appending, including support for recursive
4479         iters.
4480         Add byte and named type support.
4481         Update everything to new marshalling formats.
4482         Add tests for new API.
4483
4484         * dbus/dbus-protocol.h:
4485         Remove old array types.
4486         Add types: BYTE, ARRAY, DICT, NAMED
4487
4488         * dbus/dbus-string.c:
4489         * dbus/dbus-sysdeps.c:
4490         Make parse_double locale safe.
4491
4492         * dbus/dbus-test-main.c:
4493         Call setlocale.
4494
4495         * dbus/dbus-test.c:
4496         Kill dict test
4497
4498         * doc/dbus-specification.sgml:
4499         Update spec
4500
4501         * test/data/incomplete-messages/missing-body.message:
4502         * test/data/invalid-messages/bad-boolean.message:
4503         * test/data/invalid-messages/bad-boolean-array.message:
4504         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
4505         * test/data/invalid-messages/boolean-has-no-value.message-raw:
4506         * test/data/invalid-messages/too-short-dict.message:
4507         * test/data/valid-messages/dict-simple.message:
4508         * test/data/valid-messages/dict.message:
4509         * test/data/valid-messages/emptiness.message:
4510         * test/data/valid-messages/lots-of-arguments.message:
4511         * test/data/valid-messages/no-padding.message:
4512         * test/data/valid-messages/recursive-types.message:
4513         Add missing NAME fields
4514         Fix up dicts & arrays
4515
4516         * test/data/invalid-messages/dict-with-nil-value.message:
4517         Removed, this is not invalid anymore.
4518
4519         * test/data/valid-messages/recursive-types.message:
4520         Add new test for deeply recursive types.
4521
4522 2003-04-07  Havoc Pennington  <hp@pobox.com>
4523
4524         * bus/driver.c (bus_driver_handle_acquire_service): return an
4525         error if you try to acquire a service that starts with ':'
4526
4527 2003-04-07  Havoc Pennington  <hp@redhat.com>
4528
4529         * doc/dbus-specification.sgml: require that base service names
4530         start with ':' and that the base service is created/deleted
4531         as first and last things a connection does on the bus
4532
4533         * bus/dispatch.c (check_existent_service_activation): lots more
4534         work on the activation test; it doesn't fully pass yet...
4535
4536         * test/test-service.c (main): fix so we don't memleak the
4537         connection to the message bus
4538         (filter_func): accept a message asking us to exit
4539
4540 2003-04-06  Havoc Pennington  <hp@pobox.com>
4541
4542         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
4543         from Colin Walters
4544
4545         * configure.in: fixes to Qt detection from Colin Walters
4546
4547         * doc/Makefile.am: Only remove generated docbook dirs if they
4548         exist, from Colin Walters
4549
4550         * dbus/dbus-bus.c: change how we set well-known connections to
4551         NULL, so that it works if a single connection is stored in
4552         two well-known array slots.
4553
4554         * test/Makefile.am: remove a lot of stuff that isn't immediately
4555         useful, it's in CVS history if we want it.
4556
4557         * test/test-service.c: use dbus-mainloop instead of that
4558         watch.[hc] crack
4559
4560 2003-04-06  Havoc Pennington  <hp@pobox.com>
4561
4562         * dbus/Makefile.am: split lists of sources into stuff that goes in
4563         the library, util functions that go in the lib and are also used
4564         elsewhere, and util functions that are used in tests/daemon but
4565         don't go in the lib.
4566
4567         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc]
4568         here so it can be used in test binaries also
4569
4570 2003-04-06  Havoc Pennington  <hp@pobox.com>
4571
4572         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
4573         here in the parent process, so we can return an error if it
4574         fails. Also, move some of the code into the child so the parent
4575         is less hosed if we fail midway through.
4576
4577         * bus/bus.c (bus_context_new): move pidfile detection further up
4578         in the function, before we start overwriting sockets and such.
4579
4580         * bus/messagebus.in: adjust this a bit, not sure if it will work.
4581
4582         * configure.in: add --with-system-pid-file and --with-system-socket
4583
4584 2003-04-06  Colin Walters  <walters@verbum.org>
4585
4586         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
4587
4588         * bus/system.conf.in: Declare a pidfile.
4589
4590         * bus/bus.c (bus_context_new): Test for an existing pid file, and
4591         create one (if appropriate).
4592
4593         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
4594         (struct BusConfigParser) [pidfile]: New.
4595         (element_type_to_name, merge_included, start_busconfig_child)
4596         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
4597         (bus_config_parser_unref): Free it.
4598         (bus_config_parser_get_pidfile): New function.
4599
4600         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
4601
4602         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
4603
4604         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
4605
4606         * dbus/dbus-sysdeps.h: Prototype it.
4607
4608 2003-04-06  Havoc Pennington  <hp@pobox.com>
4609
4610         * bus/bus.c (bus_context_new): print the address in here, rather
4611         than in main(), because we need to do it before forking the daemon
4612
4613         * bus/dispatch.c (send_service_nonexistent_error): set the sender
4614         on the service nonexistent error
4615
4616         * bus/driver.c (bus_driver_handle_acquire_service): set the
4617         sender on the AcquireService reply
4618
4619         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
4620         server also listen on a UNIX socket so services can connect to it.
4621
4622 2003-04-06  Havoc Pennington  <hp@pobox.com>
4623
4624         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done
4625         so it detects deadlocks and also we actually init threads when
4626         debugging.
4627
4628 2003-04-06  Havoc Pennington  <hp@pobox.com>
4629
4630         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
4631         save the domain socket name, and unlink it when we disconnect the
4632         server. Means that at least when we exit normally, we won't leave
4633         a bunch of junk in /tmp
4634
4635         * dbus/dbus-transport-unix.c
4636         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
4637         memory management). (I was making a real change here but then
4638         didn't)
4639
4640 2003-04-06  Havoc Pennington  <hp@pobox.com>
4641
4642         * bus/bus.c (bus_context_new): fix wrong handling of
4643         server_data_slot_unref() in the error case.
4644
4645         * dbus/dbus-internals.h (_dbus_assert): change so it passes
4646         "(condition) != 0" to _dbus_real_assert so that
4647         "_dbus_assert (pointer)" doesn't cause a warning
4648
4649         * bus/main.c (main): accept --print-address option to print out
4650         the message bus address
4651
4652         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
4653
4654         * dbus/dbus-transport.c (_dbus_transport_open): special error for
4655         "tmpdir" option to unix: address on client side
4656
4657         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option
4658         to unix: address
4659
4660         * configure.in (TEST_SOCKET_DIR): locate a temporary directory
4661         we can use to create sockets in the test suite.
4662
4663         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
4664         cleanly. To be used for testing.
4665
4666         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
4667
4668         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
4669
4670         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
4671         handle trying to call this when there's no servers active
4672
4673 2003-04-05  Havoc Pennington  <hp@pobox.com>
4674
4675         * NEWS: update
4676
4677         * configure.in: 0.8
4678
4679 2003-04-05  Havoc Pennington  <hp@pobox.com>
4680
4681         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't
4682         crash on startup. Need to get "try starting the daemon"
4683         in the test suite I guess. ;-)
4684
4685         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
4686         tracked the number of open connections; it's better done in
4687         application-specific code as you want it to span all servers etc.
4688
4689 2003-04-05  Havoc Pennington  <hp@pobox.com>
4690
4691         * bus/Makefile.am (install-data-hook): add missing DESTDIR,
4692         patch from Colin Walters
4693
4694 2003-04-05  Havoc Pennington  <hp@pobox.com>
4695
4696         * doc/config-file.txt (Elements): fix docs of <auth> to reflect
4697         reality; in fact multiple mechanisms are allowed.
4698
4699         * dbus/dbus-internals.c (_dbus_real_assert)
4700         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
4701         _dbus_assert_not_reached() into functions, so that they don't show
4702         up in basic block counts for test coverage, and don't use up as
4703         much disk space. Does mean slower execution speed though, so
4704         assumes --disable-asserts is the normal production case.
4705
4706 2003-04-05  Havoc Pennington  <hp@pobox.com>
4707
4708         * test/Makefile.am (dist-hook): also dist *.in files
4709
4710         * NEWS: update
4711
4712         * configure.in: 0.7
4713
4714 2003-04-05  Havoc Pennington  <hp@pobox.com>
4715
4716         * dbus/dbus-string.c: docs warning
4717
4718         * dbus/dbus-spawn.c: missing docs
4719
4720         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
4721
4722 2003-04-05  Havoc Pennington  <hp@pobox.com>
4723
4724         * bus/loop.c (bus_loop_iterate): fix the timeout code, using
4725         magic from GLib
4726
4727         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
4728         to -1 once we've reaped the babysitter
4729         (_dbus_babysitter_handle_watch): do as much work as we can, not
4730         just one go of it
4731
4732         * bus/activation.c: add code using DBusBabysitter so that we
4733         handle it when a service fails to start up properly.
4734         (bus_activation_service_created): don't remove the activation
4735         entries as we go, just let them get removed when we free the pending
4736         activation. Unref reply messages after sending them.
4737
4738 2003-04-05  Havoc Pennington  <hp@pobox.com>
4739
4740         * test/decode-gcov.c (main): print per-directory stats in the report
4741
4742         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
4743
4744 2003-04-05  Havoc Pennington  <hp@pobox.com>
4745
4746         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
4747
4748         * test/decode-gcov.c: hack up a little program to suck data
4749         out of gcov files. Yes this is sort of silly.
4750
4751         * configure.in: define something in config.h and do an
4752         AM_CONDITIONAL when gcov is enabled
4753
4754 2003-04-04  Havoc Pennington  <hp@redhat.com>
4755
4756         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
4757         return a "babysitter" object that is used to monitor the status of
4758         the spawned process and reap it when required.
4759
4760         * test/test-segfault.c, test/test-exit.c,
4761         test/test-sleep-forever.c: binaries that do various lame things,
4762         used in the test suite.
4763
4764         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
4765
4766 2003-04-03  Havoc Pennington  <hp@pobox.com>
4767
4768         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file
4769         in preparation for modifying it, dbus-sysdeps is getting
4770         a bit unmanageable.
4771
4772 2003-04-03  Havoc Pennington  <hp@redhat.com>
4773
4774         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
4775         have multiple ones
4776
4777         * bus/*.[hc]: adapt to mainloop change
4778
4779 2003-04-03  Havoc Pennington  <hp@redhat.com>
4780
4781         * bus/activation.c (load_directory): fix up memleaks
4782         (bus_activation_entry_free): free the entry
4783
4784         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
4785         we get one from the message bus; fix memleaks.
4786
4787         * dbus/dbus-message.c (dbus_set_error_from_message): new function
4788
4789 2003-04-03  Havoc Pennington  <hp@pobox.com>
4790
4791         * bus/config-parser.c (bus_config_parser_unref): free
4792         list of mechanisms, bug discovered by test suite enhancements
4793         (putting system.conf and session.conf into suite)
4794
4795         * test/Makefile.am, test/test-service.c: add placeholder for a
4796         test service that we'll activate as part of test suite. Doesn't
4797         do anything yet.
4798
4799         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by
4800         setting NULL value, and use system malloc not dbus_malloc()
4801         when we have unavoidable memleakage.
4802
4803         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
4804         didn't work, and support DBUS_BUS_ACTIVATION.
4805
4806         * bus/activation.c (child_setup): pass our well-known bus type to
4807         the child
4808
4809         * bus/config-parser.c: support <type> to specify well-known type
4810
4811         * doc/dbus-specification.sgml: document the env variables to
4812         locate well-known buses and find service activator
4813
4814 2003-04-02  Havoc Pennington  <hp@redhat.com>
4815
4816         * test/Makefile.am (all-local): add a rule to copy tests to
4817         builddir, so we can have generated tests. Use this to remove the
4818         silly hack for testing system.conf and session.conf. Will use this
4819         shortly to generate .service files pointing to test binaries.
4820
4821 2003-04-02  Havoc Pennington  <hp@redhat.com>
4822
4823         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
4824         current alloc and needed new length, not max of the doubled
4825         allocation and needed new length. Also, when building tests,
4826         don't do the double-allocation stuff, just realloc every time.
4827
4828 2003-04-02  Havoc Pennington  <hp@redhat.com>
4829
4830         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
4831         in error messages
4832         (_dbus_string_get_dirname): new
4833         (_dbus_sysdeps_test): new
4834         (_dbus_directory_open): include dirnames in error messages
4835
4836         * bus/config-parser.c: interpret <include> and <includedir> and
4837         <servicedir> relative to config file location if the given
4838         filename is not absolute.
4839
4840         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
4841
4842 2003-04-02  Havoc Pennington  <hp@redhat.com>
4843
4844         * bus/connection.c (bus_transaction_send_error_reply): set sender
4845         service for the error, and unref the reply on success
4846
4847         * bus/activation.c: convert to use BusTransaction so OOM can be
4848         handled correctly
4849         (bus_activation_service_created): set sender of the message
4850
4851 2003-04-01  Havoc Pennington  <hp@redhat.com>
4852
4853         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
4854         <includedir> (at least mostly)
4855
4856         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
4857         first, then the user ID
4858
4859 2003-04-01  Havoc Pennington  <hp@pobox.com>
4860
4861         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
4862         function
4863
4864         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
4865
4866         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
4867
4868         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
4869         socket 0777, and unlink any existing socket.
4870
4871         * bus/bus.c (bus_context_new): change our UID/GID and fork if
4872         the configuration file so specifies; set up auth mechanism
4873         restrictions
4874
4875         * bus/config-parser.c (bus_config_parser_content): add support
4876         for <fork> option and fill in code for <auth>
4877
4878         * bus/system.conf.in: add <fork/> to default configuration,
4879         and limit auth mechanisms to EXTERNAL
4880
4881         * doc/config-file.txt (Elements): add <fork>
4882
4883         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
4884         (_dbus_change_identity): new function
4885
4886 2003-03-31  Havoc Pennington  <hp@redhat.com>
4887
4888         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
4889         (_dbus_listen_unix_socket): fix off-by-one error in null
4890         termination spotted by Nalin
4891
4892 2003-03-31  Havoc Pennington  <hp@redhat.com>
4893
4894         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
4895         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
4896         having a real home directory available.
4897
4898 2003-03-31  Havoc Pennington  <hp@redhat.com>
4899
4900         * bus/Makefile.am (install-data-hook): create /var/run/dbus
4901
4902         * bus/messagebus.in: add init script for Red Hat /etc/init.d
4903
4904         * configure.in: add support for specifying a style of init script
4905         to install
4906
4907 2003-03-31  Havoc Pennington  <hp@redhat.com>
4908
4909         Fix some annoying DBusString API and fix all affected code.
4910
4911         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
4912         max_length argument
4913         (_dbus_string_get_data): change to return string instead of using
4914         an out param
4915         (_dbus_string_get_const_data): ditto
4916         (_dbus_string_get_data_len): ditto
4917         (_dbus_string_get_const_data_len): ditto
4918
4919 2003-03-31  Havoc Pennington  <hp@redhat.com>
4920
4921         * bus/main.c (main): fix up the command line arguments to be nicer
4922
4923 2003-03-31  Havoc Pennington  <hp@redhat.com>
4924
4925         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
4926         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same
4927         final location that lands in the config file
4928
4929         * bus/config-loader-expat.c (bus_config_load): fix type of
4930         XML_Parser variable
4931
4932         * doc/TODO: remove TODO item for dbus_bus_get()
4933
4934         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
4935
4936 2003-03-31  Havoc Pennington  <hp@pobox.com>
4937
4938         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
4939         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
4940         argument since they are always client side
4941
4942         * dbus/dbus-server.c (dbus_server_get_address): new function
4943
4944         * bus/main.c (main): take the configuration file as an argument.
4945
4946         * test/data/valid-config-files/debug-allow-all.conf: new file to
4947         use with dispatch.c tests for example
4948
4949         * bus/test-main.c (main): require test data dir
4950
4951         * bus/bus.c (bus_context_new): change this to take a
4952         configuration file name as argument
4953
4954         * doc/config-file.txt (Elements): add <servicedir>
4955
4956         * bus/system.conf, bus/session.conf: new files
4957
4958         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
4959         well-known socket if none set
4960
4961         * configure.in: create system.conf and session.conf
4962
4963 2003-03-30  Havoc Pennington  <hp@pobox.com>
4964
4965         * bus/config-parser.c: hacking
4966
4967         * dbus/dbus-memory.c: don't use DBusList for the list of stuff
4968         to shut down, since it could cause weirdness with the DBusList
4969         lock
4970
4971         * dbus/dbus-list.c (_dbus_list_test): add tests for the
4972         link-oriented stack routines
4973         (alloc_link): free the mempool if the first alloc from it fails
4974
4975         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
4976
4977         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
4978         from GLib
4979         (_dbus_string_skip_white): new
4980
4981         * doc/config-file.txt (Elements): add <includedir>
4982
4983 2003-03-28  Havoc Pennington  <hp@pobox.com>
4984
4985         * dbus/dbus-string.c (_dbus_string_copy_data_len)
4986         (_dbus_string_copy_data): new functions
4987
4988 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
4989
4990         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
4991         * dbus/dbus-bus.h:
4992         Add dbus_bus_get.
4993
4994         * dbus/dbus-memory.c:
4995         Fix a doc comment.
4996
4997 2003-03-28  Havoc Pennington  <hp@pobox.com>
4998
4999         * bus/test.c (bus_test_flush_bus): remove the sleep from here,
5000         I think it may have just been superstition. Not sure.
5001
5002         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
5003         failures that were not being handled.
5004
5005         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
5006
5007         * dbus/dbus-memory.c: add ability to set number of mallocs in a
5008         row that will fail on out-of-memory.
5009
5010         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
5011         function for testing out-of-memory handling.
5012
5013         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
5014         allocation functions, they do map exactly to the expat ones.
5015
5016 2003-03-27  Havoc Pennington  <hp@redhat.com>
5017
5018         * bus/config-loader-libxml.c (bus_config_load): add another error
5019         check
5020
5021 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
5022
5023         * doc/TODO:
5024         Add note about automatic service activation.
5025
5026         * doc/dbus-specification.sgml:
5027         Rename the specification and clarify a few things.
5028
5029 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
5030
5031         * Doxyfile.in:
5032         * dbus/dbus-address.c:
5033         * dbus/dbus-dict.c:
5034         * dbus/dbus-marshal.c:
5035         * dbus/dbus-server-debug-pipe.c:
5036         * dbus/dbus-transport-unix.c:
5037         Fix documentation warnings.
5038
5039 2003-03-26  Havoc Pennington  <hp@pobox.com>
5040
5041         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
5042         after every test so it's quick and easy to see which leaked, and
5043         so we test multiple dbus_shutdown() calls
5044
5045         * configure.in: change configure.in XML stuff to also support
5046         expat
5047
5048         * config-loader-libxml.c: some hacking
5049
5050         * config-loader-expat.c: some hacking
5051
5052         * config-parser.c: some hacking, plus tests
5053
5054 2003-03-25  Havoc Pennington  <hp@redhat.com>
5055
5056         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
5057
5058         * configure.in: add --with-xml option to specify XML library,
5059         right now only libxml is supported.
5060
5061         * bus/config-loader-libxml.c, config-parser.c: sync some minor
5062         nonworking code between home and work, still just stubs
5063
5064 2003-03-24  Havoc Pennington  <hp@redhat.com>
5065
5066         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
5067         file
5068
5069         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow
5070         NULL argument for "message" if the error is a well-known one,
5071         fill in a generic message in this case.
5072
5073         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
5074         favor of DBusError
5075
5076         * bus/test.c (bus_test_flush_bus): add
5077
5078         * bus/policy.c (bus_policy_test): test code stub
5079
5080 2003-03-24  Havoc Pennington  <hp@pobox.com>
5081
5082         * bus/connection.c (bus_connections_setup_connection): set up
5083         the "can this user connect" function, but it always returns
5084         TRUE until we have a config file parser so we can have a config
5085         file that allows connections.
5086
5087 2003-03-23  Havoc Pennington  <hp@pobox.com>
5088
5089         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with
5090         DBUS_BUILD_TESTS, actually alloc/free a block of memory for
5091         the mutex, so we can check for proper memory management
5092         and OOM handling.
5093
5094         * dbus/dbus-dataslot.c: remove the mutex from
5095         DBusDataSlotAllocator and lock it manually when using it,
5096         to simplify fitting it into the global slots framework.
5097
5098         * dbus/dbus-threads.c (init_static_locks): rework how we're
5099         handling global locks so they are easily shut down.
5100
5101         * bus/policy.c (bus_policy_append_rule): fix
5102
5103         * bus/test-main.c (main): check for memleaks
5104
5105         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make
5106         test suite check for memleaks
5107
5108         * dbus/dbus-memory.c: add support in test mode for tracking
5109         number of outstanding blocks
5110
5111 2003-03-23  Havoc Pennington  <hp@pobox.com>
5112
5113         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
5114         policies code
5115
5116         * dbus/dbus-hash.h: add ULONG hash keys
5117
5118         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
5119         (_dbus_get_group_id): new function
5120
5121 2003-03-20  Havoc Pennington  <hp@redhat.com>
5122
5123         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
5124         new function
5125         (dbus_connection_get_unix_user): new function
5126
5127 2003-03-20  Havoc Pennington  <hp@pobox.com>
5128
5129         * bus/connection.c (bus_connection_send_oom_error): assert that
5130         message has a sender
5131         (connection_execute_transaction): ditto
5132         (bus_connection_preallocate_oom_error): fix to set the sender, and
5133         set recipient to the destination service, not the bus driver
5134
5135         * bus/policy.c: hacking
5136
5137         * dbus/dbus-message.c (dbus_message_service_is): new function
5138         (dbus_message_sender_is): new
5139
5140 2003-03-19  Havoc Pennington  <hp@redhat.com>
5141
5142         * bus/policy.c: start sketching code for policy restrictions on
5143         what connections can do.
5144
5145 2003-03-18  Havoc Pennington  <hp@redhat.com>
5146
5147         * doc/TODO: some notes on high-level todo items. Little nitpick
5148         stuff is all in @todo, so no need to add it here.
5149
5150         * doc/config-file.txt: some notes on how config file might look
5151
5152 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
5153
5154         * configure.in: 0.6
5155
5156         * NEWS: Update.
5157
5158 2003-03-17  Havoc Pennington  <hp@redhat.com>
5159
5160         * dbus/dbus-internals.h: add gcc attributes so that
5161         our printf-style functions warn on bad arguments to
5162         format
5163
5164         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf
5165         format bug
5166
5167         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
5168         printf format bug
5169
5170 2003-03-17  Havoc Pennington  <hp@redhat.com>
5171
5172         * bus/test-main.c (main): make it print something as it runs
5173         so make check doesn't look stuck
5174
5175         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove
5176         from CVS, now obsolete
5177
5178 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
5179
5180         * bus/dispatch.c: (bus_dispatch):
5181         Refetch the service name since it may have been reallocated
5182         when dbus_message_set_sender was called.
5183
5184         * dbus/dbus-sysdeps.c: (_dbus_accept):
5185         Add address and address length variables and use them to stop
5186         valgrind from complaining.
5187
5188 2003-03-17  Havoc Pennington  <hp@pobox.com>
5189
5190         All tests pass, no memleaks, no valgrind complaints.
5191
5192         * bus/test.c: refcount handler_slot
5193
5194         * bus/connection.c (bus_connections_new): refcount
5195         connection_data_slot
5196
5197         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
5198         bytes so that auth scripts pass.
5199
5200         * bus/dispatch.c: init message_handler_slot so it gets allocated
5201         properly
5202
5203         * bus/dispatch.c (message_handler_slot_ref): fix memleak
5204
5205         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
5206         dealloc server_pipe_hash when no longer used for benefit of
5207         leak checking
5208
5209         * dbus/dbus-auth.c (process_command): memleak fix
5210
5211         * bus/dispatch.c (check_hello_message): memleak fix
5212
5213 2003-03-16  Havoc Pennington  <hp@pobox.com>
5214
5215         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
5216
5217 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
5218
5219         * bus/activation.c (bus_activation_activate_service): Append
5220         the pending activation entry to the list of pending activations.
5221
5222 2003-03-16  Havoc Pennington  <hp@pobox.com>
5223
5224         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
5225         connections
5226
5227         * dbus/dbus-address.c (create_entry): fix OOM handling when
5228         failing to alloc entry->method
5229
5230 2003-03-16  Havoc Pennington  <hp@pobox.com>
5231
5232         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
5233         the watch
5234
5235         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
5236         add some missing dbus_set_result
5237
5238         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to
5239         alloc the DBusMessageHandler
5240
5241         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
5242         the transport here, since we call this from the finalizer; it
5243         resulted in a double-finalize.
5244
5245         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
5246         where we tried to use transport->connection that was NULL,
5247         happened when transport was disconnected early on due to OOM
5248
5249         * bus/*.c: adapt to handle OOM for watches/timeouts
5250
5251         * dbus/dbus-transport-unix.c: port to handle OOM during
5252         watch handling
5253
5254         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
5255         reference to unused bytes instead of a copy
5256
5257         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
5258         out of memory
5259
5260         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
5261         FALSE on OOM
5262
5263         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
5264         of memory
5265
5266 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
5267
5268         * doc/dbus-specification.sgml:
5269         Document reply message for ActivateService.
5270
5271 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
5272
5273         * bus/activation.c: (bus_pending_activation_entry_free),
5274         (bus_pending_activation_free), (bus_activation_new),
5275         (bus_activation_unref), (bus_activation_service_created),
5276         (bus_activation_activate_service):
5277         * bus/activation.h:
5278         * bus/bus.c: (bus_context_new):
5279         * bus/desktop-file.c: (new_section):
5280         * bus/driver.c: (bus_driver_send_service_deleted),
5281         (bus_driver_handle_activate_service):
5282         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
5283         * bus/services.h:
5284         * dbus/dbus-connection.c:
5285         (dbus_connection_send_with_reply_and_block):
5286         * dbus/dbus-message.c: (dbus_message_append_args_valist):
5287         * dbus/dbus-protocol.h:
5288         Make activation work better. Now pending activations will be queued
5289         and the daemon won't try to activate services that are already registered.
5290
5291 2003-03-16  Havoc Pennington  <hp@pobox.com>
5292
5293         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
5294         connection data
5295
5296         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
5297         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
5298
5299 2003-03-16  Havoc Pennington  <hp@pobox.com>
5300
5301         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
5302         this. always run the test suite before commit...
5303
5304         * bus/*: adapt to DBusConnection API changes
5305
5306         * glib/dbus-gmain.c: adapt to DBusConnection API changes,
5307         requires renaming stuff to avoid dbus_connection_dispatch name
5308         conflict.
5309
5310         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
5311         function
5312
5313         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
5314         separate from _dbus_message_loader_return_buffer()
5315
5316         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
5317         this, because it's now always broken to use; the number of
5318         messages in queue vs. the number still buffered by the message
5319         loader is undefined/meaningless. Should use
5320         dbus_connection_get_dispatch_state().
5321         (dbus_connection_dispatch): rename from
5322         dbus_connection_dispatch_message
5323
5324 2003-03-16  Havoc Pennington  <hp@pobox.com>
5325
5326         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
5327         implementation
5328
5329 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
5330
5331         * dbus/dbus-connection.c:
5332         (dbus_connection_send_with_reply_and_block):
5333         Decrease connection->n_incoming when removing an entry
5334         from the list.
5335         * dbus/dbus-dict.c: (dbus_dict_entry_free),
5336         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
5337         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
5338         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
5339         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
5340         (dbus_dict_get_byte_array):
5341         Handle NULL arrays and strings. Also add support for byte arrays.
5342
5343         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
5344         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
5345         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
5346         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
5347         (_dbus_demarshal_dict), (demarshal_and_validate_len),
5348         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
5349         * dbus/dbus-marshal.h:
5350         Add support for marshalling and demarshalling empty arrays and strings.
5351
5352         * dbus/dbus-message.c: (dbus_message_append_args_valist),
5353         (dbus_message_append_string_array),
5354         (dbus_message_iter_get_boolean),
5355         (dbus_message_iter_get_boolean_array),
5356         (dbus_message_iter_get_int32_array),
5357         (dbus_message_iter_get_uint32_array),
5358         (dbus_message_iter_get_double_array),
5359         (dbus_message_iter_get_byte_array),
5360         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
5361         (check_message_handling):
5362         Add support for getting empty arrays and dicts.
5363
5364         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
5365         Don't do any validation at all for now, that's better than just checking
5366         for ASCII.
5367
5368         * test/data/valid-messages/emptiness.message:
5369         New test message with lots of empty arrays.
5370
5371 2003-03-16  Havoc Pennington  <hp@pobox.com>
5372
5373         * dbus/dbus-connection.c
5374         (_dbus_connection_queue_received_message_link): new function that
5375         can't fail due to OOM
5376
5377         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
5378         new function pops a message together with a list link
5379         containing it.
5380
5381         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
5382         message queuing functions to avoid needing to alloc memory
5383
5384 2003-03-16  Havoc Pennington  <hp@pobox.com>
5385
5386         Oops - test code was only testing failure of around 30 of the
5387         mallocs in the test path, but it turns out there are 500+
5388         mallocs. I believe this was due to misguided linking setup such
5389         that there was one copy of dbus_malloc etc. in the daemon and one
5390         in the shared lib, and only daemon mallocs were tested. In any
5391         case, the test case now tests all 500+ mallocs, and doesn't pass
5392         yet, though there are lots of fixes in this patch.
5393
5394         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
5395         this so that it doesn't need to allocate memory, since it
5396         has no way of indicating failure due to OOM (and would be
5397         annoying if it did).
5398
5399         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
5400
5401         * bus/Makefile.am: rearrange to create two self-contained
5402         libraries, to avoid having libraries with overlapping symbols.
5403         that was resulting in weirdness, e.g. I'm pretty sure there
5404         were two copies of global static variables.
5405
5406         * dbus/dbus-internals.c: move the malloc debug stuff to
5407         dbus-memory.c
5408
5409         * dbus/dbus-list.c (free_link): free list mempool if it becomes
5410         empty.
5411
5412         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
5413
5414         * dbus/dbus-address.c (dbus_parse_address): free list nodes
5415         on failure.
5416
5417         * bus/dispatch.c (bus_dispatch_add_connection): free
5418         message_handler_slot when no longer using it, so
5419         memory leak checkers are happy for the test suite.
5420
5421         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
5422
5423         * bus/bus.c (new_connection_callback): disconnect in here if
5424         bus_connections_setup_connection fails.
5425
5426         * bus/connection.c (bus_connections_unref): fix to free the
5427         connections
5428         (bus_connections_setup_connection): if this fails, don't
5429         disconnect the connection, just be sure there are no side
5430         effects.
5431
5432         * dbus/dbus-string.c (undo_alignment): unbreak this
5433
5434         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
5435         leaking
5436         (_dbus_auth_new): fix the order in which we free strings
5437         on OOM failure
5438
5439         * bus/connection.c (bus_connection_disconnected): fix to
5440         not send ServiceDeleted multiple times in case of memory
5441         allocation failure
5442
5443         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
5444         get the base service name
5445         (dbus_bus_register_client): don't return base service name,
5446         instead store it on the DBusConnection and have an accessor
5447         function for it.
5448         (dbus_bus_register_client): rename dbus_bus_register()
5449
5450         * bus/dispatch.c (check_hello_message): verify that other
5451         connections on the bus also got the correct results, not
5452         just the one sending hello
5453
5454 2003-03-15  Havoc Pennington  <hp@pobox.com>
5455
5456         Make it pass the Hello handling test including all OOM codepaths.
5457         Now to do other messages...
5458
5459         * bus/services.c (bus_service_remove_owner): fix crash when
5460         removing owner from an empty list of owners
5461         (bus_registry_ensure): don't leave service in the list of
5462         a connection's owned services if we fail to put the service
5463         in the hash table.
5464
5465         * bus/connection.c (bus_connection_preallocate_oom_error): set
5466         error flag on the OOM error.
5467
5468         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
5469         handle _dbus_transport_set_connection failure
5470
5471         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
5472         to create watches up front and simply enable/disable them as
5473         needed.
5474         (unix_connection_set): this can now fail on OOM
5475
5476         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
5477         of enabling/disabling a watch or timeout.
5478
5479         * bus/loop.c (bus_loop_iterate): don't touch disabled
5480         watches/timeouts
5481
5482         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
5483
5484 2003-03-15  Havoc Pennington  <hp@pobox.com>
5485
5486         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
5487         write useful test code, after all that futzing around ;-)
5488
5489         Test does not yet pass because we can't handle OOM in
5490         _dbus_transport_messages_pending (basically,
5491         dbus_connection_preallocate_send() does not prealloc the write
5492         watch). To fix this, I think we need to add new stuff to
5493         set_watch_functions, namely a SetEnabled function so we can alloc
5494         the watch earlier, then enable it later.
5495
5496         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
5497         dbus-memory.c to the convenience lib
5498
5499         * bus/test.c: rename some static functions to keep them clearly
5500         distinct from stuff in connection.c. Handle client disconnection.
5501
5502 2003-03-14  Havoc Pennington  <hp@pobox.com>
5503
5504         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
5505         transport, tests more of the real codepath. Set up clients
5506         with bus_setup_debug_client.
5507
5508         * bus/test.c (bus_setup_debug_client): function to set up debug
5509         "clients" on the main loop
5510
5511         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
5512         support
5513
5514         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe
5515         server type
5516
5517         * dbus/dbus-server-debug.c: support a debug server based on pipes
5518
5519         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
5520         (_dbus_close): new function
5521
5522         * configure.in: check for socketpair
5523
5524 2003-03-14  Havoc Pennington  <hp@redhat.com>
5525
5526         * dbus/dbus-memory.c: add a "detect buffer overwrites on free"
5527         cheesy hack
5528
5529         * dbus/dbus-transport-debug.c: rework this a good bit to be
5530         less complicated. hopefully still works.
5531
5532         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
5533         manually
5534
5535         * glib/dbus-gmain.c (timeout_handler): don't remove timeout
5536         after running it
5537
5538         * dbus/dbus-message.c (dbus_message_copy): rename from
5539         dbus_message_new_from_message, fix it up to copy
5540         all the message fields, add test case
5541
5542         * bus/dispatch.c (bus_dispatch_test): add some more test code,
5543         not quite passing yet
5544
5545 2003-03-14  Havoc Pennington  <hp@pobox.com>
5546
5547         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
5548         until no work remains" in test code. (the large diff here
5549         is just code movement, no actual changes)
5550
5551         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
5552         1, no point waiting around for test code.
5553         (_dbus_server_debug_accept_transport): unref the timeout
5554         after adding it (right?)
5555
5556         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
5557
5558 2003-03-13  Havoc Pennington  <hp@redhat.com>
5559
5560         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
5561         out of memory
5562
5563         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
5564         of memory
5565
5566         * dbus/dbus-connection.h: Make AddWatchFunction and
5567         AddTimeoutFunction return a bool so they can fail on out-of-memory
5568
5569         * bus/bus.c (bus_context_new): set up timeout handlers
5570
5571         * bus/connection.c (bus_connections_setup_connection): set up
5572         timeout handlers
5573
5574         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
5575         can fail
5576
5577         * bus/bus.c (bus_context_new): adapt to changes
5578
5579         * bus/connection.c: adapt to changes
5580
5581         * test/watch.c: adapt to DBusWatch changes
5582
5583         * bus/dispatch.c (bus_dispatch_test): started adding this but
5584         didn't finish
5585
5586 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
5587
5588         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
5589
5590 2003-03-13  Havoc Pennington  <hp@pobox.com>
5591
5592         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
5593         set up a test framework as for the library
5594
5595 2003-03-12  Havoc Pennington  <hp@pobox.com>
5596
5597         Throughout: purge global variables, introduce BusActivation,
5598         BusConnections, BusRegistry, etc. objects instead.
5599
5600         * bus/bus.h, bus/bus.c: introduce BusContext as a global
5601         message bus object
5602
5603         * test/Makefile.am (TEST_BINARIES): disable bus-test for now,
5604         going to redo this a bit differently I think
5605
5606 2003-03-12  Havoc Pennington  <hp@redhat.com>
5607
5608         Mega-patch that gets the message bus daemon initially handling
5609         out-of-memory. Work still needed. Also lots of random
5610         moving stuff to DBusError instead of ResultCode.
5611
5612         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
5613
5614         * dbus/dbus-connection.c
5615         (dbus_connection_send_with_reply_and_block): use DBusError
5616
5617         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
5618         DBusResultCode
5619
5620         * dbus/dbus-connection.c (dbus_connection_send): drop the result
5621         code here, as the only failure possible is OOM.
5622
5623         * bus/connection.c (bus_connection_disconnect):
5624         rename bus_connection_disconnected as it's a notification only
5625
5626         * bus/driver.c (bus_driver_handle_acquire_service): don't free
5627         "name" on get_args failure, should be done by get_args;
5628         don't disconnect client for bad args, just return an error.
5629         (bus_driver_handle_service_exists): ditto
5630
5631         * bus/services.c (bus_services_list): NULL-terminate returned array
5632
5633         * bus/driver.c (bus_driver_send_service_lost)
5634         (bus_driver_send_service_acquired): send messages from driver to a
5635         specific client to the client's unique name, not to the broadcast
5636         service.
5637
5638         * dbus/dbus-message.c (decode_header_data): reject messages that
5639         contain no name field
5640         (_dbus_message_get_client_serial): rename to
5641         dbus_message_get_serial and make public
5642         (_dbus_message_set_serial): rename from set_client_serial
5643         (_dbus_message_set_reply_serial): make public
5644         (_dbus_message_get_reply_serial): make public
5645
5646         * bus/connection.c (bus_connection_foreach): allow stopping
5647         iteration by returning FALSE from foreach function.
5648
5649         * dbus/dbus-connection.c (dbus_connection_send_preallocated)
5650         (dbus_connection_free_preallocated_send)
5651         (dbus_connection_preallocate_send): new API for sending a message
5652         without possibility of malloc failure.
5653         (dbus_connection_send_message): rename to just
5654         dbus_connection_send (and same for whole function family)
5655
5656         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
5657
5658         * dbus/dbus-sysdeps.c (_dbus_exit): new function
5659
5660         * bus/activation.c: handle/return errors
5661
5662         * dbus/dbus-errors.h: add more DBUS_ERROR #define
5663
5664         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
5665         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
5666         (_dbus_result_from_errno): move to this file
5667
5668 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
5669
5670         * dbus/dbus-marshal.c:
5671         (_dbus_marshal_set_string):
5672         Take a length argument so we can marshal the correct string
5673         length.
5674
5675         (_dbus_marshal_dict), (_dbus_demarshal_dict),
5676         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
5677         (_dbus_marshal_test):
5678         * dbus/dbus-marshal.h:
5679         Add support for marshalling and demarshalling dicts.
5680
5681         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
5682         Add support for TYPE DICT.
5683
5684         * dbus/dbus-message.c: (set_string_field):
5685         Adjust header padding.
5686
5687         (dbus_message_append_args_valist), (dbus_message_append_dict),
5688         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
5689         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
5690         (check_message_handling), (check_have_valid_message):
5691         * dbus/dbus-message.h:
5692         Add functions for setting and getting dicts.
5693
5694         * dbus/dbus-protocol.h:
5695         Add DBUS_TYPE_DICT.
5696
5697         * dbus/dbus.h:
5698         Add dbus-dict.h
5699
5700         * doc/dbus-specification.sgml:
5701         Add information about how dicts are marshalled.
5702
5703         * test/data/invalid-messages/dict-with-nil-value.message:
5704         * test/data/invalid-messages/too-short-dict.message:
5705         * test/data/valid-messages/dict-simple.message:
5706         * test/data/valid-messages/dict.message:
5707         Add sample messages containing dicts.
5708
5709 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
5710
5711         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
5712
5713 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
5714
5715         * dbus/Makefile.am:
5716         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
5717         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
5718         (dbus_dict_set_int32), (dbus_dict_set_uint32),
5719         (dbus_dict_set_double), (dbus_dict_set_string),
5720         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
5721         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
5722         (dbus_dict_set_string_array), (_dbus_dict_test):
5723         * dbus/dbus-dict.h:
5724         Fix according to comments from Havoc.
5725
5726 2003-03-06  Michael Meeks  <michael@server.home>
5727
5728         * configure.in: if we don't have kde-config, disable have_qt.
5729
5730 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
5731
5732         * dbus/Makefile.am:
5733         Add dbus-dict.[ch]
5734
5735         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
5736         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
5737         (dbus_dict_remove), (dbus_dict_get_value_type),
5738         (dbus_dict_get_keys), (dbus_dict_put_boolean),
5739         (dbus_dict_put_int32), (dbus_dict_put_uint32),
5740         (dbus_dict_put_double), (dbus_dict_put_string),
5741         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
5742         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
5743         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
5744         (dbus_dict_get_int32), (dbus_dict_get_uint32),
5745         (dbus_dict_get_double), (dbus_dict_get_string),
5746         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
5747         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
5748         (dbus_dict_get_string_array), (_dbus_dict_test):
5749         * dbus/dbus-dict.h:
5750         Add DBusDict implementation
5751
5752         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
5753         * dbus/dbus-test.h:
5754         Add _dbus_dict_test
5755
5756 2003-03-04  Havoc Pennington  <hp@pobox.com>
5757
5758         * test/data/auth/*: adapt to changes
5759
5760         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
5761         USERID_BASE64 and change USERNAME_BASE64 to put in username not
5762         userid
5763
5764         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
5765         more stuff from being in a context name, to make the protocol
5766         simpler to deal with
5767
5768         * dbus/dbus-errors.c (dbus_error_has_name): new function
5769         (dbus_error_is_set): new function
5770
5771         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
5772         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
5773
5774         * dbus/dbus-connection.c (dbus_connection_flush): also read
5775         messages during a flush operation
5776
5777         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
5778
5779 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
5780
5781         * configure.in: Check for gethostbyname on Solaris.
5782
5783         * dbus/dbus-transport.c: (_dbus_transport_open):
5784         Remove duplicate "tcp" entry.
5785
5786         * doc/dbus-specification.sgml:
5787         Clarify some things.
5788
5789 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
5790
5791         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
5792         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
5793         (_dbus_keyring_test):
5794         * dbus/dbus-md5.c: (_dbus_md5_compute):
5795         * dbus/dbus-sha.c: (_dbus_sha_compute):
5796         Plug memory leaks.
5797
5798 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
5799
5800         * README: Add some things.
5801
5802 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
5803
5804         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
5805         after case DBUS_TYPE_BOOELAN.
5806
5807 2003-03-02  Havoc Pennington  <hp@pobox.com>
5808
5809         * test/break-loader.c (randomly_set_extreme_ints): add test that
5810         sets really huge and small integers
5811
5812         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
5813         that length of boolean array fits in the string, and that
5814         string has room for boolean value in single-bool case.
5815
5816         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
5817         optional value to "ALIGN" command which is what to fill the
5818         alignment with.
5819
5820         * test/data/valid-messages/no-padding.message: add regression
5821         test for the message padding problem
5822
5823 2003-03-02  Havoc Pennington  <hp@pobox.com>
5824
5825         * dbus/dbus-message.c (decode_header_data): fix to always init
5826         message_padding, from Benjamin Dauvergne
5827
5828 2003-03-02  Havoc Pennington  <hp@pobox.com>
5829
5830         * configure.in: 0.5
5831
5832         * NEWS: Update.
5833
5834 2003-03-01  Joe Shaw  <joe@assbarn.com>
5835
5836         * configure.in: Check for "struct cmsgcred" and try to access its
5837         members for BSD-like unices.
5838
5839         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
5840         _dbus_read_credentials_unix_socket().
5841         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
5842         read() for reading the credential byte off the unix socket.  Use
5843         struct cmsgcred on systems that support it.
5844
5845 2003-02-27  Alexander Larsson  <alexl@redhat.com>
5846
5847         * glib/Makefile.am:
5848         * configure.in:
5849         Make gthreads-2.0 dependency optional. Don't build thread test if
5850         its not found.
5851
5852 2003-02-27  Havoc Pennington  <hp@pobox.com>
5853
5854         * dbus/dbus-connection.c
5855         (dbus_connection_send_message_with_reply_and_block): fix doh!
5856         doh! doh! bug that resulted in never removing a reply from the
5857         queue, no wonder we called get_reply_serial so much ;-)
5858
5859         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
5860         and client serial instead of demarshaling them every time
5861
5862 2003-02-27  Havoc Pennington  <hp@pobox.com>
5863
5864         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
5865         more inlined, using dbus-string-private.h, speeds things up
5866         substantially
5867
5868         * dbus/dbus-string.c (_dbus_string_free): apply align offset
5869         when freeing the string
5870         (_dbus_string_steal_data): fix for align offset
5871         (undo_alignment): new function
5872
5873 2003-02-26  Havoc Pennington  <hp@redhat.com>
5874
5875         All kinds of audit fixes from Owen, plus initial attempt to
5876         handle unaligned memory returned from malloc.
5877
5878         * dbus/dbus-string.c (_dbus_string_init): clamp max length to
5879         leave room for align_offset and nul byte
5880         (fixup_alignment): function to track an align_offset and
5881         ensure real->str is aligned
5882         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
5883         to allow a nul byte plus align offset
5884         (_dbus_string_lock): fix overflow issue
5885         (_dbus_string_init_const_len): add assertions on sanity of len,
5886         assign allocated to be ALLOCATION_PADDING larger than len
5887         (set_length): fixup the overflow handling
5888         (_dbus_string_get_data_len): fix overflow in assertion
5889         (open_gap): detect overflow in size of gap to be opened
5890         (_dbus_string_lengthen): add overflow check
5891         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
5892         (_dbus_string_append): add overflow check
5893         (_dbus_string_append_unichar): overflow
5894         (_dbus_string_delete): fix overflow in assertion
5895         (_dbus_string_copy_len): overflow in assertion
5896         (_dbus_string_replace_len): overflows in assertions
5897         (_dbus_string_find): change to implement in terms of
5898         _dbus_string_find_to
5899         (_dbus_string_find_to): assorted fixage
5900         (_dbus_string_equal_c_str): assert c_str != NULL,
5901         fix logic so the function works
5902         (_dbus_string_ends_with_c_str): fix overflow thingy
5903         (_dbus_string_base64_encode): overflow fix
5904         (_dbus_string_validate_ascii): overflow
5905         (_dbus_string_validate_nul): overflow
5906
5907 2003-02-26  Havoc Pennington  <hp@redhat.com>
5908
5909         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
5910
5911 2003-02-26  Alexander Larsson  <alexl@redhat.com>
5912
5913         * configure.in:
5914         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
5915
5916         * dbus/dbus-connection.c:
5917         * dbus/dbus-connection.h:
5918         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
5919         Add dbus_connection_set_wakeup_main_function and use it when queueing
5920         incoming and outgoing messages.
5921
5922
5923         * dbus/dbus-dataslot.c:
5924         Threadsafe usage of DBusDataSlotAllocator
5925
5926         * dbus/dbus-message.c: (dbus_message_get_args_iter):
5927         dbus_new can fail.
5928
5929         * dbus/dbus-server-unix.c:
5930         Add todo comment
5931
5932         * glib/dbus-gmain.c:
5933         Implement the new wakeup functions for glib.
5934
5935         * glib/Makefile.am:
5936         * glib/test-thread-client.c:
5937         * glib/test-thread-server.c:
5938         * glib/test-thread.h:
5939         Initial cut at some thread test code. Not really done yet.
5940
5941 2003-02-26  Havoc Pennington  <hp@pobox.com>
5942
5943         * dbus/dbus-connection.c
5944         (dbus_connection_send_message_with_reply_and_block): fix crash
5945         where we ref'd the outgoing message instead of the returned reply
5946
5947         * dbus/dbus-transport-unix.c (do_authentication): check read watch
5948         at the end of this function, so if we didn't need to read for
5949         authentication, we reinstall it for receiving messages
5950
5951         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to
5952         a NULL sender for peer-to-peer case
5953
5954         * dbus/dbus-transport-unix.c (check_read_watch): handle
5955         !authenticated case correctly
5956
5957         * glib/dbus-gmain.c: add support for DBusServer
5958
5959         * dbus/dbus-server.c: add data slot support
5960
5961         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
5962         return values and handle errors
5963
5964         * dbus/dbus-dataslot.c: factor out the data slot stuff from
5965         DBusConnection
5966
5967         * Doxyfile.in (INPUT): add glib subdir
5968
5969         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
5970         setup_with_g_main instead of hookup_with_g_main; write docs
5971
5972 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
5973
5974         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
5975         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
5976         * dbus/dbus-message.c: (dbus_message_append_boolean),
5977         (dbus_message_append_boolean_array),
5978         (dbus_message_get_args_valist), (_dbus_message_test):
5979         * dbus/dbus-message.h:
5980         * doc/dbus-specification.sgml:
5981         Various fixes as pointed out by Havoc.
5982
5983         * test/data/invalid-messages/bad-boolean-array.message:
5984         * test/data/invalid-messages/bad-boolean.message:
5985         Add invalid boolean value test cases.
5986
5987 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
5988
5989         * dbus/dbus-internals.c: (_dbus_type_to_string):
5990         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
5991         (_dbus_marshal_validate_arg):
5992         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
5993         * dbus/dbus-message.c: (dbus_message_append_args_valist),
5994         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
5995         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
5996         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
5997         (dbus_message_iter_get_double),
5998         (dbus_message_iter_get_boolean_array), (message_iter_test):
5999         * dbus/dbus-message.h:
6000         * dbus/dbus-protocol.h:
6001         * doc/dbus-specification.sgml:
6002         * test/data/valid-messages/lots-of-arguments.message:
6003         Add support for boolean and boolean array types.
6004
6005 2003-02-23  Havoc Pennington  <hp@pobox.com>
6006
6007         * dbus/dbus-keyring.c: finish most of this implementation and
6008         simple unit test
6009
6010         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
6011         these barf if the error isn't cleared to NULL
6012
6013         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
6014         (_dbus_create_directory): new function
6015
6016         * dbus/dbus-errors.c (dbus_set_error): fix warning
6017
6018         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
6019         (_dbus_string_hex_decode): new function
6020         (test_hex_roundtrip): test code
6021
6022         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
6023
6024         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
6025
6026         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
6027         the save-to-temp/rename trick to atomically write the new file
6028         (_dbus_string_parse_uint): new function
6029
6030 2003-02-22  Havoc Pennington  <hp@pobox.com>
6031
6032         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
6033
6034 2003-02-22  Havoc Pennington  <hp@pobox.com>
6035
6036         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
6037         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
6038
6039         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
6040
6041         * dbus/test/data/sha-1: add US government test suite for SHA-1
6042
6043 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
6044
6045         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
6046         Make string arrays NULL-terminated.
6047
6048         * dbus/dbus-memory.c: (dbus_free_string_array):
6049         * dbus/dbus-memory.h:
6050         New function for freeing NULL-terminated string arrays.
6051
6052         * dbus/dbus-message-builder.c: (append_quoted_string),
6053         (_dbus_message_data_load):
6054         Add support for array types.
6055
6056         * dbus/dbus-message.c: (check_message_handling):
6057         Add more types as test cases.
6058
6059         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
6060         (_dbus_string_parse_double):
6061         Add the start offset to the end offset.
6062
6063         * test/data/valid-messages/lots-of-arguments.message:
6064         New test message with lots of arguments.
6065
6066 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
6067
6068         * dbus/dbus-message.c: (dbus_message_append_nil),
6069         (dbus_message_append_int32), (dbus_message_append_uint32),
6070         (dbus_message_append_double), (dbus_message_append_string),
6071         (dbus_message_append_int32_array),
6072         (dbus_message_append_uint32_array),
6073         (dbus_message_append_double_array),
6074         (dbus_message_append_byte_array),
6075         (dbus_message_append_string_array):
6076         Fix all out-of-memory handling in these functions.
6077
6078 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
6079
6080         * dbus/dbus-message.c: (dbus_message_append_nil):
6081         Fix a silly.
6082
6083 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
6084
6085         * dbus/dbus-message.c: (dbus_message_append_args_valist),
6086         (dbus_message_append_nil), (dbus_message_append_int32_array),
6087         (dbus_message_append_uint32_array),
6088         (dbus_message_append_double_array),
6089         (dbus_message_append_byte_array),
6090         (dbus_message_append_string_array), (dbus_message_get_args_valist),
6091         (dbus_message_iter_get_int32_array),
6092         (dbus_message_iter_get_uint32_array),
6093         (dbus_message_iter_get_double_array),
6094         (dbus_message_iter_get_byte_array),
6095         (dbus_message_iter_get_string_array):
6096
6097         * dbus/dbus-message.h:
6098         Add functions for appending and getting arrays.
6099
6100 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
6101
6102         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
6103         element size at least 8 bytes, fixes mempool tests on
6104         64-bit machines.
6105
6106 2003-02-20  Alexander Larsson  <alexl@redhat.com>
6107
6108         * dbus/dbus-transport-unix.c (unix_do_iteration):
6109         Unlock the connection mutex during a blocking select call.
6110         Add todo about how we need a way to wake up the select.
6111
6112         * dbus/dbus-connection-internal.h:
6113         * dbus/dbus-connection.c:
6114         Add _dbus_connection_lock and _dbus_connection_unlock.
6115
6116 2003-02-19  Havoc Pennington  <hp@pobox.com>
6117
6118         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
6119         Doxyfile.in, not Doxyfile
6120
6121         * dbus/dbus-keyring.c: do some hacking on this
6122
6123         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
6124
6125         * dbus/dbus-errors.c (dbus_set_error_const): do not call
6126         dbus_error_init
6127         (dbus_set_error): remove dbus_error_init, check for message ==
6128         NULL *before* we sprintf into it, and add @todo about including
6129         system headers in this file
6130
6131         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
6132
6133         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
6134
6135         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
6136         get various bits of user information based on either username
6137         or user ID
6138         (_dbus_homedir_from_username): new function
6139
6140 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
6141
6142         * configure.in:
6143         Add check for nonposix getpwnam_r
6144
6145         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
6146         Align the pool element size to a sizeof (void *) boundary.
6147
6148         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
6149         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
6150         General Solaris fixes.
6151
6152         * test/data/valid-messages/simplest-manual.message:
6153         Explicitly state that we want little-endian packing.
6154
6155 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
6156
6157         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
6158
6159         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
6160         Added to create a transport connecting using a tcp/ip socket.
6161
6162         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
6163         to a tcp socket at given host and port.
6164         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
6165         hostname and port.
6166
6167         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
6168
6169         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
6170         Added to create a server listening on a TCP/IP socket.
6171
6172 2003-02-19  Havoc Pennington  <hp@pobox.com>
6173
6174         Throughout: mop up all the Doxygen warnings and undocumented
6175         stuff.
6176
6177         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
6178         to search any paths.
6179
6180         * dbus/dbus-threads.c: move global mutex initializers to
6181         dbus-internals.h, multiple prototypes was confusing doxygen
6182         besides being kind of ugly
6183
6184         * Doxyfile (PREDEFINED): have Doxygen define
6185         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from
6186         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
6187         (do not abuse the feature! it's for stuff like the autogenerated
6188         macros in dbus-md5.c, not just for things you don't feel like
6189         documenting...)
6190
6191 2003-02-18  Havoc Pennington  <hp@pobox.com>
6192
6193         * dbus/dbus-string.c (_dbus_string_zero): new function
6194
6195         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
6196         wrap it in some dbus-friendly API
6197
6198         * dbus/dbus-types.h: add 16-bit types
6199
6200 2003-02-18  Joe Shaw  <joe@assbarn.com>
6201
6202         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
6203         credentials from our currently running process.
6204         (get_word): Fix a buglet where we were copying the entire length
6205         instead of relative to our position.
6206
6207         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
6208         keys on the stack... it's 640k of data.
6209
6210         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
6211         read the credentials byte off the socket, even if we don't have
6212         SO_PEERCRED.
6213         (_dbus_poll): Implement poll() using select() for systems which
6214         don't have it.
6215
6216         * glib/test-dbus-glib.c (main): Print out an error if no
6217         parameters are given.
6218
6219         * test/data/auth/fallback.auth-script: Added.  Tests that a client
6220         can fallback to a secondary auth mechanism if the first fails.
6221
6222 2003-02-18  Havoc Pennington  <hp@pobox.com>
6223
6224         * AUTHORS: add Alex
6225
6226 2003-02-17  Havoc Pennington  <hp@pobox.com>
6227
6228         * doc/dbus-specification.sgml: lots of cosmetic
6229         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
6230         env variable to DBUS_BUS_ADDRESS, s/client/application/,
6231         s/server/bus/ (except in authentication section). Add a section
6232         "Message Bus Message Routing"
6233
6234 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
6235
6236         Release 0.4
6237
6238         * NEWS: Update
6239
6240 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
6241
6242         * doc/dbus-specification.sgml:
6243         Specification updates.
6244
6245 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
6246
6247         * bus/activation.c: (bus_activation_init), (child_setup),
6248         (bus_activation_activate_service):
6249         * bus/activation.h:
6250         * bus/main.c: (main):
6251         Set DBUS_ADDRESS environment variable.
6252
6253         * dbus/dbus-errors.c: (dbus_set_error):
6254         Don't use va_copy since that's a C99 feature.
6255
6256         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
6257         (_dbus_spawn_async):
6258         * dbus/dbus-sysdeps.h:
6259         Add child_setup_func to _dbus_spawn_async.
6260
6261         * doc/dbus-specification.sgml:
6262         Update specification.
6263
6264         * test/spawn-test.c: (setup_func), (main):
6265         Fix test.
6266
6267 2003-02-17  Alexander Larsson  <alexl@redhat.com>
6268
6269         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
6270         Added todo.
6271
6272 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
6273
6274         * doc/.cvsignore:
6275         * doc/Makefile.am:
6276         * doc/dbus-test-plan.sgml:
6277         Add test plan document.
6278
6279         * test/Makefile.am:
6280         Fix distcheck.
6281
6282 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
6283
6284         * dbus/dbus-message.c: (decode_header_data),
6285         (_dbus_message_loader_return_buffer):
6286         Set the header padding amount when loading a message.
6287
6288 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
6289
6290         * bus/dispatch.c: (send_one_message):
6291         Only send broadcast messages to registered connections.
6292
6293         * dbus/dbus-message.c: (dbus_message_name_is):
6294         * dbus/dbus-message.h:
6295         New convenience function.
6296
6297         * dbus/dbus-transport-debug.c: (do_reading):
6298         Only dispatch one message per run.
6299
6300         * test/Makefile.am:
6301         * test/bus-test.c: (new_connection_callback), (die),
6302         (test_hello_client1_handler), (test_hello_client2_handler),
6303         (test_hello_replies), (main):
6304
6305         * test/bus-test-loop.[ch]:
6306         Add these.
6307
6308 2003-02-16  Havoc Pennington  <hp@pobox.com>
6309
6310         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
6311         backward conditional
6312
6313 2003-02-16  Alexander Larsson  <alexl@redhat.com>
6314
6315         * dbus/dbus-connection.c:
6316         Implement sent_message_with_reply. (with_reply_and block is still
6317         busted).
6318         Made dispatch_message not lose message if OOM.
6319
6320         * dbus/dbus-errors.h:
6321         Add NoReply error (for reply timeouts).
6322
6323 2003-02-16  Alexander Larsson  <alexl@redhat.com>
6324
6325         * dbus/dbus-hash.c (_dbus_hash_table_unref):
6326         Actually free keys and values when destroying hashtable.
6327
6328 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
6329
6330         * dbus/dbus-auth.c: (client_try_next_mechanism):
6331         Plug a leak.
6332
6333         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
6334         Return TRUE if there's no thread implementation around.
6335
6336         * glib/dbus-gmain.c: (free_source),
6337         (dbus_connection_hookup_with_g_main):
6338         Make sure to remove the GSource when the connection is finalized.
6339
6340 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
6341
6342         * bus/dispatch.c: (bus_dispatch_message_handler):
6343         * dbus/dbus-errors.h:
6344         Return an error if someone tries to send a message to a service
6345         that doesn't exist.
6346
6347 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
6348
6349         * bus/activation.c: (load_directory), (bus_activation_init),
6350         (bus_activation_activate_service):
6351         * bus/activation.h:
6352         * bus/driver.c:
6353         (bus_driver_handle_activate_service), (bus_driver_handle_message):
6354         More work on the activation handling.
6355
6356         * dbus/dbus-errors.h:
6357         Add some error messages
6358
6359         * dbus/dbus-message.c: (dbus_message_new_error_reply):
6360         * dbus/dbus-message.h:
6361         New function that creates an error message.
6362
6363         * dbus/dbus-protocol.h:
6364         Add ACTIVATE_SERVER message.
6365
6366         * dbus/dbus-server-unix.c: (unix_handle_watch),
6367         (_dbus_server_new_for_domain_socket):
6368         Call _dbus_fd_set_close_on_exec.
6369
6370         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
6371         (_dbus_spawn_async), (_dbus_disable_sigpipe),
6372         (_dbus_fd_set_close_on_exec):
6373         * dbus/dbus-sysdeps.h:
6374         Add _dbus_fd_set_close_on exec function. Also add function that checks
6375         that all open fds are set to close-on-exec and warns otherwise.
6376
6377         * dbus/dbus-transport-unix.c:
6378         (_dbus_transport_new_for_domain_socket):
6379         Call _dbus_fd_set_close_on_exec.
6380
6381 2003-02-16  Havoc Pennington  <hp@pobox.com>
6382
6383         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
6384         allow people to avoid setting SIGPIPE to SIG_IGN
6385         (_dbus_connection_new_for_transport): disable SIGPIPE unless
6386         we've been asked not to
6387
6388 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
6389
6390         * dbus/dbus-list.c: (_dbus_list_append_link),
6391         (_dbus_list_prepend_link):
6392         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
6393         (dbus_realloc):
6394         Warning fixes.
6395
6396 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
6397
6398         * bus/Makefile.am:
6399         * bus/activation.c: (bus_activation_entry_free),
6400         (add_desktop_file_entry), (load_directory), (bus_activation_init):
6401         * bus/activation.h:
6402         * bus/main.c: (main):
6403         Add simple activation support, doesn't work yet though.
6404
6405 2003-02-15   Zack Rusin  <zack@kde.org>
6406
6407         * qt/dbus-qthread.cpp:  small casting fix
6408
6409 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
6410
6411         * dbus/dbus-errors.c: (dbus_set_error):
6412         * dbus/dbus-errors.h:
6413         Add a few errors and make dbus_set_error void.
6414
6415         * dbus/dbus-sysdeps.c:
6416         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
6417         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
6418         * dbus/dbus-sysdeps.h:
6419         Add _dbus_spawn_async.
6420
6421         * test/spawn-test.c: (main):
6422         Test for _dbus_spawn_async.
6423
6424 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
6425
6426         * dbus/dbus-internals.h:
6427         Fix build without tests.
6428
6429         * dbus/dbus-list.c: (alloc_link):
6430         Fix a segfault when a malloc fails.
6431
6432         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
6433         (dbus_malloc0), (dbus_realloc):
6434         Add support for malloc debugging.
6435
6436 2003-02-15  Alexander Larsson  <alexl@redhat.com>
6437
6438         * dbus/dbus-threads.c:
6439         * dbus/dbus-threads.h:
6440         Add condvars. Remove static mutext from API.
6441         Implement static mutexes by initializing them from threads_init.
6442
6443         * glib/dbus-gthread.c:
6444         * qt/dbus-qthread.cpp:
6445         Update with the thread api changes.
6446
6447
6448         * dbus/dbus-list.c:
6449         * dbus/dbus-list.h:
6450         Turn StaticMutex into normal mutex + init function.
6451         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
6452         _dbus_list_append_link, _dbus_list_prepend_link
6453
6454
6455         * dbus/dbus-sysdeps.c:
6456         * dbus/dbus-sysdeps.h:
6457         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
6458         _dbus_atomic_dec. Only slow fallback implementation at the moment.
6459
6460         * dbus/dbus-protocol.h:
6461         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
6462
6463         * dbus/dbus-message.c:
6464         Make ref/unref atomic.
6465         Fix some docs.
6466
6467         * dbus/dbus-connection-internal.h:
6468         * dbus/dbus-connection.c:
6469         * dbus/dbus-connection.h:
6470         Make threadsafe.
6471         Change _peek to _borrow,_return & _steal_borrowed.
6472         Change disconnect callback to event.
6473         Make dbus_connection_dispatch_messages reentrant.
6474
6475         * dbus/dbus-transport.c:
6476         Don't ref the connection on calls to the transport
6477         implementation.
6478
6479         * dbus/dbus-message-handler.c:
6480         Make threadsafe.
6481
6482         * glib/dbus-gmain.c:
6483         Don't use peek_message anymore
6484
6485         * test/Makefile.am:
6486         * test/debug-thread.c:
6487         * test/debug-thread.h:
6488         Simple thread implementation that asserts() on deadlocks in
6489         single-threaded code.
6490
6491         * test/bus-test.c:
6492         (main) Call debug_threads_init.
6493
6494         * test/watch.c:
6495         Use disconnect message instead of disconnect callback.
6496
6497         * bus/connection.c:
6498         * bus/connection.h:
6499         Don't call dbus_connection_set_disconnect_function. Instead export
6500         bus_connection_disconnect.
6501
6502         * bus/dispatch.c:
6503         Call bus_connection_disconnect when we get a disconnected message.
6504
6505 2003-02-15  Havoc Pennington  <hp@pobox.com>
6506
6507         * dbus/dbus-message.c (dbus_message_new): fool around with the
6508         docs
6509
6510 2003-02-14  Havoc Pennington  <hp@pobox.com>
6511
6512         * dbus/dbus-mempool.c: fail if the debug functions so indicate
6513
6514         * dbus/dbus-memory.c: fail if the debug functions indicate we
6515         should
6516
6517         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
6518         (_dbus_decrement_fail_alloc_counter): debug functions to
6519         simulate memory allocation failures
6520
6521 2003-02-14  Havoc Pennington  <hp@pobox.com>
6522
6523         * dbus/dbus-errors.h (struct DBusError): add a word of padding
6524         to DBusError
6525
6526 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6527
6528         * bus/driver.c: (bus_driver_handle_hello):
6529         * bus/driver.h:
6530         * bus/services.c: (bus_service_lookup):
6531         Reorder message sending so we get a more sane order.
6532
6533         * test/bus-test.c: (message_handler):
6534         Fix tyop.
6535
6536 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6537
6538         * bus/driver.c: (bus_driver_send_service_deleted),
6539         (bus_driver_send_service_created), (bus_driver_send_service_lost),
6540         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
6541         (bus_driver_send_welcome_message),
6542         (bus_driver_handle_list_services),
6543         (bus_driver_handle_acquire_service),
6544         (bus_driver_handle_service_exists):
6545         * dbus/dbus-bus.c: (dbus_bus_register_client),
6546         (dbus_bus_acquire_service), (dbus_bus_service_exists):
6547         * dbus/dbus-errors.c: (dbus_result_to_string):
6548         * dbus/dbus-errors.h:
6549         * dbus/dbus-message.c: (dbus_message_append_args),
6550         (dbus_message_append_args_valist), (dbus_message_get_args),
6551         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
6552         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
6553         (dbus_message_iter_get_byte_array),
6554         (dbus_message_iter_get_string_array), (message_iter_test),
6555         (check_message_handling), (_dbus_message_test):
6556         * dbus/dbus-message.h:
6557         * test/bus-test.c: (main):
6558         Change fields to arguments in messages, so that they won't be
6559         confused with header fields.
6560
6561         * glib/test-dbus-glib.c: (main):
6562         Remove append_fields from hello message.
6563
6564 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6565
6566         * dbus/dbus-errors.c:
6567         * dbus/dbus-message.c:
6568         * dbus/dbus-string.c:
6569         Documentation fixes.
6570
6571 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6572
6573         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
6574         (remove_timeout):
6575         Implement support for timeouts in dbus-glib.
6576
6577 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6578
6579         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
6580         * dbus/dbus-message.c: (process_test_subdir):
6581         * test/break-loader.c: (find_breaks_based_on):
6582         Plug some memory leaks.
6583
6584 2003-02-13  Richard Hult  <rhult@codefactory.se>
6585
6586         * bus/main.c: Fix build.
6587
6588         * dbus/dbus-errors.h:
6589         * dbus/dbus-errors.c: Fix copyright for Anders.
6590
6591 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6592
6593         * bus/Makefile.am:
6594         Add utils.[ch]
6595
6596         * bus/connection.c: (bus_connection_foreach):
6597         Fix a warning.
6598
6599         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
6600         (unescape_string), (new_section), (parse_section_start),
6601         (parse_key_value), (report_error), (bus_desktop_file_load),
6602         (bus_desktop_file_get_string):
6603         * bus/desktop-file.h:
6604         Use DBusError for error reporting.
6605
6606         * bus/dispatch.c: (send_one_message),
6607         (bus_dispatch_message_handler):
6608         * bus/driver.c: (bus_driver_send_service_deleted),
6609         (bus_driver_send_service_created), (bus_driver_send_service_lost),
6610         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
6611         (bus_driver_send_welcome_message),
6612         (bus_driver_handle_list_services),
6613         (bus_driver_handle_acquire_service),
6614         (bus_driver_handle_service_exists):
6615         * bus/loop.c: (bus_loop_run):
6616         * bus/main.c:
6617         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
6618
6619         * bus/utils.c: (bus_wait_for_memory):
6620         * bus/utils.h:
6621         New files with general utility functions.
6622
6623         * dbus/dbus-internals.h:
6624         Remove _DBUS_HANDLE_OOM.
6625
6626 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6627
6628         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
6629         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
6630         * dbus/dbus-errors.h:
6631         Add DBusError structure.
6632
6633 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6634
6635         * test/data/valid-messages/standard-acquire-service.message:
6636         * test/data/valid-messages/standard-hello.message:
6637         * test/data/valid-messages/standard-list-services.message:
6638         * test/data/valid-messages/standard-service-exists.message:
6639         Add some standard messages.
6640
6641 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6642
6643         * bus/driver.c: (bus_driver_send_welcome_message),
6644         (bus_driver_handle_list_services),
6645         (bus_driver_handle_acquire_service),
6646         (bus_driver_handle_service_exists), (bus_driver_handle_message):
6647         Update for API changes in libdbus.
6648
6649         * dbus/dbus-message.c: (dbus_message_new_reply):
6650         * dbus/dbus-message.h:
6651         Remove the name argument. The spec states that replies shouldn't
6652         have a name.
6653
6654 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
6655
6656         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
6657         (report_error), (bus_desktop_file_load), (lookup_section),
6658         (lookup_line), (bus_desktop_file_get_raw),
6659         (bus_desktop_file_get_string):
6660         * bus/desktop-file.h:
6661         Some fixes, and new functions for getting a key value from a section.
6662
6663 2003-02-13  Havoc Pennington  <hp@pobox.com>
6664
6665         * test/data/auth/fail-after-n-attempts.auth-script: new test
6666
6667         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
6668         reject the client.
6669
6670 2003-02-13  Havoc Pennington  <hp@pobox.com>
6671
6672         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
6673         dbus_credentials_match were backward
6674
6675         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
6676         NO_CREDENTIALS and ROOT_CREDENTIALS
6677
6678         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine
6679         into here. Never process more commands after we've reached an
6680         end state; store further data as unused bytes.
6681
6682         * test/data/auth/*: add more auth tests
6683
6684         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
6685         command to match exact string and EXPECT_UNUSED to match unused
6686         bytes
6687
6688         * test/Makefile.am (dist-hook): fix to dist all the test stuff
6689
6690 2003-02-12  Havoc Pennington  <hp@pobox.com>
6691
6692         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
6693         \r off of popped lines
6694
6695         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
6696         scripts
6697
6698         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
6699         SEND, append \r\n
6700
6701 2003-02-12  Havoc Pennington  <hp@pobox.com>
6702
6703         * dbus/Makefile.am: remove break-loader from the build, since it
6704         moved.
6705
6706         * configure.in: add --enable-gcov to turn on coverage profiling
6707         flags and disable optimization
6708
6709 2003-02-10  Havoc Pennington  <hp@pobox.com>
6710
6711         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync
6712         initial cut at test framework for DBusAuth from laptop.
6713         Doesn't quite work yet but it compiles and I need to get
6714         it off the 266mhz laptop. ;-)
6715
6716         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
6717         fix a memleak in error case
6718
6719 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
6720
6721         * bus/Makefile.am:
6722         * bus/desktop-file.c:
6723         * bus/desktop-file.h:
6724         Add a desktop file parser.
6725
6726 2003-02-11  Zack Rusin  <zack@kde.org>
6727
6728         * qt/message.[h|cpp]: sample implementation
6729         of the KDE wrapper for DBusMessage
6730
6731 2003-02-09  Zack Rusin  <zack@kde.org>
6732
6733         * test/bus-test.c: make_it_compile
6734         * doc/dbus-specification.sgml: minimal semantic fix
6735
6736 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
6737
6738         Release 0.3
6739
6740         * NEWS: Update
6741
6742 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
6743
6744         * dbus/Makefile.am:
6745         * dbus/dbus-break-loader.c:
6746         * test/Makefile.am:
6747         * test/break-loader.c:
6748         Move dbus-break-loader to test/ and rename it to break-loader.
6749
6750 2003-02-02  Havoc Pennington  <hp@pobox.com>
6751
6752         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files
6753         for code to manage cookies in your home directory
6754
6755         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
6756
6757         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
6758         to authenticate, then disconnect the client.
6759
6760 2003-02-03  Alexander Larsson  <alexl@redhat.com>
6761
6762         * dbus/dbus-message.c (dbus_message_append_fields):
6763         Correct docs.
6764
6765 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6766
6767         * doc/dbus-specification.sgml:
6768         Update address format section.
6769
6770 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6771
6772         * test/Makefile.am:
6773         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
6774         (message_handler), (new_connection_callback), (loop_quit),
6775         (loop_run), (main):
6776         Add bus test.
6777
6778 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6779
6780         * bus/driver.c: (bus_driver_handle_service_exists):
6781         Simplify the code a bit.
6782
6783         * dbus/dbus-bus.c: (dbus_bus_service_exists):
6784         Fix a silly.
6785
6786 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6787
6788         * bus/Makefile.am:
6789         Add libdbus-daemon.la and link to it.
6790
6791 2003-02-01  James Willcox  <jwillcox@gnome.org>
6792
6793         * bus/driver.c: (bus_driver_handle_own_service):
6794         Actually include the service reply code in the message.
6795
6796 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6797
6798         * bus/driver.c: (bus_driver_handle_service_exists):
6799         Don't unref the incoming message.
6800
6801 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6802
6803         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
6804
6805 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
6806
6807         * dbus/dbus-server.c: (dbus_server_listen):
6808         * dbus/dbus-transport.c: (_dbus_transport_open):
6809         ifdef out the calls to the debug transport and server.
6810
6811 2003-02-02  Alexander Larsson  <alexl@redhat.com>
6812
6813         * dbus/dbus-watch.c (dbus_watch_get_flags):
6814         Add note in the docs that ERROR or HANGUP won't be returned
6815         and are assumed always on.
6816
6817         * glib/dbus-gmain.c (add_watch):
6818         Always add IO_ERR | IO_HUP
6819
6820         * dbus/dbus-message.h:
6821         Add semicolon after dbus_message_iter_get_string_array().
6822         Makes qt code build again
6823
6824 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
6825
6826         * bus/driver.c: (create_unique_client_name),
6827         (bus_driver_handle_hello):
6828         Don't take a name, just use a numeric id to identify
6829         each client.
6830
6831         * dbus/Makefile.am:
6832         * dbus/dbus-bus.c: (dbus_bus_register_client),
6833         (dbus_bus_acquire_service), (dbus_bus_service_exists):
6834         * dbus/dbus-bus.h:
6835         Add new convenience functions for communicating with the bus.
6836
6837         * dbus/dbus-message.h:
6838
6839         * dbus/dbus-protocol.h:
6840         Fix a typo.
6841
6842 2003-02-01  Alexander Larsson  <alexl@redhat.com>
6843
6844         * dbus/dbus-message.c (dbus_message_append_fields):
6845         Add some more doc comments.
6846
6847 2003-02-01  Havoc Pennington  <hp@pobox.com>
6848
6849         * dbus/dbus-break-loader.c (randomly_modify_length): change
6850         a 4-byte value in the message as if it were a length
6851
6852         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
6853         execute bit on saved files
6854
6855 2003-02-01  Havoc Pennington  <hp@pobox.com>
6856
6857         * dbus/dbus-break-loader.c (main): new program to find messages
6858         that break the loader.
6859
6860         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
6861         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
6862
6863         * dbus/dbus-string.c (_dbus_string_set_byte): new
6864
6865 2003-01-31  Havoc Pennington  <hp@pobox.com>
6866
6867         * dbus/dbus-message.c: refactor the test code to be more general,
6868         in preparation for writing a "randomly permute test cases to
6869         try to break the loader" program.
6870
6871 2003-01-31  Havoc Pennington  <hp@pobox.com>
6872
6873         * doc/dbus-specification.sgml: work on the specification
6874
6875         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check
6876         the protocol version of the message.
6877
6878         * dbus/dbus-protocol.h: drop special _REPLY names, the spec
6879         no longer specifies that.
6880         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not
6881         1/2/3/4)
6882
6883         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
6884         "break" for DBUS_TYPE_NIL, remove @todo
6885
6886 2003-01-31  Havoc Pennington  <hp@pobox.com>
6887
6888         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename
6889         just set_is_error/get_is_error as this is a commonly-used
6890         function, and write docs.
6891
6892 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
6893
6894         * dbus/dbus-address.c: (dbus_address_entry_free):
6895         Free key and value lists.
6896
6897         * dbus/dbus-internals.c: (_dbus_type_to_string):
6898         Add the types we didn't have.
6899
6900         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
6901         (_dbus_marshal_validate_arg):
6902         Add NIL types.
6903
6904         * dbus/dbus-message.c: (dbus_message_set_sender):
6905         Remove todo about being able to set sender to NULL.
6906
6907         (dbus_message_set_is_error_reply),
6908         (dbus_message_get_is_error_reply):
6909         * dbus/dbus-message.h:
6910         New functions.
6911
6912         * dbus/dbus-protocol.h:
6913         Add error reply flag.
6914
6915         * test/data/valid-messages/opposite-endian.message:
6916         Add NIL type to test.
6917
6918 2003-01-31  Havoc Pennington  <hp@pobox.com>
6919
6920         * doc/dbus-specification.sgml: fully specify the header.  Add
6921         flags and major protocol version, and change header/body len to
6922         unsigned.
6923
6924         * dbus/dbus-message-builder.c (append_saved_length): append length
6925         as uint32
6926
6927         * dbus/dbus-message.c (dbus_message_create_header): change header
6928         length and body length to unsigned. Add the new fields from the
6929         spec
6930         (_dbus_message_loader_return_buffer): unsigned header/body len
6931
6932 2003-01-30  Havoc Pennington  <hp@pobox.com>
6933
6934         * dbus/dbus-auth.c: rework to use only REJECTED, no
6935         MECHANISMS
6936
6937         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just
6938         use REJECTED, suggested by Mark McLoughlin
6939
6940 2003-01-30  Havoc Pennington  <hp@pobox.com>
6941
6942         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
6943         a better way to report errors here. e.g.  "unix address lacks
6944         path" or something. also "no such file" when the path doesn't
6945         exist, etc.
6946
6947         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
6948         leaking list nodes
6949         (dbus_parse_address): add @todo about documenting address format,
6950         and allowing , and ; to be escaped
6951
6952 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
6953
6954         * dbus/Makefile.am:
6955         Add dbus-address.[ch]
6956
6957         * dbus/dbus-address.c: (dbus_address_entry_free),
6958         (dbus_address_entries_free), (create_entry),
6959         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
6960         (dbus_parse_address), (_dbus_address_test):
6961         * dbus/dbus-address.h:
6962         New files for dealing with address parsing.
6963
6964         * dbus/dbus-connection.c:
6965         Document timeout functions.
6966
6967         * dbus/dbus-message.c:
6968         Document dbus_message_new_from_message.
6969
6970         * dbus/dbus-server-debug.c:
6971         Document.
6972
6973         * dbus/dbus-server.c: (dbus_server_listen):
6974         Parse address and use correct server implementation.
6975
6976         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
6977         * dbus/dbus-string.h:
6978         New function with test.
6979
6980         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
6981         * dbus/dbus-test.h:
6982         Add address tests.
6983
6984         * dbus/dbus-transport-debug.c:
6985         Document.
6986
6987         * dbus/dbus-transport.c: (_dbus_transport_open):
6988         Parse address and use correct transport implementation.
6989
6990 2003-01-30  Havoc Pennington  <hp@pobox.com>
6991
6992         * dbus/dbus-message.c: use message->byte_order instead of
6993         DBUS_COMPILER_BYTE_ORDER throughout.
6994         (dbus_message_create_header): pad header to align the
6995         start of the body of the message to 8-byte boundary
6996
6997         * dbus/dbus-marshal.h: make all the demarshalers take const
6998         DBusString arguments.
6999
7000         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
7001         validate message args here, so we don't have to do slow validation
7002         later, and so we catch bad messages as they are incoming. Also add
7003         better checks on header_len and body_len. Also fill in
7004         message->byte_order
7005
7006         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
7007         implemented properly)
7008         (_dbus_string_validate_nul): new function to check all-nul
7009
7010         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
7011         get_arg_end_pos and remove all validation
7012         (_dbus_marshal_validate_arg): actually do validation here.
7013
7014 2003-01-29  Havoc Pennington  <hp@pobox.com>
7015
7016         * dbus/dbus-message.c (check_message_handling): fix assertion
7017         failure on set_client_serial
7018
7019 2003-01-28  Havoc Pennington  <hp@pobox.com>
7020
7021         * dbus/dbus-server-debug.c: Add doc section comments
7022
7023         * dbus/dbus-transport-debug.c: add doc section comments
7024
7025 2003-01-28  Havoc Pennington  <hp@redhat.com>
7026
7027         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
7028         the reverse order from how I had it
7029         (_dbus_string_base64_encode): reverse encoding order. I was
7030         basically byteswapping everything during encoding.
7031
7032 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
7033
7034         * dbus/dbus-connection-internal.h:
7035         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
7036         (_dbus_connection_remove_timeout):
7037         Add functions for adding and removing timeouts.
7038
7039         * dbus/dbus-message.c: (dbus_message_new_from_message):
7040         Add new function that takes a message and creates an exact
7041         copy of it, but with the refcount set to 1.
7042         (check_message_handling):
7043         Fix build error.
7044
7045         * dbus/dbus-server-protected.h:
7046         * dbus/dbus-server.c: (_dbus_server_init_base),
7047         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
7048         (dbus_server_set_timeout_functions):
7049         (_dbus_server_remove_timeout):
7050         New functions so that a server can add and remove timeouts.
7051
7052         (dbus_server_listen):
7053         Add commented out call to dbus_server_debug_new.
7054
7055         * dbus/dbus-timeout.c: (_dbus_timeout_new):
7056         Actually set the handler, doh.
7057
7058         * dbus/dbus-transport.c: (_dbus_transport_open):
7059         Add commented out call to dbus_transport_debug_client_new.
7060
7061         * dbus/Makefile.am:
7062         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
7063
7064 2003-01-28  Havoc Pennington  <hp@pobox.com>
7065
7066         * dbus/dbus-message.c (check_message_handling): function to check
7067         on the loaded message, iterates over it etc.
7068
7069 2003-01-28  Havoc Pennington  <hp@pobox.com>
7070
7071         * test/Makefile.am (dist-hook): fix make distdir
7072
7073         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
7074
7075 2003-01-27  Havoc Pennington  <hp@pobox.com>
7076
7077         * dbus/dbus-mempool.c (time_for_size): replace printf with
7078         _dbus_verbose
7079
7080         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
7081         empty lines; fix the SAVE_LENGTH stuff to be
7082         START_LENGTH/END_LENGTH so it actually works; couple other
7083         bugfixes
7084
7085         * test/Makefile.am (dist-hook): add dist-hook for .message files
7086
7087         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
7088         can be constant or locked.
7089         (_dbus_string_free): allow freeing a const string as
7090         documented/intended
7091
7092         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
7093
7094         * dbus/dbus-test-main.c (main): take an argument which is the
7095         directory containing test data
7096
7097         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
7098         argument to this and load all the messages in test/data/
7099         checking that they can be loaded or not loaded as appropriate.
7100
7101 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
7102
7103         * bus/dispatch.c: (bus_dispatch_message_handler):
7104         Dispatch messages sent to services.
7105
7106         * bus/driver.c: (bus_driver_send_service_deleted),
7107         (bus_driver_send_service_created), (bus_driver_send_service_lost),
7108         (bus_driver_send_service_acquired):
7109         Add helper functions for sending service related messages.
7110
7111         (bus_driver_send_welcome_message):
7112         Send HELLO_REPLY instead of WELCOME.
7113
7114         (bus_driver_handle_list_services):
7115         Send LIST_SERVICES_REPLY instead of SERVICES.
7116
7117         (bus_driver_handle_own_service),
7118         (bus_driver_handle_service_exists):
7119         New message handlers.
7120
7121         (bus_driver_handle_message):
7122         Invoke new message handlers.
7123
7124         (bus_driver_remove_connection):
7125         Don't remove any services here since that's done automatically
7126         by bus_service_remove_owner now.
7127
7128         * bus/driver.h:
7129         New function signatures.
7130
7131         * bus/services.c: (bus_service_add_owner):
7132         Send ServiceAcquired message if we're the only primary owner.
7133
7134         (bus_service_remove_owner):
7135         Send ServiceAcquired/ServiceLost messages.
7136
7137         (bus_service_set_prohibit_replacement),
7138         (bus_service_get_prohibit_replacement):
7139         Functions for setting prohibit replacement.
7140
7141         (bus_service_has_owner):
7142         New function that checks if a connection is in the owner queue of
7143         a certain service.
7144
7145         * bus/services.h:
7146         Add new function signatures.
7147
7148         * dbus/dbus-list.c: (_dbus_list_test):
7149         Add tests for _dbus_list_remove_last and traversing the list backwards.
7150
7151         * dbus/dbus-list.h:
7152         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
7153         go any further, so return NULL then.
7154
7155         * dbus/dbus-protocol.h:
7156         Add new messages, service flags and service replies.
7157
7158 2003-01-26  Havoc Pennington  <hp@pobox.com>
7159
7160         * dbus/dbus-message-builder.c: implement, completely untested.
7161
7162         * test/data/*: add data to be used in testing.
7163         ".message" files are our simple loadable text format.
7164         ".message-raw" will be binary dumps of messages.
7165
7166         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
7167
7168 2003-01-26  Havoc Pennington  <hp@pobox.com>
7169
7170         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
7171
7172         * dbus/dbus-errors.c (dbus_result_to_string): add
7173         file errors
7174
7175         * dbus/dbus-message-builder.c: new file, will contain code to load
7176         up messages from files. Not implemented yet.
7177
7178 2003-01-26  Havoc Pennington  <hp@pobox.com>
7179
7180         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
7181         the sender by setting to NULL
7182
7183 2003-01-26  Havoc Pennington  <hp@pobox.com>
7184
7185         The unit tests pass, but otherwise untested.  If it breaks, the
7186         tests should have been better. ;-)
7187
7188         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
7189         the connection.
7190
7191         * dbus/dbus-message.c: redo everything so we maintain
7192         message->header as the only copy of the various fields.
7193         This avoids the possibility of out-of-memory in some cases,
7194         for example dbus_message_lock() can't run out of memory anymore,
7195         and avoids extra copying. Figured I may as well go ahead and do
7196         this since it was busted for dbus_message_lock to not return
7197         failure on OOM, and dbus_message_write_header was totally
7198         unchecked for OOM. Also fixed some random other bugs.
7199
7200         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
7201         that strings are nul-terminated. Also, end_pos can be equal
7202         to string length just not greater than, I think.
7203         (_dbus_marshal_set_int32): new function
7204         (_dbus_marshal_set_uint32): new function
7205         (_dbus_marshal_set_string): new function
7206
7207         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
7208         a warning, init timeout_list to NULL
7209         (dbus_connection_send_message): don't use uninitialized variable
7210         "serial"
7211
7212         * dbus/dbus-string.c (_dbus_string_replace_len): new function
7213
7214 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
7215
7216         * bus/driver.c: (bus_driver_handle_hello),
7217         (bus_driver_send_welcome_message):
7218         Plug leaks
7219
7220 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
7221
7222         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
7223         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
7224         (dbus_connection_unref):
7225         * dbus/dbus-marshal.c: (_dbus_marshal_test):
7226         * dbus/dbus-message.c: (dbus_message_unref),
7227         Plug memory leaks.
7228
7229         (dbus_message_get_fields):
7230         Remove debugging printout.
7231
7232         (_dbus_message_loader_return_buffer):
7233         Don't store the header string.
7234
7235         (_dbus_message_test):
7236         Plug leaks.
7237
7238 2003-01-26  Richard Hult  <rhult@codefactory.se>
7239
7240         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
7241         the file descriptor list, since it can change under us.
7242
7243 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7244
7245         * glib/dbus-gmain.c: (dbus_connection_prepare),
7246         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
7247         (remove_watch), (dbus_connection_hookup_with_g_main):
7248         Rewrite the glib handling to use its own GSource instead of a
7249         GIOChannel so we can catch messages put in the queue while waiting
7250         for a reply.
7251
7252 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7253
7254         * bus/Makefile.am:
7255         * bus/connection.c: (connection_disconnect_handler),
7256         (connection_watch_callback), (bus_connection_setup):
7257         * bus/dispatch.c: (send_one_message),
7258         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
7259         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
7260         * bus/dispatch.h:
7261         * bus/driver.c: (bus_driver_send_service_deleted),
7262         (bus_driver_send_service_created), (bus_driver_handle_hello),
7263         (bus_driver_send_welcome_message),
7264         (bus_driver_handle_list_services), (bus_driver_remove_connection),
7265         (bus_driver_handle_message):
7266         * bus/driver.h:
7267         Refactor code, put the message dispatching in its own file. Use
7268         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
7269         is disconnected.
7270
7271 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7272
7273         * dbus/dbus-internals.h:
7274         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
7275
7276         * dbus/dbus-message.c: (dbus_message_get_sender):
7277         * dbus/dbus-message.h:
7278         Implement dbus_message_get_sender.
7279
7280         * dbus/dbus-protocol.h:
7281         Add message and service defines.
7282
7283 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7284
7285         * dbus/dbus-connection.c: (dbus_connection_send_message):
7286         * dbus/dbus-message-internal.h:
7287         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
7288         (dbus_message_write_header):
7289         Remove _dbus_messag_unlock and don't set the client serial on a
7290         message if one already exists.
7291
7292 2003-01-24  Havoc Pennington  <hp@pobox.com>
7293
7294         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
7295         list_pool
7296
7297         * bus/driver.c (bus_driver_handle_list_services): fix a leak
7298         on OOM
7299
7300 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7301
7302         * dbus/dbus-list.c: (alloc_link), (free_link):
7303         Use a memory pool for the links.
7304
7305 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7306
7307         * bus/connection.c: (bus_connection_foreach):
7308         * bus/connection.h:
7309         Add new bus_connection_foreach function.
7310
7311         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
7312         Add function that broadcasts a message to all clients.
7313
7314         (bus_driver_send_service_created), (bus_driver_handle_hello),
7315         (bus_driver_send_welcome_message),
7316         (bus_driver_handle_list_services), (bus_driver_message_handler):
7317         Implement functions that take care of listing services, and notifying
7318         clients when new services are created.
7319
7320         * bus/services.c: (bus_services_list):
7321         * bus/services.h:
7322         Add new function that returns an array of strings with the currently
7323         registered services.
7324
7325         * glib/dbus-glib.h:
7326         * glib/dbus-gmain.c:
7327         Update copyright year.
7328
7329 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
7330
7331         * dbus/dbus-connection.c: (dbus_connection_send_message):
7332         Unlock the message in case it was sent earlier.
7333
7334         (dbus_connection_send_message_with_reply_and_block):
7335         Remove the reply message from the list.
7336
7337         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
7338         Set array_len and new_pos correctly.
7339
7340         (_dbus_marshal_test):
7341         Remove debug output.
7342
7343         * dbus/dbus-message-internal.h:
7344         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
7345         New function that returns the reply serial.
7346
7347         (_dbus_message_unlock):
7348         New function that unlocks a message and resets its header.
7349
7350         (dbus_message_append_string_array),
7351         (dbus_message_get_fields_valist),
7352         (dbus_message_iter_get_field_type),
7353         (dbus_message_iter_get_string_array),
7354         (dbus_message_get_fields),
7355         (dbus_message_append_fields_valist):
7356         Handle string arrays.
7357
7358         (dbus_message_set_sender):
7359         Make this function public since the bus daemon needs it.
7360
7361         (decode_header_data):
7362         Set the reply serial to -1 initially.
7363
7364         * dbus/dbus-message.h:
7365         Add dbus_message_set_sender.
7366
7367 2003-01-24  Havoc Pennington  <hp@pobox.com>
7368
7369         * doc/dbus-specification.sgml: add some stuff
7370
7371 2003-01-22  Havoc Pennington  <hp@pobox.com>
7372
7373         * doc/dbus-specification.sgml: Start to document the protocol.
7374
7375 2003-01-22  Havoc Pennington  <hp@pobox.com>
7376
7377         * dbus/dbus-connection.c
7378         (dbus_connection_send_message_with_reply_and_block): add some @todo
7379
7380         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
7381
7382 2003-01-21  Havoc Pennington  <hp@pobox.com>
7383
7384         (patch untested because can't compile)
7385
7386         * bus/driver.c (create_unique_client_name): make this function
7387         never recycle client names. Also, caller should initialize
7388         the DBusString.
7389
7390         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
7391
7392 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
7393
7394         * dbus/dbus-marshal.c: (_dbus_marshal_double),
7395         (_dbus_marshal_int32), (_dbus_marshal_uint32),
7396         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
7397         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
7398         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
7399         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
7400         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
7401         * dbus/dbus-marshal.h:
7402         * dbus/dbus-protocol.h:
7403         Add support for marshalling and demarshalling integer, double
7404         and string arrays.
7405
7406 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
7407
7408         * bus/Makefile.am:
7409         Add driver.[ch]
7410
7411         * bus/connection.c: (connection_disconnect_handler):
7412         Remove the connection from the bus driver's list.
7413
7414         (connection_watch_callback): Dispatch messages.
7415
7416         (free_connection_data): Free connection name.
7417
7418         (bus_connection_setup): Add connection to the bus driver's list.
7419         (bus_connection_remove_owned_service):
7420         (bus_connection_set_name), (bus_connection_get_name):
7421         Add functions for setting and getting the connection's name.
7422
7423         * bus/connection.h:
7424         Add function headers.
7425
7426         * bus/driver.c: (create_unique_client_name),
7427         (bus_driver_handle_hello_message),
7428         (bus_driver_send_welcome_message), (bus_driver_message_handler),
7429         (bus_driver_add_connection), (bus_driver_remove_connection):
7430         * bus/driver.h:
7431         * bus/main.c:
7432         * bus/services.c: (bus_service_free):
7433         * bus/services.h:
7434         New file that handles communication and registreation with the bus
7435         itself.
7436
7437 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
7438
7439         * dbus/dbus-connection.c: (dbus_connection_send_message):
7440         Add a new client_serial parameter.
7441
7442         (dbus_connection_send_message_with_reply):
7443         Remove a @todo since we've implemented the blocking function.
7444
7445         (dbus_connection_send_message_with_reply_and_block):
7446         New function that sends a message and waits for a reply and
7447         then returns the reply.
7448
7449         * dbus/dbus-connection.h:
7450         Add new functions.
7451
7452         * dbus/dbus-errors.c: (dbus_result_to_string):
7453         * dbus/dbus-errors.h:
7454         Add new DBUS_RESULT.
7455
7456         * dbus/dbus-message-internal.h:
7457         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
7458         (_dbus_message_set_sender), (dbus_message_write_header),
7459         (dbus_message_new_reply), (decode_header_data),
7460         (_dbus_message_loader_return_buffer), (_dbus_message_test):
7461         * dbus/dbus-message.h:
7462         Add new functions that set the reply serial and sender.
7463         Also marshal and demarshal them correctly and add test.
7464
7465         * dbus/dbus-protocol.h:
7466         Add new DBUS_MESSAGE_TYPE_SENDER.
7467
7468         * glib/dbus-glib.h:
7469         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
7470         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
7471         (dbus_connection_hookup_with_g_main):
7472         * glib/test-dbus-glib.c: (main):
7473         Rewrite to use GIOChannel and remove the GSource crack.
7474
7475         * test/echo-client.c: (main):
7476         * test/watch.c: (check_messages):
7477         Update for changed APIs
7478
7479 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
7480
7481         * dbus/Makefile.am: Add dbus-timeout.[cħ]
7482
7483         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
7484         Create a DBusTimeoutList.
7485         (dbus_connection_set_timeout_functions): Add new function to
7486         set timeout callbacks
7487
7488         * dbus/dbus-connection.h: Add public DBusTimeout API.
7489
7490         * dbus/dbus-message.c: (dbus_message_get_service):
7491         * dbus/dbus-message.h:  New function.
7492
7493         * dbus/dbus-server.c: Fix small doc typo.
7494
7495         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
7496
7497 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
7498
7499         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
7500         of the string, just as long as specified.
7501
7502 2003-01-19  Havoc Pennington  <hp@pobox.com>
7503
7504         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
7505         new function
7506
7507         * dbus/dbus-server.c (dbus_server_set_max_connections)
7508         (dbus_server_get_max_connections, dbus_server_get_n_connections):
7509         keep track of current number of connections, and add API for
7510         setting a max (but haven't implemented enforcing the max yet)
7511
7512 2003-01-18  Havoc Pennington  <hp@pobox.com>
7513
7514         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
7515         reading/writing if read_watch != NULL or write_watch != NULL.
7516
7517         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
7518         the message loader code to actually load message->header and
7519         message->body into the newly-created message.
7520
7521         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
7522         in OOM case
7523
7524         * dbus/dbus-connection.c (dbus_connection_set_max_message_size)
7525         (dbus_connection_get_max_message_size)
7526         (dbus_connection_set_max_live_messages_size)
7527         (dbus_connection_get_max_live_messages_size): implement some
7528         resource limitation functions
7529
7530         * dbus/dbus-resources.c: new file implementing some of the
7531         resource limits stuff
7532
7533         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
7534         missing docs, add @todo to handle OOM etc.
7535
7536         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
7537         docs
7538
7539 2003-01-18  Havoc Pennington  <hp@pobox.com>
7540
7541         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the
7542         connection if it hasn't been already.
7543
7544         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
7545         replace with DisconnectFunction.
7546
7547 2003-01-18  Havoc Pennington  <hp@pobox.com>
7548
7549         Building --disable-verbose-mode --disable-asserts --disable-tests
7550         cuts the library from 112K to 45K or so
7551
7552         * configure.in: check for varargs macro support,
7553         add --enable-verbose-mode, --enable-asserts.
7554
7555         * dbus/dbus-internals.h (_dbus_assert): support
7556         DBUS_DISABLE_ASSERT
7557         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
7558
7559 2003-01-18  Havoc Pennington  <hp@pobox.com>
7560
7561         * dbus/dbus-test.c: include config.h so that tests actually run
7562
7563         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
7564         so the failure mode when that assumption fails will be plenty
7565         obvious.
7566
7567 2003-01-18  Havoc Pennington  <hp@pobox.com>
7568
7569         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
7570
7571         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
7572         the distribution
7573
7574         * test/Makefile.am: don't use special variable "TESTS" for echo-*
7575         since we don't want to use those in make check
7576
7577 2003-01-15  Havoc Pennington  <hp@redhat.com>
7578
7579         Release 0.2
7580
7581         * NEWS: update
7582
7583 2003-01-15  Havoc Pennington  <hp@redhat.com>
7584
7585         * test/Makefile.am: fix so that test source code ends up in the
7586         distribution on make distcheck
7587
7588 2003-01-15  Havoc Pennington  <hp@redhat.com>
7589
7590         Release 0.1.
7591
7592         * NEWS: update
7593
7594 2003-01-15  Havoc Pennington  <hp@redhat.com>
7595
7596         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
7597         fix build when --disable-tests
7598
7599         * Makefile.am (EXTRA_DIST): put HACKING in here
7600
7601         * HACKING: document procedure for making a tarball release.
7602
7603 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
7604
7605         * bus/connection.c: (connection_error_handler),
7606         (bus_connection_setup):
7607         * bus/main.c: (main):
7608         Make sure that the DBusConnectionData struct is NULLed
7609         out to prevent a segfault.
7610
7611         * dbus/dbus-errors.c: (dbus_result_to_string):
7612         * dbus/dbus-errors.h:
7613         * dbus/dbus-message.c: (dbus_message_get_fields),
7614         (dbus_message_get_fields_valist), (_dbus_message_test):
7615         * dbus/dbus-message.h:
7616         Make dbus_message_get_fields return a result code so we can
7617         track invalid fields as well as oom.
7618
7619 2003-01-11  Havoc Pennington  <hp@pobox.com>
7620
7621         * configure.in: change --enable-test/--enable-ansi action-if-given
7622         to enable_foo=$enableval instead of enable_foo=yes
7623
7624 2003-01-08  Havoc Pennington  <hp@pobox.com>
7625
7626         * dbus/dbus-string.c (_dbus_string_align_length): new function
7627
7628         * dbus/dbus-test-main.c: move main() for test app here
7629         * dbus/dbus-test.c
7630         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
7631         symbol to run tests, because dbus-test isn't in the main
7632         library
7633
7634         Code review nitpicks.
7635
7636         * dbus/dbus-message.c (dbus_message_write_header): add newlines
7637         for people with narrow emacs ;-). Assert client_serial was filled
7638         in. Assert message->name != NULL.
7639         (dbus_message_append_fields): have "first_field_type" arg separate
7640         from va list, needed for C++ binding that also uses varargs IIRC
7641         and helps with type safety
7642         (dbus_message_new): add @todo about using DBusString to store
7643         service/name internally
7644         (dbus_message_new): don't leak ->service and ->name on OOM later
7645         in the function
7646         (dbus_message_unref): free the service name
7647         (dbus_message_get_fields): same change to varargs
7648         i.e. first_field_type
7649         (_dbus_message_loader_return_buffer): assert that the message data
7650         is aligned (if not it's a bug in our code). Put in verbose griping
7651         about why we set corrupted = TRUE.
7652         (decode_header_data): add FIXME that char* is evil.  Was going to
7653         add FIXME about evil locale-specific string.h strncmp, but just
7654         switched to wacky string-as-uint32 optimization. Move check for
7655         "no room for field name" above get_const_data_len() to avoid
7656         assertion failure in get_const_data_len if we have trailing 2
7657         bytes or the like. Check for service and name fields being
7658         provided twice. Don't leak service/name on error. Require field
7659         names to be aligned to 4 bytes.
7660
7661         * dbus/dbus-marshal.c: move byte swap stuff to header
7662         (_dbus_pack_int32): uscore-prefix
7663         (_dbus_unpack_int32): uscore-prefix
7664         (_dbus_unpack_uint32): export
7665         (_dbus_demarshal_string): add @todo complaining about use of
7666         memcpy()
7667         (_dbus_marshal_get_field_end_pos): add @todo about bad error
7668         handling allowing corrupt data to go unchecked
7669
7670 2003-01-08  Havoc Pennington  <hp@redhat.com>
7671
7672         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write
7673         to the select() as needed for authentication. (should be using
7674         _dbus_poll() not select, but for another day)
7675
7676         * dbus/dbus.h: include dbus/dbus-protocol.h
7677
7678 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
7679
7680         * dbus/Makefile.am (dbusinclude_HEADERS): Install
7681         dbus-connection.h
7682
7683 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
7684
7685         * dbus/dbus-internals.c: (_dbus_type_to_string):
7686         New function that returns a string describing a type.
7687
7688         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
7689         * dbus/dbus-marshal.h:
7690         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
7691         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
7692         (dbus_message_iter_get_byte_array):
7693         * dbus/dbus-message.h:
7694         Add new convenience functions for appending and getting message fields.
7695         Also add demarshalling routines for byte arrays.
7696
7697 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
7698
7699         * dbus/dbus-connection-internal.h:
7700         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
7701         (_dbus_connection_get_next_client_serial),
7702         (dbus_connection_send_message):
7703         * dbus/dbus-internals.h:
7704         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
7705         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
7706         (_dbus_marshal_uint32), (_dbus_demarshal_double),
7707         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
7708         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
7709         (_dbus_verbose_bytes), (_dbus_marshal_test):
7710         * dbus/dbus-marshal.h:
7711         * dbus/dbus-message-internal.h:
7712         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
7713         (dbus_message_write_header), (_dbus_message_lock),
7714         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
7715         (dbus_message_get_name), (dbus_message_append_int32),
7716         (dbus_message_append_uint32), (dbus_message_append_double),
7717         (dbus_message_append_string), (dbus_message_append_byte_array),
7718         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
7719         (dbus_message_iter_unref), (dbus_message_iter_has_next),
7720         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
7721         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
7722         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
7723         (decode_header_data), (_dbus_message_loader_return_buffer),
7724         (message_iter_test), (_dbus_message_test):
7725         * dbus/dbus-message.h:
7726         * dbus/dbus-protocol.h:
7727         * dbus/dbus-test.c: (main):
7728         * dbus/dbus-test.h:
7729         * glib/test-dbus-glib.c: (message_handler), (main):
7730         * test/echo-client.c: (main):
7731         * test/watch.c: (check_messages):
7732         Make messages sendable and receivable for real.
7733
7734 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
7735
7736         * dbus/dbus-marshal.c: (_dbus_marshal_double),
7737         (_dbus_marshal_string), (_dbus_marshal_byte_array):
7738         * dbus/dbus-message.c: (dbus_message_append_int32),
7739         (dbus_message_append_uint32), (dbus_message_append_double),
7740         (dbus_message_append_string), (dbus_message_append_byte_array):
7741         Handle OOM restoration.
7742
7743 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
7744
7745         * dbus/dbus-marshal.c: (_dbus_marshal_string),
7746         (_dbus_demarshal_string), (_dbus_marshal_test):
7747         * dbus/dbus-marshal.h:
7748         * dbus/dbus-message.c: (dbus_message_get_name),
7749         Document these functions.
7750
7751         (dbus_message_append_int32), (dbus_message_append_uint32),
7752         (dbus_message_append_double), (dbus_message_append_string),
7753         (dbus_message_append_byte_array):
7754         * dbus/dbus-message.h:
7755         Add functions for adding message fields of different types.
7756
7757         * dbus/dbus-protocol.h:
7758         Add the different types.
7759
7760 2003-01-05  Havoc Pennington  <hp@pobox.com>
7761
7762         * bus/connection.c: implement routines for handling connections,
7763         first thing is keeping a list of owned services on each connection
7764         and setting up watches etc.
7765
7766         * bus/services.c: implement a mapping from service names to lists
7767         of connections
7768
7769         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
7770
7771         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
7772         to use static mutexes for global data
7773
7774         * dbus/dbus-connection.c (dbus_connection_set_data): add new
7775         collection of functions to set/get application-specific data
7776         on the DBusConnection.
7777
7778 2003-01-04  Havoc Pennington  <hp@pobox.com>
7779
7780         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
7781         (_dbus_poll): new function
7782
7783         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
7784         copied from GLib
7785
7786         * bus/loop.c: initial code for the daemon main loop
7787
7788 2003-01-04  Havoc Pennington  <hp@pobox.com>
7789
7790         * test/watch.c (error_handler): make it safe if the error handler
7791         is called multiple times (if we s/error handler/disconnect
7792         handler/ we should just guarantee it's called only once)
7793
7794         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
7795         error handler on disconnect (it's quite possible we should
7796         just change the error handler to a "disconnect handler," I'm
7797         not sure we have any other meaningful errors)
7798
7799         * configure.in: check for getpwnam_r
7800
7801         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
7802         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
7803         mechanism as in SASL spec, using socket credentials
7804
7805         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
7806         (_dbus_send_credentials_unix_socket): new function
7807
7808         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
7809         dbus_accept()
7810         (_dbus_write): only check errno if <0 returned
7811         (_dbus_write_two): ditto
7812
7813 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
7814
7815         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
7816         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
7817         (_dbus_marshal_test):
7818         * dbus/dbus-marshal.h:
7819         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
7820         to _dbus_marshal_utf8_string. Also fix some tests.
7821
7822 2002-12-28  Harri Porten  <porten@kde.org>
7823
7824         * configure.in: added check for C++ compiler and a very cheesy
7825         check for the Qt integration
7826
7827         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
7828
7829         * qt/Makefile.am: added
7830
7831         * qt/.cvsignore: added
7832
7833         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
7834         latter, added #ifdef QT_THREAD_SUPPORT guard.
7835
7836         * dbus/Makefile.am: added missing headers for make dist
7837
7838 2002-12-28  Kristian Rietveld  <kris@gtk.org>
7839
7840         * dbus/Makefile.am: fixup export-symbols-regex.
7841
7842 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
7843
7844         * acinclude.m4: Add this file and put the
7845         PKG_CHECK_MODULE macro in it.
7846
7847 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
7848
7849         * dbus/dbus-marshal.c: (_dbus_marshal_string),
7850         (_dbus_demarshal_double), (_dbus_demarshal_int32),
7851         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
7852         (_dbus_marshal_test):
7853         Make the demarshalling routines align the pos argument.
7854         Add string marshalling tests and fix the obvious bugs
7855         discovered.
7856
7857 2002-12-26  Havoc Pennington  <hp@pobox.com>
7858
7859         * dbus/dbus-auth.c: fixes fixes fixes
7860
7861         * dbus/dbus-transport-unix.c: wire up support for
7862         encoding/decoding data on the wire
7863
7864         * dbus/dbus-auth.c (_dbus_auth_encode_data)
7865         (_dbus_auth_decode_data): append to target string
7866         instead of nuking it.
7867
7868 2002-12-26  Havoc Pennington  <hp@pobox.com>
7869
7870         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
7871         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
7872         doh
7873
7874         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
7875         avoid swap_bytes() overhead (ignoring possible assembly stuff for
7876         now). Main point is because I wanted unpack_uint32 to implement
7877         _dbus_verbose_bytes
7878         (_dbus_verbose_bytes): new function
7879
7880         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
7881
7882         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
7883         mechanism to handle a corrupt message stream
7884         (_dbus_message_loader_new): fix preallocation to only prealloc,
7885         not prelengthen
7886
7887         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
7888         (_dbus_string_test): enhance tests for copy/move and fix the
7889         functions
7890
7891         * dbus/dbus-transport-unix.c: Hold references in more places to
7892         avoid reentrancy problems
7893
7894         * dbus/dbus-transport.c: ditto
7895
7896         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
7897         leak reference count in no-message case
7898
7899         * test/watch.c (do_mainloop): handle adding/removing watches
7900         during iteration over the watches. Also, ref the connection/server
7901         stored on a watch, so we don't try to mangle a destroyed one.
7902
7903         * dbus/dbus-transport-unix.c (do_authentication): perform
7904         authentication
7905
7906         * dbus/dbus-auth.c (get_state): add a state
7907         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
7908         (_dbus_auth_get_unused_bytes): append the unused bytes
7909         to the passed in string, rather than prepend
7910
7911         * dbus/dbus-transport.c (_dbus_transport_init_base): create
7912         the auth conversation DBusAuth
7913
7914         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
7915         (_dbus_transport_new_for_domain_socket): when creating a
7916         transport, pass in whether it's a client-side or server-side
7917         transport so we know which DBusAuth to create
7918
7919 2002-12-03  Havoc Pennington  <hp@pobox.com>
7920
7921         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
7922         _after_ finalizing the derived members
7923         (unix_connection_set): unref watch if we fail to add it
7924
7925         * dbus/dbus-connection.c (dbus_connection_unref): delete the
7926         transport first, so that the connection owned by the
7927         transport will be valid as the transport finalizes.
7928
7929         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
7930         if necessary, and remove watches from the connection.
7931
7932         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
7933
7934 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
7935
7936         * dbus/dbus-marshal.c: (_dbus_marshal_string),
7937         (_dbus_demarshal_double), (_dbus_demarshal_int32),
7938         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
7939         (_dbus_marshal_test):
7940         * dbus/dbus-marshal.h:
7941         Add string marshal functions and have the demarshal functions
7942         return the new position.
7943
7944 2002-12-25  Havoc Pennington  <hp@pobox.com>
7945
7946         * doc/dbus-sasl-profile.txt: docs on the authentication protocol,
7947         it is a simple protocol that just maps directly to SASL.
7948
7949         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
7950         initial implementation, not actually used yet.
7951
7952         * dbus/dbus-string.c (_dbus_string_find): new function
7953         (_dbus_string_equal): new function
7954         (_dbus_string_base64_encode): new function
7955         (_dbus_string_base64_decode): new function
7956
7957 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
7958
7959         * dbus/Makefile.am:
7960         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
7961         (_dbus_marshal_int32), (_dbus_marshal_uint32),
7962         (_dbus_demarshal_double), (_dbus_demarshal_int32),
7963         (_dbus_demarshal_uint32), (_dbus_marshal_test):
7964         * dbus/dbus-marshal.h:
7965         * dbus/dbus-protocol.h:
7966         * dbus/dbus-test.c: (main):
7967         * dbus/dbus-test.h:
7968         Add un-optimized marshalling/demarshalling routines.
7969
7970 2002-12-25  Harri Porten  <porten@kde.org>
7971
7972         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
7973
7974 2002-12-24  Zack Rusin  <zack@kde.org>
7975
7976         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
7977         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
7978         main loop stuff
7979
7980 2002-12-24  Havoc Pennington  <hp@pobox.com>
7981
7982         * glib/dbus-gthread.c: fix include
7983
7984         * glib/dbus-glib.h: rename DBusMessageHandler for now.
7985         I think glib API needs to change, though, as you don't
7986         want to use DBusMessageFunction, you want to use the
7987         DBusMessageHandler object. Probably
7988         dbus_connection_open_with_g_main_loop()
7989         and dbus_connection_setup_g_main_loop() or something like that
7990         (but think of better names...) that just create a connection
7991         that has watch/timeout functions etc. already set up.
7992
7993         * dbus/dbus-connection.c
7994         (dbus_connection_send_message_with_reply): new function just to
7995         show how the message handler helps us deal with replies.
7996
7997         * dbus/dbus-list.c (_dbus_list_remove_last): new function
7998
7999         * dbus/dbus-string.c (_dbus_string_test): free a string that
8000         wasn't
8001
8002         * dbus/dbus-hash.c: use memory pools for the hash entries
8003         (rebuild_table): be more paranoid about overflow, and
8004         shrink table when we can
8005         (_dbus_hash_test): reduce number of sprintfs and write
8006         valid C89. Add tests for case where we grow and then
8007         shrink the hash table.
8008
8009         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
8010
8011         * dbus/dbus-connection.c (dbus_connection_register_handler)
8012         (dbus_connection_unregister_handler): new functions
8013
8014         * dbus/dbus-message.c (dbus_message_get_name): new
8015
8016         * dbus/dbus-list.c: fix docs typo
8017
8018         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
8019         an object representing a handler for messages.
8020
8021 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
8022
8023         * glib/dbus-glib.h:
8024         * glib/dbus-gthread.c: (dbus_gthread_init):
8025         Don't use the gdbus prefix for public functions.
8026
8027 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
8028
8029         * Makefile.am:
8030         * configure.in:
8031         Add GLib checks and fixup .pc files
8032
8033         * glib/Makefile.am:
8034         * glib/dbus-glib.h:
8035         * glib/dbus-gmain.c: (gdbus_connection_prepare),
8036         (gdbus_connection_check), (gdbus_connection_dispatch),
8037         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
8038         (dbus_connection_gsource_new):
8039         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
8040         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
8041         * glib/test-dbus-glib.c: (message_handler), (main):
8042         Add GLib support.
8043
8044 2002-12-15  Harri Porten  <porten@kde.org>
8045
8046         * autogen.sh: check for libtoolize before attempting to use it
8047
8048         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
8049         struct.
8050
8051         * .cvsignore: ignore more stamp files
8052
8053         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
8054
8055         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
8056         without make install.
8057
8058 2002-12-15  Havoc Pennington  <hp@pobox.com>
8059
8060         * dbus/dbus-threads.c: add thread stubs that a higher library
8061         layer can fill in. e.g. the GLib wrapper might fill them in with
8062         GThread stuff. We still need to use this thread API to
8063         thread-safe-ize the library.
8064
8065 2002-12-12  Havoc Pennington  <hp@pobox.com>
8066
8067         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
8068         below new interfaces and include fewer system headers.
8069
8070         * dbus/dbus-sysdeps.c (_dbus_read): new function
8071         (_dbus_write): new function
8072         (_dbus_write_two): new function
8073         (_dbus_connect_unix_socket): new function
8074         (_dbus_listen_unix_socket): new function
8075
8076         * dbus/dbus-message-internal.h: change interfaces to use
8077         DBusString
8078
8079 2002-12-11  Havoc Pennington  <hp@pobox.com>
8080
8081         * dbus/dbus-types.h: add dbus_unichar
8082
8083         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
8084
8085         * dbus/dbus-connection.c (dbus_connection_send_message): return
8086         TRUE on success
8087
8088         * dbus/dbus-transport.c: include dbus-watch.h
8089
8090         * dbus/dbus-connection.c: include dbus-message-internal.h
8091
8092         * HACKING: add file with coding guidelines stuff.
8093
8094         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
8095         handling here, for security purposes (as in vsftpd). Not actually
8096         using this class yet.
8097
8098         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
8099         system/libc usage here, as in vsftpd, for ease of auditing (and
8100         should also simplify portability). Haven't actually moved all the
8101         system/libc usage into here yet.
8102
8103 2002-11-25  Havoc Pennington  <hp@pobox.com>
8104
8105         * dbus/dbus-internals.c (_dbus_verbose): fix to not
8106         always print the first verbose message.
8107
8108 2002-11-24  Havoc Pennington  <hp@pobox.com>
8109
8110         * test/echo-client.c, test/echo-server.c: cheesy test
8111         clients.
8112
8113         * configure.in (AC_CHECK_FUNCS): check for writev
8114
8115         * dbus/dbus-message.c (_dbus_message_get_network_data): new
8116         function
8117
8118         * dbus/dbus-list.c (_dbus_list_foreach): new function
8119
8120         * dbus/dbus-internals.c (_dbus_verbose): new function
8121
8122         * dbus/dbus-server.c, dbus/dbus-server.h: public object
8123         representing a server that listens for connections.
8124
8125         * dbus/.cvsignore: create
8126
8127         * dbus/dbus-errors.h, dbus/dbus-errors.c:
8128         public API for reporting errors
8129
8130         * dbus/dbus-connection.h, dbus/dbus-connection.c:
8131         public object representing a connection that
8132         sends/receives messages. (Same object used for
8133         both client and server.)
8134
8135         * dbus/dbus-transport.h, dbus/dbus-transport.c:
8136         Basic abstraction for different kinds of stream
8137         that we might read/write messages from.
8138
8139 2002-11-23  Havoc Pennington  <hp@pobox.com>
8140
8141         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN
8142         _DBUS_INT_MAX
8143
8144         * dbus/dbus-test.c (main): add list test, and include
8145         dbus-test.h as intended
8146
8147         * dbus/dbus-hash.c (_dbus_hash_table_remove_string)
8148         (_dbus_hash_table_remove_int): return value indicates
8149         whether the entry existed to remove
8150
8151         * dbus/dbus-list.c: add linked list utility class,
8152         with docs and tests
8153
8154         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
8155         array sometimes.
8156
8157 2002-11-23  Havoc Pennington  <hp@pobox.com>
8158
8159         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
8160         DBUS_END_DECLS to nothing, that should fix this once and for all
8161
8162         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
8163
8164         * dbus/dbus-message.c, dbus/dbus-hash.c:
8165         add some missing @brief
8166
8167 2002-11-23  Havoc Pennington  <hp@pobox.com>
8168
8169         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS
8170         to avoid confusing Doxygen
8171
8172         * dbus/dbus-hash.c: @} not }@
8173
8174         * dbus/dbus-message.c (struct DBusMessage): split out
8175         internals docs
8176
8177 2002-11-23  Havoc Pennington  <hp@pobox.com>
8178
8179         * configure.in: pile on more warning flags if using gcc
8180
8181         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have
8182         to document static functions
8183
8184         * configure.in: add summary to end of configure so it
8185         looks nice and attractive
8186
8187         * dbus/dbus-hash.c: finish implementation and write unit
8188         tests and docs
8189
8190         * configure.in: add --enable-tests to enable unit tests
8191
8192         * dbus/dbus-test.c: test program to run unit tests
8193         for all files in dbus/*, initially runs a test for
8194         dbus-hash.c
8195
8196         * dbus/dbus-internals.h: file to hold some internal utility stuff
8197
8198 2002-11-22  Havoc Pennington  <hp@redhat.com>
8199
8200         * dbus/dbus-hash.c: copy in Tcl hash table, not yet
8201         "ported" away from Tcl
8202
8203         * dbus/dbus-types.h: header for types such as dbus_bool_t
8204
8205 2002-11-22  Havoc Pennington  <hp@redhat.com>
8206
8207         * dbus/dbus.h: fixups for doc warnings
8208
8209         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
8210         macros
8211         (QUIET): make it quiet so we can see warnings
8212
8213         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
8214
8215 2002-11-22  Havoc Pennington  <hp@redhat.com>
8216
8217         * Makefile.am: include "Doxyfile" target in all-local
8218
8219         * configure.in: generate the Doxyfile
8220
8221         * Doxyfile.in: move Doxyfile here, so we can use
8222         configure to generate a Doxyfile with the right
8223         version number etc.
8224
8225 2002-11-22  Havoc Pennington  <hp@redhat.com>
8226
8227         * dbus/dbus-message.c: move inline docs into .c file
8228
8229         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
8230         so all docs are under doc/
8231         (MAN_EXTENSION): generate man pages. Use extension
8232         ".3dbus" which matches ".3qt" on my system,
8233         I guess this is OK, I don't know really.
8234         (FILE_PATTERNS): look for .c files not .h, makes sense
8235         for plain C I think
8236
8237 2002-11-22  Havoc Pennington  <hp@pobox.com>
8238
8239         * Makefile.am (SUBDIRS): rename subdir "server" to "bus"
8240         because any app can be a server, and any app can be a client,
8241         the bus is a special kind of server.
8242
8243 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
8244
8245         * Doxyfile : adding. Still needs Makefile rules to be generated
8246         automatically (just run "doxygen" in the toplevel dir for now to
8247         generate docs)
8248
8249         * dbus/dbus-message.h : Adding sample docs (javadoc since
8250         resembles gtk-doc a little more)
8251
8252         * dbus/dbus.h : Adding sample docs
8253
8254 2002-11-21  Havoc Pennington  <hp@redhat.com>
8255
8256         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION
8257         so we can allow ourselves to include files directly,
8258         instead of having to use dbus.h
8259
8260         * dbus/dbus.h: fill in
8261
8262         * dbus/dbus-message.h: sketch out a sample header file.
8263         Include griping if you include it directly instead of
8264         via dbus.h
8265
8266         * dbus/dbus-macros.h: new file with macros for extern "C",
8267         TRUE/FALSE, NULL, etc.
8268
8269         * doc/file-boilerplate.c: put include guards in here
8270
8271 2002-11-21  Havoc Pennington  <hp@redhat.com>
8272
8273         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
8274
8275         * COPYING: include the GPL as well, and license code
8276         under both AFL and GPL.
8277
8278 2002-11-21  Havoc Pennington  <hp@redhat.com>
8279
8280         * acconfig.h: get rid of this
8281
8282         * autogen.sh (run_configure): add --no-configure option
8283
8284         * configure.in: remove AC_ARG_PROGRAM to make
8285         autoconf complain less. add AC_PREREQ.
8286         add AC_DEFINE third arg.
8287
8288 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
8289
8290         * doc/Makefile.am:
8291         Fix references so we can distcheck.
8292
8293 2002-11-21  Havoc Pennington  <hp@redhat.com>
8294
8295         * Initial module creation
8296