2003-08-30 Havoc Pennington <hp@pobox.com>
[platform/upstream/dbus.git] / ChangeLog
1 2003-08-30  Havoc Pennington  <hp@pobox.com>
2
3         * test/data/valid-config-files/system.d/test.conf: change to 
4         root for the user so warnings don't get printed
5
6         * dbus/dbus-message.c: add dbus_message_get_path,
7         dbus_message_set_path
8         
9         * dbus/dbus-object-tree.c (do_test_dispatch): add test of
10         dispatching to a path
11
12         * dbus/dbus-string.c (_dbus_string_validate_path): add
13
14         * dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
15         (_dbus_marshal_object_path): implement
16
17         * dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
18         to contain the path to the target object
19         (DBUS_HEADER_FIELD_SENDER_SERVICE): rename
20         DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
21
22 2003-08-30  Havoc Pennington  <hp@pobox.com>
23
24         * dbus/dbus-object-tree.c: write tests and fix the discovered bugs
25
26 2003-08-29  Havoc Pennington  <hp@pobox.com>
27
28         * dbus/dbus-object-tree.c: modify to allow overlapping paths to be
29         registered
30         (struct DBusObjectSubtree): shrink this
31         a lot, since we may have a lot of them
32         (_dbus_object_tree_free_all_unlocked): implement
33         (_dbus_object_tree_dispatch_and_unlock): implement
34
35 2003-08-29  Havoc Pennington  <hp@pobox.com>
36
37         * dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS
38
39 2003-08-28  Havoc Pennington  <hp@pobox.com>
40
41         purge DBusObjectID
42         
43         * dbus/dbus-connection.c: port to no ObjectID, create a
44         DBusObjectTree, rename ObjectTree to ObjectPath in public API
45
46         * dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
47         everything except UnregisterFunction and MessageFunction
48         
49         * dbus/dbus-marshal.c: port away from DBusObjectID, 
50         add DBUS_TYPE_OBJECT_PATH
51         
52         * dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
53         dbus/dbus-objectid.[hc]: remove these, we are moving to 
54         path-based object IDs
55
56 2003-08-25  Havoc Pennington  <hp@pobox.com>
57
58         Just noticed that dbus_message_test is hosed, I wonder when I
59         broke that. I thought make check was passing earlier...
60         
61         * dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
62         container tree, will replace most of dbus-object-registry
63
64         * dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
65         screwup
66
67 2003-08-19  Havoc Pennington  <hp@pobox.com>
68
69         * dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
70         (dbus_message_is_error): fix this function
71
72         * bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
73         match
74
75         * bus/policy.c (bus_client_policy_check_can_receive): fix code to
76         reflect clarified man page
77         (bus_client_policy_check_can_send): ditto
78         
79         * bus/session.conf.in: fixup
80
81         * bus/system.conf.in: fixup
82
83 2003-08-18  Havoc Pennington  <hp@redhat.com>
84
85         * dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix
86
87         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
88         dumb bug created earlier (wrong order of args to
89         decode_header_data())
90         
91         * tools/dbus-send.c: port
92
93         * tools/dbus-print-message.c (print_message): port
94
95         * test/data/*messages: port all messages over
96         
97         * dbus/dbus-message-builder.c: support including 
98         message type
99         
100         * bus/driver.c: port over
101         
102         * bus/dispatch.c: port over to new stuff
103
104         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
105         rename disconnect signal to "Disconnected"
106
107 2003-08-17  Havoc Pennington  <hp@pobox.com>
108
109         This doesn't compile yet, but syncing up so I can hack on it from
110         work. What are branches for if not broken code? ;-)
111         
112         * dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
113         DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
114         DBUS_HEADER_FIELD_ERROR_NAME
115         
116         * dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
117         for the interface+member pairs
118         (string_hash): change to use g_str_hash algorithm
119         (find_direct_function, find_string_function): refactor these to
120         share most code.
121         
122         * dbus/dbus-message.c: port all of this over to support 
123         interface/member fields instead of name field
124
125         * dbus/dbus-object-registry.c: port over
126         
127         * dbus/dbus-string.c (_dbus_string_validate_interface): rename
128         from _dbus_string_validate_name
129
130         * bus/dbus-daemon-1.1: change file format for the 
131         <deny>/<allow> stuff to match new message naming scheme
132
133         * bus/policy.c: port over
134
135         * bus/config-parser.c: parse new format
136         
137 2003-08-16  Havoc Pennington  <hp@pobox.com>
138
139         * dbus/dbus-object-registry.c (add_and_remove_objects): remove
140         broken assertion
141
142         * glib/dbus-gproxy.c: some hacking
143
144 2003-08-15  Havoc Pennington  <hp@redhat.com>
145
146         * dbus/dbus-pending-call.c (dbus_pending_call_block): implement
147
148         * dbus/dbus-connection.c
149         (dbus_connection_send_with_reply_and_block): factor out internals;
150         change to convert any error replies to DBusError instead of 
151         returning them as a message
152
153 2003-08-15  Havoc Pennington  <hp@pobox.com>
154
155         * dbus/dbus-connection.c, 
156         dbus/dbus-pending-call.c: Finish the pending call stuff
157
158 2003-08-14  Havoc Pennington  <hp@redhat.com>
159
160         * dbus/dbus-pending-call.c: start on new object that will replace
161         DBusMessageHandler and ReplyHandlerData for tracking outstanding
162         replies
163
164         * dbus/dbus-gproxy.c: start on proxy object used to communicate
165         with remote interfaces
166
167         * dbus/dbus-gidl.c: do the boring boilerplate in here
168         
169 2003-08-12  Havoc Pennington  <hp@pobox.com>
170
171         * bus/dispatch.c (bus_dispatch): make this return proper 
172         DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD
173
174         * dbus/dbus-errors.c (dbus_set_error): use
175         _dbus_string_append_printf_valist
176
177         * dbus/dbus-string.c (_dbus_string_append_printf_valist)
178         (_dbus_string_append_printf): new
179
180         * dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
181         UNKNOWN_METHOD
182
183         * dbus/dbus-connection.c (dbus_connection_dispatch): handle
184         DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
185         message is unhandled.
186
187 2003-08-11  Havoc Pennington  <hp@pobox.com>
188
189         * bus/test.c (client_disconnect_handler): change to return
190         HANDLED (would have been REMOVE_MESSAGE)
191
192         * dbus/dbus-object.h (enum DBusHandlerResult): rename to
193         HANDLED/NOT_YET_HANDLED instead of
194         REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
195         should be used.
196
197 2003-08-10  Havoc Pennington  <hp@pobox.com>
198
199         * tools/dbus-send.c (main): add --type argument, for now
200         supporting only method_call and signal types.
201
202         * tools/dbus-print-message.c: print message type
203
204         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
205         init connection->objects
206
207         * doc/dbus-specification.sgml: fix sgml
208
209         * bus/*.c: port over to object-instance API changes
210
211         * test/test-service.c: ditto
212         
213         * dbus/dbus-message.c (dbus_message_create_header): allow #NULL
214         name, we will have to fix up the rest of the code to also handle
215         this
216         (dbus_message_new): generic message-creation call
217         (set_string_field): allow appending name field
218
219 2003-08-06  Havoc Pennington  <hp@pobox.com>
220
221         * dbus/dbus-object-registry.c: implement signal connection 
222         and dispatch
223
224         * dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new
225
226         * dbus/dbus-internals.c (_dbus_memdup): new function
227
228 2003-08-02  Havoc Pennington  <hp@pobox.com>
229
230         * dbus/dbus-message.c (dbus_message_get_no_reply)
231         (dbus_message_set_no_reply): add these and remove
232         set_is_error/get_is_error
233
234         * dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
235         remove the ERROR flag, since there's now an ERROR type
236
237 2003-08-01  Havoc Pennington  <hp@pobox.com>
238
239         * dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
240         implement
241
242         * dbus/dbus-message.c (dbus_message_get_type): new function
243
244         * doc/dbus-specification.sgml: add "type" byte to messages
245
246 2003-08-01  Havoc Pennington  <hp@pobox.com>
247
248         * dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
249         a message type enum to distinguish kinds of message
250         (DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
251         that need not be replied to
252
253 2003-08-01  Havoc Pennington  <hp@pobox.com>
254
255         * dbus/dbus-marshal.c: adapt to DBusObjectID changes
256         (unpack_8_octets): fix no-64-bit-int bug
257
258         * dbus/dbus-object-registry.c (validate_id): validate the 
259         connection ID bits, not just the instance ID.
260
261         * dbus/dbus-connection.c (_dbus_connection_init_id): initialize
262         the connection-global 33 bits of the object ID
263
264         * dbus/dbus-object-registry.c (info_from_entry): fill in 
265         object ID in the new way
266
267         * dbus/dbus-objectid.h: rather than high/low bits, specifically 
268         define server/client/instance bits.
269
270 2003-07-30  Havoc Pennington  <hp@pobox.com>
271
272         * dbus/dbus-connection.c (dbus_connection_register_object): fix
273         build
274
275 2003-07-13  Havoc Pennington  <hp@pobox.com>
276
277         * dbus/dbus-object.h (struct DBusObjectVTable): add padding
278         fields to DBusObjectVTable and DBusObjectInfo
279
280 2003-07-12  Havoc Pennington  <hp@pobox.com>
281
282         * dbus/dbus-object-registry.c: implement unit test,
283         fix bugs discovered in process
284
285         * dbus/dbus-connection.c: remove handler_table and
286         register_handler(), add DBusObjectRegistry usage
287
288         * dbus/dbus-objectid.c (dbus_object_id_is_null)
289         (dbus_object_id_set_null): new functions
290
291 2003-07-08  Havoc Pennington  <hp@pobox.com>
292
293         * dbus/dbus-object.c: implement some of this
294
295         * dbus/dbus-object-registry.c
296         (_dbus_object_registry_add_and_unlock): fill in the object_id out
297         param
298         (_dbus_object_registry_new): handle OOM
299
300 2003-07-08  Havoc Pennington  <hp@pobox.com>
301
302         * dbus/dbus-object.h: sketch out an API for registering objects
303         with a connection, that allows us to use as little as 24 bytes
304         per object and lets application code represent an object in 
305         any conceivable way.
306
307         * dbus/dbus-object-registry.c: implement the hard bits of the
308         DBusConnection aspect of object API. Not yet wired up.
309         
310 2003-07-06  Havoc Pennington  <hp@pobox.com>
311
312         * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function
313         (_dbus_marshal_object_id): new
314         (_dbus_demarshal_object_id): new
315         (_dbus_marshal_get_arg_end_pos): support object ID type, and
316         consolidate identical switch cases. Don't conditionalize handling
317         of DBUS_TYPE_UINT64, need to handle the type always.
318         (_dbus_marshal_validate_arg): consolidate identical cases, and
319         handle DBUS_TYPE_OBJECT_ID
320
321         * dbus/dbus-objectid.c: new file with DBusObjectID data type.
322
323         * dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID
324
325 2003-06-29  Havoc Pennington  <hp@pobox.com>
326
327         * mono/Test.cs (class Test): fire up a main loop and run it
328
329         * mono/DBus.cs (DBus): don't g_thread_init since it can only be
330         done once, the app has to do it
331
332 2003-06-26  Havoc Pennington  <hp@pobox.com>
333
334         * mono/Connection.cs: set up connection with the glib main loop
335
336 2003-07-01  Havoc Pennington  <hp@redhat.com>
337
338         * doc/dbus-specification.sgml: clarify the format of a type code,
339         change suggested by Jim Blandy
340
341 2003-06-29  Miloslav Trmac  <mitr@volny.cz>
342
343         * doc/Makefile.am:
344         * tools/Makefile.am: Don't assume srcdir == builddir.
345
346         * dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
347         the allocated block.
348         (_dbus_memory_test): New function.
349         * dbus/dbus-test.h: Add _dbus_memory_test ().
350         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.
351
352         * dbus/dbus-message.c (decode_header_data): Use %.4s instead
353         of %c%c%c%c.
354         (dbus_message_new): Remove obsolete @todo.
355
356         * dbus/dbus-marshal.c (_dbus_marshal_set_int64)
357         (_dbus_marshal_set_uint64): Fix comment.
358
359         * dbus/dbus-message.c (append_int_field, append_uint_field): Don't
360         hardcode FIELD_REPLY_SERIAL.
361
362         * dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
363         (_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p
364
365         * configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
366         and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used
367
368 2003-06-24  Havoc Pennington  <hp@pobox.com>
369
370         * mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)
371
372 2003-06-23  Anders Carlsson  <andersca@codefactory.se>
373
374         * configure.in:
375         * gcj/.cvsignore:
376         * gcj/Hello.java:
377         * gcj/Makefile.am:
378         * gcj/TestMessage.java: (TestMessage), (TestMessage.main):
379         * gcj/org/.cvsignore:
380         * gcj/org/Makefile.am:
381         * gcj/org/freedesktop/.cvsignore:
382         * gcj/org/freedesktop/Makefile.am:
383         * gcj/org/freedesktop/dbus/.cvsignore:
384         * gcj/org/freedesktop/dbus/Makefile.am:
385         * gcj/org/freedesktop/dbus/Message.java: (Message),
386         (Message.Message):
387         * gcj/org/freedesktop/dbus/natMessage.cc:
388         Fix the build system.
389
390 2003-06-22  Havoc Pennington  <hp@pobox.com>
391
392         * mono/Connection.cs: add more bindings
393
394         * dbus/dbus-threads.c (dbus_threads_init): allow calling this
395         more than once.
396
397 2003-06-22  Havoc Pennington  <hp@pobox.com>
398
399         * mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
400         Start wrapping more stuff.
401
402 2003-06-22  Havoc Pennington  <hp@pobox.com>
403
404         * mono/Message.cs: implement Message.Wrap() that ensures we only
405         have a single C# wrapper per DBusMessage, assuming it works which
406         it probably doesn't.
407
408         * dbus/dbus-message.c (dbus_message_allocate_data_slot): new
409         (dbus_message_free_data_slot): new
410         (dbus_message_set_data): new
411         (dbus_message_get_data): new
412
413 2003-06-22  Havoc Pennington  <hp@pobox.com>
414
415         * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
416         (_dbus_data_slot_allocator_alloc): rework these to keep a
417         reference count on each slot and automatically manage a global
418         slot ID variable passed in by address
419
420         * bus/bus.c: convert to new dataslot API
421
422         * dbus/dbus-bus.c: convert to new dataslot API
423
424         * dbus/dbus-connection.c: convert to new dataslot API
425
426         * dbus/dbus-server.c: convert to new dataslot API
427
428         * glib/dbus-gmain.c: ditto
429
430         * bus/test.c: ditto
431
432         * bus/connection.c: ditto
433
434 2003-06-22  Anders Carlsson  <andersca@codefactory.se>
435
436         * configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
437         after the gcj checks so that the correct configuration tags
438         will be added to libtool.
439
440         * dbus-glib-1.pc.in: No need to specify any includes since
441         dbus-1.pc.in has those.
442
443 2003-06-22  Havoc Pennington  <hp@pobox.com>
444
445         * mono/*, gcj/*, configure.in, Makefile.am:
446         Check in makefiles and subdirs for mono and gcj bindings.
447         Neither binding actually exists, just trying to get through
448         all the build and other boring bits.
449
450 2003-06-21  Philip Blundell  <philb@gnu.org>
451
452         * tools/dbus-monitor.1: Updated.
453
454         * tools/dbus-send.1: Likewise.
455
456 2003-06-20  Anders Carlsson  <andersca@codefactory.se>
457
458         * dbus/dbus-transport-unix.c (unix_handle_watch): Check
459         for hangup and error after checking read so we won't discard
460         pending data if both hangup and read are set.
461
462 2003-06-19  Philip Blundell  <philb@gnu.org>
463
464         * tools/dbus-print-message.c (print_message): Handle BOOLEAN.
465
466         * tools/dbus-send.c: Accept both --system and --session.
467
468         * tools/dbus-monitor.c: Same here.
469
470 2003-06-19  Anders Carlsson  <andersca@codefactory.se>
471
472         * glib/dbus-glib.h: Fix so that dbus-glib.h can be used
473         from C++ (Patch by Miloslav Trmac).
474
475 2003-06-15  Joe Shaw  <joe@assbarn.com>
476
477         * configure.in: Check for socklen_t.
478
479         * dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.
480
481         * test/test-segfault.c: Add #include <sys/time.h>
482
483         * tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
484         dbus-launch needs it.
485
486 2003-06-09  Havoc Pennington  <hp@redhat.com>
487
488         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
489         SUN_LEN, it breaks abstract socket usage
490
491         * dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
492         starts of lines.
493
494 2003-06-04  Havoc Pennington  <hp@pobox.com>
495
496         * dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
497         using unix:abstract=/foo, and when listening in a tmpdir
498         i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.
499
500         * dbus/dbus-transport.c (_dbus_transport_open): support
501         unix:abstract=/foo
502
503         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
504         support abstract sockets
505
506         * dbus/dbus-transport-unix.c
507         (_dbus_transport_new_for_domain_socket): support abstract sockets
508
509         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
510         toggle as an argument, implement abstract namespace support
511         (_dbus_listen_unix_socket): ditto
512
513         * configure.in: add --enable-abstract-sockets and implement
514         a configure check for autodetection of the right value.
515
516 2003-06-01  Havoc Pennington  <hp@pobox.com>
517
518         * tools/dbus-cleanup-sockets.c: add utility to clean up sockets
519         in /tmp (though on Linux this will end up being useless,
520         when we add abstract namespace support)
521
522         * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to
523         subst'ing it
524
525 2003-05-28  Colin Walters  <walters@verbum.org>
526
527         * tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).
528
529 2003-05-18  Anders Carlsson  <andersca@codefactory.se>
530
531         * dbus/dbus-message.c (dbus_message_new): Remove @todo.
532
533 2003-05-17  Colin Walters  <walters@gnu.org>
534
535         * tools/dbus-send.c: Don't exit with an error code if --help was
536         passed.  Default to using the session bus instead of the system
537         one.
538
539         * tools/dbus-launch.c: Ditto.
540
541         * tools/dbus-monitor.c: Ditto.
542
543         * tools/dbus-send.1: Update with new arguments.
544
545         * tools/dbus-launch.c: Emit code to export variables.  New
546         arguments -s and -c to specify shell syntax, and a bit of code to
547         autodetect syntax.  Also, allow specifying a program to run.
548
549         * tools/dbus-launch.1: Update with new arguments.
550
551         * tools/dbus-send.1: Ditto.
552
553         * tools/dbus-monitor.1: Ditto.
554
555 2003-05-17  Havoc Pennington  <hp@pobox.com>
556
557         * bus/config-parser.c (merge_included): merge in policies from
558         child configuration file.
559
560         * bus/policy.c (bus_policy_merge): function to merge two policies
561         together
562
563 2003-05-16  Havoc Pennington  <hp@redhat.com>
564
565         * dbus/dbus-connection.c: disable verbose lock spew
566
567         * tools/dbus-send.c: add --print-reply command line option
568
569         * tools/dbus-print-message.h (print_message): new util function
570         shared by dbus-send and dbus-monitor
571
572         * tools/dbus-monitor.c (handler_func): exit on disconnect
573
574         * dbus/dbus-transport-unix.c (do_reading): if the transport is
575         disconnected, don't try to use the read_watch
576
577         * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
578         so we can find this bug more easily
579
580 2003-05-16  Havoc Pennington  <hp@redhat.com>
581
582         * bus/policy.c (free_rule_list_func): avoid a crash when passed
583         NULL as DBusHashTable is annoyingly likely to do.
584
585 2003-05-16  Colin Walters  <walters@verbum.org>
586
587         * tools/dbus-monitor.c: Add --session argument and usage()
588         function.
589
590         * tools/dbus-monitor.1: Update with new --session arg.
591
592         * bus/Makefile.am (install-data-hook): Create
593         $(libdir)/dbus-1.0/services so that the session bus is happy.
594
595 2003-05-15  Havoc Pennington  <hp@redhat.com>
596
597         * dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
598         on non-x86. ifdef's are evil.
599
600 2003-05-15  Havoc Pennington  <hp@redhat.com>
601
602         * configure.in: 0.11
603
604         * NEWS: update
605
606         * bus/Makefile.am (initddir): apparently we are supposed to put
607         init scripts in /etc/rc.d/init.d not /etc/init.d
608
609         * bus/Makefile.am: remove the "you must --enable-tests to make
610         check" as it broke distcheck
611
612         * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d
613
614 2003-05-13  James Willcox  <jwillcox@gnome.org>
615
616         * configure.in:
617         * bus/activation.c: (bus_activation_service_created),
618         (bus_activation_activate_service):
619         * bus/driver.c: (bus_driver_send_service_deleted),
620         (bus_driver_send_service_created), (bus_driver_send_service_lost),
621         (bus_driver_send_service_acquired),
622         (bus_driver_send_welcome_message),
623         (bus_driver_handle_list_services):
624         * bus/session.conf.in:
625         * dbus/dbus-bus.c: (dbus_bus_acquire_service),
626         (dbus_bus_service_exists), (dbus_bus_activate_service):
627         * dbus/dbus-bus.h:
628
629         Add some convenience API which lets you activate a service, and did a
630         bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
631         and dbus_message_get_args()
632
633 2003-05-11  Havoc Pennington  <hp@pobox.com>
634
635         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid
636         calling _dbus_marshal_validate_arg() for every byte in a byte
637         array, etc.
638
639         * dbus/dbus-message-handler.c: use atomic reference counting to
640         reduce number of locks slightly; the global lock in here sucks
641
642         * dbus/dbus-connection.c
643         (_dbus_connection_update_dispatch_status_and_unlock): variant of
644         update_dispatch_status that can be called with lock held; then use
645         in a couple places to reduce locking/unlocking
646         (dbus_connection_send): hold the lock over the whole function
647         instead of acquiring it twice.
648
649         * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM
650
651         * bus/connection.c (bus_connections_setup_connection): fix access
652         to already-freed memory.
653
654         * dbus/dbus-connection.c: keep a little cache of linked list
655         nodes, to avoid using the global linked list alloc lock in the
656         normal send-message case. Instead we just use the connection lock
657         that we already have to take.
658
659         * dbus/dbus-list.c (_dbus_list_find_last): new function
660
661         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec):
662         change to use a struct for the atomic type; fix docs,
663         they return value before increment, not after increment.
664
665         * dbus/dbus-string.c (_dbus_string_append_4_aligned)
666         (_dbus_string_append_8_aligned): new functions to try to
667         microoptimize this operation.
668         (reallocate_for_length): break this out of set_length(), to
669         improve profile info, and also so we can consider inlining the
670         set_length() part.
671
672         * dbus/dbus-message.c (dbus_message_new_empty_header): init data
673         strings with some preallocation, cuts down on our calls to realloc
674         a fair bit. Though if we can get the "move entire string to empty
675         string" optimization below to kick in here, it would be better.
676
677         * dbus/dbus-string.c (_dbus_string_move): just call
678         _dbus_string_move_len
679         (_dbus_string_move_len): add a special case for moving
680         an entire string into an empty string; we can just
681         swap the string data instead of doing any reallocs.
682         (_dbus_string_init_preallocated): new function
683
684 2003-05-11  Havoc Pennington  <hp@pobox.com>
685
686         Write a "test-profile" that does echo client-server with threads;
687         profile reveals lock contention, memcpy/realloc of buffers, and
688         UTF-8 validation as hot spots. 20% of lock contention eliminated
689         with dbus_atomic_inc/dec implementation on x86.  Much remaining
690         contention is global mempool locks for GList and DBusList.
691
692         * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add
693         x86 implementation
694
695         * dbus/dbus-connection.c (struct DBusConnection): use
696         dbus_atomic_t for the reference count
697
698         * dbus/dbus-message.c (struct DBusMessage): declare
699         dbus_atomic_t values as volatile
700
701         * configure.in: code to detect ability to use atomic integer
702         operations in assembly, from GLib patch
703
704         * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every
705         time, tired of it being wrong in threads and forked processes
706
707         * glib/test-profile.c: a little program to bounce messages back
708         and forth between threads and eat CPU
709
710         * dbus/dbus-connection.c: add debug spew macros for debugging
711         thread locks; include config.h at top; fix deadlock in
712         dbus_connection_flush()
713
714 2003-05-08  Havoc Pennington  <hp@pobox.com>
715
716         * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
717         data from getting written, and there wasn't a good reason to
718         use _exit really.
719
720         * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
721         dbus_verbose lines in test coverage
722         (main): add list of functions sorted by # of untested blocks
723         to the coverage report
724
725         * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS
726
727         * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage
728
729         * dbus/dbus-message-handler.c (_dbus_message_handler_test):
730         extend test coverage
731
732         * test/data/auth/cancel.auth-script: test canceling an
733         authentication
734
735         * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
736         aren't used. in CVS history if we end up needing them.
737
738 2003-05-04  Havoc Pennington  <hp@pobox.com>
739
740         * dbus/dbus-message-handler.c (_dbus_message_handler_test): add
741         unit test
742
743         * dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
744         function, which assumed length was in # of strings, not bytes
745
746         * dbus/dbus-message.c (_dbus_message_test): add tests for some
747         missing coverage
748
749         * dbus/dbus-connection.c
750         (_dbus_connection_queue_received_message): disable function for
751         now, we are only using it in test mode
752
753         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
754         remove a mistaken FIXME
755
756 2003-05-04  Havoc Pennington  <hp@pobox.com>
757
758         * dbus/dbus-connection.c (dbus_connection_preallocate_send):
759         unlock mutex on successful return, patch from Anders Gustafsson
760
761 2003-05-04  Havoc Pennington  <hp@pobox.com>
762
763         * dbus-glib-1.pc.in (Requires): fix dependencies, from
764         Anders Gustafsson
765
766 2003-05-04  Havoc Pennington  <hp@pobox.com>
767
768         * tools/dbus-launch.c: implement
769
770         * bus/main.c (main), bus/bus.c (bus_context_new):
771         implement --print-pid and --fork
772
773 2003-05-03  Havoc Pennington  <hp@redhat.com>
774
775         * dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
776         the address had no value, and add to test suite. Fix and
777         regression test from Miloslav Trmac
778
779 2003-05-03  Havoc Pennington  <hp@pobox.com>
780
781         * dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
782         watch is invalid when handled
783
784         * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add
785         dbus-launch utility to launch the bus from a shell script.  Didn't
786         actually implement dbus-launch yet, it's just a placeholder still.
787
788 2003-05-03  Havoc Pennington  <hp@pobox.com>
789
790         * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
791         daemon; also documents daemon config file, so replaces
792         doc/config-file.txt. Corrected some stuff from config-file.txt in
793         the process of moving it.
794
795 2003-05-03  Havoc Pennington  <hp@pobox.com>
796
797         * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
798         add some man pages
799
800 2003-05-03  Colin Walters  <walters@verbum.org>
801
802         * dbus/dbus-sysdeps.c (fill_user_info): Test against
803         DBUS_UID_UNSET to determine whether to do a uid lookup or not.
804
805         * Makefile.am: Update to use new .pc versioning scheme.
806
807 2003-05-02  Havoc Pennington  <hp@redhat.com>
808
809         * bus/system.conf.in: allow send/receive to/from message bus
810         service
811
812 2003-04-30  Havoc Pennington  <hp@redhat.com>
813
814         * configure.in: print a note when building with unit tests and
815         without assertions
816
817 2003-04-30  Havoc Pennington  <hp@redhat.com>
818
819         * Makefile.am: add a check-local that complains if you didn't
820         configure with --enable-tests
821
822 2003-04-29  Havoc Pennington  <hp@redhat.com>
823
824         * glib/dbus-gmain.c: docs cleanups
825
826         * dbus/dbus-types.h: add docs on int64 types
827
828         * dbus/dbus-memory.c: fix docs to avoid putting private API in
829         public API docs section
830
831 2003-04-29  Havoc Pennington  <hp@redhat.com>
832
833         * dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
834         dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
835         parallel install API version, not with the D-BUS package version.
836
837         * HACKING: move some of README over here
838
839         * README: updates, and document API/ABI policy
840
841         * configure.in: reindentation
842
843 2003-04-29  Havoc Pennington  <hp@redhat.com>
844
845         * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE
846         to use this library" to be sure people have the right
847         expectations.
848
849 2003-04-28  Havoc Pennington  <hp@redhat.com>
850
851         * configure.in: add --enable-docs which by default is auto yes if
852         doxygen and db2html found, no otherwise; but can be forced on/off
853
854         * doc/Makefile.am: conditionalize whether to build docs on
855         --enable-docs
856
857 2003-04-28  Havoc Pennington  <hp@redhat.com>
858
859         * configure.in: 0.10
860
861         * NEWS: update
862
863         * bus/system.conf.in: add <includedir>system.d</includedir>
864
865         * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when
866         username was provided but not uid
867
868         * bus/config-parser.c (struct BusConfigParser): keep track of
869         whether the parser is toplevel or was included; change some
870         of the error handling if it's included.
871
872 2003-04-27  Havoc Pennington  <hp@pobox.com>
873
874         Unbreak my code...
875
876         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
877         report correct status if we finish processing authentication
878         inside this function.
879
880         * bus/activation.c (try_send_activation_failure): use
881         bus_transaction_send_error_reply
882
883         * bus/connection.c (bus_connection_get_groups): return an error
884         explaining the problem
885
886         * bus/bus.c (bus_context_check_security_policy): implement
887         restriction here that inactive connections can only send the
888         hello message. Also, allow bus driver to send anything to
889         any recipient.
890
891         * bus/connection.c (bus_connection_complete): create the
892         BusClientPolicy here instead of on-demand.
893         (bus_connection_get_policy): don't return an error
894
895         * dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
896         sender field in message being replied to
897
898         * bus/bus.c (bus_context_check_security_policy): fix silly typo
899         causing it to return FALSE always
900
901         * bus/policy.c (bus_client_policy_check_can_send): fix bug where
902         we checked sender rather than destination
903
904 2003-04-25  Havoc Pennington  <hp@redhat.com>
905
906         test suite is slightly hosed at the moment, will fix soon
907
908         * bus/connection.c (bus_connections_expire_incomplete): fix to
909         properly disable the timeout when required
910         (bus_connection_set_name): check whether we can remove incomplete
911         connections timeout after we complete each connection.
912
913         * dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
914         probably still broken.
915
916         * bus/services.c (bus_registry_acquire_service): implement max
917         number of services owned, and honor allow/deny rules on which
918         services a connection can own.
919
920         * bus/connection.c (bus_connection_get_policy): report errors here
921
922         * bus/activation.c: implement limit on number of pending
923         activations
924
925 2003-04-25  Havoc Pennington  <hp@redhat.com>
926
927         * dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
928         where we used >= 0 instead of != DBUS_UID_UNSET.
929
930 2003-04-25  Havoc Pennington  <hp@redhat.com>
931
932         * glib/dbus-gmain.c (remove_watch): fix for a crash when watches
933         were toggled without add/remove, fix from Anders Gustafsson
934
935 2003-04-24  Havoc Pennington  <hp@redhat.com>
936
937         * test/data/valid-config-files/basic.conf: add <limit> tags to
938         this test
939
940         * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
941         <limit> tag in configuration file.
942
943 2003-04-24  Havoc Pennington  <hp@redhat.com>
944
945         * bus/dispatch.c: somehow missed some name_is
946
947         * dbus/dbus-timeout.c (_dbus_timeout_set_enabled)
948         (_dbus_timeout_set_interval): new
949
950         * bus/connection.c (bus_connections_setup_connection): record time
951         when each connection is first set up, and expire them after the
952         auth timeout passes.
953
954 2003-04-24  Havoc Pennington  <hp@redhat.com>
955
956         * dbus/dbus-message.c (dbus_message_name_is): rename
957         (dbus_message_service_is): rename
958         (dbus_message_sender_is): rename
959         (dbus_message_get_service): rename
960
961 2003-04-24  Havoc Pennington  <hp@redhat.com>
962
963         * configure.in: add --enable-checks
964
965         * dbus/dbus-message.c (dbus_message_new): reverse name/service arguments
966
967         * dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
968         to use thread locks.
969         (_dbus_connection_handler_destroyed_locked): move some private
970         functions into proper docs group
971
972         * dbus/dbus-internals.h: add _dbus_return_if_fail,
973         _dbus_return_val_if_fail
974
975         Throughout: use dbus_return_if_fail
976
977 2003-04-23  James Willcox  <jwillcox@gnome.org>
978
979         * glib/dbus-glib.h:
980         * glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
981         (dbus_connection_setup_with_g_main),
982         (dbus_server_setup_with_g_main):
983         * glib/test-dbus-glib.c: (main):
984         * glib/test-thread-client.c: (main):
985         * glib/test-thread-server.c: (new_connection_callback), (main):
986         * tools/dbus-monitor.c: (main):
987
988         Added a GMainContext argument to dbus_connection_setup_with_g_main()
989         and dbus_server_setup_with_g_main().
990
991 2003-04-20  Havoc Pennington  <hp@pobox.com>
992
993         * doc/dbus-specification.sgml: document the restrictions on
994         message and service names
995
996 2003-04-22  Havoc Pennington  <hp@redhat.com>
997
998         * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
999         support, and do some code cleanups to share more code and
1000         speed up array marshal/demarshal.
1001
1002         * dbus-1.0.pc.in (Cflags): put libdir include file in cflags
1003
1004         * configure.in: generate dbus-arch-deps.h
1005
1006         * dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
1007         64-bit typecodes
1008
1009 2003-04-22  Havoc Pennington  <hp@redhat.com>
1010
1011         * test/data/valid-messages/opposite-endian.message: fix test
1012         to use proper type for rply field
1013
1014         * test/data/invalid-messages: add tests for below validation
1015
1016         * dbus/dbus-message.c (decode_header_data): validate field types,
1017         and validate that named fields are valid names
1018         (decode_name_field): consider messages in the
1019         org.freedesktop.Local. namespace to be invalid.
1020
1021         * dbus/dbus-string.c (_dbus_string_validate_name): new
1022
1023 2003-04-19  Havoc Pennington  <hp@pobox.com>
1024
1025         * bus/driver.c (bus_driver_handle_hello): check limits and
1026         return an error if they are exceeded.
1027
1028         * bus/connection.c: maintain separate lists of active and inactive
1029         connections, and a count of each. Maintain count of completed
1030         connections per user. Implement code to check connection limits.
1031
1032         * dbus/dbus-list.c (_dbus_list_unlink): export
1033
1034         * bus/bus.c (bus_context_check_security_policy): enforce a maximum
1035         number of bytes in the message queue for a connection
1036
1037 2003-04-18  Havoc Pennington  <hp@pobox.com>
1038
1039         * dbus/dbus-auth.c (record_mechanisms): memleak fixes
1040
1041         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
1042         memleaks
1043
1044         * dbus/dbus-keyring.c (add_new_key): fix a memleak, and
1045         on realloc be sure to update the pointer in the keyring
1046
1047         * dbus/dbus-string.c (_dbus_string_zero): compensate for align
1048         offset to avoid writing to unallocated memory
1049
1050         * dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
1051         try the next mechanism, so we properly handle OOM
1052
1053         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
1054         on OOM.
1055         (_dbus_keyring_new): fix OOM bug
1056         (_dbus_keyring_new_homedir): always set error; impose a maximum
1057         number of keys we'll load from the file, mostly to speed up the
1058         test suite and make its OOM checks more useful, but also for
1059         general sanity.
1060
1061         * dbus/dbus-auth.c (process_error_server): reject authentication
1062         if we get an error from the client
1063         (process_cancel): on cancel, send REJECTED, per the spec
1064         (process_error_client): send CANCEL if we get an error from the
1065         server.
1066
1067 2003-04-18  Havoc Pennington  <hp@pobox.com>
1068
1069         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
1070         debug spew
1071
1072         * dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
1073         handling problem
1074
1075         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
1076         about DBUS_TEST_HOMEDIR once
1077
1078         * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in
1079         the environment
1080
1081         * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1
1082         config file so we test the right thing
1083
1084         Throughout: assorted docs improvements
1085
1086 2003-04-18  Havoc Pennington  <hp@pobox.com>
1087
1088         * glib/dbus-gmain.c: adapt to watch changes
1089
1090         * bus/bus.c, bus/activation.c, etc.: adjust to watch changes
1091
1092         * dbus/dbus-server.h: remove dbus_server_handle_watch
1093
1094         * dbus/dbus-connection.h: remove dbus_connection_handle_watch
1095
1096         * dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
1097         like DBusTimeout, so we don't need dbus_connection_handle_watch
1098         etc.
1099
1100 2003-04-17  Havoc Pennington  <hp@redhat.com>
1101
1102         * dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
1103         database usage so it all goes via the DBusUserDatabase cache.
1104
1105 2003-04-17  Havoc Pennington  <hp@redhat.com>
1106
1107         * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
1108         there was an OOM watch we skipped, we always return TRUE so we
1109         iterate again to have a look at it again. Fixes test suite hang.
1110         Code rearrangement also lets us lose some memset and only iterate
1111         over callbacks once.
1112
1113         * bus/driver.c (bus_driver_handle_message): sense of test for
1114         reply was backward
1115
1116 2003-04-16  Havoc Pennington  <hp@pobox.com>
1117
1118         * doc/dbus-specification.sgml: make spec say serials are unsigned
1119
1120         * dbus/dbus-message.h: change message serials to unsigned
1121
1122         * dbus/dbus-connection.c: adapt to message serials being unsigned
1123
1124 2003-04-15  Havoc Pennington  <hp@pobox.com>
1125
1126         * bus/bus.c: create and keep around a shared DBusUserDatabase
1127         object.
1128
1129         * bus/connection.c (bus_connection_get_groups): don't cache
1130         groups for user in the connection object, since user database
1131         object now does that.
1132
1133 2003-04-16  Havoc Pennington  <hp@redhat.com>
1134
1135         * dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
1136         list of size counters
1137         (_dbus_message_loader_putback_message_link): put back a popped link
1138
1139         * dbus/dbus-connection.c
1140         (dbus_connection_set_max_live_messages_size): rename
1141         max_received_size
1142         (dbus_connection_get_outgoing_size): get size of outgoing
1143         queue
1144         (_dbus_connection_set_connection_counter): remove this cruft
1145
1146 2003-04-14  Havoc Pennington  <hp@redhat.com>
1147
1148         * dbus/dbus-userdb.c: user database abstraction, mostly to get
1149         caching, but at some point we might want to be able to use a
1150         different database.
1151
1152         * bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
1153         SHA1 conf file to test the sha1 auth mechanism, since the regular
1154         test always uses EXTERNAL when available.
1155
1156         * configure.in,
1157         test/data/valid-config-files/debug-allow-all-sha1.conf.in:
1158         add conf file that requires use of sha1 auth
1159
1160 2003-04-13  Havoc Pennington  <hp@pobox.com>
1161
1162         * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs
1163         from Philip Blundell to send messages and monitor them.
1164
1165 2003-04-13  Havoc Pennington  <hp@pobox.com>
1166
1167         * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
1168         callbacks
1169
1170         * test/data/valid-config-files/debug-allow-all.conf.in: allow all
1171         users
1172
1173         * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status):
1174         fix to only recover unused bytes if we're already authenticated
1175         (_dbus_transport_get_is_authenticated): fix to still mark us
1176         authenticated if there are unused bytes.
1177
1178         * bus/dispatch.c: implement security policy checking
1179
1180         * bus/connection.c (bus_transaction_send_from_driver): new
1181
1182         * bus/bus.c (bus_context_check_security_policy): new
1183
1184         * bus/dispatch.c (send_service_nonexistent_error): delete this,
1185         now we just set the DBusError and it gets converted to an error
1186         reply.
1187
1188         * bus/connection.c (allow_user_function): enable code using actual
1189         data from the config file
1190
1191         * bus/policy.c (list_allows_user): handle wildcard rules for
1192         user/group connection perms
1193
1194 2003-04-13  Havoc Pennington  <hp@pobox.com>
1195
1196         * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules
1197
1198         * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function
1199
1200         * bus/policy.c (bus_policy_append_mandatory_rule)
1201         (bus_policy_append_default_rule, bus_policy_append_user_rule)
1202         (bus_policy_append_group_rule): new functions
1203
1204 2003-04-12  Havoc Pennington  <hp@pobox.com>
1205
1206         * bus/config-parser.c (bus_config_parser_new): fix a memleak
1207
1208         * dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
1209         the pid/gid/uid, just for paranoia.
1210
1211         * test/break-loader.c (randomly_do_n_things): find a byte
1212         containing a type code, and randomly change it to a different
1213         type code.
1214
1215 2003-04-12  Havoc Pennington  <hp@pobox.com>
1216
1217         * bus/policy.h: change BusPolicy to be the thing from the config
1218         file, and rename old BusPolicy to BusClientPolicy
1219
1220         * bus/bus.c, bus/connection.c, bus/config-parser.c: change to
1221         match change in how policy works
1222
1223         * dbus/dbus-internals.h: mark assert_not_reached as
1224         __attribute((noreturn))__
1225
1226 2003-04-11  Havoc Pennington  <hp@redhat.com>
1227
1228         * doc/dbus-specification.sgml: fix a spot with the wrong name for
1229         the broadcast service. Use boolean return for ServiceExists.
1230
1231 2003-04-11  Havoc Pennington  <hp@redhat.com>
1232
1233         * configure.in: add another directory to look for qt in.
1234
1235 2003-04-11  Havoc Pennington  <hp@redhat.com>
1236
1237         * AUTHORS: add Colin Walters
1238
1239 2003-04-11  Havoc Pennington  <hp@redhat.com>
1240
1241         * NEWS: update
1242
1243         * configure.in: 0.9
1244
1245 2003-04-11  Havoc Pennington  <hp@redhat.com>
1246
1247         * bus/messagebus.in: remove pid file when stopping the
1248         message bus, since the bus won't have privileges to remove it
1249         itself.
1250
1251 2003-04-11  Havoc Pennington  <hp@redhat.com>
1252
1253         * bus/bus.c (bus_context_new): move credentials change after
1254         creating pidfile
1255
1256 2003-04-11  Havoc Pennington  <hp@pobox.com>
1257
1258         * test/decode-gcov.c: add "below average functions" to the
1259         coverage report, and change how some of the code works.
1260
1261         * bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
1262         not in the coverage stats.
1263
1264         * test/test-service.c (main): use _dbus_verbose not fprintf in a
1265         couple places so running the test suite doesn't result in megaspam.
1266
1267 2003-04-11  Havoc Pennington  <hp@pobox.com>
1268
1269         * bus/dispatch.c (check_existent_service_activation): accept a no
1270         memory error in a place we didn't before
1271
1272         * bus/test.c (bus_test_run_everything): remove hacky "do it twice
1273         in case the first one failed," since the test suite is less
1274         broken now.
1275
1276 2003-04-10  Havoc Pennington  <hp@pobox.com>
1277
1278         * bus/dispatch.c (check_segfault_service_activation): add test
1279         for launching an executable that just crashes.
1280
1281         * test/test-segfault.c (main): try setting coredumpsize to 0 so we
1282         don't leave a million cores. We'll see how portable this is.
1283
1284 2003-04-10  Havoc Pennington  <hp@pobox.com>
1285
1286         * dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
1287         the possible parent failures before we fork, so that we don't
1288         fail to create a babysitter after creating the child.
1289
1290         * bus/activation.c (bus_activation_activate_service): kill child
1291         if we don't successfully complete the activation.
1292
1293 2003-04-10  Havoc Pennington  <hp@redhat.com>
1294
1295         * dbus/dbus-connection.c (dbus_connection_flush): don't spin on
1296         the connection if it's disconnected
1297
1298         * bus/activation.c (bus_activation_service_created): use new
1299         transaction features to roll back removal of pending activation if
1300         we don't successfully create the service after all. Don't remove
1301         pending activation if the function fails.
1302
1303         * dbus/dbus-list.c (_dbus_list_insert_before_link)
1304         (_dbus_list_insert_after_link): new code to facilitate
1305         services.c fixes
1306
1307         * dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
1308         new functionality, so we can preallocate the ability to insert
1309         into a hash table.
1310
1311         * bus/connection.c (bus_transaction_add_cancel_hook): new function
1312         allowing us to put custom hooks in a transaction to be used for
1313         cancelling said transaction
1314
1315         * doc/dbus-specification.sgml: add some discussion of secondary
1316         service owners, and disallow zero-length service names
1317
1318         * bus/services.c (bus_registry_acquire_service): new function,
1319         splits out part of bus_driver_handle_acquire_service() and fixes
1320         a bug where we didn't remove the service doing the acquiring
1321         from the secondary queue if we failed to remove the current owner
1322         from the front of the queue.
1323
1324 2003-04-10  Alexander Larsson  <alexl@redhat.com>
1325
1326         * doc/dbus-specification.sgml:
1327         s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/
1328
1329 2003-04-10  Alexander Larsson  <alexl@redhat.com>
1330
1331         * bus/.cvsignore:
1332         * glib/.cvsignore:
1333         * test/.cvsignore:
1334         Added files to cvsignore
1335
1336         * dbus/dbus-message.h:
1337         * dbus/dbus-message.c: (dbus_message_iter_get_named):
1338         Make get_named() take two out argument and return a boolean.
1339         (dbus_message_iter_get_args_valist):
1340         Update usage of get_named().
1341         (dbus_message_iter_append_byte):
1342         Fix typo
1343         (dbus_message_iter_append_named)
1344         Fix typo
1345         (message_iter_test), (check_message_handling_type), (_dbus_message_test):
1346         More tests.
1347
1348 2003-04-10  Alexander Larsson  <alexl@redhat.com>
1349
1350         * dbus/dbus-marshal.[ch]:
1351         Add array_type_pos argument to _dbus_marshal_validate_arg.
1352         Let you pass a NULL end_pos to _dbus_marshal_validate_type.
1353
1354         * dbus/dbus-message.[ch]:
1355         Multi-dimensional arrays have full type specification in the
1356         outermost array. Iter code re-arranged to handle this.
1357         Added some more iter tests.
1358
1359         * doc/dbus-specification.sgml:
1360         Add me to authors.
1361         Remove old FIXME.
1362         Update new array encoding description.
1363         Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.
1364
1365         * test/data/invalid-messages/array-with-mixed-types.message:
1366         * test/data/valid-messages/array-of-array-of-uint32.message:
1367         Change to the new array format.
1368
1369         * test/data/invalid-messages/too-short-dict.message:
1370         Fix bug in test.
1371
1372         * test/data/valid-messages/recursive-types.message:
1373         Fix up and extend test.
1374
1375 2003-04-10  Havoc Pennington  <hp@pobox.com>
1376
1377         * bus/dispatch.c: lots of fixes
1378
1379         * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export
1380         (_dbus_loop_iterate): remove old "quit if no callbacks" code,
1381         that was crack, broke the test service.
1382
1383         * dbus/dbus-transport.c (_dbus_transport_open): fix error
1384         handling to avoid piling up errors if we get a failure on the
1385         first address.
1386
1387         * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
1388         pid in assertion failures.
1389
1390         * dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
1391         to some fixed size of file descriptor array. Don't return TRUE
1392         anytime a timeout exists, that led to lots of busy loop silliness
1393         in the tests.
1394
1395 2003-04-09  Havoc Pennington  <hp@redhat.com>
1396
1397         * dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
1398         I'd checked this in earlier but hadn't.
1399
1400 2003-04-09  Havoc Pennington  <hp@redhat.com>
1401
1402         * bus/dispatch.c (bus_dispatch_test): get a bit further through
1403         the activation test (man this is getting old!)
1404
1405 2003-04-09  Havoc Pennington  <hp@redhat.com>
1406
1407         * test/test-utils.c: use dispatch status function to fix this up
1408
1409         * bus/connection.c (connection_watch_callback): don't dispatch
1410         from here
1411         (connection_timeout_callback): don't dispatch from here
1412         (bus_connections_setup_connection): set the dispatch status function
1413         (bus_connection_disconnected): unset it
1414
1415         * dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
1416         used to add a connection to be dispatched
1417         (_dbus_loop_iterate): do the dispatching at the end of each
1418         iteration
1419
1420         * dbus/dbus-connection.c
1421         (dbus_connection_set_dispatch_status_function): new function
1422         allowing us to fix up main loop usage
1423         (_dbus_connection_last_unref): free all the various function
1424         user data
1425         (dbus_connection_dispatch): call the DispatchStatusFunction
1426         whenever this function returns
1427         (dbus_connection_handle_watch): call DispatchStatusFunction
1428         (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
1429         (reply_handler_timeout): call DispatchStatusFunction
1430         (dbus_connection_flush): call DispatchStatusFunction
1431
1432 2003-04-09  Havoc Pennington  <hp@redhat.com>
1433
1434         * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and
1435         a memory leak
1436
1437         * bus/dispatch.c (check_service_activated): fix bug in test
1438
1439         * dbus/dbus-mainloop.c (check_timeout): fix this up
1440
1441         * dbus/dbus-internals.c (_dbus_verbose_real): include PID in
1442         verbose output so we can sort out output from different processes,
1443         e.g. in the activation case.
1444
1445 2003-04-08  Colin Walters  <walters@gnu.org>
1446
1447         * bus/bus.c (struct BusContext) [pidfile]: New member, to store
1448         the pid file.
1449         (bus_context_new): Set it.
1450         (bus_context_unref): Use it to delete the pid file.
1451
1452 2003-04-08  Havoc Pennington  <hp@redhat.com>
1453
1454         * test/data/invalid-messages/array-with-mixed-types.message:
1455         regression test that fails for the moment
1456
1457         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
1458         tests for convenience
1459
1460         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
1461         array of nil, it broke things.
1462
1463         * test/data/invalid-messages/array-of-nil.message: regression test
1464
1465         * test/data/valid-messages/array-of-array-of-uint32.message:
1466         happened to write this so added it to suite
1467
1468 2003-04-08  Havoc Pennington  <hp@redhat.com>
1469
1470         * bus/driver.c (bus_driver_handle_acquire_service): init
1471         retval/reply before checking name
1472
1473         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
1474         recursion depth argument
1475
1476         * dbus/dbus-message.h (struct DBusMessageIter): put some padding
1477         in the public struct for future extension
1478
1479         * dbus/dbus-message-builder.c (_dbus_message_data_load): fix
1480         typo
1481
1482         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
1483         message
1484
1485         * doc/dbus-specification.sgml: fix typo
1486
1487 2003-04-08  Alexander Larsson  <alexl@redhat.com>
1488
1489         Implemented recursive types, named types and new-style iters
1490
1491         * bus/driver.c:
1492         * glib/test-thread-client.c: (thread_func):
1493         * glib/test-thread-server.c: (handle_test_message):
1494         * test/test-service.c: (handle_echo):
1495         Update to new api
1496
1497         * dbus/Makefile.am:
1498         * dbus/dbus-dict.c:
1499         * dbus/dbus-dict.h:
1500         * dbus/dbus.h
1501         Remove DBusDict
1502
1503         * dbus/dbus-internals.c: (_dbus_type_to_string):
1504         Update for new types.
1505
1506         * dbus/dbus-marshal.[ch]:
1507         Implement recursive types and the new marshalling format.
1508         Remove hardcoded dict marshalling.
1509         Marshal named types.
1510
1511         * dbus/dbus-message-builder.c:
1512         Add BYTE_ARRAY.
1513         Remove references to old types
1514
1515         * dbus/dbus-message.[ch]:
1516         New non-refcounted iter API that supports recursive iters.
1517         Use iters for appending, including support for recursive
1518         iters.
1519         Add byte and named type support.
1520         Update everything to new marshalling formats.
1521         Add tests for new API.
1522
1523         * dbus/dbus-protocol.h:
1524         Remove old array types.
1525         Add types: BYTE, ARRAY, DICT, NAMED
1526
1527         * dbus/dbus-string.c:
1528         * dbus/dbus-sysdeps.c:
1529         Make parse_double locale safe.
1530
1531         * dbus/dbus-test-main.c:
1532         Call setlocale.
1533
1534         * dbus/dbus-test.c:
1535         Kill dict test
1536
1537         * doc/dbus-specification.sgml:
1538         Update spec
1539
1540         * test/data/incomplete-messages/missing-body.message:
1541         * test/data/invalid-messages/bad-boolean.message:
1542         * test/data/invalid-messages/bad-boolean-array.message:
1543         * test/data/invalid-messages/boolean-array-length-too-long.message-raw:
1544         * test/data/invalid-messages/boolean-has-no-value.message-raw:
1545         * test/data/invalid-messages/too-short-dict.message:
1546         * test/data/valid-messages/dict-simple.message:
1547         * test/data/valid-messages/dict.message:
1548         * test/data/valid-messages/emptiness.message:
1549         * test/data/valid-messages/lots-of-arguments.message:
1550         * test/data/valid-messages/no-padding.message:
1551         * test/data/valid-messages/recursive-types.message:
1552         Add missing NAME fields
1553         Fix up dicts & arrays
1554
1555         * test/data/invalid-messages/dict-with-nil-value.message:
1556         Removed, this is not invalid anymore.
1557
1558         * test/data/valid-messages/recursive-types.message:
1559         Add new test for deeply recursive types.
1560
1561 2003-04-07  Havoc Pennington  <hp@pobox.com>
1562
1563         * bus/driver.c (bus_driver_handle_acquire_service): return an
1564         error if you try to acquire a service that starts with ':'
1565
1566 2003-04-07  Havoc Pennington  <hp@redhat.com>
1567
1568         * doc/dbus-specification.sgml: require that base service names
1569         start with ':' and that the base service is created/deleted
1570         as first and last things a connection does on the bus
1571
1572         * bus/dispatch.c (check_existent_service_activation): lots more
1573         work on the activation test; it doesn't fully pass yet...
1574
1575         * test/test-service.c (main): fix so we don't memleak the
1576         connection to the message bus
1577         (filter_func): accept a message asking us to exit
1578
1579 2003-04-06  Havoc Pennington  <hp@pobox.com>
1580
1581         * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
1582         from Colin Walters
1583
1584         * configure.in: fixes to Qt detection from Colin Walters
1585
1586         * doc/Makefile.am: Only remove generated docbook dirs if they
1587         exist, from Colin Walters
1588
1589         * dbus/dbus-bus.c: change how we set well-known connections to
1590         NULL, so that it works if a single connection is stored in
1591         two well-known array slots.
1592
1593         * test/Makefile.am: remove a lot of stuff that isn't immediately
1594         useful, it's in CVS history if we want it.
1595
1596         * test/test-service.c: use dbus-mainloop instead of that
1597         watch.[hc] crack
1598
1599 2003-04-06  Havoc Pennington  <hp@pobox.com>
1600
1601         * dbus/Makefile.am: split lists of sources into stuff that goes in
1602         the library, util functions that go in the lib and are also used
1603         elsewhere, and util functions that are used in tests/daemon but
1604         don't go in the lib.
1605
1606         * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc]
1607         here so it can be used in test binaries also
1608
1609 2003-04-06  Havoc Pennington  <hp@pobox.com>
1610
1611         * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile
1612         here in the parent process, so we can return an error if it
1613         fails. Also, move some of the code into the child so the parent
1614         is less hosed if we fail midway through.
1615
1616         * bus/bus.c (bus_context_new): move pidfile detection further up
1617         in the function, before we start overwriting sockets and such.
1618
1619         * bus/messagebus.in: adjust this a bit, not sure if it will work.
1620
1621         * configure.in: add --with-system-pid-file and --with-system-socket
1622
1623 2003-04-06  Colin Walters  <walters@verbum.org>
1624
1625         * configure.in (DBUS_SYSTEM_PID_FILE): New variable.
1626
1627         * bus/system.conf.in: Declare a pidfile.
1628
1629         * bus/bus.c (bus_context_new): Test for an existing pid file, and
1630         create one (if appropriate).
1631
1632         * bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
1633         (struct BusConfigParser) [pidfile]: New.
1634         (element_type_to_name, merge_included, start_busconfig_child)
1635         (bus_config_parser_end_element, bus_config_parser_content): Handle it.
1636         (bus_config_parser_unref): Free it.
1637         (bus_config_parser_get_pidfile): New function.
1638
1639         * bus/config-parser.h (_dbus_write_pid_file): Prototype.
1640
1641         * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error.
1642
1643         * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function.
1644
1645         * dbus/dbus-sysdeps.h: Prototype it.
1646
1647 2003-04-06  Havoc Pennington  <hp@pobox.com>
1648
1649         * bus/bus.c (bus_context_new): print the address in here, rather
1650         than in main(), because we need to do it before forking the daemon
1651
1652         * bus/dispatch.c (send_service_nonexistent_error): set the sender
1653         on the service nonexistent error
1654
1655         * bus/driver.c (bus_driver_handle_acquire_service): set the
1656         sender on the AcquireService reply
1657
1658         * test/data/valid-config-files/debug-allow-all.conf.in: Make test
1659         server also listen on a UNIX socket so services can connect to it.
1660
1661 2003-04-06  Havoc Pennington  <hp@pobox.com>
1662
1663         * dbus/dbus-threads.c: Redo how the fake debug mutexes are done
1664         so it detects deadlocks and also we actually init threads when
1665         debugging.
1666
1667 2003-04-06  Havoc Pennington  <hp@pobox.com>
1668
1669         * dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
1670         save the domain socket name, and unlink it when we disconnect the
1671         server. Means that at least when we exit normally, we won't leave
1672         a bunch of junk in /tmp
1673
1674         * dbus/dbus-transport-unix.c
1675         (_dbus_transport_new_for_domain_socket): code cleanup (nicer
1676         memory management). (I was making a real change here but then
1677         didn't)
1678
1679 2003-04-06  Havoc Pennington  <hp@pobox.com>
1680
1681         * bus/bus.c (bus_context_new): fix wrong handling of
1682         server_data_slot_unref() in the error case.
1683
1684         * dbus/dbus-internals.h (_dbus_assert): change so it passes
1685         "(condition) != 0" to _dbus_real_assert so that
1686         "_dbus_assert (pointer)" doesn't cause a warning
1687
1688         * bus/main.c (main): accept --print-address option to print out
1689         the message bus address
1690
1691         * dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this
1692
1693         * dbus/dbus-transport.c (_dbus_transport_open): special error for
1694         "tmpdir" option to unix: address on client side
1695
1696         * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option
1697         to unix: address
1698
1699         * configure.in (TEST_SOCKET_DIR): locate a temporary directory
1700         we can use to create sockets in the test suite.
1701
1702         * bus/main.c (signal_handler): on SIGTERM, exit the daemon
1703         cleanly. To be used for testing.
1704
1705         * dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()
1706
1707         * dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new
1708
1709         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
1710         handle trying to call this when there's no servers active
1711
1712 2003-04-05  Havoc Pennington  <hp@pobox.com>
1713
1714         * NEWS: update
1715
1716         * configure.in: 0.8
1717
1718 2003-04-05  Havoc Pennington  <hp@pobox.com>
1719
1720         * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't
1721         crash on startup. Need to get "try starting the daemon"
1722         in the test suite I guess. ;-)
1723
1724         * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that
1725         tracked the number of open connections; it's better done in
1726         application-specific code as you want it to span all servers etc.
1727
1728 2003-04-05  Havoc Pennington  <hp@pobox.com>
1729
1730         * bus/Makefile.am (install-data-hook): add missing DESTDIR,
1731         patch from Colin Walters
1732
1733 2003-04-05  Havoc Pennington  <hp@pobox.com>
1734
1735         * doc/config-file.txt (Elements): fix docs of <auth> to reflect
1736         reality; in fact multiple mechanisms are allowed.
1737
1738         * dbus/dbus-internals.c (_dbus_real_assert)
1739         (_dbus_real_assert_not_reached): move guts of _dbus_assert() and
1740         _dbus_assert_not_reached() into functions, so that they don't show
1741         up in basic block counts for test coverage, and don't use up as
1742         much disk space. Does mean slower execution speed though, so
1743         assumes --disable-asserts is the normal production case.
1744
1745 2003-04-05  Havoc Pennington  <hp@pobox.com>
1746
1747         * test/Makefile.am (dist-hook): also dist *.in files
1748
1749         * NEWS: update
1750
1751         * configure.in: 0.7
1752
1753 2003-04-05  Havoc Pennington  <hp@pobox.com>
1754
1755         * dbus/dbus-string.c: docs warning
1756
1757         * dbus/dbus-spawn.c: missing docs
1758
1759         * dbus/dbus-memory.c (struct ShutdownClosure): missing docs
1760
1761 2003-04-05  Havoc Pennington  <hp@pobox.com>
1762
1763         * bus/loop.c (bus_loop_iterate): fix the timeout code, using
1764         magic from GLib
1765
1766         * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
1767         to -1 once we've reaped the babysitter
1768         (_dbus_babysitter_handle_watch): do as much work as we can, not
1769         just one go of it
1770
1771         * bus/activation.c: add code using DBusBabysitter so that we
1772         handle it when a service fails to start up properly.
1773         (bus_activation_service_created): don't remove the activation
1774         entries as we go, just let them get removed when we free the pending
1775         activation. Unref reply messages after sending them.
1776
1777 2003-04-05  Havoc Pennington  <hp@pobox.com>
1778
1779         * test/decode-gcov.c (main): print per-directory stats in the report
1780
1781         * Makefile.am (coverage-report.txt): don't include test/* in gcov stats
1782
1783 2003-04-05  Havoc Pennington  <hp@pobox.com>
1784
1785         * Makefile.am (coverage-report.txt): add target "coverage-report.txt"
1786
1787         * test/decode-gcov.c: hack up a little program to suck data
1788         out of gcov files. Yes this is sort of silly.
1789
1790         * configure.in: define something in config.h and do an
1791         AM_CONDITIONAL when gcov is enabled
1792
1793 2003-04-04  Havoc Pennington  <hp@redhat.com>
1794
1795         * dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
1796         return a "babysitter" object that is used to monitor the status of
1797         the spawned process and reap it when required.
1798
1799         * test/test-segfault.c, test/test-exit.c,
1800         test/test-sleep-forever.c: binaries that do various lame things,
1801         used in the test suite.
1802
1803         * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()
1804
1805 2003-04-03  Havoc Pennington  <hp@pobox.com>
1806
1807         * dbus/dbus-spawn.c: Move dbus-spawn into a separate file
1808         in preparation for modifying it, dbus-sysdeps is getting
1809         a bit unmanageable.
1810
1811 2003-04-03  Havoc Pennington  <hp@redhat.com>
1812
1813         * bus/loop.h, bus/loop.c: make the mainloop an object so we can
1814         have multiple ones
1815
1816         * bus/*.[hc]: adapt to mainloop change
1817
1818 2003-04-03  Havoc Pennington  <hp@redhat.com>
1819
1820         * bus/activation.c (load_directory): fix up memleaks
1821         (bus_activation_entry_free): free the entry
1822
1823         * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
1824         we get one from the message bus; fix memleaks.
1825
1826         * dbus/dbus-message.c (dbus_set_error_from_message): new function
1827
1828 2003-04-03  Havoc Pennington  <hp@pobox.com>
1829
1830         * bus/config-parser.c (bus_config_parser_unref): free
1831         list of mechanisms, bug discovered by test suite enhancements
1832         (putting system.conf and session.conf into suite)
1833
1834         * test/Makefile.am, test/test-service.c: add placeholder for a
1835         test service that we'll activate as part of test suite. Doesn't
1836         do anything yet.
1837
1838         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by
1839         setting NULL value, and use system malloc not dbus_malloc()
1840         when we have unavoidable memleakage.
1841
1842         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
1843         didn't work, and support DBUS_BUS_ACTIVATION.
1844
1845         * bus/activation.c (child_setup): pass our well-known bus type to
1846         the child
1847
1848         * bus/config-parser.c: support <type> to specify well-known type
1849
1850         * doc/dbus-specification.sgml: document the env variables to
1851         locate well-known buses and find service activator
1852
1853 2003-04-02  Havoc Pennington  <hp@redhat.com>
1854
1855         * test/Makefile.am (all-local): add a rule to copy tests to
1856         builddir, so we can have generated tests. Use this to remove the
1857         silly hack for testing system.conf and session.conf. Will use this
1858         shortly to generate .service files pointing to test binaries.
1859
1860 2003-04-02  Havoc Pennington  <hp@redhat.com>
1861
1862         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
1863         current alloc and needed new length, not max of the doubled
1864         allocation and needed new length. Also, when building tests,
1865         don't do the double-allocation stuff, just realloc every time.
1866
1867 2003-04-02  Havoc Pennington  <hp@redhat.com>
1868
1869         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
1870         in error messages
1871         (_dbus_string_get_dirname): new
1872         (_dbus_sysdeps_test): new
1873         (_dbus_directory_open): include dirnames in error messages
1874
1875         * bus/config-parser.c: interpret <include> and <includedir> and
1876         <servicedir> relative to config file location if the given
1877         filename is not absolute.
1878
1879         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
1880
1881 2003-04-02  Havoc Pennington  <hp@redhat.com>
1882
1883         * bus/connection.c (bus_transaction_send_error_reply): set sender
1884         service for the error, and unref the reply on success
1885
1886         * bus/activation.c: convert to use BusTransaction so OOM can be
1887         handled correctly
1888         (bus_activation_service_created): set sender of the message
1889
1890 2003-04-01  Havoc Pennington  <hp@redhat.com>
1891
1892         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
1893         <includedir> (at least mostly)
1894
1895         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
1896         first, then the user ID
1897
1898 2003-04-01  Havoc Pennington  <hp@pobox.com>
1899
1900         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
1901         function
1902
1903         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
1904
1905         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
1906
1907         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
1908         socket 0777, and unlink any existing socket.
1909
1910         * bus/bus.c (bus_context_new): change our UID/GID and fork if
1911         the configuration file so specifies; set up auth mechanism
1912         restrictions
1913
1914         * bus/config-parser.c (bus_config_parser_content): add support
1915         for <fork> option and fill in code for <auth>
1916
1917         * bus/system.conf.in: add <fork/> to default configuration,
1918         and limit auth mechanisms to EXTERNAL
1919
1920         * doc/config-file.txt (Elements): add <fork>
1921
1922         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
1923         (_dbus_change_identity): new function
1924
1925 2003-03-31  Havoc Pennington  <hp@redhat.com>
1926
1927         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
1928         (_dbus_listen_unix_socket): fix off-by-one error in null
1929         termination spotted by Nalin
1930
1931 2003-03-31  Havoc Pennington  <hp@redhat.com>
1932
1933         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
1934         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
1935         having a real home directory available.
1936
1937 2003-03-31  Havoc Pennington  <hp@redhat.com>
1938
1939         * bus/Makefile.am (install-data-hook): create /var/run/dbus
1940
1941         * bus/messagebus.in: add init script for Red Hat /etc/init.d
1942
1943         * configure.in: add support for specifying a style of init script
1944         to install
1945
1946 2003-03-31  Havoc Pennington  <hp@redhat.com>
1947
1948         Fix some annoying DBusString API and fix all affected code.
1949
1950         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
1951         max_length argument
1952         (_dbus_string_get_data): change to return string instead of using
1953         an out param
1954         (_dbus_string_get_const_data): ditto
1955         (_dbus_string_get_data_len): ditto
1956         (_dbus_string_get_const_data_len): ditto
1957
1958 2003-03-31  Havoc Pennington  <hp@redhat.com>
1959
1960         * bus/main.c (main): fix up the command line arguments to be nicer
1961
1962 2003-03-31  Havoc Pennington  <hp@redhat.com>
1963
1964         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
1965         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same
1966         final location that lands in the config file
1967
1968         * bus/config-loader-expat.c (bus_config_load): fix type of
1969         XML_Parser variable
1970
1971         * doc/TODO: remove TODO item for dbus_bus_get()
1972
1973         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
1974
1975 2003-03-31  Havoc Pennington  <hp@pobox.com>
1976
1977         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
1978         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
1979         argument since they are always client side
1980
1981         * dbus/dbus-server.c (dbus_server_get_address): new function
1982
1983         * bus/main.c (main): take the configuration file as an argument.
1984
1985         * test/data/valid-config-files/debug-allow-all.conf: new file to
1986         use with dispatch.c tests for example
1987
1988         * bus/test-main.c (main): require test data dir
1989
1990         * bus/bus.c (bus_context_new): change this to take a
1991         configuration file name as argument
1992
1993         * doc/config-file.txt (Elements): add <servicedir>
1994
1995         * bus/system.conf, bus/session.conf: new files
1996
1997         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
1998         well-known socket if none set
1999
2000         * configure.in: create system.conf and session.conf
2001
2002 2003-03-30  Havoc Pennington  <hp@pobox.com>
2003
2004         * bus/config-parser.c: hacking
2005
2006         * dbus/dbus-memory.c: don't use DBusList for the list of stuff
2007         to shut down, since it could cause weirdness with the DBusList
2008         lock
2009
2010         * dbus/dbus-list.c (_dbus_list_test): add tests for the
2011         link-oriented stack routines
2012         (alloc_link): free the mempool if the first alloc from it fails
2013
2014         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
2015
2016         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
2017         from GLib
2018         (_dbus_string_skip_white): new
2019
2020         * doc/config-file.txt (Elements): add <includedir>
2021
2022 2003-03-28  Havoc Pennington  <hp@pobox.com>
2023
2024         * dbus/dbus-string.c (_dbus_string_copy_data_len)
2025         (_dbus_string_copy_data): new functions
2026
2027 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
2028
2029         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
2030         * dbus/dbus-bus.h:
2031         Add dbus_bus_get.
2032
2033         * dbus/dbus-memory.c:
2034         Fix a doc comment.
2035
2036 2003-03-28  Havoc Pennington  <hp@pobox.com>
2037
2038         * bus/test.c (bus_test_flush_bus): remove the sleep from here,
2039         I think it may have just been superstition. Not sure.
2040
2041         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
2042         failures that were not being handled.
2043
2044         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
2045
2046         * dbus/dbus-memory.c: add ability to set number of mallocs in a
2047         row that will fail on out-of-memory.
2048
2049         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
2050         function for testing out-of-memory handling.
2051
2052         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
2053         allocation functions, they do map exactly to the expat ones.
2054
2055 2003-03-27  Havoc Pennington  <hp@redhat.com>
2056
2057         * bus/config-loader-libxml.c (bus_config_load): add another error
2058         check
2059
2060 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
2061
2062         * doc/TODO:
2063         Add note about automatic service activation.
2064
2065         * doc/dbus-specification.sgml:
2066         Rename the specification and clarify a few things.
2067
2068 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
2069
2070         * Doxyfile.in:
2071         * dbus/dbus-address.c:
2072         * dbus/dbus-dict.c:
2073         * dbus/dbus-marshal.c:
2074         * dbus/dbus-server-debug-pipe.c:
2075         * dbus/dbus-transport-unix.c:
2076         Fix documentation warnings.
2077
2078 2003-03-26  Havoc Pennington  <hp@pobox.com>
2079
2080         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
2081         after every test so it's quick and easy to see which leaked, and
2082         so we test multiple dbus_shutdown() calls
2083
2084         * configure.in: change configure.in XML stuff to also support
2085         expat
2086
2087         * config-loader-libxml.c: some hacking
2088
2089         * config-loader-expat.c: some hacking
2090
2091         * config-parser.c: some hacking, plus tests
2092
2093 2003-03-25  Havoc Pennington  <hp@redhat.com>
2094
2095         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
2096
2097         * configure.in: add --with-xml option to specify XML library,
2098         right now only libxml is supported.
2099
2100         * bus/config-loader-libxml.c, config-parser.c: sync some minor
2101         nonworking code between home and work, still just stubs
2102
2103 2003-03-24  Havoc Pennington  <hp@redhat.com>
2104
2105         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
2106         file
2107
2108         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow
2109         NULL argument for "message" if the error is a well-known one,
2110         fill in a generic message in this case.
2111
2112         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
2113         favor of DBusError
2114
2115         * bus/test.c (bus_test_flush_bus): add
2116
2117         * bus/policy.c (bus_policy_test): test code stub
2118
2119 2003-03-24  Havoc Pennington  <hp@pobox.com>
2120
2121         * bus/connection.c (bus_connections_setup_connection): set up
2122         the "can this user connect" function, but it always returns
2123         TRUE until we have a config file parser so we can have a config
2124         file that allows connections.
2125
2126 2003-03-23  Havoc Pennington  <hp@pobox.com>
2127
2128         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with
2129         DBUS_BUILD_TESTS, actually alloc/free a block of memory for
2130         the mutex, so we can check for proper memory management
2131         and OOM handling.
2132
2133         * dbus/dbus-dataslot.c: remove the mutex from
2134         DBusDataSlotAllocator and lock it manually when using it,
2135         to simplify fitting it into the global slots framework.
2136
2137         * dbus/dbus-threads.c (init_static_locks): rework how we're
2138         handling global locks so they are easily shut down.
2139
2140         * bus/policy.c (bus_policy_append_rule): fix
2141
2142         * bus/test-main.c (main): check for memleaks
2143
2144         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make
2145         test suite check for memleaks
2146
2147         * dbus/dbus-memory.c: add support in test mode for tracking
2148         number of outstanding blocks
2149
2150 2003-03-23  Havoc Pennington  <hp@pobox.com>
2151
2152         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
2153         policies code
2154
2155         * dbus/dbus-hash.h: add ULONG hash keys
2156
2157         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
2158         (_dbus_get_group_id): new function
2159
2160 2003-03-20  Havoc Pennington  <hp@redhat.com>
2161
2162         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
2163         new function
2164         (dbus_connection_get_unix_user): new function
2165
2166 2003-03-20  Havoc Pennington  <hp@pobox.com>
2167
2168         * bus/connection.c (bus_connection_send_oom_error): assert that
2169         message has a sender
2170         (connection_execute_transaction): ditto
2171         (bus_connection_preallocate_oom_error): fix to set the sender, and
2172         set recipient to the destination service, not the bus driver
2173
2174         * bus/policy.c: hacking
2175
2176         * dbus/dbus-message.c (dbus_message_service_is): new function
2177         (dbus_message_sender_is): new
2178
2179 2003-03-19  Havoc Pennington  <hp@redhat.com>
2180
2181         * bus/policy.c: start sketching code for policy restrictions on
2182         what connections can do.
2183
2184 2003-03-18  Havoc Pennington  <hp@redhat.com>
2185
2186         * doc/TODO: some notes on high-level todo items. Little nitpick
2187         stuff is all in @todo, so no need to add it here.
2188
2189         * doc/config-file.txt: some notes on how config file might look
2190
2191 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
2192
2193         * configure.in: 0.6
2194
2195         * NEWS: Update.
2196
2197 2003-03-17  Havoc Pennington  <hp@redhat.com>
2198
2199         * dbus/dbus-internals.h: add gcc attributes so that
2200         our printf-style functions warn on bad arguments to
2201         format
2202
2203         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf
2204         format bug
2205
2206         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
2207         printf format bug
2208
2209 2003-03-17  Havoc Pennington  <hp@redhat.com>
2210
2211         * bus/test-main.c (main): make it print something as it runs
2212         so make check doesn't look stuck
2213
2214         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove
2215         from CVS, now obsolete
2216
2217 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
2218
2219         * bus/dispatch.c: (bus_dispatch):
2220         Refetch the service name since it may have been reallocated
2221         when dbus_message_set_sender was called.
2222
2223         * dbus/dbus-sysdeps.c: (_dbus_accept):
2224         Add address and address length variables and use them to stop
2225         valgrind from complaining.
2226
2227 2003-03-17  Havoc Pennington  <hp@pobox.com>
2228
2229         All tests pass, no memleaks, no valgrind complaints.
2230
2231         * bus/test.c: refcount handler_slot
2232
2233         * bus/connection.c (bus_connections_new): refcount
2234         connection_data_slot
2235
2236         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
2237         bytes so that auth scripts pass.
2238
2239         * bus/dispatch.c: init message_handler_slot so it gets allocated
2240         properly
2241
2242         * bus/dispatch.c (message_handler_slot_ref): fix memleak
2243
2244         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
2245         dealloc server_pipe_hash when no longer used for benefit of
2246         leak checking
2247
2248         * dbus/dbus-auth.c (process_command): memleak fix
2249
2250         * bus/dispatch.c (check_hello_message): memleak fix
2251
2252 2003-03-16  Havoc Pennington  <hp@pobox.com>
2253
2254         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
2255
2256 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
2257
2258         * bus/activation.c (bus_activation_activate_service): Append
2259         the pending activation entry to the list of pending activations.
2260
2261 2003-03-16  Havoc Pennington  <hp@pobox.com>
2262
2263         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
2264         connections
2265
2266         * dbus/dbus-address.c (create_entry): fix OOM handling when
2267         failing to alloc entry->method
2268
2269 2003-03-16  Havoc Pennington  <hp@pobox.com>
2270
2271         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
2272         the watch
2273
2274         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
2275         add some missing dbus_set_result
2276
2277         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to
2278         alloc the DBusMessageHandler
2279
2280         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
2281         the transport here, since we call this from the finalizer; it
2282         resulted in a double-finalize.
2283
2284         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
2285         where we tried to use transport->connection that was NULL,
2286         happened when transport was disconnected early on due to OOM
2287
2288         * bus/*.c: adapt to handle OOM for watches/timeouts
2289
2290         * dbus/dbus-transport-unix.c: port to handle OOM during
2291         watch handling
2292
2293         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
2294         reference to unused bytes instead of a copy
2295
2296         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
2297         out of memory
2298
2299         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
2300         FALSE on OOM
2301
2302         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
2303         of memory
2304
2305 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
2306
2307         * doc/dbus-specification.sgml:
2308         Document reply message for ActivateService.
2309
2310 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
2311
2312         * bus/activation.c: (bus_pending_activation_entry_free),
2313         (bus_pending_activation_free), (bus_activation_new),
2314         (bus_activation_unref), (bus_activation_service_created),
2315         (bus_activation_activate_service):
2316         * bus/activation.h:
2317         * bus/bus.c: (bus_context_new):
2318         * bus/desktop-file.c: (new_section):
2319         * bus/driver.c: (bus_driver_send_service_deleted),
2320         (bus_driver_handle_activate_service):
2321         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
2322         * bus/services.h:
2323         * dbus/dbus-connection.c:
2324         (dbus_connection_send_with_reply_and_block):
2325         * dbus/dbus-message.c: (dbus_message_append_args_valist):
2326         * dbus/dbus-protocol.h:
2327         Make activation work better. Now pending activations will be queued
2328         and the daemon won't try to activate services that are already registered.
2329
2330 2003-03-16  Havoc Pennington  <hp@pobox.com>
2331
2332         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
2333         connection data
2334
2335         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
2336         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
2337
2338 2003-03-16  Havoc Pennington  <hp@pobox.com>
2339
2340         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
2341         this. always run the test suite before commit...
2342
2343         * bus/*: adapt to DBusConnection API changes
2344
2345         * glib/dbus-gmain.c: adapt to DBusConnection API changes,
2346         requires renaming stuff to avoid dbus_connection_dispatch name
2347         conflict.
2348
2349         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
2350         function
2351
2352         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
2353         separate from _dbus_message_loader_return_buffer()
2354
2355         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
2356         this, because it's now always broken to use; the number of
2357         messages in queue vs. the number still buffered by the message
2358         loader is undefined/meaningless. Should use
2359         dbus_connection_get_dispatch_state().
2360         (dbus_connection_dispatch): rename from
2361         dbus_connection_dispatch_message
2362
2363 2003-03-16  Havoc Pennington  <hp@pobox.com>
2364
2365         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
2366         implementation
2367
2368 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
2369
2370         * dbus/dbus-connection.c:
2371         (dbus_connection_send_with_reply_and_block):
2372         Decrease connection->n_incoming when removing an entry
2373         from the list.
2374         * dbus/dbus-dict.c: (dbus_dict_entry_free),
2375         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
2376         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
2377         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
2378         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
2379         (dbus_dict_get_byte_array):
2380         Handle NULL arrays and strings. Also add support for byte arrays.
2381
2382         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
2383         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
2384         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
2385         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
2386         (_dbus_demarshal_dict), (demarshal_and_validate_len),
2387         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
2388         * dbus/dbus-marshal.h:
2389         Add support for marshalling and demarshalling empty arrays and strings.
2390
2391         * dbus/dbus-message.c: (dbus_message_append_args_valist),
2392         (dbus_message_append_string_array),
2393         (dbus_message_iter_get_boolean),
2394         (dbus_message_iter_get_boolean_array),
2395         (dbus_message_iter_get_int32_array),
2396         (dbus_message_iter_get_uint32_array),
2397         (dbus_message_iter_get_double_array),
2398         (dbus_message_iter_get_byte_array),
2399         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
2400         (check_message_handling):
2401         Add support for getting empty arrays and dicts.
2402
2403         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
2404         Don't do any validation at all for now, that's better than just checking
2405         for ASCII.
2406
2407         * test/data/valid-messages/emptiness.message:
2408         New test message with lots of empty arrays.
2409
2410 2003-03-16  Havoc Pennington  <hp@pobox.com>
2411
2412         * dbus/dbus-connection.c
2413         (_dbus_connection_queue_received_message_link): new function that
2414         can't fail due to OOM
2415
2416         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
2417         new function pops a message together with a list link
2418         containing it.
2419
2420         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
2421         message queuing functions to avoid needing to alloc memory
2422
2423 2003-03-16  Havoc Pennington  <hp@pobox.com>
2424
2425         Oops - test code was only testing failure of around 30 of the
2426         mallocs in the test path, but it turns out there are 500+
2427         mallocs. I believe this was due to misguided linking setup such
2428         that there was one copy of dbus_malloc etc. in the daemon and one
2429         in the shared lib, and only daemon mallocs were tested. In any
2430         case, the test case now tests all 500+ mallocs, and doesn't pass
2431         yet, though there are lots of fixes in this patch.
2432
2433         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
2434         this so that it doesn't need to allocate memory, since it
2435         has no way of indicating failure due to OOM (and would be
2436         annoying if it did).
2437
2438         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
2439
2440         * bus/Makefile.am: rearrange to create two self-contained
2441         libraries, to avoid having libraries with overlapping symbols.
2442         that was resulting in weirdness, e.g. I'm pretty sure there
2443         were two copies of global static variables.
2444
2445         * dbus/dbus-internals.c: move the malloc debug stuff to
2446         dbus-memory.c
2447
2448         * dbus/dbus-list.c (free_link): free list mempool if it becomes
2449         empty.
2450
2451         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
2452
2453         * dbus/dbus-address.c (dbus_parse_address): free list nodes
2454         on failure.
2455
2456         * bus/dispatch.c (bus_dispatch_add_connection): free
2457         message_handler_slot when no longer using it, so
2458         memory leak checkers are happy for the test suite.
2459
2460         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
2461
2462         * bus/bus.c (new_connection_callback): disconnect in here if
2463         bus_connections_setup_connection fails.
2464
2465         * bus/connection.c (bus_connections_unref): fix to free the
2466         connections
2467         (bus_connections_setup_connection): if this fails, don't
2468         disconnect the connection, just be sure there are no side
2469         effects.
2470
2471         * dbus/dbus-string.c (undo_alignment): unbreak this
2472
2473         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
2474         leaking
2475         (_dbus_auth_new): fix the order in which we free strings
2476         on OOM failure
2477
2478         * bus/connection.c (bus_connection_disconnected): fix to
2479         not send ServiceDeleted multiple times in case of memory
2480         allocation failure
2481
2482         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
2483         get the base service name
2484         (dbus_bus_register_client): don't return base service name,
2485         instead store it on the DBusConnection and have an accessor
2486         function for it.
2487         (dbus_bus_register_client): rename dbus_bus_register()
2488
2489         * bus/dispatch.c (check_hello_message): verify that other
2490         connections on the bus also got the correct results, not
2491         just the one sending hello
2492
2493 2003-03-15  Havoc Pennington  <hp@pobox.com>
2494
2495         Make it pass the Hello handling test including all OOM codepaths.
2496         Now to do other messages...
2497
2498         * bus/services.c (bus_service_remove_owner): fix crash when
2499         removing owner from an empty list of owners
2500         (bus_registry_ensure): don't leave service in the list of
2501         a connection's owned services if we fail to put the service
2502         in the hash table.
2503
2504         * bus/connection.c (bus_connection_preallocate_oom_error): set
2505         error flag on the OOM error.
2506
2507         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
2508         handle _dbus_transport_set_connection failure
2509
2510         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
2511         to create watches up front and simply enable/disable them as
2512         needed.
2513         (unix_connection_set): this can now fail on OOM
2514
2515         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
2516         of enabling/disabling a watch or timeout.
2517
2518         * bus/loop.c (bus_loop_iterate): don't touch disabled
2519         watches/timeouts
2520
2521         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
2522
2523 2003-03-15  Havoc Pennington  <hp@pobox.com>
2524
2525         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
2526         write useful test code, after all that futzing around ;-)
2527
2528         Test does not yet pass because we can't handle OOM in
2529         _dbus_transport_messages_pending (basically,
2530         dbus_connection_preallocate_send() does not prealloc the write
2531         watch). To fix this, I think we need to add new stuff to
2532         set_watch_functions, namely a SetEnabled function so we can alloc
2533         the watch earlier, then enable it later.
2534
2535         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
2536         dbus-memory.c to the convenience lib
2537
2538         * bus/test.c: rename some static functions to keep them clearly
2539         distinct from stuff in connection.c. Handle client disconnection.
2540
2541 2003-03-14  Havoc Pennington  <hp@pobox.com>
2542
2543         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
2544         transport, tests more of the real codepath. Set up clients
2545         with bus_setup_debug_client.
2546
2547         * bus/test.c (bus_setup_debug_client): function to set up debug
2548         "clients" on the main loop
2549
2550         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
2551         support
2552
2553         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe
2554         server type
2555
2556         * dbus/dbus-server-debug.c: support a debug server based on pipes
2557
2558         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
2559         (_dbus_close): new function
2560
2561         * configure.in: check for socketpair
2562
2563 2003-03-14  Havoc Pennington  <hp@redhat.com>
2564
2565         * dbus/dbus-memory.c: add a "detect buffer overwrites on free"
2566         cheesy hack
2567
2568         * dbus/dbus-transport-debug.c: rework this a good bit to be
2569         less complicated. hopefully still works.
2570
2571         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
2572         manually
2573
2574         * glib/dbus-gmain.c (timeout_handler): don't remove timeout
2575         after running it
2576
2577         * dbus/dbus-message.c (dbus_message_copy): rename from
2578         dbus_message_new_from_message, fix it up to copy
2579         all the message fields, add test case
2580
2581         * bus/dispatch.c (bus_dispatch_test): add some more test code,
2582         not quite passing yet
2583
2584 2003-03-14  Havoc Pennington  <hp@pobox.com>
2585
2586         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
2587         until no work remains" in test code. (the large diff here
2588         is just code movement, no actual changes)
2589
2590         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
2591         1, no point waiting around for test code.
2592         (_dbus_server_debug_accept_transport): unref the timeout
2593         after adding it (right?)
2594
2595         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
2596
2597 2003-03-13  Havoc Pennington  <hp@redhat.com>
2598
2599         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
2600         out of memory
2601
2602         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
2603         of memory
2604
2605         * dbus/dbus-connection.h: Make AddWatchFunction and
2606         AddTimeoutFunction return a bool so they can fail on out-of-memory
2607
2608         * bus/bus.c (bus_context_new): set up timeout handlers
2609
2610         * bus/connection.c (bus_connections_setup_connection): set up
2611         timeout handlers
2612
2613         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
2614         can fail
2615
2616         * bus/bus.c (bus_context_new): adapt to changes
2617
2618         * bus/connection.c: adapt to changes
2619
2620         * test/watch.c: adapt to DBusWatch changes
2621
2622         * bus/dispatch.c (bus_dispatch_test): started adding this but
2623         didn't finish
2624
2625 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
2626
2627         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
2628
2629 2003-03-13  Havoc Pennington  <hp@pobox.com>
2630
2631         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
2632         set up a test framework as for the library
2633
2634 2003-03-12  Havoc Pennington  <hp@pobox.com>
2635
2636         Throughout: purge global variables, introduce BusActivation,
2637         BusConnections, BusRegistry, etc. objects instead.
2638
2639         * bus/bus.h, bus/bus.c: introduce BusContext as a global
2640         message bus object
2641
2642         * test/Makefile.am (TEST_BINARIES): disable bus-test for now,
2643         going to redo this a bit differently I think
2644
2645 2003-03-12  Havoc Pennington  <hp@redhat.com>
2646
2647         Mega-patch that gets the message bus daemon initially handling
2648         out-of-memory. Work still needed. Also lots of random
2649         moving stuff to DBusError instead of ResultCode.
2650
2651         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
2652
2653         * dbus/dbus-connection.c
2654         (dbus_connection_send_with_reply_and_block): use DBusError
2655
2656         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
2657         DBusResultCode
2658
2659         * dbus/dbus-connection.c (dbus_connection_send): drop the result
2660         code here, as the only failure possible is OOM.
2661
2662         * bus/connection.c (bus_connection_disconnect):
2663         rename bus_connection_disconnected as it's a notification only
2664
2665         * bus/driver.c (bus_driver_handle_acquire_service): don't free
2666         "name" on get_args failure, should be done by get_args;
2667         don't disconnect client for bad args, just return an error.
2668         (bus_driver_handle_service_exists): ditto
2669
2670         * bus/services.c (bus_services_list): NULL-terminate returned array
2671
2672         * bus/driver.c (bus_driver_send_service_lost)
2673         (bus_driver_send_service_acquired): send messages from driver to a
2674         specific client to the client's unique name, not to the broadcast
2675         service.
2676
2677         * dbus/dbus-message.c (decode_header_data): reject messages that
2678         contain no name field
2679         (_dbus_message_get_client_serial): rename to
2680         dbus_message_get_serial and make public
2681         (_dbus_message_set_serial): rename from set_client_serial
2682         (_dbus_message_set_reply_serial): make public
2683         (_dbus_message_get_reply_serial): make public
2684
2685         * bus/connection.c (bus_connection_foreach): allow stopping
2686         iteration by returning FALSE from foreach function.
2687
2688         * dbus/dbus-connection.c (dbus_connection_send_preallocated)
2689         (dbus_connection_free_preallocated_send)
2690         (dbus_connection_preallocate_send): new API for sending a message
2691         without possibility of malloc failure.
2692         (dbus_connection_send_message): rename to just
2693         dbus_connection_send (and same for whole function family)
2694
2695         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
2696
2697         * dbus/dbus-sysdeps.c (_dbus_exit): new function
2698
2699         * bus/activation.c: handle/return errors
2700
2701         * dbus/dbus-errors.h: add more DBUS_ERROR #define
2702
2703         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
2704         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
2705         (_dbus_result_from_errno): move to this file
2706
2707 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
2708
2709         * dbus/dbus-marshal.c:
2710         (_dbus_marshal_set_string):
2711         Take a length argument so we can marshal the correct string
2712         length.
2713
2714         (_dbus_marshal_dict), (_dbus_demarshal_dict),
2715         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
2716         (_dbus_marshal_test):
2717         * dbus/dbus-marshal.h:
2718         Add support for marshalling and demarshalling dicts.
2719
2720         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
2721         Add support for TYPE DICT.
2722
2723         * dbus/dbus-message.c: (set_string_field):
2724         Adjust header padding.
2725
2726         (dbus_message_append_args_valist), (dbus_message_append_dict),
2727         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
2728         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
2729         (check_message_handling), (check_have_valid_message):
2730         * dbus/dbus-message.h:
2731         Add functions for setting and getting dicts.
2732
2733         * dbus/dbus-protocol.h:
2734         Add DBUS_TYPE_DICT.
2735
2736         * dbus/dbus.h:
2737         Add dbus-dict.h
2738
2739         * doc/dbus-specification.sgml:
2740         Add information about how dicts are marshalled.
2741
2742         * test/data/invalid-messages/dict-with-nil-value.message:
2743         * test/data/invalid-messages/too-short-dict.message:
2744         * test/data/valid-messages/dict-simple.message:
2745         * test/data/valid-messages/dict.message:
2746         Add sample messages containing dicts.
2747
2748 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
2749
2750         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
2751
2752 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
2753
2754         * dbus/Makefile.am:
2755         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
2756         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
2757         (dbus_dict_set_int32), (dbus_dict_set_uint32),
2758         (dbus_dict_set_double), (dbus_dict_set_string),
2759         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
2760         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
2761         (dbus_dict_set_string_array), (_dbus_dict_test):
2762         * dbus/dbus-dict.h:
2763         Fix according to comments from Havoc.
2764
2765 2003-03-06  Michael Meeks  <michael@server.home>
2766
2767         * configure.in: if we don't have kde-config, disable have_qt.
2768
2769 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
2770
2771         * dbus/Makefile.am:
2772         Add dbus-dict.[ch]
2773
2774         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
2775         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
2776         (dbus_dict_remove), (dbus_dict_get_value_type),
2777         (dbus_dict_get_keys), (dbus_dict_put_boolean),
2778         (dbus_dict_put_int32), (dbus_dict_put_uint32),
2779         (dbus_dict_put_double), (dbus_dict_put_string),
2780         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
2781         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
2782         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
2783         (dbus_dict_get_int32), (dbus_dict_get_uint32),
2784         (dbus_dict_get_double), (dbus_dict_get_string),
2785         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
2786         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
2787         (dbus_dict_get_string_array), (_dbus_dict_test):
2788         * dbus/dbus-dict.h:
2789         Add DBusDict implementation
2790
2791         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
2792         * dbus/dbus-test.h:
2793         Add _dbus_dict_test
2794
2795 2003-03-04  Havoc Pennington  <hp@pobox.com>
2796
2797         * test/data/auth/*: adapt to changes
2798
2799         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
2800         USERID_BASE64 and change USERNAME_BASE64 to put in username not
2801         userid
2802
2803         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
2804         more stuff from being in a context name, to make the protocol
2805         simpler to deal with
2806
2807         * dbus/dbus-errors.c (dbus_error_has_name): new function
2808         (dbus_error_is_set): new function
2809
2810         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
2811         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
2812
2813         * dbus/dbus-connection.c (dbus_connection_flush): also read
2814         messages during a flush operation
2815
2816         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
2817
2818 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
2819
2820         * configure.in: Check for gethostbyname on Solaris.
2821
2822         * dbus/dbus-transport.c: (_dbus_transport_open):
2823         Remove duplicate "tcp" entry.
2824
2825         * doc/dbus-specification.sgml:
2826         Clarify some things.
2827
2828 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
2829
2830         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
2831         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
2832         (_dbus_keyring_test):
2833         * dbus/dbus-md5.c: (_dbus_md5_compute):
2834         * dbus/dbus-sha.c: (_dbus_sha_compute):
2835         Plug memory leaks.
2836
2837 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
2838
2839         * README: Add some things.
2840
2841 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
2842
2843         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
2844         after case DBUS_TYPE_BOOELAN.
2845
2846 2003-03-02  Havoc Pennington  <hp@pobox.com>
2847
2848         * test/break-loader.c (randomly_set_extreme_ints): add test that
2849         sets really huge and small integers
2850
2851         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
2852         that length of boolean array fits in the string, and that
2853         string has room for boolean value in single-bool case.
2854
2855         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
2856         optional value to "ALIGN" command which is what to fill the
2857         alignment with.
2858
2859         * test/data/valid-messages/no-padding.message: add regression
2860         test for the message padding problem
2861
2862 2003-03-02  Havoc Pennington  <hp@pobox.com>
2863
2864         * dbus/dbus-message.c (decode_header_data): fix to always init
2865         message_padding, from Benjamin Dauvergne
2866
2867 2003-03-02  Havoc Pennington  <hp@pobox.com>
2868
2869         * configure.in: 0.5
2870
2871         * NEWS: Update.
2872
2873 2003-03-01  Joe Shaw  <joe@assbarn.com>
2874
2875         * configure.in: Check for "struct cmsgcred" and try to access its
2876         members for BSD-like unices.
2877
2878         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
2879         _dbus_read_credentials_unix_socket().
2880         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
2881         read() for reading the credential byte off the unix socket.  Use
2882         struct cmsgcred on systems that support it.
2883
2884 2003-02-27  Alexander Larsson  <alexl@redhat.com>
2885
2886         * glib/Makefile.am:
2887         * configure.in:
2888         Make gthreads-2.0 dependency optional. Don't build thread test if
2889         its not found.
2890
2891 2003-02-27  Havoc Pennington  <hp@pobox.com>
2892
2893         * dbus/dbus-connection.c
2894         (dbus_connection_send_message_with_reply_and_block): fix doh!
2895         doh! doh! bug that resulted in never removing a reply from the
2896         queue, no wonder we called get_reply_serial so much ;-)
2897
2898         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
2899         and client serial instead of demarshaling them every time
2900
2901 2003-02-27  Havoc Pennington  <hp@pobox.com>
2902
2903         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
2904         more inlined, using dbus-string-private.h, speeds things up
2905         substantially
2906
2907         * dbus/dbus-string.c (_dbus_string_free): apply align offset
2908         when freeing the string
2909         (_dbus_string_steal_data): fix for align offset
2910         (undo_alignment): new function
2911
2912 2003-02-26  Havoc Pennington  <hp@redhat.com>
2913
2914         All kinds of audit fixes from Owen, plus initial attempt to
2915         handle unaligned memory returned from malloc.
2916
2917         * dbus/dbus-string.c (_dbus_string_init): clamp max length to
2918         leave room for align_offset and nul byte
2919         (fixup_alignment): function to track an align_offset and
2920         ensure real->str is aligned
2921         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
2922         to allow a nul byte plus align offset
2923         (_dbus_string_lock): fix overflow issue
2924         (_dbus_string_init_const_len): add assertions on sanity of len,
2925         assign allocated to be ALLOCATION_PADDING larger than len
2926         (set_length): fixup the overflow handling
2927         (_dbus_string_get_data_len): fix overflow in assertion
2928         (open_gap): detect overflow in size of gap to be opened
2929         (_dbus_string_lengthen): add overflow check
2930         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
2931         (_dbus_string_append): add overflow check
2932         (_dbus_string_append_unichar): overflow
2933         (_dbus_string_delete): fix overflow in assertion
2934         (_dbus_string_copy_len): overflow in assertion
2935         (_dbus_string_replace_len): overflows in assertions
2936         (_dbus_string_find): change to implement in terms of
2937         _dbus_string_find_to
2938         (_dbus_string_find_to): assorted fixage
2939         (_dbus_string_equal_c_str): assert c_str != NULL,
2940         fix logic so the function works
2941         (_dbus_string_ends_with_c_str): fix overflow thingy
2942         (_dbus_string_base64_encode): overflow fix
2943         (_dbus_string_validate_ascii): overflow
2944         (_dbus_string_validate_nul): overflow
2945
2946 2003-02-26  Havoc Pennington  <hp@redhat.com>
2947
2948         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
2949
2950 2003-02-26  Alexander Larsson  <alexl@redhat.com>
2951
2952         * configure.in:
2953         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
2954
2955         * dbus/dbus-connection.c:
2956         * dbus/dbus-connection.h:
2957         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
2958         Add dbus_connection_set_wakeup_main_function and use it when queueing
2959         incoming and outgoing messages.
2960
2961
2962         * dbus/dbus-dataslot.c:
2963         Threadsafe usage of DBusDataSlotAllocator
2964
2965         * dbus/dbus-message.c: (dbus_message_get_args_iter):
2966         dbus_new can fail.
2967
2968         * dbus/dbus-server-unix.c:
2969         Add todo comment
2970
2971         * glib/dbus-gmain.c:
2972         Implement the new wakeup functions for glib.
2973
2974         * glib/Makefile.am:
2975         * glib/test-thread-client.c:
2976         * glib/test-thread-server.c:
2977         * glib/test-thread.h:
2978         Initial cut at some thread test code. Not really done yet.
2979
2980 2003-02-26  Havoc Pennington  <hp@pobox.com>
2981
2982         * dbus/dbus-connection.c
2983         (dbus_connection_send_message_with_reply_and_block): fix crash
2984         where we ref'd the outgoing message instead of the returned reply
2985
2986         * dbus/dbus-transport-unix.c (do_authentication): check read watch
2987         at the end of this function, so if we didn't need to read for
2988         authentication, we reinstall it for receiving messages
2989
2990         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to
2991         a NULL sender for peer-to-peer case
2992
2993         * dbus/dbus-transport-unix.c (check_read_watch): handle
2994         !authenticated case correctly
2995
2996         * glib/dbus-gmain.c: add support for DBusServer
2997
2998         * dbus/dbus-server.c: add data slot support
2999
3000         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
3001         return values and handle errors
3002
3003         * dbus/dbus-dataslot.c: factor out the data slot stuff from
3004         DBusConnection
3005
3006         * Doxyfile.in (INPUT): add glib subdir
3007
3008         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
3009         setup_with_g_main instead of hookup_with_g_main; write docs
3010
3011 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
3012
3013         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
3014         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
3015         * dbus/dbus-message.c: (dbus_message_append_boolean),
3016         (dbus_message_append_boolean_array),
3017         (dbus_message_get_args_valist), (_dbus_message_test):
3018         * dbus/dbus-message.h:
3019         * doc/dbus-specification.sgml:
3020         Various fixes as pointed out by Havoc.
3021
3022         * test/data/invalid-messages/bad-boolean-array.message:
3023         * test/data/invalid-messages/bad-boolean.message:
3024         Add invalid boolean value test cases.
3025
3026 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
3027
3028         * dbus/dbus-internals.c: (_dbus_type_to_string):
3029         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
3030         (_dbus_marshal_validate_arg):
3031         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
3032         * dbus/dbus-message.c: (dbus_message_append_args_valist),
3033         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
3034         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
3035         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
3036         (dbus_message_iter_get_double),
3037         (dbus_message_iter_get_boolean_array), (message_iter_test):
3038         * dbus/dbus-message.h:
3039         * dbus/dbus-protocol.h:
3040         * doc/dbus-specification.sgml:
3041         * test/data/valid-messages/lots-of-arguments.message:
3042         Add support for boolean and boolean array types.
3043
3044 2003-02-23  Havoc Pennington  <hp@pobox.com>
3045
3046         * dbus/dbus-keyring.c: finish most of this implementation and
3047         simple unit test
3048
3049         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
3050         these barf if the error isn't cleared to NULL
3051
3052         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
3053         (_dbus_create_directory): new function
3054
3055         * dbus/dbus-errors.c (dbus_set_error): fix warning
3056
3057         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
3058         (_dbus_string_hex_decode): new function
3059         (test_hex_roundtrip): test code
3060
3061         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
3062
3063         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
3064
3065         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
3066         the save-to-temp/rename trick to atomically write the new file
3067         (_dbus_string_parse_uint): new function
3068
3069 2003-02-22  Havoc Pennington  <hp@pobox.com>
3070
3071         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
3072
3073 2003-02-22  Havoc Pennington  <hp@pobox.com>
3074
3075         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
3076         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
3077
3078         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
3079
3080         * dbus/test/data/sha-1: add US government test suite for SHA-1
3081
3082 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
3083
3084         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
3085         Make string arrays NULL-terminated.
3086
3087         * dbus/dbus-memory.c: (dbus_free_string_array):
3088         * dbus/dbus-memory.h:
3089         New function for freeing NULL-terminated string arrays.
3090
3091         * dbus/dbus-message-builder.c: (append_quoted_string),
3092         (_dbus_message_data_load):
3093         Add support for array types.
3094
3095         * dbus/dbus-message.c: (check_message_handling):
3096         Add more types as test cases.
3097
3098         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
3099         (_dbus_string_parse_double):
3100         Add the start offset to the end offset.
3101
3102         * test/data/valid-messages/lots-of-arguments.message:
3103         New test message with lots of arguments.
3104
3105 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
3106
3107         * dbus/dbus-message.c: (dbus_message_append_nil),
3108         (dbus_message_append_int32), (dbus_message_append_uint32),
3109         (dbus_message_append_double), (dbus_message_append_string),
3110         (dbus_message_append_int32_array),
3111         (dbus_message_append_uint32_array),
3112         (dbus_message_append_double_array),
3113         (dbus_message_append_byte_array),
3114         (dbus_message_append_string_array):
3115         Fix all out-of-memory handling in these functions.
3116
3117 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
3118
3119         * dbus/dbus-message.c: (dbus_message_append_nil):
3120         Fix a silly.
3121
3122 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
3123
3124         * dbus/dbus-message.c: (dbus_message_append_args_valist),
3125         (dbus_message_append_nil), (dbus_message_append_int32_array),
3126         (dbus_message_append_uint32_array),
3127         (dbus_message_append_double_array),
3128         (dbus_message_append_byte_array),
3129         (dbus_message_append_string_array), (dbus_message_get_args_valist),
3130         (dbus_message_iter_get_int32_array),
3131         (dbus_message_iter_get_uint32_array),
3132         (dbus_message_iter_get_double_array),
3133         (dbus_message_iter_get_byte_array),
3134         (dbus_message_iter_get_string_array):
3135
3136         * dbus/dbus-message.h:
3137         Add functions for appending and getting arrays.
3138
3139 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
3140
3141         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
3142         element size at least 8 bytes, fixes mempool tests on
3143         64-bit machines.
3144
3145 2003-02-20  Alexander Larsson  <alexl@redhat.com>
3146
3147         * dbus/dbus-transport-unix.c (unix_do_iteration):
3148         Unlock the connection mutex during a blocking select call.
3149         Add todo about how we need a way to wake up the select.
3150
3151         * dbus/dbus-connection-internal.h:
3152         * dbus/dbus-connection.c:
3153         Add _dbus_connection_lock and _dbus_connection_unlock.
3154
3155 2003-02-19  Havoc Pennington  <hp@pobox.com>
3156
3157         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
3158         Doxyfile.in, not Doxyfile
3159
3160         * dbus/dbus-keyring.c: do some hacking on this
3161
3162         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
3163
3164         * dbus/dbus-errors.c (dbus_set_error_const): do not call
3165         dbus_error_init
3166         (dbus_set_error): remove dbus_error_init, check for message ==
3167         NULL *before* we sprintf into it, and add @todo about including
3168         system headers in this file
3169
3170         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
3171
3172         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
3173
3174         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
3175         get various bits of user information based on either username
3176         or user ID
3177         (_dbus_homedir_from_username): new function
3178
3179 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
3180
3181         * configure.in:
3182         Add check for nonposix getpwnam_r
3183
3184         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
3185         Align the pool element size to a sizeof (void *) boundary.
3186
3187         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
3188         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
3189         General Solaris fixes.
3190
3191         * test/data/valid-messages/simplest-manual.message:
3192         Explicitly state that we want little-endian packing.
3193
3194 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
3195
3196         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
3197
3198         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket):
3199         Added to create a transport connecting using a tcp/ip socket.
3200
3201         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
3202         to a tcp socket at given host and port.
3203         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
3204         hostname and port.
3205
3206         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
3207
3208         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
3209         Added to create a server listening on a TCP/IP socket.
3210
3211 2003-02-19  Havoc Pennington  <hp@pobox.com>
3212
3213         Throughout: mop up all the Doxygen warnings and undocumented
3214         stuff.
3215
3216         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
3217         to search any paths.
3218
3219         * dbus/dbus-threads.c: move global mutex initializers to
3220         dbus-internals.h, multiple prototypes was confusing doxygen
3221         besides being kind of ugly
3222
3223         * Doxyfile (PREDEFINED): have Doxygen define
3224         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from
3225         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
3226         (do not abuse the feature! it's for stuff like the autogenerated
3227         macros in dbus-md5.c, not just for things you don't feel like
3228         documenting...)
3229
3230 2003-02-18  Havoc Pennington  <hp@pobox.com>
3231
3232         * dbus/dbus-string.c (_dbus_string_zero): new function
3233
3234         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
3235         wrap it in some dbus-friendly API
3236
3237         * dbus/dbus-types.h: add 16-bit types
3238
3239 2003-02-18  Joe Shaw  <joe@assbarn.com>
3240
3241         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
3242         credentials from our currently running process.
3243         (get_word): Fix a buglet where we were copying the entire length
3244         instead of relative to our position.
3245
3246         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
3247         keys on the stack... it's 640k of data.
3248
3249         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
3250         read the credentials byte off the socket, even if we don't have
3251         SO_PEERCRED.
3252         (_dbus_poll): Implement poll() using select() for systems which
3253         don't have it.
3254
3255         * glib/test-dbus-glib.c (main): Print out an error if no
3256         parameters are given.
3257
3258         * test/data/auth/fallback.auth-script: Added.  Tests that a client
3259         can fallback to a secondary auth mechanism if the first fails.
3260
3261 2003-02-18  Havoc Pennington  <hp@pobox.com>
3262
3263         * AUTHORS: add Alex
3264
3265 2003-02-17  Havoc Pennington  <hp@pobox.com>
3266
3267         * doc/dbus-specification.sgml: lots of cosmetic
3268         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
3269         env variable to DBUS_BUS_ADDRESS, s/client/application/,
3270         s/server/bus/ (except in authentication section). Add a section
3271         "Message Bus Message Routing"
3272
3273 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
3274
3275         Release 0.4
3276
3277         * NEWS: Update
3278
3279 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
3280
3281         * doc/dbus-specification.sgml:
3282         Specification updates.
3283
3284 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
3285
3286         * bus/activation.c: (bus_activation_init), (child_setup),
3287         (bus_activation_activate_service):
3288         * bus/activation.h:
3289         * bus/main.c: (main):
3290         Set DBUS_ADDRESS environment variable.
3291
3292         * dbus/dbus-errors.c: (dbus_set_error):
3293         Don't use va_copy since that's a C99 feature.
3294
3295         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
3296         (_dbus_spawn_async):
3297         * dbus/dbus-sysdeps.h:
3298         Add child_setup_func to _dbus_spawn_async.
3299
3300         * doc/dbus-specification.sgml:
3301         Update specification.
3302
3303         * test/spawn-test.c: (setup_func), (main):
3304         Fix test.
3305
3306 2003-02-17  Alexander Larsson  <alexl@redhat.com>
3307
3308         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
3309         Added todo.
3310
3311 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
3312
3313         * doc/.cvsignore:
3314         * doc/Makefile.am:
3315         * doc/dbus-test-plan.sgml:
3316         Add test plan document.
3317
3318         * test/Makefile.am:
3319         Fix distcheck.
3320
3321 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
3322
3323         * dbus/dbus-message.c: (decode_header_data),
3324         (_dbus_message_loader_return_buffer):
3325         Set the header padding amount when loading a message.
3326
3327 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
3328
3329         * bus/dispatch.c: (send_one_message):
3330         Only send broadcast messages to registered connections.
3331
3332         * dbus/dbus-message.c: (dbus_message_name_is):
3333         * dbus/dbus-message.h:
3334         New convenience function.
3335
3336         * dbus/dbus-transport-debug.c: (do_reading):
3337         Only dispatch one message per run.
3338
3339         * test/Makefile.am:
3340         * test/bus-test.c: (new_connection_callback), (die),
3341         (test_hello_client1_handler), (test_hello_client2_handler),
3342         (test_hello_replies), (main):
3343
3344         * test/bus-test-loop.[ch]:
3345         Add these.
3346
3347 2003-02-16  Havoc Pennington  <hp@pobox.com>
3348
3349         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
3350         backward conditional
3351
3352 2003-02-16  Alexander Larsson  <alexl@redhat.com>
3353
3354         * dbus/dbus-connection.c:
3355         Implement sent_message_with_reply. (with_reply_and block is still
3356         busted).
3357         Made dispatch_message not lose message if OOM.
3358
3359         * dbus/dbus-errors.h:
3360         Add NoReply error (for reply timeouts).
3361
3362 2003-02-16  Alexander Larsson  <alexl@redhat.com>
3363
3364         * dbus/dbus-hash.c (_dbus_hash_table_unref):
3365         Actually free keys and values when destroying hashtable.
3366
3367 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
3368
3369         * dbus/dbus-auth.c: (client_try_next_mechanism):
3370         Plug a leak.
3371
3372         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
3373         Return TRUE if there's no thread implementation around.
3374
3375         * glib/dbus-gmain.c: (free_source),
3376         (dbus_connection_hookup_with_g_main):
3377         Make sure to remove the GSource when the connection is finalized.
3378
3379 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
3380
3381         * bus/dispatch.c: (bus_dispatch_message_handler):
3382         * dbus/dbus-errors.h:
3383         Return an error if someone tries to send a message to a service
3384         that doesn't exist.
3385
3386 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
3387
3388         * bus/activation.c: (load_directory), (bus_activation_init),
3389         (bus_activation_activate_service):
3390         * bus/activation.h:
3391         * bus/driver.c:
3392         (bus_driver_handle_activate_service), (bus_driver_handle_message):
3393         More work on the activation handling.
3394
3395         * dbus/dbus-errors.h:
3396         Add some error messages
3397
3398         * dbus/dbus-message.c: (dbus_message_new_error_reply):
3399         * dbus/dbus-message.h:
3400         New function that creates an error message.
3401
3402         * dbus/dbus-protocol.h:
3403         Add ACTIVATE_SERVER message.
3404
3405         * dbus/dbus-server-unix.c: (unix_handle_watch),
3406         (_dbus_server_new_for_domain_socket):
3407         Call _dbus_fd_set_close_on_exec.
3408
3409         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
3410         (_dbus_spawn_async), (_dbus_disable_sigpipe),
3411         (_dbus_fd_set_close_on_exec):
3412         * dbus/dbus-sysdeps.h:
3413         Add _dbus_fd_set_close_on exec function. Also add function that checks
3414         that all open fds are set to close-on-exec and warns otherwise.
3415
3416         * dbus/dbus-transport-unix.c:
3417         (_dbus_transport_new_for_domain_socket):
3418         Call _dbus_fd_set_close_on_exec.
3419
3420 2003-02-16  Havoc Pennington  <hp@pobox.com>
3421
3422         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
3423         allow people to avoid setting SIGPIPE to SIG_IGN
3424         (_dbus_connection_new_for_transport): disable SIGPIPE unless
3425         we've been asked not to
3426
3427 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
3428
3429         * dbus/dbus-list.c: (_dbus_list_append_link),
3430         (_dbus_list_prepend_link):
3431         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
3432         (dbus_realloc):
3433         Warning fixes.
3434
3435 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
3436
3437         * bus/Makefile.am:
3438         * bus/activation.c: (bus_activation_entry_free),
3439         (add_desktop_file_entry), (load_directory), (bus_activation_init):
3440         * bus/activation.h:
3441         * bus/main.c: (main):
3442         Add simple activation support, doesn't work yet though.
3443
3444 2003-02-15   Zack Rusin  <zack@kde.org>
3445
3446         * qt/dbus-qthread.cpp:  small casting fix
3447
3448 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
3449
3450         * dbus/dbus-errors.c: (dbus_set_error):
3451         * dbus/dbus-errors.h:
3452         Add a few errors and make dbus_set_error void.
3453
3454         * dbus/dbus-sysdeps.c:
3455         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
3456         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
3457         * dbus/dbus-sysdeps.h:
3458         Add _dbus_spawn_async.
3459
3460         * test/spawn-test.c: (main):
3461         Test for _dbus_spawn_async.
3462
3463 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
3464
3465         * dbus/dbus-internals.h:
3466         Fix build without tests.
3467
3468         * dbus/dbus-list.c: (alloc_link):
3469         Fix a segfault when a malloc fails.
3470
3471         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
3472         (dbus_malloc0), (dbus_realloc):
3473         Add support for malloc debugging.
3474
3475 2003-02-15  Alexander Larsson  <alexl@redhat.com>
3476
3477         * dbus/dbus-threads.c:
3478         * dbus/dbus-threads.h:
3479         Add condvars. Remove static mutext from API.
3480         Implement static mutexes by initializing them from threads_init.
3481
3482         * glib/dbus-gthread.c:
3483         * qt/dbus-qthread.cpp:
3484         Update with the thread api changes.
3485
3486
3487         * dbus/dbus-list.c:
3488         * dbus/dbus-list.h:
3489         Turn StaticMutex into normal mutex + init function.
3490         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
3491         _dbus_list_append_link, _dbus_list_prepend_link
3492
3493
3494         * dbus/dbus-sysdeps.c:
3495         * dbus/dbus-sysdeps.h:
3496         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
3497         _dbus_atomic_dec. Only slow fallback implementation at the moment.
3498
3499         * dbus/dbus-protocol.h:
3500         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
3501
3502         * dbus/dbus-message.c:
3503         Make ref/unref atomic.
3504         Fix some docs.
3505
3506         * dbus/dbus-connection-internal.h:
3507         * dbus/dbus-connection.c:
3508         * dbus/dbus-connection.h:
3509         Make threadsafe.
3510         Change _peek to _borrow,_return & _steal_borrowed.
3511         Change disconnect callback to event.
3512         Make dbus_connection_dispatch_messages reentrant.
3513
3514         * dbus/dbus-transport.c:
3515         Don't ref the connection on calls to the transport
3516         implementation.
3517
3518         * dbus/dbus-message-handler.c:
3519         Make threadsafe.
3520
3521         * glib/dbus-gmain.c:
3522         Don't use peek_message anymore
3523
3524         * test/Makefile.am:
3525         * test/debug-thread.c:
3526         * test/debug-thread.h:
3527         Simple thread implementation that asserts() on deadlocks in
3528         single-threaded code.
3529
3530         * test/bus-test.c:
3531         (main) Call debug_threads_init.
3532
3533         * test/watch.c:
3534         Use disconnect message instead of disconnect callback.
3535
3536         * bus/connection.c:
3537         * bus/connection.h:
3538         Don't call dbus_connection_set_disconnect_function. Instead export
3539         bus_connection_disconnect.
3540
3541         * bus/dispatch.c:
3542         Call bus_connection_disconnect when we get a disconnected message.
3543
3544 2003-02-15  Havoc Pennington  <hp@pobox.com>
3545
3546         * dbus/dbus-message.c (dbus_message_new): fool around with the
3547         docs
3548
3549 2003-02-14  Havoc Pennington  <hp@pobox.com>
3550
3551         * dbus/dbus-mempool.c: fail if the debug functions so indicate
3552
3553         * dbus/dbus-memory.c: fail if the debug functions indicate we
3554         should
3555
3556         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
3557         (_dbus_decrement_fail_alloc_counter): debug functions to
3558         simulate memory allocation failures
3559
3560 2003-02-14  Havoc Pennington  <hp@pobox.com>
3561
3562         * dbus/dbus-errors.h (struct DBusError): add a word of padding
3563         to DBusError
3564
3565 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3566
3567         * bus/driver.c: (bus_driver_handle_hello):
3568         * bus/driver.h:
3569         * bus/services.c: (bus_service_lookup):
3570         Reorder message sending so we get a more sane order.
3571
3572         * test/bus-test.c: (message_handler):
3573         Fix tyop.
3574
3575 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3576
3577         * bus/driver.c: (bus_driver_send_service_deleted),
3578         (bus_driver_send_service_created), (bus_driver_send_service_lost),
3579         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
3580         (bus_driver_send_welcome_message),
3581         (bus_driver_handle_list_services),
3582         (bus_driver_handle_acquire_service),
3583         (bus_driver_handle_service_exists):
3584         * dbus/dbus-bus.c: (dbus_bus_register_client),
3585         (dbus_bus_acquire_service), (dbus_bus_service_exists):
3586         * dbus/dbus-errors.c: (dbus_result_to_string):
3587         * dbus/dbus-errors.h:
3588         * dbus/dbus-message.c: (dbus_message_append_args),
3589         (dbus_message_append_args_valist), (dbus_message_get_args),
3590         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
3591         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
3592         (dbus_message_iter_get_byte_array),
3593         (dbus_message_iter_get_string_array), (message_iter_test),
3594         (check_message_handling), (_dbus_message_test):
3595         * dbus/dbus-message.h:
3596         * test/bus-test.c: (main):
3597         Change fields to arguments in messages, so that they won't be
3598         confused with header fields.
3599
3600         * glib/test-dbus-glib.c: (main):
3601         Remove append_fields from hello message.
3602
3603 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3604
3605         * dbus/dbus-errors.c:
3606         * dbus/dbus-message.c:
3607         * dbus/dbus-string.c:
3608         Documentation fixes.
3609
3610 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3611
3612         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
3613         (remove_timeout):
3614         Implement support for timeouts in dbus-glib.
3615
3616 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3617
3618         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
3619         * dbus/dbus-message.c: (process_test_subdir):
3620         * test/break-loader.c: (find_breaks_based_on):
3621         Plug some memory leaks.
3622
3623 2003-02-13  Richard Hult  <rhult@codefactory.se>
3624
3625         * bus/main.c: Fix build.
3626
3627         * dbus/dbus-errors.h:
3628         * dbus/dbus-errors.c: Fix copyright for Anders.
3629
3630 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3631
3632         * bus/Makefile.am:
3633         Add utils.[ch]
3634
3635         * bus/connection.c: (bus_connection_foreach):
3636         Fix a warning.
3637
3638         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
3639         (unescape_string), (new_section), (parse_section_start),
3640         (parse_key_value), (report_error), (bus_desktop_file_load),
3641         (bus_desktop_file_get_string):
3642         * bus/desktop-file.h:
3643         Use DBusError for error reporting.
3644
3645         * bus/dispatch.c: (send_one_message),
3646         (bus_dispatch_message_handler):
3647         * bus/driver.c: (bus_driver_send_service_deleted),
3648         (bus_driver_send_service_created), (bus_driver_send_service_lost),
3649         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
3650         (bus_driver_send_welcome_message),
3651         (bus_driver_handle_list_services),
3652         (bus_driver_handle_acquire_service),
3653         (bus_driver_handle_service_exists):
3654         * bus/loop.c: (bus_loop_run):
3655         * bus/main.c:
3656         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
3657
3658         * bus/utils.c: (bus_wait_for_memory):
3659         * bus/utils.h:
3660         New files with general utility functions.
3661
3662         * dbus/dbus-internals.h:
3663         Remove _DBUS_HANDLE_OOM.
3664
3665 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3666
3667         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
3668         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
3669         * dbus/dbus-errors.h:
3670         Add DBusError structure.
3671
3672 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3673
3674         * test/data/valid-messages/standard-acquire-service.message:
3675         * test/data/valid-messages/standard-hello.message:
3676         * test/data/valid-messages/standard-list-services.message:
3677         * test/data/valid-messages/standard-service-exists.message:
3678         Add some standard messages.
3679
3680 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3681
3682         * bus/driver.c: (bus_driver_send_welcome_message),
3683         (bus_driver_handle_list_services),
3684         (bus_driver_handle_acquire_service),
3685         (bus_driver_handle_service_exists), (bus_driver_handle_message):
3686         Update for API changes in libdbus.
3687
3688         * dbus/dbus-message.c: (dbus_message_new_reply):
3689         * dbus/dbus-message.h:
3690         Remove the name argument. The spec states that replies shouldn't
3691         have a name.
3692
3693 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
3694
3695         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
3696         (report_error), (bus_desktop_file_load), (lookup_section),
3697         (lookup_line), (bus_desktop_file_get_raw),
3698         (bus_desktop_file_get_string):
3699         * bus/desktop-file.h:
3700         Some fixes, and new functions for getting a key value from a section.
3701
3702 2003-02-13  Havoc Pennington  <hp@pobox.com>
3703
3704         * test/data/auth/fail-after-n-attempts.auth-script: new test
3705
3706         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
3707         reject the client.
3708
3709 2003-02-13  Havoc Pennington  <hp@pobox.com>
3710
3711         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
3712         dbus_credentials_match were backward
3713
3714         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
3715         NO_CREDENTIALS and ROOT_CREDENTIALS
3716
3717         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine
3718         into here. Never process more commands after we've reached an
3719         end state; store further data as unused bytes.
3720
3721         * test/data/auth/*: add more auth tests
3722
3723         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
3724         command to match exact string and EXPECT_UNUSED to match unused
3725         bytes
3726
3727         * test/Makefile.am (dist-hook): fix to dist all the test stuff
3728
3729 2003-02-12  Havoc Pennington  <hp@pobox.com>
3730
3731         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
3732         \r off of popped lines
3733
3734         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
3735         scripts
3736
3737         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
3738         SEND, append \r\n
3739
3740 2003-02-12  Havoc Pennington  <hp@pobox.com>
3741
3742         * dbus/Makefile.am: remove break-loader from the build, since it
3743         moved.
3744
3745         * configure.in: add --enable-gcov to turn on coverage profiling
3746         flags and disable optimization
3747
3748 2003-02-10  Havoc Pennington  <hp@pobox.com>
3749
3750         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync
3751         initial cut at test framework for DBusAuth from laptop.
3752         Doesn't quite work yet but it compiles and I need to get
3753         it off the 266mhz laptop. ;-)
3754
3755         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
3756         fix a memleak in error case
3757
3758 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
3759
3760         * bus/Makefile.am:
3761         * bus/desktop-file.c:
3762         * bus/desktop-file.h:
3763         Add a desktop file parser.
3764
3765 2003-02-11  Zack Rusin  <zack@kde.org>
3766
3767         * qt/message.[h|cpp]: sample implementation
3768         of the KDE wrapper for DBusMessage
3769
3770 2003-02-09  Zack Rusin  <zack@kde.org>
3771
3772         * test/bus-test.c: make_it_compile
3773         * doc/dbus-specification.sgml: minimal semantic fix
3774
3775 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
3776
3777         Release 0.3
3778
3779         * NEWS: Update
3780
3781 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
3782
3783         * dbus/Makefile.am:
3784         * dbus/dbus-break-loader.c:
3785         * test/Makefile.am:
3786         * test/break-loader.c:
3787         Move dbus-break-loader to test/ and rename it to break-loader.
3788
3789 2003-02-02  Havoc Pennington  <hp@pobox.com>
3790
3791         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files
3792         for code to manage cookies in your home directory
3793
3794         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
3795
3796         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
3797         to authenticate, then disconnect the client.
3798
3799 2003-02-03  Alexander Larsson  <alexl@redhat.com>
3800
3801         * dbus/dbus-message.c (dbus_message_append_fields):
3802         Correct docs.
3803
3804 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3805
3806         * doc/dbus-specification.sgml:
3807         Update address format section.
3808
3809 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3810
3811         * test/Makefile.am:
3812         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
3813         (message_handler), (new_connection_callback), (loop_quit),
3814         (loop_run), (main):
3815         Add bus test.
3816
3817 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3818
3819         * bus/driver.c: (bus_driver_handle_service_exists):
3820         Simplify the code a bit.
3821
3822         * dbus/dbus-bus.c: (dbus_bus_service_exists):
3823         Fix a silly.
3824
3825 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3826
3827         * bus/Makefile.am:
3828         Add libdbus-daemon.la and link to it.
3829
3830 2003-02-01  James Willcox  <jwillcox@gnome.org>
3831
3832         * bus/driver.c: (bus_driver_handle_own_service):
3833         Actually include the service reply code in the message.
3834
3835 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3836
3837         * bus/driver.c: (bus_driver_handle_service_exists):
3838         Don't unref the incoming message.
3839
3840 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3841
3842         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
3843
3844 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
3845
3846         * dbus/dbus-server.c: (dbus_server_listen):
3847         * dbus/dbus-transport.c: (_dbus_transport_open):
3848         ifdef out the calls to the debug transport and server.
3849
3850 2003-02-02  Alexander Larsson  <alexl@redhat.com>
3851
3852         * dbus/dbus-watch.c (dbus_watch_get_flags):
3853         Add note in the docs that ERROR or HANGUP won't be returned
3854         and are assumed always on.
3855
3856         * glib/dbus-gmain.c (add_watch):
3857         Always add IO_ERR | IO_HUP
3858
3859         * dbus/dbus-message.h:
3860         Add semicolon after dbus_message_iter_get_string_array().
3861         Makes qt code build again
3862
3863 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
3864
3865         * bus/driver.c: (create_unique_client_name),
3866         (bus_driver_handle_hello):
3867         Don't take a name, just use a numeric id to identify
3868         each client.
3869
3870         * dbus/Makefile.am:
3871         * dbus/dbus-bus.c: (dbus_bus_register_client),
3872         (dbus_bus_acquire_service), (dbus_bus_service_exists):
3873         * dbus/dbus-bus.h:
3874         Add new convenience functions for communicating with the bus.
3875
3876         * dbus/dbus-message.h:
3877
3878         * dbus/dbus-protocol.h:
3879         Fix a typo.
3880
3881 2003-02-01  Alexander Larsson  <alexl@redhat.com>
3882
3883         * dbus/dbus-message.c (dbus_message_append_fields):
3884         Add some more doc comments.
3885
3886 2003-02-01  Havoc Pennington  <hp@pobox.com>
3887
3888         * dbus/dbus-break-loader.c (randomly_modify_length): change
3889         a 4-byte value in the message as if it were a length
3890
3891         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
3892         execute bit on saved files
3893
3894 2003-02-01  Havoc Pennington  <hp@pobox.com>
3895
3896         * dbus/dbus-break-loader.c (main): new program to find messages
3897         that break the loader.
3898
3899         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
3900         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
3901
3902         * dbus/dbus-string.c (_dbus_string_set_byte): new
3903
3904 2003-01-31  Havoc Pennington  <hp@pobox.com>
3905
3906         * dbus/dbus-message.c: refactor the test code to be more general,
3907         in preparation for writing a "randomly permute test cases to
3908         try to break the loader" program.
3909
3910 2003-01-31  Havoc Pennington  <hp@pobox.com>
3911
3912         * doc/dbus-specification.sgml: work on the specification
3913
3914         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check
3915         the protocol version of the message.
3916
3917         * dbus/dbus-protocol.h: drop special _REPLY names, the spec
3918         no longer specifies that.
3919         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not
3920         1/2/3/4)
3921
3922         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
3923         "break" for DBUS_TYPE_NIL, remove @todo
3924
3925 2003-01-31  Havoc Pennington  <hp@pobox.com>
3926
3927         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename
3928         just set_is_error/get_is_error as this is a commonly-used
3929         function, and write docs.
3930
3931 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
3932
3933         * dbus/dbus-address.c: (dbus_address_entry_free):
3934         Free key and value lists.
3935
3936         * dbus/dbus-internals.c: (_dbus_type_to_string):
3937         Add the types we didn't have.
3938
3939         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
3940         (_dbus_marshal_validate_arg):
3941         Add NIL types.
3942
3943         * dbus/dbus-message.c: (dbus_message_set_sender):
3944         Remove todo about being able to set sender to NULL.
3945
3946         (dbus_message_set_is_error_reply),
3947         (dbus_message_get_is_error_reply):
3948         * dbus/dbus-message.h:
3949         New functions.
3950
3951         * dbus/dbus-protocol.h:
3952         Add error reply flag.
3953
3954         * test/data/valid-messages/opposite-endian.message:
3955         Add NIL type to test.
3956
3957 2003-01-31  Havoc Pennington  <hp@pobox.com>
3958
3959         * doc/dbus-specification.sgml: fully specify the header.  Add
3960         flags and major protocol version, and change header/body len to
3961         unsigned.
3962
3963         * dbus/dbus-message-builder.c (append_saved_length): append length
3964         as uint32
3965
3966         * dbus/dbus-message.c (dbus_message_create_header): change header
3967         length and body length to unsigned. Add the new fields from the
3968         spec
3969         (_dbus_message_loader_return_buffer): unsigned header/body len
3970
3971 2003-01-30  Havoc Pennington  <hp@pobox.com>
3972
3973         * dbus/dbus-auth.c: rework to use only REJECTED, no
3974         MECHANISMS
3975
3976         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just
3977         use REJECTED, suggested by Mark McLoughlin
3978
3979 2003-01-30  Havoc Pennington  <hp@pobox.com>
3980
3981         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
3982         a better way to report errors here. e.g.  "unix address lacks
3983         path" or something. also "no such file" when the path doesn't
3984         exist, etc.
3985
3986         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
3987         leaking list nodes
3988         (dbus_parse_address): add @todo about documenting address format,
3989         and allowing , and ; to be escaped
3990
3991 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
3992
3993         * dbus/Makefile.am:
3994         Add dbus-address.[ch]
3995
3996         * dbus/dbus-address.c: (dbus_address_entry_free),
3997         (dbus_address_entries_free), (create_entry),
3998         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
3999         (dbus_parse_address), (_dbus_address_test):
4000         * dbus/dbus-address.h:
4001         New files for dealing with address parsing.
4002
4003         * dbus/dbus-connection.c:
4004         Document timeout functions.
4005
4006         * dbus/dbus-message.c:
4007         Document dbus_message_new_from_message.
4008
4009         * dbus/dbus-server-debug.c:
4010         Document.
4011
4012         * dbus/dbus-server.c: (dbus_server_listen):
4013         Parse address and use correct server implementation.
4014
4015         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
4016         * dbus/dbus-string.h:
4017         New function with test.
4018
4019         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
4020         * dbus/dbus-test.h:
4021         Add address tests.
4022
4023         * dbus/dbus-transport-debug.c:
4024         Document.
4025
4026         * dbus/dbus-transport.c: (_dbus_transport_open):
4027         Parse address and use correct transport implementation.
4028
4029 2003-01-30  Havoc Pennington  <hp@pobox.com>
4030
4031         * dbus/dbus-message.c: use message->byte_order instead of
4032         DBUS_COMPILER_BYTE_ORDER throughout.
4033         (dbus_message_create_header): pad header to align the
4034         start of the body of the message to 8-byte boundary
4035
4036         * dbus/dbus-marshal.h: make all the demarshalers take const
4037         DBusString arguments.
4038
4039         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
4040         validate message args here, so we don't have to do slow validation
4041         later, and so we catch bad messages as they are incoming. Also add
4042         better checks on header_len and body_len. Also fill in
4043         message->byte_order
4044
4045         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
4046         implemented properly)
4047         (_dbus_string_validate_nul): new function to check all-nul
4048
4049         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
4050         get_arg_end_pos and remove all validation
4051         (_dbus_marshal_validate_arg): actually do validation here.
4052
4053 2003-01-29  Havoc Pennington  <hp@pobox.com>
4054
4055         * dbus/dbus-message.c (check_message_handling): fix assertion
4056         failure on set_client_serial
4057
4058 2003-01-28  Havoc Pennington  <hp@pobox.com>
4059
4060         * dbus/dbus-server-debug.c: Add doc section comments
4061
4062         * dbus/dbus-transport-debug.c: add doc section comments
4063
4064 2003-01-28  Havoc Pennington  <hp@redhat.com>
4065
4066         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
4067         the reverse order from how I had it
4068         (_dbus_string_base64_encode): reverse encoding order. I was
4069         basically byteswapping everything during encoding.
4070
4071 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
4072
4073         * dbus/dbus-connection-internal.h:
4074         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
4075         (_dbus_connection_remove_timeout):
4076         Add functions for adding and removing timeouts.
4077
4078         * dbus/dbus-message.c: (dbus_message_new_from_message):
4079         Add new function that takes a message and creates an exact
4080         copy of it, but with the refcount set to 1.
4081         (check_message_handling):
4082         Fix build error.
4083
4084         * dbus/dbus-server-protected.h:
4085         * dbus/dbus-server.c: (_dbus_server_init_base),
4086         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
4087         (dbus_server_set_timeout_functions):
4088         (_dbus_server_remove_timeout):
4089         New functions so that a server can add and remove timeouts.
4090
4091         (dbus_server_listen):
4092         Add commented out call to dbus_server_debug_new.
4093
4094         * dbus/dbus-timeout.c: (_dbus_timeout_new):
4095         Actually set the handler, doh.
4096
4097         * dbus/dbus-transport.c: (_dbus_transport_open):
4098         Add commented out call to dbus_transport_debug_client_new.
4099
4100         * dbus/Makefile.am:
4101         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
4102
4103 2003-01-28  Havoc Pennington  <hp@pobox.com>
4104
4105         * dbus/dbus-message.c (check_message_handling): function to check
4106         on the loaded message, iterates over it etc.
4107
4108 2003-01-28  Havoc Pennington  <hp@pobox.com>
4109
4110         * test/Makefile.am (dist-hook): fix make distdir
4111
4112         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
4113
4114 2003-01-27  Havoc Pennington  <hp@pobox.com>
4115
4116         * dbus/dbus-mempool.c (time_for_size): replace printf with
4117         _dbus_verbose
4118
4119         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
4120         empty lines; fix the SAVE_LENGTH stuff to be
4121         START_LENGTH/END_LENGTH so it actually works; couple other
4122         bugfixes
4123
4124         * test/Makefile.am (dist-hook): add dist-hook for .message files
4125
4126         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
4127         can be constant or locked.
4128         (_dbus_string_free): allow freeing a const string as
4129         documented/intended
4130
4131         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
4132
4133         * dbus/dbus-test-main.c (main): take an argument which is the
4134         directory containing test data
4135
4136         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
4137         argument to this and load all the messages in test/data/
4138         checking that they can be loaded or not loaded as appropriate.
4139
4140 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
4141
4142         * bus/dispatch.c: (bus_dispatch_message_handler):
4143         Dispatch messages sent to services.
4144
4145         * bus/driver.c: (bus_driver_send_service_deleted),
4146         (bus_driver_send_service_created), (bus_driver_send_service_lost),
4147         (bus_driver_send_service_acquired):
4148         Add helper functions for sending service related messages.
4149
4150         (bus_driver_send_welcome_message):
4151         Send HELLO_REPLY instead of WELCOME.
4152
4153         (bus_driver_handle_list_services):
4154         Send LIST_SERVICES_REPLY instead of SERVICES.
4155
4156         (bus_driver_handle_own_service),
4157         (bus_driver_handle_service_exists):
4158         New message handlers.
4159
4160         (bus_driver_handle_message):
4161         Invoke new message handlers.
4162
4163         (bus_driver_remove_connection):
4164         Don't remove any services here since that's done automatically
4165         by bus_service_remove_owner now.
4166
4167         * bus/driver.h:
4168         New function signatures.
4169
4170         * bus/services.c: (bus_service_add_owner):
4171         Send ServiceAcquired message if we're the only primary owner.
4172
4173         (bus_service_remove_owner):
4174         Send ServiceAcquired/ServiceLost messages.
4175
4176         (bus_service_set_prohibit_replacement),
4177         (bus_service_get_prohibit_replacement):
4178         Functions for setting prohibit replacement.
4179
4180         (bus_service_has_owner):
4181         New function that checks if a connection is in the owner queue of
4182         a certain service.
4183
4184         * bus/services.h:
4185         Add new function signatures.
4186
4187         * dbus/dbus-list.c: (_dbus_list_test):
4188         Add tests for _dbus_list_remove_last and traversing the list backwards.
4189
4190         * dbus/dbus-list.h:
4191         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
4192         go any further, so return NULL then.
4193
4194         * dbus/dbus-protocol.h:
4195         Add new messages, service flags and service replies.
4196
4197 2003-01-26  Havoc Pennington  <hp@pobox.com>
4198
4199         * dbus/dbus-message-builder.c: implement, completely untested.
4200
4201         * test/data/*: add data to be used in testing.
4202         ".message" files are our simple loadable text format.
4203         ".message-raw" will be binary dumps of messages.
4204
4205         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
4206
4207 2003-01-26  Havoc Pennington  <hp@pobox.com>
4208
4209         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
4210
4211         * dbus/dbus-errors.c (dbus_result_to_string): add
4212         file errors
4213
4214         * dbus/dbus-message-builder.c: new file, will contain code to load
4215         up messages from files. Not implemented yet.
4216
4217 2003-01-26  Havoc Pennington  <hp@pobox.com>
4218
4219         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
4220         the sender by setting to NULL
4221
4222 2003-01-26  Havoc Pennington  <hp@pobox.com>
4223
4224         The unit tests pass, but otherwise untested.  If it breaks, the
4225         tests should have been better. ;-)
4226
4227         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
4228         the connection.
4229
4230         * dbus/dbus-message.c: redo everything so we maintain
4231         message->header as the only copy of the various fields.
4232         This avoids the possibility of out-of-memory in some cases,
4233         for example dbus_message_lock() can't run out of memory anymore,
4234         and avoids extra copying. Figured I may as well go ahead and do
4235         this since it was busted for dbus_message_lock to not return
4236         failure on OOM, and dbus_message_write_header was totally
4237         unchecked for OOM. Also fixed some random other bugs.
4238
4239         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
4240         that strings are nul-terminated. Also, end_pos can be equal
4241         to string length just not greater than, I think.
4242         (_dbus_marshal_set_int32): new function
4243         (_dbus_marshal_set_uint32): new function
4244         (_dbus_marshal_set_string): new function
4245
4246         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
4247         a warning, init timeout_list to NULL
4248         (dbus_connection_send_message): don't use uninitialized variable
4249         "serial"
4250
4251         * dbus/dbus-string.c (_dbus_string_replace_len): new function
4252
4253 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
4254
4255         * bus/driver.c: (bus_driver_handle_hello),
4256         (bus_driver_send_welcome_message):
4257         Plug leaks
4258
4259 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
4260
4261         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
4262         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
4263         (dbus_connection_unref):
4264         * dbus/dbus-marshal.c: (_dbus_marshal_test):
4265         * dbus/dbus-message.c: (dbus_message_unref),
4266         Plug memory leaks.
4267
4268         (dbus_message_get_fields):
4269         Remove debugging printout.
4270
4271         (_dbus_message_loader_return_buffer):
4272         Don't store the header string.
4273
4274         (_dbus_message_test):
4275         Plug leaks.
4276
4277 2003-01-26  Richard Hult  <rhult@codefactory.se>
4278
4279         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
4280         the file descriptor list, since it can change under us.
4281
4282 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4283
4284         * glib/dbus-gmain.c: (dbus_connection_prepare),
4285         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
4286         (remove_watch), (dbus_connection_hookup_with_g_main):
4287         Rewrite the glib handling to use its own GSource instead of a
4288         GIOChannel so we can catch messages put in the queue while waiting
4289         for a reply.
4290
4291 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4292
4293         * bus/Makefile.am:
4294         * bus/connection.c: (connection_disconnect_handler),
4295         (connection_watch_callback), (bus_connection_setup):
4296         * bus/dispatch.c: (send_one_message),
4297         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
4298         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
4299         * bus/dispatch.h:
4300         * bus/driver.c: (bus_driver_send_service_deleted),
4301         (bus_driver_send_service_created), (bus_driver_handle_hello),
4302         (bus_driver_send_welcome_message),
4303         (bus_driver_handle_list_services), (bus_driver_remove_connection),
4304         (bus_driver_handle_message):
4305         * bus/driver.h:
4306         Refactor code, put the message dispatching in its own file. Use
4307         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
4308         is disconnected.
4309
4310 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4311
4312         * dbus/dbus-internals.h:
4313         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
4314
4315         * dbus/dbus-message.c: (dbus_message_get_sender):
4316         * dbus/dbus-message.h:
4317         Implement dbus_message_get_sender.
4318
4319         * dbus/dbus-protocol.h:
4320         Add message and service defines.
4321
4322 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4323
4324         * dbus/dbus-connection.c: (dbus_connection_send_message):
4325         * dbus/dbus-message-internal.h:
4326         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
4327         (dbus_message_write_header):
4328         Remove _dbus_messag_unlock and don't set the client serial on a
4329         message if one already exists.
4330
4331 2003-01-24  Havoc Pennington  <hp@pobox.com>
4332
4333         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
4334         list_pool
4335
4336         * bus/driver.c (bus_driver_handle_list_services): fix a leak
4337         on OOM
4338
4339 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4340
4341         * dbus/dbus-list.c: (alloc_link), (free_link):
4342         Use a memory pool for the links.
4343
4344 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4345
4346         * bus/connection.c: (bus_connection_foreach):
4347         * bus/connection.h:
4348         Add new bus_connection_foreach function.
4349
4350         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
4351         Add function that broadcasts a message to all clients.
4352
4353         (bus_driver_send_service_created), (bus_driver_handle_hello),
4354         (bus_driver_send_welcome_message),
4355         (bus_driver_handle_list_services), (bus_driver_message_handler):
4356         Implement functions that take care of listing services, and notifying
4357         clients when new services are created.
4358
4359         * bus/services.c: (bus_services_list):
4360         * bus/services.h:
4361         Add new function that returns an array of strings with the currently
4362         registered services.
4363
4364         * glib/dbus-glib.h:
4365         * glib/dbus-gmain.c:
4366         Update copyright year.
4367
4368 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
4369
4370         * dbus/dbus-connection.c: (dbus_connection_send_message):
4371         Unlock the message in case it was sent earlier.
4372
4373         (dbus_connection_send_message_with_reply_and_block):
4374         Remove the reply message from the list.
4375
4376         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
4377         Set array_len and new_pos correctly.
4378
4379         (_dbus_marshal_test):
4380         Remove debug output.
4381
4382         * dbus/dbus-message-internal.h:
4383         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
4384         New function that returns the reply serial.
4385
4386         (_dbus_message_unlock):
4387         New function that unlocks a message and resets its header.
4388
4389         (dbus_message_append_string_array),
4390         (dbus_message_get_fields_valist),
4391         (dbus_message_iter_get_field_type),
4392         (dbus_message_iter_get_string_array),
4393         (dbus_message_get_fields),
4394         (dbus_message_append_fields_valist):
4395         Handle string arrays.
4396
4397         (dbus_message_set_sender):
4398         Make this function public since the bus daemon needs it.
4399
4400         (decode_header_data):
4401         Set the reply serial to -1 initially.
4402
4403         * dbus/dbus-message.h:
4404         Add dbus_message_set_sender.
4405
4406 2003-01-24  Havoc Pennington  <hp@pobox.com>
4407
4408         * doc/dbus-specification.sgml: add some stuff
4409
4410 2003-01-22  Havoc Pennington  <hp@pobox.com>
4411
4412         * doc/dbus-specification.sgml: Start to document the protocol.
4413
4414 2003-01-22  Havoc Pennington  <hp@pobox.com>
4415
4416         * dbus/dbus-connection.c
4417         (dbus_connection_send_message_with_reply_and_block): add some @todo
4418
4419         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
4420
4421 2003-01-21  Havoc Pennington  <hp@pobox.com>
4422
4423         (patch untested because can't compile)
4424
4425         * bus/driver.c (create_unique_client_name): make this function
4426         never recycle client names. Also, caller should initialize
4427         the DBusString.
4428
4429         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
4430
4431 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
4432
4433         * dbus/dbus-marshal.c: (_dbus_marshal_double),
4434         (_dbus_marshal_int32), (_dbus_marshal_uint32),
4435         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
4436         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
4437         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
4438         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
4439         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
4440         * dbus/dbus-marshal.h:
4441         * dbus/dbus-protocol.h:
4442         Add support for marshalling and demarshalling integer, double
4443         and string arrays.
4444
4445 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
4446
4447         * bus/Makefile.am:
4448         Add driver.[ch]
4449
4450         * bus/connection.c: (connection_disconnect_handler):
4451         Remove the connection from the bus driver's list.
4452
4453         (connection_watch_callback): Dispatch messages.
4454
4455         (free_connection_data): Free connection name.
4456
4457         (bus_connection_setup): Add connection to the bus driver's list.
4458         (bus_connection_remove_owned_service):
4459         (bus_connection_set_name), (bus_connection_get_name):
4460         Add functions for setting and getting the connection's name.
4461
4462         * bus/connection.h:
4463         Add function headers.
4464
4465         * bus/driver.c: (create_unique_client_name),
4466         (bus_driver_handle_hello_message),
4467         (bus_driver_send_welcome_message), (bus_driver_message_handler),
4468         (bus_driver_add_connection), (bus_driver_remove_connection):
4469         * bus/driver.h:
4470         * bus/main.c:
4471         * bus/services.c: (bus_service_free):
4472         * bus/services.h:
4473         New file that handles communication and registreation with the bus
4474         itself.
4475
4476 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
4477
4478         * dbus/dbus-connection.c: (dbus_connection_send_message):
4479         Add a new client_serial parameter.
4480
4481         (dbus_connection_send_message_with_reply):
4482         Remove a @todo since we've implemented the blocking function.
4483
4484         (dbus_connection_send_message_with_reply_and_block):
4485         New function that sends a message and waits for a reply and
4486         then returns the reply.
4487
4488         * dbus/dbus-connection.h:
4489         Add new functions.
4490
4491         * dbus/dbus-errors.c: (dbus_result_to_string):
4492         * dbus/dbus-errors.h:
4493         Add new DBUS_RESULT.
4494
4495         * dbus/dbus-message-internal.h:
4496         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
4497         (_dbus_message_set_sender), (dbus_message_write_header),
4498         (dbus_message_new_reply), (decode_header_data),
4499         (_dbus_message_loader_return_buffer), (_dbus_message_test):
4500         * dbus/dbus-message.h:
4501         Add new functions that set the reply serial and sender.
4502         Also marshal and demarshal them correctly and add test.
4503
4504         * dbus/dbus-protocol.h:
4505         Add new DBUS_MESSAGE_TYPE_SENDER.
4506
4507         * glib/dbus-glib.h:
4508         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
4509         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
4510         (dbus_connection_hookup_with_g_main):
4511         * glib/test-dbus-glib.c: (main):
4512         Rewrite to use GIOChannel and remove the GSource crack.
4513
4514         * test/echo-client.c: (main):
4515         * test/watch.c: (check_messages):
4516         Update for changed APIs
4517
4518 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
4519
4520         * dbus/Makefile.am: Add dbus-timeout.[cħ]
4521
4522         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
4523         Create a DBusTimeoutList.
4524         (dbus_connection_set_timeout_functions): Add new function to
4525         set timeout callbacks
4526
4527         * dbus/dbus-connection.h: Add public DBusTimeout API.
4528
4529         * dbus/dbus-message.c: (dbus_message_get_service):
4530         * dbus/dbus-message.h:  New function.
4531
4532         * dbus/dbus-server.c: Fix small doc typo.
4533
4534         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
4535
4536 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
4537
4538         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
4539         of the string, just as long as specified.
4540
4541 2003-01-19  Havoc Pennington  <hp@pobox.com>
4542
4543         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
4544         new function
4545
4546         * dbus/dbus-server.c (dbus_server_set_max_connections)
4547         (dbus_server_get_max_connections, dbus_server_get_n_connections):
4548         keep track of current number of connections, and add API for
4549         setting a max (but haven't implemented enforcing the max yet)
4550
4551 2003-01-18  Havoc Pennington  <hp@pobox.com>
4552
4553         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
4554         reading/writing if read_watch != NULL or write_watch != NULL.
4555
4556         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
4557         the message loader code to actually load message->header and
4558         message->body into the newly-created message.
4559
4560         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
4561         in OOM case
4562
4563         * dbus/dbus-connection.c (dbus_connection_set_max_message_size)
4564         (dbus_connection_get_max_message_size)
4565         (dbus_connection_set_max_live_messages_size)
4566         (dbus_connection_get_max_live_messages_size): implement some
4567         resource limitation functions
4568
4569         * dbus/dbus-resources.c: new file implementing some of the
4570         resource limits stuff
4571
4572         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
4573         missing docs, add @todo to handle OOM etc.
4574
4575         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
4576         docs
4577
4578 2003-01-18  Havoc Pennington  <hp@pobox.com>
4579
4580         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the
4581         connection if it hasn't been already.
4582
4583         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
4584         replace with DisconnectFunction.
4585
4586 2003-01-18  Havoc Pennington  <hp@pobox.com>
4587
4588         Building --disable-verbose-mode --disable-asserts --disable-tests
4589         cuts the library from 112K to 45K or so
4590
4591         * configure.in: check for varargs macro support,
4592         add --enable-verbose-mode, --enable-asserts.
4593
4594         * dbus/dbus-internals.h (_dbus_assert): support
4595         DBUS_DISABLE_ASSERT
4596         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
4597
4598 2003-01-18  Havoc Pennington  <hp@pobox.com>
4599
4600         * dbus/dbus-test.c: include config.h so that tests actually run
4601
4602         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
4603         so the failure mode when that assumption fails will be plenty
4604         obvious.
4605
4606 2003-01-18  Havoc Pennington  <hp@pobox.com>
4607
4608         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
4609
4610         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
4611         the distribution
4612
4613         * test/Makefile.am: don't use special variable "TESTS" for echo-*
4614         since we don't want to use those in make check
4615
4616 2003-01-15  Havoc Pennington  <hp@redhat.com>
4617
4618         Release 0.2
4619
4620         * NEWS: update
4621
4622 2003-01-15  Havoc Pennington  <hp@redhat.com>
4623
4624         * test/Makefile.am: fix so that test source code ends up in the
4625         distribution on make distcheck
4626
4627 2003-01-15  Havoc Pennington  <hp@redhat.com>
4628
4629         Release 0.1.
4630
4631         * NEWS: update
4632
4633 2003-01-15  Havoc Pennington  <hp@redhat.com>
4634
4635         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
4636         fix build when --disable-tests
4637
4638         * Makefile.am (EXTRA_DIST): put HACKING in here
4639
4640         * HACKING: document procedure for making a tarball release.
4641
4642 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
4643
4644         * bus/connection.c: (connection_error_handler),
4645         (bus_connection_setup):
4646         * bus/main.c: (main):
4647         Make sure that the DBusConnectionData struct is NULLed
4648         out to prevent a segfault.
4649
4650         * dbus/dbus-errors.c: (dbus_result_to_string):
4651         * dbus/dbus-errors.h:
4652         * dbus/dbus-message.c: (dbus_message_get_fields),
4653         (dbus_message_get_fields_valist), (_dbus_message_test):
4654         * dbus/dbus-message.h:
4655         Make dbus_message_get_fields return a result code so we can
4656         track invalid fields as well as oom.
4657
4658 2003-01-11  Havoc Pennington  <hp@pobox.com>
4659
4660         * configure.in: change --enable-test/--enable-ansi action-if-given
4661         to enable_foo=$enableval instead of enable_foo=yes
4662
4663 2003-01-08  Havoc Pennington  <hp@pobox.com>
4664
4665         * dbus/dbus-string.c (_dbus_string_align_length): new function
4666
4667         * dbus/dbus-test-main.c: move main() for test app here
4668         * dbus/dbus-test.c
4669         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
4670         symbol to run tests, because dbus-test isn't in the main
4671         library
4672
4673         Code review nitpicks.
4674
4675         * dbus/dbus-message.c (dbus_message_write_header): add newlines
4676         for people with narrow emacs ;-). Assert client_serial was filled
4677         in. Assert message->name != NULL.
4678         (dbus_message_append_fields): have "first_field_type" arg separate
4679         from va list, needed for C++ binding that also uses varargs IIRC
4680         and helps with type safety
4681         (dbus_message_new): add @todo about using DBusString to store
4682         service/name internally
4683         (dbus_message_new): don't leak ->service and ->name on OOM later
4684         in the function
4685         (dbus_message_unref): free the service name
4686         (dbus_message_get_fields): same change to varargs
4687         i.e. first_field_type
4688         (_dbus_message_loader_return_buffer): assert that the message data
4689         is aligned (if not it's a bug in our code). Put in verbose griping
4690         about why we set corrupted = TRUE.
4691         (decode_header_data): add FIXME that char* is evil.  Was going to
4692         add FIXME about evil locale-specific string.h strncmp, but just
4693         switched to wacky string-as-uint32 optimization. Move check for
4694         "no room for field name" above get_const_data_len() to avoid
4695         assertion failure in get_const_data_len if we have trailing 2
4696         bytes or the like. Check for service and name fields being
4697         provided twice. Don't leak service/name on error. Require field
4698         names to be aligned to 4 bytes.
4699
4700         * dbus/dbus-marshal.c: move byte swap stuff to header
4701         (_dbus_pack_int32): uscore-prefix
4702         (_dbus_unpack_int32): uscore-prefix
4703         (_dbus_unpack_uint32): export
4704         (_dbus_demarshal_string): add @todo complaining about use of
4705         memcpy()
4706         (_dbus_marshal_get_field_end_pos): add @todo about bad error
4707         handling allowing corrupt data to go unchecked
4708
4709 2003-01-08  Havoc Pennington  <hp@redhat.com>
4710
4711         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write
4712         to the select() as needed for authentication. (should be using
4713         _dbus_poll() not select, but for another day)
4714
4715         * dbus/dbus.h: include dbus/dbus-protocol.h
4716
4717 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
4718
4719         * dbus/Makefile.am (dbusinclude_HEADERS): Install
4720         dbus-connection.h
4721
4722 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
4723
4724         * dbus/dbus-internals.c: (_dbus_type_to_string):
4725         New function that returns a string describing a type.
4726
4727         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
4728         * dbus/dbus-marshal.h:
4729         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
4730         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
4731         (dbus_message_iter_get_byte_array):
4732         * dbus/dbus-message.h:
4733         Add new convenience functions for appending and getting message fields.
4734         Also add demarshalling routines for byte arrays.
4735
4736 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
4737
4738         * dbus/dbus-connection-internal.h:
4739         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
4740         (_dbus_connection_get_next_client_serial),
4741         (dbus_connection_send_message):
4742         * dbus/dbus-internals.h:
4743         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
4744         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
4745         (_dbus_marshal_uint32), (_dbus_demarshal_double),
4746         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
4747         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
4748         (_dbus_verbose_bytes), (_dbus_marshal_test):
4749         * dbus/dbus-marshal.h:
4750         * dbus/dbus-message-internal.h:
4751         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
4752         (dbus_message_write_header), (_dbus_message_lock),
4753         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
4754         (dbus_message_get_name), (dbus_message_append_int32),
4755         (dbus_message_append_uint32), (dbus_message_append_double),
4756         (dbus_message_append_string), (dbus_message_append_byte_array),
4757         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
4758         (dbus_message_iter_unref), (dbus_message_iter_has_next),
4759         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
4760         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
4761         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
4762         (decode_header_data), (_dbus_message_loader_return_buffer),
4763         (message_iter_test), (_dbus_message_test):
4764         * dbus/dbus-message.h:
4765         * dbus/dbus-protocol.h:
4766         * dbus/dbus-test.c: (main):
4767         * dbus/dbus-test.h:
4768         * glib/test-dbus-glib.c: (message_handler), (main):
4769         * test/echo-client.c: (main):
4770         * test/watch.c: (check_messages):
4771         Make messages sendable and receivable for real.
4772
4773 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
4774
4775         * dbus/dbus-marshal.c: (_dbus_marshal_double),
4776         (_dbus_marshal_string), (_dbus_marshal_byte_array):
4777         * dbus/dbus-message.c: (dbus_message_append_int32),
4778         (dbus_message_append_uint32), (dbus_message_append_double),
4779         (dbus_message_append_string), (dbus_message_append_byte_array):
4780         Handle OOM restoration.
4781
4782 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
4783
4784         * dbus/dbus-marshal.c: (_dbus_marshal_string),
4785         (_dbus_demarshal_string), (_dbus_marshal_test):
4786         * dbus/dbus-marshal.h:
4787         * dbus/dbus-message.c: (dbus_message_get_name),
4788         Document these functions.
4789
4790         (dbus_message_append_int32), (dbus_message_append_uint32),
4791         (dbus_message_append_double), (dbus_message_append_string),
4792         (dbus_message_append_byte_array):
4793         * dbus/dbus-message.h:
4794         Add functions for adding message fields of different types.
4795
4796         * dbus/dbus-protocol.h:
4797         Add the different types.
4798
4799 2003-01-05  Havoc Pennington  <hp@pobox.com>
4800
4801         * bus/connection.c: implement routines for handling connections,
4802         first thing is keeping a list of owned services on each connection
4803         and setting up watches etc.
4804
4805         * bus/services.c: implement a mapping from service names to lists
4806         of connections
4807
4808         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
4809
4810         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
4811         to use static mutexes for global data
4812
4813         * dbus/dbus-connection.c (dbus_connection_set_data): add new
4814         collection of functions to set/get application-specific data
4815         on the DBusConnection.
4816
4817 2003-01-04  Havoc Pennington  <hp@pobox.com>
4818
4819         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
4820         (_dbus_poll): new function
4821
4822         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
4823         copied from GLib
4824
4825         * bus/loop.c: initial code for the daemon main loop
4826
4827 2003-01-04  Havoc Pennington  <hp@pobox.com>
4828
4829         * test/watch.c (error_handler): make it safe if the error handler
4830         is called multiple times (if we s/error handler/disconnect
4831         handler/ we should just guarantee it's called only once)
4832
4833         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
4834         error handler on disconnect (it's quite possible we should
4835         just change the error handler to a "disconnect handler," I'm
4836         not sure we have any other meaningful errors)
4837
4838         * configure.in: check for getpwnam_r
4839
4840         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
4841         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
4842         mechanism as in SASL spec, using socket credentials
4843
4844         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
4845         (_dbus_send_credentials_unix_socket): new function
4846
4847         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
4848         dbus_accept()
4849         (_dbus_write): only check errno if <0 returned
4850         (_dbus_write_two): ditto
4851
4852 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
4853
4854         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
4855         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
4856         (_dbus_marshal_test):
4857         * dbus/dbus-marshal.h:
4858         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
4859         to _dbus_marshal_utf8_string. Also fix some tests.
4860
4861 2002-12-28  Harri Porten  <porten@kde.org>
4862
4863         * configure.in: added check for C++ compiler and a very cheesy
4864         check for the Qt integration
4865
4866         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
4867
4868         * qt/Makefile.am: added
4869
4870         * qt/.cvsignore: added
4871
4872         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
4873         latter, added #ifdef QT_THREAD_SUPPORT guard.
4874
4875         * dbus/Makefile.am: added missing headers for make dist
4876
4877 2002-12-28  Kristian Rietveld  <kris@gtk.org>
4878
4879         * dbus/Makefile.am: fixup export-symbols-regex.
4880
4881 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
4882
4883         * acinclude.m4: Add this file and put the
4884         PKG_CHECK_MODULE macro in it.
4885
4886 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
4887
4888         * dbus/dbus-marshal.c: (_dbus_marshal_string),
4889         (_dbus_demarshal_double), (_dbus_demarshal_int32),
4890         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
4891         (_dbus_marshal_test):
4892         Make the demarshalling routines align the pos argument.
4893         Add string marshalling tests and fix the obvious bugs
4894         discovered.
4895
4896 2002-12-26  Havoc Pennington  <hp@pobox.com>
4897
4898         * dbus/dbus-auth.c: fixes fixes fixes
4899
4900         * dbus/dbus-transport-unix.c: wire up support for
4901         encoding/decoding data on the wire
4902
4903         * dbus/dbus-auth.c (_dbus_auth_encode_data)
4904         (_dbus_auth_decode_data): append to target string
4905         instead of nuking it.
4906
4907 2002-12-26  Havoc Pennington  <hp@pobox.com>
4908
4909         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
4910         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
4911         doh
4912
4913         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
4914         avoid swap_bytes() overhead (ignoring possible assembly stuff for
4915         now). Main point is because I wanted unpack_uint32 to implement
4916         _dbus_verbose_bytes
4917         (_dbus_verbose_bytes): new function
4918
4919         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
4920
4921         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
4922         mechanism to handle a corrupt message stream
4923         (_dbus_message_loader_new): fix preallocation to only prealloc,
4924         not prelengthen
4925
4926         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
4927         (_dbus_string_test): enhance tests for copy/move and fix the
4928         functions
4929
4930         * dbus/dbus-transport-unix.c: Hold references in more places to
4931         avoid reentrancy problems
4932
4933         * dbus/dbus-transport.c: ditto
4934
4935         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
4936         leak reference count in no-message case
4937
4938         * test/watch.c (do_mainloop): handle adding/removing watches
4939         during iteration over the watches. Also, ref the connection/server
4940         stored on a watch, so we don't try to mangle a destroyed one.
4941
4942         * dbus/dbus-transport-unix.c (do_authentication): perform
4943         authentication
4944
4945         * dbus/dbus-auth.c (get_state): add a state
4946         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
4947         (_dbus_auth_get_unused_bytes): append the unused bytes
4948         to the passed in string, rather than prepend
4949
4950         * dbus/dbus-transport.c (_dbus_transport_init_base): create
4951         the auth conversation DBusAuth
4952
4953         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
4954         (_dbus_transport_new_for_domain_socket): when creating a
4955         transport, pass in whether it's a client-side or server-side
4956         transport so we know which DBusAuth to create
4957
4958 2002-12-03  Havoc Pennington  <hp@pobox.com>
4959
4960         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
4961         _after_ finalizing the derived members
4962         (unix_connection_set): unref watch if we fail to add it
4963
4964         * dbus/dbus-connection.c (dbus_connection_unref): delete the
4965         transport first, so that the connection owned by the
4966         transport will be valid as the transport finalizes.
4967
4968         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
4969         if necessary, and remove watches from the connection.
4970
4971         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
4972
4973 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
4974
4975         * dbus/dbus-marshal.c: (_dbus_marshal_string),
4976         (_dbus_demarshal_double), (_dbus_demarshal_int32),
4977         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
4978         (_dbus_marshal_test):
4979         * dbus/dbus-marshal.h:
4980         Add string marshal functions and have the demarshal functions
4981         return the new position.
4982
4983 2002-12-25  Havoc Pennington  <hp@pobox.com>
4984
4985         * doc/dbus-sasl-profile.txt: docs on the authentication protocol,
4986         it is a simple protocol that just maps directly to SASL.
4987
4988         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
4989         initial implementation, not actually used yet.
4990
4991         * dbus/dbus-string.c (_dbus_string_find): new function
4992         (_dbus_string_equal): new function
4993         (_dbus_string_base64_encode): new function
4994         (_dbus_string_base64_decode): new function
4995
4996 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
4997
4998         * dbus/Makefile.am:
4999         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
5000         (_dbus_marshal_int32), (_dbus_marshal_uint32),
5001         (_dbus_demarshal_double), (_dbus_demarshal_int32),
5002         (_dbus_demarshal_uint32), (_dbus_marshal_test):
5003         * dbus/dbus-marshal.h:
5004         * dbus/dbus-protocol.h:
5005         * dbus/dbus-test.c: (main):
5006         * dbus/dbus-test.h:
5007         Add un-optimized marshalling/demarshalling routines.
5008
5009 2002-12-25  Harri Porten  <porten@kde.org>
5010
5011         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
5012
5013 2002-12-24  Zack Rusin  <zack@kde.org>
5014
5015         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
5016         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
5017         main loop stuff
5018
5019 2002-12-24  Havoc Pennington  <hp@pobox.com>
5020
5021         * glib/dbus-gthread.c: fix include
5022
5023         * glib/dbus-glib.h: rename DBusMessageHandler for now.
5024         I think glib API needs to change, though, as you don't
5025         want to use DBusMessageFunction, you want to use the
5026         DBusMessageHandler object. Probably
5027         dbus_connection_open_with_g_main_loop()
5028         and dbus_connection_setup_g_main_loop() or something like that
5029         (but think of better names...) that just create a connection
5030         that has watch/timeout functions etc. already set up.
5031
5032         * dbus/dbus-connection.c
5033         (dbus_connection_send_message_with_reply): new function just to
5034         show how the message handler helps us deal with replies.
5035
5036         * dbus/dbus-list.c (_dbus_list_remove_last): new function
5037
5038         * dbus/dbus-string.c (_dbus_string_test): free a string that
5039         wasn't
5040
5041         * dbus/dbus-hash.c: use memory pools for the hash entries
5042         (rebuild_table): be more paranoid about overflow, and
5043         shrink table when we can
5044         (_dbus_hash_test): reduce number of sprintfs and write
5045         valid C89. Add tests for case where we grow and then
5046         shrink the hash table.
5047
5048         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
5049
5050         * dbus/dbus-connection.c (dbus_connection_register_handler)
5051         (dbus_connection_unregister_handler): new functions
5052
5053         * dbus/dbus-message.c (dbus_message_get_name): new
5054
5055         * dbus/dbus-list.c: fix docs typo
5056
5057         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
5058         an object representing a handler for messages.
5059
5060 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
5061
5062         * glib/dbus-glib.h:
5063         * glib/dbus-gthread.c: (dbus_gthread_init):
5064         Don't use the gdbus prefix for public functions.
5065
5066 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
5067
5068         * Makefile.am:
5069         * configure.in:
5070         Add GLib checks and fixup .pc files
5071
5072         * glib/Makefile.am:
5073         * glib/dbus-glib.h:
5074         * glib/dbus-gmain.c: (gdbus_connection_prepare),
5075         (gdbus_connection_check), (gdbus_connection_dispatch),
5076         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
5077         (dbus_connection_gsource_new):
5078         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
5079         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
5080         * glib/test-dbus-glib.c: (message_handler), (main):
5081         Add GLib support.
5082
5083 2002-12-15  Harri Porten  <porten@kde.org>
5084
5085         * autogen.sh: check for libtoolize before attempting to use it
5086
5087         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
5088         struct.
5089
5090         * .cvsignore: ignore more stamp files
5091
5092         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
5093
5094         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
5095         without make install.
5096
5097 2002-12-15  Havoc Pennington  <hp@pobox.com>
5098
5099         * dbus/dbus-threads.c: add thread stubs that a higher library
5100         layer can fill in. e.g. the GLib wrapper might fill them in with
5101         GThread stuff. We still need to use this thread API to
5102         thread-safe-ize the library.
5103
5104 2002-12-12  Havoc Pennington  <hp@pobox.com>
5105
5106         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
5107         below new interfaces and include fewer system headers.
5108
5109         * dbus/dbus-sysdeps.c (_dbus_read): new function
5110         (_dbus_write): new function
5111         (_dbus_write_two): new function
5112         (_dbus_connect_unix_socket): new function
5113         (_dbus_listen_unix_socket): new function
5114
5115         * dbus/dbus-message-internal.h: change interfaces to use
5116         DBusString
5117
5118 2002-12-11  Havoc Pennington  <hp@pobox.com>
5119
5120         * dbus/dbus-types.h: add dbus_unichar
5121
5122         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
5123
5124         * dbus/dbus-connection.c (dbus_connection_send_message): return
5125         TRUE on success
5126
5127         * dbus/dbus-transport.c: include dbus-watch.h
5128
5129         * dbus/dbus-connection.c: include dbus-message-internal.h
5130
5131         * HACKING: add file with coding guidelines stuff.
5132
5133         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
5134         handling here, for security purposes (as in vsftpd). Not actually
5135         using this class yet.
5136
5137         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
5138         system/libc usage here, as in vsftpd, for ease of auditing (and
5139         should also simplify portability). Haven't actually moved all the
5140         system/libc usage into here yet.
5141
5142 2002-11-25  Havoc Pennington  <hp@pobox.com>
5143
5144         * dbus/dbus-internals.c (_dbus_verbose): fix to not
5145         always print the first verbose message.
5146
5147 2002-11-24  Havoc Pennington  <hp@pobox.com>
5148
5149         * test/echo-client.c, test/echo-server.c: cheesy test
5150         clients.
5151
5152         * configure.in (AC_CHECK_FUNCS): check for writev
5153
5154         * dbus/dbus-message.c (_dbus_message_get_network_data): new
5155         function
5156
5157         * dbus/dbus-list.c (_dbus_list_foreach): new function
5158
5159         * dbus/dbus-internals.c (_dbus_verbose): new function
5160
5161         * dbus/dbus-server.c, dbus/dbus-server.h: public object
5162         representing a server that listens for connections.
5163
5164         * dbus/.cvsignore: create
5165
5166         * dbus/dbus-errors.h, dbus/dbus-errors.c:
5167         public API for reporting errors
5168
5169         * dbus/dbus-connection.h, dbus/dbus-connection.c:
5170         public object representing a connection that
5171         sends/receives messages. (Same object used for
5172         both client and server.)
5173
5174         * dbus/dbus-transport.h, dbus/dbus-transport.c:
5175         Basic abstraction for different kinds of stream
5176         that we might read/write messages from.
5177
5178 2002-11-23  Havoc Pennington  <hp@pobox.com>
5179
5180         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN
5181         _DBUS_INT_MAX
5182
5183         * dbus/dbus-test.c (main): add list test, and include
5184         dbus-test.h as intended
5185
5186         * dbus/dbus-hash.c (_dbus_hash_table_remove_string)
5187         (_dbus_hash_table_remove_int): return value indicates
5188         whether the entry existed to remove
5189
5190         * dbus/dbus-list.c: add linked list utility class,
5191         with docs and tests
5192
5193         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
5194         array sometimes.
5195
5196 2002-11-23  Havoc Pennington  <hp@pobox.com>
5197
5198         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
5199         DBUS_END_DECLS to nothing, that should fix this once and for all
5200
5201         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
5202
5203         * dbus/dbus-message.c, dbus/dbus-hash.c:
5204         add some missing @brief
5205
5206 2002-11-23  Havoc Pennington  <hp@pobox.com>
5207
5208         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS
5209         to avoid confusing Doxygen
5210
5211         * dbus/dbus-hash.c: @} not }@
5212
5213         * dbus/dbus-message.c (struct DBusMessage): split out
5214         internals docs
5215
5216 2002-11-23  Havoc Pennington  <hp@pobox.com>
5217
5218         * configure.in: pile on more warning flags if using gcc
5219
5220         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have
5221         to document static functions
5222
5223         * configure.in: add summary to end of configure so it
5224         looks nice and attractive
5225
5226         * dbus/dbus-hash.c: finish implementation and write unit
5227         tests and docs
5228
5229         * configure.in: add --enable-tests to enable unit tests
5230
5231         * dbus/dbus-test.c: test program to run unit tests
5232         for all files in dbus/*, initially runs a test for
5233         dbus-hash.c
5234
5235         * dbus/dbus-internals.h: file to hold some internal utility stuff
5236
5237 2002-11-22  Havoc Pennington  <hp@redhat.com>
5238
5239         * dbus/dbus-hash.c: copy in Tcl hash table, not yet
5240         "ported" away from Tcl
5241
5242         * dbus/dbus-types.h: header for types such as dbus_bool_t
5243
5244 2002-11-22  Havoc Pennington  <hp@redhat.com>
5245
5246         * dbus/dbus.h: fixups for doc warnings
5247
5248         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
5249         macros
5250         (QUIET): make it quiet so we can see warnings
5251
5252         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
5253
5254 2002-11-22  Havoc Pennington  <hp@redhat.com>
5255
5256         * Makefile.am: include "Doxyfile" target in all-local
5257
5258         * configure.in: generate the Doxyfile
5259
5260         * Doxyfile.in: move Doxyfile here, so we can use
5261         configure to generate a Doxyfile with the right
5262         version number etc.
5263
5264 2002-11-22  Havoc Pennington  <hp@redhat.com>
5265
5266         * dbus/dbus-message.c: move inline docs into .c file
5267
5268         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
5269         so all docs are under doc/
5270         (MAN_EXTENSION): generate man pages. Use extension
5271         ".3dbus" which matches ".3qt" on my system,
5272         I guess this is OK, I don't know really.
5273         (FILE_PATTERNS): look for .c files not .h, makes sense
5274         for plain C I think
5275
5276 2002-11-22  Havoc Pennington  <hp@pobox.com>
5277
5278         * Makefile.am (SUBDIRS): rename subdir "server" to "bus"
5279         because any app can be a server, and any app can be a client,
5280         the bus is a special kind of server.
5281
5282 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
5283
5284         * Doxyfile : adding. Still needs Makefile rules to be generated
5285         automatically (just run "doxygen" in the toplevel dir for now to
5286         generate docs)
5287
5288         * dbus/dbus-message.h : Adding sample docs (javadoc since
5289         resembles gtk-doc a little more)
5290
5291         * dbus/dbus.h : Adding sample docs
5292
5293 2002-11-21  Havoc Pennington  <hp@redhat.com>
5294
5295         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION
5296         so we can allow ourselves to include files directly,
5297         instead of having to use dbus.h
5298
5299         * dbus/dbus.h: fill in
5300
5301         * dbus/dbus-message.h: sketch out a sample header file.
5302         Include griping if you include it directly instead of
5303         via dbus.h
5304
5305         * dbus/dbus-macros.h: new file with macros for extern "C",
5306         TRUE/FALSE, NULL, etc.
5307
5308         * doc/file-boilerplate.c: put include guards in here
5309
5310 2002-11-21  Havoc Pennington  <hp@redhat.com>
5311
5312         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
5313
5314         * COPYING: include the GPL as well, and license code
5315         under both AFL and GPL.
5316
5317 2002-11-21  Havoc Pennington  <hp@redhat.com>
5318
5319         * acconfig.h: get rid of this
5320
5321         * autogen.sh (run_configure): add --no-configure option
5322
5323         * configure.in: remove AC_ARG_PROGRAM to make
5324         autoconf complain less. add AC_PREREQ.
5325         add AC_DEFINE third arg.
5326
5327 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
5328
5329         * doc/Makefile.am:
5330         Fix references so we can distcheck.
5331
5332 2002-11-21  Havoc Pennington  <hp@redhat.com>
5333
5334         * Initial module creation
5335