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