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