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