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