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