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