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