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