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