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