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