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