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