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