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