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