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