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