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