2003-04-03 Havoc Pennington <hp@pobox.com>
[platform/upstream/dbus.git] / ChangeLog
1 2003-04-03  Havoc Pennington  <hp@pobox.com>
2
3         * bus/config-parser.c (bus_config_parser_unref): free 
4         list of mechanisms, bug discovered by test suite enhancements
5         (putting system.conf and session.conf into suite)
6
7         * test/Makefile.am, test/test-service.c: add placeholder for a
8         test service that we'll activate as part of test suite. Doesn't 
9         do anything yet.
10
11         * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by 
12         setting NULL value, and use system malloc not dbus_malloc() 
13         when we have unavoidable memleakage.
14
15         * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0
16         didn't work, and support DBUS_BUS_ACTIVATION.
17         
18         * bus/activation.c (child_setup): pass our well-known bus type to
19         the child
20
21         * bus/config-parser.c: support <type> to specify well-known type
22
23         * doc/dbus-specification.sgml: document the env variables to 
24         locate well-known buses and find service activator
25
26 2003-04-02  Havoc Pennington  <hp@redhat.com>
27
28         * test/Makefile.am (all-local): add a rule to copy tests to
29         builddir, so we can have generated tests. Use this to remove the
30         silly hack for testing system.conf and session.conf. Will use this 
31         shortly to generate .service files pointing to test binaries.
32
33 2003-04-02  Havoc Pennington  <hp@redhat.com>
34
35         * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
36         current alloc and needed new length, not max of the doubled
37         allocation and needed new length. Also, when building tests, 
38         don't do the double-allocation stuff, just realloc every time.
39
40 2003-04-02  Havoc Pennington  <hp@redhat.com>
41
42         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
43         in error messages
44         (_dbus_string_get_dirname): new
45         (_dbus_sysdeps_test): new
46         (_dbus_directory_open): include dirnames in error messages
47
48         * bus/config-parser.c: interpret <include> and <includedir> and
49         <servicedir> relative to config file location if the given
50         filename is not absolute.
51
52         * dbus/dbus-string.c (_dbus_string_find_byte_backward): new
53
54 2003-04-02  Havoc Pennington  <hp@redhat.com>
55
56         * bus/connection.c (bus_transaction_send_error_reply): set sender
57         service for the error, and unref the reply on success
58
59         * bus/activation.c: convert to use BusTransaction so OOM can be
60         handled correctly
61         (bus_activation_service_created): set sender of the message
62
63 2003-04-01  Havoc Pennington  <hp@redhat.com>
64
65         * bus/config-parser.c, bus/bus.c: implement <servicedir> and
66         <includedir> (at least mostly)
67
68         * dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
69         first, then the user ID
70
71 2003-04-01  Havoc Pennington  <hp@pobox.com>
72
73         * dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
74         function
75
76         * dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new
77
78         * dbus/dbus-internals.c (_dbus_dup_string_array): new function
79
80         * dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
81         socket 0777, and unlink any existing socket.
82
83         * bus/bus.c (bus_context_new): change our UID/GID and fork if
84         the configuration file so specifies; set up auth mechanism 
85         restrictions
86
87         * bus/config-parser.c (bus_config_parser_content): add support
88         for <fork> option and fill in code for <auth> 
89
90         * bus/system.conf.in: add <fork/> to default configuration, 
91         and limit auth mechanisms to EXTERNAL
92
93         * doc/config-file.txt (Elements): add <fork>
94
95         * dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
96         (_dbus_change_identity): new function
97
98 2003-03-31  Havoc Pennington  <hp@redhat.com>
99
100         * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket) 
101         (_dbus_listen_unix_socket): fix off-by-one error in null
102         termination spotted by Nalin
103
104 2003-03-31  Havoc Pennington  <hp@redhat.com>
105
106         * dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
107         DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
108         having a real home directory available.
109
110 2003-03-31  Havoc Pennington  <hp@redhat.com>
111
112         * bus/Makefile.am (install-data-hook): create /var/run/dbus
113
114         * bus/messagebus.in: add init script for Red Hat /etc/init.d
115
116         * configure.in: add support for specifying a style of init script
117         to install
118
119 2003-03-31  Havoc Pennington  <hp@redhat.com>
120
121         Fix some annoying DBusString API and fix all affected code.
122         
123         * dbus/dbus-string.c (_dbus_string_init): get rid of annoying
124         max_length argument
125         (_dbus_string_get_data): change to return string instead of using 
126         an out param
127         (_dbus_string_get_const_data): ditto
128         (_dbus_string_get_data_len): ditto
129         (_dbus_string_get_const_data_len): ditto
130
131 2003-03-31  Havoc Pennington  <hp@redhat.com>
132
133         * bus/main.c (main): fix up the command line arguments to be nicer
134
135 2003-03-31  Havoc Pennington  <hp@redhat.com>
136
137         * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
138         define DBUS_SYSTEM_BUS_PATH as we want to compile in the same 
139         final location that lands in the config file
140
141         * bus/config-loader-expat.c (bus_config_load): fix type of
142         XML_Parser variable
143
144         * doc/TODO: remove TODO item for dbus_bus_get()
145
146         * dbus/dbus-bus.c (bus_data_free): add missing lock/unlock
147
148 2003-03-31  Havoc Pennington  <hp@pobox.com>
149
150         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
151         (_dbus_transport_new_for_tcp_socket): these didn't need the "server"
152         argument since they are always client side
153
154         * dbus/dbus-server.c (dbus_server_get_address): new function
155
156         * bus/main.c (main): take the configuration file as an argument.
157
158         * test/data/valid-config-files/debug-allow-all.conf: new file to 
159         use with dispatch.c tests for example
160
161         * bus/test-main.c (main): require test data dir
162
163         * bus/bus.c (bus_context_new): change this to take a
164         configuration file name as argument
165
166         * doc/config-file.txt (Elements): add <servicedir>
167
168         * bus/system.conf, bus/session.conf: new files
169         
170         * dbus/dbus-bus.c (dbus_bus_get): look for system bus on
171         well-known socket if none set
172
173         * configure.in: create system.conf and session.conf
174
175 2003-03-30  Havoc Pennington  <hp@pobox.com>
176
177         * bus/config-parser.c: hacking
178         
179         * dbus/dbus-memory.c: don't use DBusList for the list of stuff 
180         to shut down, since it could cause weirdness with the DBusList
181         lock
182
183         * dbus/dbus-list.c (_dbus_list_test): add tests for the
184         link-oriented stack routines
185         (alloc_link): free the mempool if the first alloc from it fails
186
187         * dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue
188
189         * dbus/dbus-string.c (UNICODE_VALID): sync new version of this
190         from GLib
191         (_dbus_string_skip_white): new
192
193         * doc/config-file.txt (Elements): add <includedir>
194
195 2003-03-28  Havoc Pennington  <hp@pobox.com>
196
197         * dbus/dbus-string.c (_dbus_string_copy_data_len)
198         (_dbus_string_copy_data): new functions
199
200 2003-03-28  Anders Carlsson  <andersca@codefactory.se>
201
202         * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get):
203         * dbus/dbus-bus.h:
204         Add dbus_bus_get.
205         
206         * dbus/dbus-memory.c:
207         Fix a doc comment.
208         
209 2003-03-28  Havoc Pennington  <hp@pobox.com>
210
211         * bus/test.c (bus_test_flush_bus): remove the sleep from here, 
212         I think it may have just been superstition. Not sure.
213
214         * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM
215         failures that were not being handled.
216
217         * dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling
218
219         * dbus/dbus-memory.c: add ability to set number of mallocs in a
220         row that will fail on out-of-memory.
221
222         * dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
223         function for testing out-of-memory handling.
224
225         * bus/config-loader-expat.c (memsuite): don't wrap the dbus
226         allocation functions, they do map exactly to the expat ones.
227
228 2003-03-27  Havoc Pennington  <hp@redhat.com>
229
230         * bus/config-loader-libxml.c (bus_config_load): add another error
231         check
232
233 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
234
235         * doc/TODO:
236         Add note about automatic service activation.
237         
238         * doc/dbus-specification.sgml:
239         Rename the specification and clarify a few things.
240         
241 2003-03-26  Anders Carlsson  <andersca@codefactory.se>
242
243         * Doxyfile.in:
244         * dbus/dbus-address.c:
245         * dbus/dbus-dict.c:
246         * dbus/dbus-marshal.c:
247         * dbus/dbus-server-debug-pipe.c:
248         * dbus/dbus-transport-unix.c:
249         Fix documentation warnings.
250         
251 2003-03-26  Havoc Pennington  <hp@pobox.com>
252
253         * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
254         after every test so it's quick and easy to see which leaked, and
255         so we test multiple dbus_shutdown() calls
256
257         * configure.in: change configure.in XML stuff to also support
258         expat
259
260         * config-loader-libxml.c: some hacking
261
262         * config-loader-expat.c: some hacking
263
264         * config-parser.c: some hacking, plus tests
265
266 2003-03-25  Havoc Pennington  <hp@redhat.com>
267
268         * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR
269         
270         * configure.in: add --with-xml option to specify XML library,
271         right now only libxml is supported.
272
273         * bus/config-loader-libxml.c, config-parser.c: sync some minor 
274         nonworking code between home and work, still just stubs
275
276 2003-03-24  Havoc Pennington  <hp@redhat.com>
277
278         * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this
279         file
280
281         * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow 
282         NULL argument for "message" if the error is a well-known one, 
283         fill in a generic message in this case.
284
285         * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
286         favor of DBusError
287
288         * bus/test.c (bus_test_flush_bus): add
289
290         * bus/policy.c (bus_policy_test): test code stub
291
292 2003-03-24  Havoc Pennington  <hp@pobox.com>
293
294         * bus/connection.c (bus_connections_setup_connection): set up 
295         the "can this user connect" function, but it always returns 
296         TRUE until we have a config file parser so we can have a config
297         file that allows connections.
298
299 2003-03-23  Havoc Pennington  <hp@pobox.com>
300
301         * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with 
302         DBUS_BUILD_TESTS, actually alloc/free a block of memory for 
303         the mutex, so we can check for proper memory management 
304         and OOM handling.
305
306         * dbus/dbus-dataslot.c: remove the mutex from
307         DBusDataSlotAllocator and lock it manually when using it, 
308         to simplify fitting it into the global slots framework.
309
310         * dbus/dbus-threads.c (init_static_locks): rework how we're
311         handling global locks so they are easily shut down.
312
313         * bus/policy.c (bus_policy_append_rule): fix
314
315         * bus/test-main.c (main): check for memleaks
316
317         * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make 
318         test suite check for memleaks
319
320         * dbus/dbus-memory.c: add support in test mode for tracking 
321         number of outstanding blocks
322
323 2003-03-23  Havoc Pennington  <hp@pobox.com>
324
325         * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny
326         policies code
327         
328         * dbus/dbus-hash.h: add ULONG hash keys
329
330         * dbus/dbus-sysdeps.c (_dbus_get_groups): new
331         (_dbus_get_group_id): new function
332
333 2003-03-20  Havoc Pennington  <hp@redhat.com>
334
335         * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
336         new function
337         (dbus_connection_get_unix_user): new function
338
339 2003-03-20  Havoc Pennington  <hp@pobox.com>
340
341         * bus/connection.c (bus_connection_send_oom_error): assert that
342         message has a sender
343         (connection_execute_transaction): ditto
344         (bus_connection_preallocate_oom_error): fix to set the sender, and
345         set recipient to the destination service, not the bus driver
346
347         * bus/policy.c: hacking
348
349         * dbus/dbus-message.c (dbus_message_service_is): new function
350         (dbus_message_sender_is): new
351
352 2003-03-19  Havoc Pennington  <hp@redhat.com>
353
354         * bus/policy.c: start sketching code for policy restrictions on 
355         what connections can do.
356
357 2003-03-18  Havoc Pennington  <hp@redhat.com>
358
359         * doc/TODO: some notes on high-level todo items. Little nitpick
360         stuff is all in @todo, so no need to add it here.
361
362         * doc/config-file.txt: some notes on how config file might look
363
364 2003-03-18  Anders Carlsson  <andersca@codefactory.se>
365
366         * configure.in: 0.6
367
368         * NEWS: Update.
369         
370 2003-03-17  Havoc Pennington  <hp@redhat.com>
371
372         * dbus/dbus-internals.h: add gcc attributes so that 
373         our printf-style functions warn on bad arguments to 
374         format
375         
376         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf 
377         format bug
378
379         * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
380         printf format bug
381
382 2003-03-17  Havoc Pennington  <hp@redhat.com>
383
384         * bus/test-main.c (main): make it print something as it runs 
385         so make check doesn't look stuck
386
387         * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove 
388         from CVS, now obsolete
389
390 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
391
392         * bus/dispatch.c: (bus_dispatch):
393         Refetch the service name since it may have been reallocated
394         when dbus_message_set_sender was called.
395         
396         * dbus/dbus-sysdeps.c: (_dbus_accept):
397         Add address and address length variables and use them to stop
398         valgrind from complaining.
399         
400 2003-03-17  Havoc Pennington  <hp@pobox.com>
401
402         All tests pass, no memleaks, no valgrind complaints.
403         
404         * bus/test.c: refcount handler_slot
405
406         * bus/connection.c (bus_connections_new): refcount
407         connection_data_slot
408
409         * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
410         bytes so that auth scripts pass.
411
412         * bus/dispatch.c: init message_handler_slot so it gets allocated
413         properly
414
415         * bus/dispatch.c (message_handler_slot_ref): fix memleak
416
417         * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
418         dealloc server_pipe_hash when no longer used for benefit of
419         leak checking
420
421         * dbus/dbus-auth.c (process_command): memleak fix
422
423         * bus/dispatch.c (check_hello_message): memleak fix
424
425 2003-03-16  Havoc Pennington  <hp@pobox.com>
426
427         * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
428
429 2003-03-17  Anders Carlsson  <andersca@codefactory.se>
430
431         * bus/activation.c (bus_activation_activate_service): Append
432         the pending activation entry to the list of pending activations.
433
434 2003-03-16  Havoc Pennington  <hp@pobox.com>
435
436         * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
437         connections
438
439         * dbus/dbus-address.c (create_entry): fix OOM handling when
440         failing to alloc entry->method
441
442 2003-03-16  Havoc Pennington  <hp@pobox.com>
443
444         * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
445         the watch
446
447         * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
448         add some missing dbus_set_result
449
450         * bus/dispatch.c (bus_dispatch_add_connection): handle failure to 
451         alloc the DBusMessageHandler
452
453         * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
454         the transport here, since we call this from the finalizer; it 
455         resulted in a double-finalize.
456
457         * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug 
458         where we tried to use transport->connection that was NULL, 
459         happened when transport was disconnected early on due to OOM
460
461         * bus/*.c: adapt to handle OOM for watches/timeouts
462
463         * dbus/dbus-transport-unix.c: port to handle OOM during 
464         watch handling
465         
466         * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
467         reference to unused bytes instead of a copy
468
469         * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
470         out of memory
471
472         * dbus/dbus-connection.c (dbus_connection_handle_watch): return
473         FALSE on OOM
474
475         * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
476         of memory
477
478 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
479
480         * doc/dbus-specification.sgml:
481         Document reply message for ActivateService.
482         
483 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
484
485         * bus/activation.c: (bus_pending_activation_entry_free),
486         (bus_pending_activation_free), (bus_activation_new),
487         (bus_activation_unref), (bus_activation_service_created),
488         (bus_activation_activate_service):
489         * bus/activation.h:
490         * bus/bus.c: (bus_context_new):
491         * bus/desktop-file.c: (new_section):
492         * bus/driver.c: (bus_driver_send_service_deleted),
493         (bus_driver_handle_activate_service):
494         * bus/services.c: (bus_registry_new), (bus_registry_ensure):
495         * bus/services.h:
496         * dbus/dbus-connection.c:
497         (dbus_connection_send_with_reply_and_block):
498         * dbus/dbus-message.c: (dbus_message_append_args_valist):
499         * dbus/dbus-protocol.h:
500         Make activation work better. Now pending activations will be queued
501         and the daemon won't try to activate services that are already registered.
502         
503 2003-03-16  Havoc Pennington  <hp@pobox.com>
504
505         * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
506         connection data
507
508         * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
509         DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
510
511 2003-03-16  Havoc Pennington  <hp@pobox.com>
512
513         * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
514         this. always run the test suite before commit...
515
516         * bus/*: adapt to DBusConnection API changes
517
518         * glib/dbus-gmain.c: adapt to DBusConnection API changes, 
519         requires renaming stuff to avoid dbus_connection_dispatch name 
520         conflict.
521
522         * dbus/dbus-transport.c (_dbus_transport_queue_messages): new
523         function
524
525         * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
526         separate from _dbus_message_loader_return_buffer()
527
528         * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
529         this, because it's now always broken to use; the number of
530         messages in queue vs. the number still buffered by the message
531         loader is undefined/meaningless. Should use
532         dbus_connection_get_dispatch_state().
533         (dbus_connection_dispatch): rename from
534         dbus_connection_dispatch_message
535
536 2003-03-16  Havoc Pennington  <hp@pobox.com>
537
538         * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
539         implementation
540
541 2003-03-16  Anders Carlsson  <andersca@codefactory.se>
542
543         * dbus/dbus-connection.c:
544         (dbus_connection_send_with_reply_and_block):
545         Decrease connection->n_incoming when removing an entry 
546         from the list.
547         * dbus/dbus-dict.c: (dbus_dict_entry_free),
548         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
549         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
550         (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
551         (dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
552         (dbus_dict_get_byte_array):
553         Handle NULL arrays and strings. Also add support for byte arrays.
554         
555         * dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
556         (_dbus_marshal_dict), (_dbus_demarshal_byte_array),
557         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
558         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
559         (_dbus_demarshal_dict), (demarshal_and_validate_len),
560         (_dbus_marshal_validate_arg), (_dbus_marshal_test):
561         * dbus/dbus-marshal.h:
562         Add support for marshalling and demarshalling empty arrays and strings.
563         
564         * dbus/dbus-message.c: (dbus_message_append_args_valist),
565         (dbus_message_append_string_array),
566         (dbus_message_iter_get_boolean),
567         (dbus_message_iter_get_boolean_array),
568         (dbus_message_iter_get_int32_array),
569         (dbus_message_iter_get_uint32_array),
570         (dbus_message_iter_get_double_array),
571         (dbus_message_iter_get_byte_array),
572         (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
573         (check_message_handling):
574         Add support for getting empty arrays and dicts.
575         
576         * dbus/dbus-string.c: (_dbus_string_validate_utf8):
577         Don't do any validation at all for now, that's better than just checking
578         for ASCII.
579         
580         * test/data/valid-messages/emptiness.message:
581         New test message with lots of empty arrays.
582         
583 2003-03-16  Havoc Pennington  <hp@pobox.com>
584
585         * dbus/dbus-connection.c
586         (_dbus_connection_queue_received_message_link): new function that
587         can't fail due to OOM
588
589         * dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
590         new function pops a message together with a list link 
591         containing it.
592
593         * dbus/dbus-transport-unix.c (queue_messages): use new link-based
594         message queuing functions to avoid needing to alloc memory
595
596 2003-03-16  Havoc Pennington  <hp@pobox.com>
597
598         Oops - test code was only testing failure of around 30 of the
599         mallocs in the test path, but it turns out there are 500+
600         mallocs. I believe this was due to misguided linking setup such
601         that there was one copy of dbus_malloc etc. in the daemon and one
602         in the shared lib, and only daemon mallocs were tested. In any
603         case, the test case now tests all 500+ mallocs, and doesn't pass
604         yet, though there are lots of fixes in this patch.
605         
606         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
607         this so that it doesn't need to allocate memory, since it 
608         has no way of indicating failure due to OOM (and would be 
609         annoying if it did).
610
611         * dbus/dbus-list.c (_dbus_list_pop_first_link): new function
612
613         * bus/Makefile.am: rearrange to create two self-contained
614         libraries, to avoid having libraries with overlapping symbols. 
615         that was resulting in weirdness, e.g. I'm pretty sure there 
616         were two copies of global static variables.
617
618         * dbus/dbus-internals.c: move the malloc debug stuff to 
619         dbus-memory.c
620
621         * dbus/dbus-list.c (free_link): free list mempool if it becomes
622         empty.
623
624         * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
625
626         * dbus/dbus-address.c (dbus_parse_address): free list nodes
627         on failure.
628
629         * bus/dispatch.c (bus_dispatch_add_connection): free
630         message_handler_slot when no longer using it, so 
631         memory leak checkers are happy for the test suite.
632
633         * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name
634
635         * bus/bus.c (new_connection_callback): disconnect in here if 
636         bus_connections_setup_connection fails.
637
638         * bus/connection.c (bus_connections_unref): fix to free the 
639         connections
640         (bus_connections_setup_connection): if this fails, don't
641         disconnect the connection, just be sure there are no side
642         effects.
643
644         * dbus/dbus-string.c (undo_alignment): unbreak this
645
646         * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
647         leaking
648         (_dbus_auth_new): fix the order in which we free strings 
649         on OOM failure
650
651         * bus/connection.c (bus_connection_disconnected): fix to 
652         not send ServiceDeleted multiple times in case of memory 
653         allocation failure
654
655         * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
656         get the base service name
657         (dbus_bus_register_client): don't return base service name,
658         instead store it on the DBusConnection and have an accessor
659         function for it.
660         (dbus_bus_register_client): rename dbus_bus_register()
661
662         * bus/dispatch.c (check_hello_message): verify that other 
663         connections on the bus also got the correct results, not 
664         just the one sending hello
665
666 2003-03-15  Havoc Pennington  <hp@pobox.com>
667
668         Make it pass the Hello handling test including all OOM codepaths.
669         Now to do other messages...
670         
671         * bus/services.c (bus_service_remove_owner): fix crash when
672         removing owner from an empty list of owners
673         (bus_registry_ensure): don't leave service in the list of 
674         a connection's owned services if we fail to put the service
675         in the hash table.
676
677         * bus/connection.c (bus_connection_preallocate_oom_error): set
678         error flag on the OOM error.
679
680         * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
681         handle _dbus_transport_set_connection failure
682
683         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
684         to create watches up front and simply enable/disable them as
685         needed.
686         (unix_connection_set): this can now fail on OOM
687
688         * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept 
689         of enabling/disabling a watch or timeout.
690
691         * bus/loop.c (bus_loop_iterate): don't touch disabled
692         watches/timeouts
693
694         * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
695
696 2003-03-15  Havoc Pennington  <hp@pobox.com>
697
698         * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
699         write useful test code, after all that futzing around ;-)
700
701         Test does not yet pass because we can't handle OOM in
702         _dbus_transport_messages_pending (basically,
703         dbus_connection_preallocate_send() does not prealloc the write
704         watch). To fix this, I think we need to add new stuff to
705         set_watch_functions, namely a SetEnabled function so we can alloc
706         the watch earlier, then enable it later.
707         
708         * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
709         dbus-memory.c to the convenience lib
710
711         * bus/test.c: rename some static functions to keep them clearly 
712         distinct from stuff in connection.c. Handle client disconnection.
713
714 2003-03-14  Havoc Pennington  <hp@pobox.com>
715
716         * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe 
717         transport, tests more of the real codepath. Set up clients 
718         with bus_setup_debug_client.
719
720         * bus/test.c (bus_setup_debug_client): function to set up debug 
721         "clients" on the main loop
722
723         * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe 
724         support
725
726         * dbus/dbus-server.c (dbus_server_listen): add debug-pipe 
727         server type
728
729         * dbus/dbus-server-debug.c: support a debug server based on pipes
730
731         * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
732         (_dbus_close): new function
733         
734         * configure.in: check for socketpair
735
736 2003-03-14  Havoc Pennington  <hp@redhat.com>
737
738         * dbus/dbus-memory.c: add a "detect buffer overwrites on free" 
739         cheesy hack
740
741         * dbus/dbus-transport-debug.c: rework this a good bit to be 
742         less complicated. hopefully still works.
743
744         * dbus/dbus-server-debug.c (handle_new_client): remove timeout
745         manually
746
747         * glib/dbus-gmain.c (timeout_handler): don't remove timeout 
748         after running it
749
750         * dbus/dbus-message.c (dbus_message_copy): rename from 
751         dbus_message_new_from_message, fix it up to copy 
752         all the message fields, add test case
753
754         * bus/dispatch.c (bus_dispatch_test): add some more test code, 
755         not quite passing yet
756
757 2003-03-14  Havoc Pennington  <hp@pobox.com>
758
759         * bus/loop.c (bus_loop_iterate): add this so we can "run loop
760         until no work remains" in test code. (the large diff here 
761         is just code movement, no actual changes)
762
763         * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
764         1, no point waiting around for test code.
765         (_dbus_server_debug_accept_transport): unref the timeout 
766         after adding it (right?)
767
768         * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
769         
770 2003-03-13  Havoc Pennington  <hp@redhat.com>
771
772         * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
773         out of memory
774
775         * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
776         of memory
777
778         * dbus/dbus-connection.h: Make AddWatchFunction and
779         AddTimeoutFunction return a bool so they can fail on out-of-memory
780
781         * bus/bus.c (bus_context_new): set up timeout handlers
782
783         * bus/connection.c (bus_connections_setup_connection): set up
784         timeout handlers
785
786         * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
787         can fail
788
789         * bus/bus.c (bus_context_new): adapt to changes
790
791         * bus/connection.c: adapt to changes
792
793         * test/watch.c: adapt to DBusWatch changes
794
795         * bus/dispatch.c (bus_dispatch_test): started adding this but
796         didn't finish
797         
798 2003-03-14  Anders Carlsson  <andersca@codefactory.se>
799
800         * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
801
802 2003-03-13  Havoc Pennington  <hp@pobox.com>
803
804         * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c: 
805         set up a test framework as for the library
806
807 2003-03-12  Havoc Pennington  <hp@pobox.com>
808
809         Throughout: purge global variables, introduce BusActivation, 
810         BusConnections, BusRegistry, etc. objects instead.
811         
812         * bus/bus.h, bus/bus.c: introduce BusContext as a global 
813         message bus object
814
815         * test/Makefile.am (TEST_BINARIES): disable bus-test for now, 
816         going to redo this a bit differently I think
817         
818 2003-03-12  Havoc Pennington  <hp@redhat.com>
819
820         Mega-patch that gets the message bus daemon initially handling 
821         out-of-memory. Work still needed. Also lots of random 
822         moving stuff to DBusError instead of ResultCode.
823         
824         * dbus/dbus-list.c (_dbus_list_length_is_one): new function
825
826         * dbus/dbus-connection.c
827         (dbus_connection_send_with_reply_and_block): use DBusError
828
829         * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
830         DBusResultCode
831
832         * dbus/dbus-connection.c (dbus_connection_send): drop the result
833         code here, as the only failure possible is OOM.
834
835         * bus/connection.c (bus_connection_disconnect):
836         rename bus_connection_disconnected as it's a notification only
837
838         * bus/driver.c (bus_driver_handle_acquire_service): don't free
839         "name" on get_args failure, should be done by get_args; 
840         don't disconnect client for bad args, just return an error.
841         (bus_driver_handle_service_exists): ditto
842
843         * bus/services.c (bus_services_list): NULL-terminate returned array
844
845         * bus/driver.c (bus_driver_send_service_lost)
846         (bus_driver_send_service_acquired): send messages from driver to a
847         specific client to the client's unique name, not to the broadcast
848         service.
849
850         * dbus/dbus-message.c (decode_header_data): reject messages that
851         contain no name field
852         (_dbus_message_get_client_serial): rename to
853         dbus_message_get_serial and make public
854         (_dbus_message_set_serial): rename from set_client_serial
855         (_dbus_message_set_reply_serial): make public
856         (_dbus_message_get_reply_serial): make public
857
858         * bus/connection.c (bus_connection_foreach): allow stopping
859         iteration by returning FALSE from foreach function.
860
861         * dbus/dbus-connection.c (dbus_connection_send_preallocated) 
862         (dbus_connection_free_preallocated_send) 
863         (dbus_connection_preallocate_send): new API for sending a message
864         without possibility of malloc failure.
865         (dbus_connection_send_message): rename to just
866         dbus_connection_send (and same for whole function family)
867
868         * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
869
870         * dbus/dbus-sysdeps.c (_dbus_exit): new function
871
872         * bus/activation.c: handle/return errors
873
874         * dbus/dbus-errors.h: add more DBUS_ERROR #define
875
876         * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
877         (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
878         (_dbus_result_from_errno): move to this file
879
880 2003-03-10  Anders Carlsson  <andersca@codefactory.se>
881
882         * dbus/dbus-marshal.c: 
883         (_dbus_marshal_set_string):
884         Take a length argument so we can marshal the correct string
885         length.
886         
887         (_dbus_marshal_dict), (_dbus_demarshal_dict),
888         (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
889         (_dbus_marshal_test):
890         * dbus/dbus-marshal.h:  
891         Add support for marshalling and demarshalling dicts.
892         
893         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
894         Add support for TYPE DICT.
895         
896         * dbus/dbus-message.c: (set_string_field):
897         Adjust header padding.
898         
899         (dbus_message_append_args_valist), (dbus_message_append_dict),
900         (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
901         (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
902         (check_message_handling), (check_have_valid_message):
903         * dbus/dbus-message.h:
904         Add functions for setting and getting dicts.
905
906         * dbus/dbus-protocol.h:
907         Add DBUS_TYPE_DICT.
908         
909         * dbus/dbus.h:
910         Add dbus-dict.h
911         
912         * doc/dbus-specification.sgml:
913         Add information about how dicts are marshalled.
914         
915         * test/data/invalid-messages/dict-with-nil-value.message:
916         * test/data/invalid-messages/too-short-dict.message:
917         * test/data/valid-messages/dict-simple.message:
918         * test/data/valid-messages/dict.message:
919         Add sample messages containing dicts.
920
921 2003-03-08  Anders Carlsson  <andersca@codefactory.se>
922
923         * dbus/dbus-dict.h: Add DBUS_END_DECLS.
924
925 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
926
927         * dbus/Makefile.am:
928         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
929         (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
930         (dbus_dict_set_int32), (dbus_dict_set_uint32),
931         (dbus_dict_set_double), (dbus_dict_set_string),
932         (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
933         (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
934         (dbus_dict_set_string_array), (_dbus_dict_test):
935         * dbus/dbus-dict.h:
936         Fix according to comments from Havoc.
937         
938 2003-03-06  Michael Meeks  <michael@server.home>
939
940         * configure.in: if we don't have kde-config, disable have_qt.
941
942 2003-03-07  Anders Carlsson  <andersca@codefactory.se>
943
944         * dbus/Makefile.am:
945         Add dbus-dict.[ch]
946         
947         * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
948         (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
949         (dbus_dict_remove), (dbus_dict_get_value_type),
950         (dbus_dict_get_keys), (dbus_dict_put_boolean),
951         (dbus_dict_put_int32), (dbus_dict_put_uint32),
952         (dbus_dict_put_double), (dbus_dict_put_string),
953         (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
954         (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
955         (dbus_dict_put_string_array), (dbus_dict_get_boolean),
956         (dbus_dict_get_int32), (dbus_dict_get_uint32),
957         (dbus_dict_get_double), (dbus_dict_get_string),
958         (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
959         (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
960         (dbus_dict_get_string_array), (_dbus_dict_test):
961         * dbus/dbus-dict.h:
962         Add DBusDict implementation
963         
964         * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
965         * dbus/dbus-test.h:
966         Add _dbus_dict_test
967         
968 2003-03-04  Havoc Pennington  <hp@pobox.com>
969
970         * test/data/auth/*: adapt to changes
971
972         * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
973         USERID_BASE64 and change USERNAME_BASE64 to put in username not
974         userid
975
976         * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
977         more stuff from being in a context name, to make the protocol 
978         simpler to deal with
979
980         * dbus/dbus-errors.c (dbus_error_has_name): new function
981         (dbus_error_is_set): new function
982
983         * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth 
984         with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
985         
986         * dbus/dbus-connection.c (dbus_connection_flush): also read
987         messages during a flush operation
988
989         * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
990
991 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
992
993         * configure.in: Check for gethostbyname on Solaris.
994
995         * dbus/dbus-transport.c: (_dbus_transport_open):
996         Remove duplicate "tcp" entry.
997         
998         * doc/dbus-specification.sgml:
999         Clarify some things.
1000         
1001 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
1002
1003         * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
1004         * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
1005         (_dbus_keyring_test):
1006         * dbus/dbus-md5.c: (_dbus_md5_compute):
1007         * dbus/dbus-sha.c: (_dbus_sha_compute):
1008         Plug memory leaks.
1009
1010 2003-03-05  Anders Carlsson  <andersca@codefactory.se>
1011
1012         * README: Add some things.
1013
1014 2003-03-04  Anders Carlsson  <andersca@codefactory.se>
1015
1016         * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
1017         after case DBUS_TYPE_BOOELAN.
1018
1019 2003-03-02  Havoc Pennington  <hp@pobox.com>
1020
1021         * test/break-loader.c (randomly_set_extreme_ints): add test that
1022         sets really huge and small integers
1023
1024         * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
1025         that length of boolean array fits in the string, and that 
1026         string has room for boolean value in single-bool case.
1027
1028         * dbus/dbus-message-builder.c (_dbus_message_data_load): add
1029         optional value to "ALIGN" command which is what to fill the
1030         alignment with.
1031
1032         * test/data/valid-messages/no-padding.message: add regression
1033         test for the message padding problem
1034
1035 2003-03-02  Havoc Pennington  <hp@pobox.com>
1036
1037         * dbus/dbus-message.c (decode_header_data): fix to always init
1038         message_padding, from Benjamin Dauvergne
1039
1040 2003-03-02  Havoc Pennington  <hp@pobox.com>
1041
1042         * configure.in: 0.5
1043
1044         * NEWS: Update.
1045
1046 2003-03-01  Joe Shaw  <joe@assbarn.com>
1047
1048         * configure.in: Check for "struct cmsgcred" and try to access its
1049         members for BSD-like unices.
1050
1051         * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
1052         _dbus_read_credentials_unix_socket().
1053         (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
1054         read() for reading the credential byte off the unix socket.  Use
1055         struct cmsgcred on systems that support it.
1056
1057 2003-02-27  Alexander Larsson  <alexl@redhat.com>
1058
1059         * glib/Makefile.am: 
1060         * configure.in:
1061         Make gthreads-2.0 dependency optional. Don't build thread test if
1062         its not found.
1063
1064 2003-02-27  Havoc Pennington  <hp@pobox.com>
1065
1066         * dbus/dbus-connection.c
1067         (dbus_connection_send_message_with_reply_and_block): fix doh!
1068         doh! doh! bug that resulted in never removing a reply from the
1069         queue, no wonder we called get_reply_serial so much ;-)
1070         
1071         * dbus/dbus-message.c (struct DBusMessage): cache reply serial
1072         and client serial instead of demarshaling them every time
1073
1074 2003-02-27  Havoc Pennington  <hp@pobox.com>
1075
1076         * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
1077         more inlined, using dbus-string-private.h, speeds things up 
1078         substantially
1079
1080         * dbus/dbus-string.c (_dbus_string_free): apply align offset
1081         when freeing the string
1082         (_dbus_string_steal_data): fix for align offset
1083         (undo_alignment): new function
1084
1085 2003-02-26  Havoc Pennington  <hp@redhat.com>
1086
1087         All kinds of audit fixes from Owen, plus initial attempt to 
1088         handle unaligned memory returned from malloc.
1089         
1090         * dbus/dbus-string.c (_dbus_string_init): clamp max length to 
1091         leave room for align_offset and nul byte
1092         (fixup_alignment): function to track an align_offset and 
1093         ensure real->str is aligned
1094         (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated, 
1095         to allow a nul byte plus align offset
1096         (_dbus_string_lock): fix overflow issue
1097         (_dbus_string_init_const_len): add assertions on sanity of len, 
1098         assign allocated to be ALLOCATION_PADDING larger than len
1099         (set_length): fixup the overflow handling
1100         (_dbus_string_get_data_len): fix overflow in assertion
1101         (open_gap): detect overflow in size of gap to be opened
1102         (_dbus_string_lengthen): add overflow check
1103         (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
1104         (_dbus_string_append): add overflow check
1105         (_dbus_string_append_unichar): overflow
1106         (_dbus_string_delete): fix overflow in assertion
1107         (_dbus_string_copy_len): overflow in assertion
1108         (_dbus_string_replace_len): overflows in assertions
1109         (_dbus_string_find): change to implement in terms of 
1110         _dbus_string_find_to
1111         (_dbus_string_find_to): assorted fixage
1112         (_dbus_string_equal_c_str): assert c_str != NULL, 
1113         fix logic so the function works
1114         (_dbus_string_ends_with_c_str): fix overflow thingy
1115         (_dbus_string_base64_encode): overflow fix
1116         (_dbus_string_validate_ascii): overflow
1117         (_dbus_string_validate_nul): overflow
1118         
1119 2003-02-26  Havoc Pennington  <hp@redhat.com>
1120
1121         * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
1122
1123 2003-02-26  Alexander Larsson  <alexl@redhat.com>
1124
1125         * configure.in:
1126         Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0
1127         
1128         * dbus/dbus-connection.c:
1129         * dbus/dbus-connection.h:
1130         Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
1131         Add dbus_connection_set_wakeup_main_function and use it when queueing
1132         incoming and outgoing messages.
1133         
1134         
1135         * dbus/dbus-dataslot.c:
1136         Threadsafe usage of DBusDataSlotAllocator
1137         
1138         * dbus/dbus-message.c: (dbus_message_get_args_iter):
1139         dbus_new can fail.
1140         
1141         * dbus/dbus-server-unix.c:
1142         Add todo comment
1143         
1144         * glib/dbus-gmain.c:
1145         Implement the new wakeup functions for glib.
1146         
1147         * glib/Makefile.am:
1148         * glib/test-thread-client.c: 
1149         * glib/test-thread-server.c: 
1150         * glib/test-thread.h:
1151         Initial cut at some thread test code. Not really done yet.
1152
1153 2003-02-26  Havoc Pennington  <hp@pobox.com>
1154
1155         * dbus/dbus-connection.c
1156         (dbus_connection_send_message_with_reply_and_block): fix crash
1157         where we ref'd the outgoing message instead of the returned reply
1158
1159         * dbus/dbus-transport-unix.c (do_authentication): check read watch
1160         at the end of this function, so if we didn't need to read for
1161         authentication, we reinstall it for receiving messages
1162
1163         * dbus/dbus-message.c (dbus_message_new_reply): allow replies to 
1164         a NULL sender for peer-to-peer case
1165
1166         * dbus/dbus-transport-unix.c (check_read_watch): handle
1167         !authenticated case correctly
1168
1169         * glib/dbus-gmain.c: add support for DBusServer
1170
1171         * dbus/dbus-server.c: add data slot support
1172
1173         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
1174         return values and handle errors
1175
1176         * dbus/dbus-dataslot.c: factor out the data slot stuff from
1177         DBusConnection
1178
1179         * Doxyfile.in (INPUT): add glib subdir
1180
1181         * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename 
1182         setup_with_g_main instead of hookup_with_g_main; write docs
1183         
1184 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
1185
1186         * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
1187         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
1188         * dbus/dbus-message.c: (dbus_message_append_boolean),
1189         (dbus_message_append_boolean_array),
1190         (dbus_message_get_args_valist), (_dbus_message_test):
1191         * dbus/dbus-message.h:
1192         * doc/dbus-specification.sgml:
1193         Various fixes as pointed out by Havoc.
1194         
1195         * test/data/invalid-messages/bad-boolean-array.message:
1196         * test/data/invalid-messages/bad-boolean.message:
1197         Add invalid boolean value test cases.
1198         
1199 2003-02-24  Anders Carlsson  <andersca@codefactory.se>
1200
1201         * dbus/dbus-internals.c: (_dbus_type_to_string):
1202         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
1203         (_dbus_marshal_validate_arg):
1204         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
1205         * dbus/dbus-message.c: (dbus_message_append_args_valist),
1206         (dbus_message_append_boolean), (dbus_message_append_boolean_array),
1207         (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
1208         (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
1209         (dbus_message_iter_get_double),
1210         (dbus_message_iter_get_boolean_array), (message_iter_test):
1211         * dbus/dbus-message.h:
1212         * dbus/dbus-protocol.h:
1213         * doc/dbus-specification.sgml:
1214         * test/data/valid-messages/lots-of-arguments.message:
1215         Add support for boolean and boolean array types.
1216         
1217 2003-02-23  Havoc Pennington  <hp@pobox.com>
1218
1219         * dbus/dbus-keyring.c: finish most of this implementation and 
1220         simple unit test
1221
1222         * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
1223         these barf if the error isn't cleared to NULL
1224
1225         * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
1226         (_dbus_create_directory): new function
1227
1228         * dbus/dbus-errors.c (dbus_set_error): fix warning
1229
1230         * dbus/dbus-string.c (_dbus_string_hex_encode): new function
1231         (_dbus_string_hex_decode): new function
1232         (test_hex_roundtrip): test code
1233
1234         * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
1235
1236         * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
1237
1238         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use 
1239         the save-to-temp/rename trick to atomically write the new file
1240         (_dbus_string_parse_uint): new function
1241
1242 2003-02-22  Havoc Pennington  <hp@pobox.com>
1243
1244         * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
1245
1246 2003-02-22  Havoc Pennington  <hp@pobox.com>
1247
1248         * dbus/dbus-message.c (dbus_message_iter_get_string_array):
1249         (dbus_message_iter_get_byte_array): Fix up doxygen warnings
1250
1251         * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
1252
1253         * dbus/test/data/sha-1: add US government test suite for SHA-1
1254
1255 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1256
1257         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
1258         Make string arrays NULL-terminated.
1259         
1260         * dbus/dbus-memory.c: (dbus_free_string_array):
1261         * dbus/dbus-memory.h:
1262         New function for freeing NULL-terminated string arrays.
1263         
1264         * dbus/dbus-message-builder.c: (append_quoted_string),
1265         (_dbus_message_data_load):
1266         Add support for array types.
1267         
1268         * dbus/dbus-message.c: (check_message_handling):
1269         Add more types as test cases.
1270         
1271         * dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
1272         (_dbus_string_parse_double):
1273         Add the start offset to the end offset.
1274         
1275         * test/data/valid-messages/lots-of-arguments.message:
1276         New test message with lots of arguments.
1277         
1278 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1279
1280         * dbus/dbus-message.c: (dbus_message_append_nil),
1281         (dbus_message_append_int32), (dbus_message_append_uint32),
1282         (dbus_message_append_double), (dbus_message_append_string),
1283         (dbus_message_append_int32_array),
1284         (dbus_message_append_uint32_array),
1285         (dbus_message_append_double_array),
1286         (dbus_message_append_byte_array),
1287         (dbus_message_append_string_array):
1288         Fix all out-of-memory handling in these functions.
1289
1290 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1291
1292         * dbus/dbus-message.c: (dbus_message_append_nil):
1293         Fix a silly.
1294         
1295 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1296
1297         * dbus/dbus-message.c: (dbus_message_append_args_valist),
1298         (dbus_message_append_nil), (dbus_message_append_int32_array),
1299         (dbus_message_append_uint32_array),
1300         (dbus_message_append_double_array),
1301         (dbus_message_append_byte_array),
1302         (dbus_message_append_string_array), (dbus_message_get_args_valist),
1303         (dbus_message_iter_get_int32_array),
1304         (dbus_message_iter_get_uint32_array),
1305         (dbus_message_iter_get_double_array),
1306         (dbus_message_iter_get_byte_array),
1307         (dbus_message_iter_get_string_array):
1308
1309         * dbus/dbus-message.h:
1310         Add functions for appending and getting arrays.
1311         
1312 2003-02-21  Anders Carlsson  <andersca@codefactory.se>
1313
1314         * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
1315         element size at least 8 bytes, fixes mempool tests on
1316         64-bit machines.
1317
1318 2003-02-20  Alexander Larsson  <alexl@redhat.com>
1319
1320         * dbus/dbus-transport-unix.c (unix_do_iteration):
1321         Unlock the connection mutex during a blocking select call.
1322         Add todo about how we need a way to wake up the select.
1323
1324         * dbus/dbus-connection-internal.h: 
1325         * dbus/dbus-connection.c:
1326         Add _dbus_connection_lock and _dbus_connection_unlock.
1327
1328 2003-02-19  Havoc Pennington  <hp@pobox.com>
1329
1330         * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
1331         Doxyfile.in, not Doxyfile
1332
1333         * dbus/dbus-keyring.c: do some hacking on this
1334
1335         * dbus/dbus-sysdeps.c (_dbus_delete_file): new
1336
1337         * dbus/dbus-errors.c (dbus_set_error_const): do not call
1338         dbus_error_init
1339         (dbus_set_error): remove dbus_error_init, check for message ==
1340         NULL *before* we sprintf into it, and add @todo about including 
1341         system headers in this file
1342
1343         * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
1344
1345         * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add
1346
1347         * dbus/dbus-sysdeps.c (get_user_info): break this function out to
1348         get various bits of user information based on either username 
1349         or user ID
1350         (_dbus_homedir_from_username): new function
1351
1352 2003-02-19  Anders Carlsson  <andersca@codefactory.se>
1353
1354         * configure.in:
1355         Add check for nonposix getpwnam_r
1356         
1357         * dbus/dbus-mempool.c: (_dbus_mem_pool_new):
1358         Align the pool element size to a sizeof (void *) boundary.
1359         
1360         * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
1361         (_dbus_listen_unix_socket), (_dbus_credentials_from_username):
1362         General Solaris fixes.
1363         
1364         * test/data/valid-messages/simplest-manual.message:
1365         Explicitly state that we want little-endian packing.
1366         
1367 2003-02-19  Mikael Hallendal  <micke@codefactory.se>
1368
1369         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
1370
1371         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket): 
1372         Added to create a transport connecting using a tcp/ip socket.
1373
1374         * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect
1375         to a tcp socket at given host and port.
1376         (_dbus_listen_tcp_socket): added to listen on tcp socket for given
1377         hostname and port.
1378
1379         * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
1380
1381         * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket): 
1382         Added to create a server listening on a TCP/IP socket.
1383
1384 2003-02-19  Havoc Pennington  <hp@pobox.com>
1385
1386         Throughout: mop up all the Doxygen warnings and undocumented
1387         stuff.
1388         
1389         * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want
1390         to search any paths.
1391
1392         * dbus/dbus-threads.c: move global mutex initializers to
1393         dbus-internals.h, multiple prototypes was confusing doxygen
1394         besides being kind of ugly
1395
1396         * Doxyfile (PREDEFINED): have Doxygen define
1397         DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from 
1398         docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS
1399         (do not abuse the feature! it's for stuff like the autogenerated 
1400         macros in dbus-md5.c, not just for things you don't feel like 
1401         documenting...)
1402
1403 2003-02-18  Havoc Pennington  <hp@pobox.com>
1404
1405         * dbus/dbus-string.c (_dbus_string_zero): new function
1406
1407         * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
1408         wrap it in some dbus-friendly API
1409
1410         * dbus/dbus-types.h: add 16-bit types
1411
1412 2003-02-18  Joe Shaw  <joe@assbarn.com>
1413
1414         * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
1415         credentials from our currently running process.
1416         (get_word): Fix a buglet where we were copying the entire length
1417         instead of relative to our position.
1418
1419         * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
1420         keys on the stack... it's 640k of data.
1421
1422         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
1423         read the credentials byte off the socket, even if we don't have
1424         SO_PEERCRED.
1425         (_dbus_poll): Implement poll() using select() for systems which
1426         don't have it.
1427
1428         * glib/test-dbus-glib.c (main): Print out an error if no
1429         parameters are given.
1430
1431         * test/data/auth/fallback.auth-script: Added.  Tests that a client
1432         can fallback to a secondary auth mechanism if the first fails.
1433
1434 2003-02-18  Havoc Pennington  <hp@pobox.com>
1435
1436         * AUTHORS: add Alex
1437
1438 2003-02-17  Havoc Pennington  <hp@pobox.com>
1439
1440         * doc/dbus-specification.sgml: lots of cosmetic
1441         cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
1442         env variable to DBUS_BUS_ADDRESS, s/client/application/,
1443         s/server/bus/ (except in authentication section). Add a section
1444         "Message Bus Message Routing"
1445
1446 2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
1447
1448         Release 0.4
1449         
1450         * NEWS: Update
1451
1452 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
1453
1454         * doc/dbus-specification.sgml:
1455         Specification updates.
1456         
1457 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
1458
1459         * bus/activation.c: (bus_activation_init), (child_setup),
1460         (bus_activation_activate_service):
1461         * bus/activation.h:
1462         * bus/main.c: (main):
1463         Set DBUS_ADDRESS environment variable.
1464         
1465         * dbus/dbus-errors.c: (dbus_set_error):
1466         Don't use va_copy since that's a C99 feature.
1467         
1468         * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec),
1469         (_dbus_spawn_async):
1470         * dbus/dbus-sysdeps.h:
1471         Add child_setup_func to _dbus_spawn_async.
1472         
1473         * doc/dbus-specification.sgml:
1474         Update specification.
1475         
1476         * test/spawn-test.c: (setup_func), (main):
1477         Fix test.
1478         
1479 2003-02-17  Alexander Larsson  <alexl@redhat.com>
1480
1481         * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
1482         Added todo.
1483
1484 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
1485
1486         * doc/.cvsignore:
1487         * doc/Makefile.am:
1488         * doc/dbus-test-plan.sgml:
1489         Add test plan document.
1490         
1491         * test/Makefile.am:
1492         Fix distcheck.
1493         
1494 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
1495
1496         * dbus/dbus-message.c: (decode_header_data),
1497         (_dbus_message_loader_return_buffer):
1498         Set the header padding amount when loading a message.
1499
1500 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
1501
1502         * bus/dispatch.c: (send_one_message):
1503         Only send broadcast messages to registered connections.
1504         
1505         * dbus/dbus-message.c: (dbus_message_name_is):
1506         * dbus/dbus-message.h:
1507         New convenience function.
1508         
1509         * dbus/dbus-transport-debug.c: (do_reading):
1510         Only dispatch one message per run.
1511
1512         * test/Makefile.am:
1513         * test/bus-test.c: (new_connection_callback), (die),
1514         (test_hello_client1_handler), (test_hello_client2_handler),
1515         (test_hello_replies), (main):
1516
1517         * test/bus-test-loop.[ch]:
1518         Add these.
1519         
1520 2003-02-16  Havoc Pennington  <hp@pobox.com>
1521
1522         * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
1523         backward conditional
1524
1525 2003-02-16  Alexander Larsson  <alexl@redhat.com>
1526
1527         * dbus/dbus-connection.c:
1528         Implement sent_message_with_reply. (with_reply_and block is still
1529         busted).
1530         Made dispatch_message not lose message if OOM.
1531         
1532         * dbus/dbus-errors.h:
1533         Add NoReply error (for reply timeouts).
1534
1535 2003-02-16  Alexander Larsson  <alexl@redhat.com>
1536
1537         * dbus/dbus-hash.c (_dbus_hash_table_unref):
1538         Actually free keys and values when destroying hashtable.
1539
1540 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
1541
1542         * dbus/dbus-auth.c: (client_try_next_mechanism):
1543         Plug a leak.
1544         
1545         * dbus/dbus-threads.c: (dbus_condvar_wait_timeout):
1546         Return TRUE if there's no thread implementation around.
1547         
1548         * glib/dbus-gmain.c: (free_source),
1549         (dbus_connection_hookup_with_g_main):
1550         Make sure to remove the GSource when the connection is finalized.
1551         
1552 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
1553
1554         * bus/dispatch.c: (bus_dispatch_message_handler):
1555         * dbus/dbus-errors.h:
1556         Return an error if someone tries to send a message to a service
1557         that doesn't exist.
1558         
1559 2003-02-16  Anders Carlsson  <andersca@codefactory.se>
1560
1561         * bus/activation.c: (load_directory), (bus_activation_init),
1562         (bus_activation_activate_service):
1563         * bus/activation.h:
1564         * bus/driver.c: 
1565         (bus_driver_handle_activate_service), (bus_driver_handle_message):
1566         More work on the activation handling.
1567         
1568         * dbus/dbus-errors.h:
1569         Add some error messages
1570         
1571         * dbus/dbus-message.c: (dbus_message_new_error_reply):
1572         * dbus/dbus-message.h:
1573         New function that creates an error message.
1574         
1575         * dbus/dbus-protocol.h:
1576         Add ACTIVATE_SERVER message.
1577         
1578         * dbus/dbus-server-unix.c: (unix_handle_watch),
1579         (_dbus_server_new_for_domain_socket):
1580         Call _dbus_fd_set_close_on_exec.
1581         
1582         * dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
1583         (_dbus_spawn_async), (_dbus_disable_sigpipe),
1584         (_dbus_fd_set_close_on_exec):
1585         * dbus/dbus-sysdeps.h:
1586         Add _dbus_fd_set_close_on exec function. Also add function that checks
1587         that all open fds are set to close-on-exec and warns otherwise.
1588         
1589         * dbus/dbus-transport-unix.c:
1590         (_dbus_transport_new_for_domain_socket):
1591         Call _dbus_fd_set_close_on_exec.
1592
1593 2003-02-16  Havoc Pennington  <hp@pobox.com>
1594
1595         * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
1596         allow people to avoid setting SIGPIPE to SIG_IGN
1597         (_dbus_connection_new_for_transport): disable SIGPIPE unless 
1598         we've been asked not to
1599
1600 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
1601
1602         * dbus/dbus-list.c: (_dbus_list_append_link),
1603         (_dbus_list_prepend_link):
1604         * dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
1605         (dbus_realloc):
1606         Warning fixes.
1607
1608 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
1609
1610         * bus/Makefile.am:
1611         * bus/activation.c: (bus_activation_entry_free),
1612         (add_desktop_file_entry), (load_directory), (bus_activation_init):
1613         * bus/activation.h:
1614         * bus/main.c: (main):
1615         Add simple activation support, doesn't work yet though.
1616
1617 2003-02-15   Zack Rusin  <zack@kde.org>
1618
1619         * qt/dbus-qthread.cpp:  small casting fix
1620
1621 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
1622
1623         * dbus/dbus-errors.c: (dbus_set_error):
1624         * dbus/dbus-errors.h:
1625         Add a few errors and make dbus_set_error void.
1626         
1627         * dbus/dbus-sysdeps.c: 
1628         (_dbus_errno_to_string), (close_and_invalidate), (make_pipe),
1629         (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async):
1630         * dbus/dbus-sysdeps.h:
1631         Add _dbus_spawn_async.
1632         
1633         * test/spawn-test.c: (main):
1634         Test for _dbus_spawn_async.
1635         
1636 2003-02-15  Anders Carlsson  <andersca@codefactory.se>
1637
1638         * dbus/dbus-internals.h:
1639         Fix build without tests.
1640         
1641         * dbus/dbus-list.c: (alloc_link):
1642         Fix a segfault when a malloc fails.
1643         
1644         * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc),
1645         (dbus_malloc0), (dbus_realloc):
1646         Add support for malloc debugging.
1647
1648 2003-02-15  Alexander Larsson  <alexl@redhat.com>
1649
1650         * dbus/dbus-threads.c:
1651         * dbus/dbus-threads.h:
1652         Add condvars. Remove static mutext from API.
1653         Implement static mutexes by initializing them from threads_init.
1654         
1655         * glib/dbus-gthread.c:
1656         * qt/dbus-qthread.cpp:
1657         Update with the thread api changes.
1658
1659                 
1660         * dbus/dbus-list.c:
1661         * dbus/dbus-list.h:
1662         Turn StaticMutex into normal mutex + init function.
1663         Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
1664         _dbus_list_append_link, _dbus_list_prepend_link
1665
1666
1667         * dbus/dbus-sysdeps.c: 
1668         * dbus/dbus-sysdeps.h:
1669         New type dbus_atomic_t, and new functions _dbus_atomic_inc,
1670         _dbus_atomic_dec. Only slow fallback implementation at the moment.
1671         
1672         * dbus/dbus-protocol.h:
1673         Add DBUS_MESSAGE_LOCAL_DISCONNECT define
1674         
1675         * dbus/dbus-message.c:
1676         Make ref/unref atomic.
1677         Fix some docs.
1678         
1679         * dbus/dbus-connection-internal.h:
1680         * dbus/dbus-connection.c:
1681         * dbus/dbus-connection.h:
1682         Make threadsafe.
1683         Change _peek to _borrow,_return & _steal_borrowed.
1684         Change disconnect callback to event.
1685         Make dbus_connection_dispatch_messages reentrant.
1686         
1687         * dbus/dbus-transport.c:
1688         Don't ref the connection on calls to the transport
1689         implementation.
1690         
1691         * dbus/dbus-message-handler.c:
1692         Make threadsafe.
1693         
1694         * glib/dbus-gmain.c:
1695         Don't use peek_message anymore
1696         
1697         * test/Makefile.am:
1698         * test/debug-thread.c:
1699         * test/debug-thread.h:
1700         Simple thread implementation that asserts() on deadlocks in
1701         single-threaded code.
1702         
1703         * test/bus-test.c:
1704         (main) Call debug_threads_init.
1705
1706         * test/watch.c:
1707         Use disconnect message instead of disconnect callback.
1708
1709         * bus/connection.c:
1710         * bus/connection.h:
1711         Don't call dbus_connection_set_disconnect_function. Instead export
1712         bus_connection_disconnect.
1713         
1714         * bus/dispatch.c:
1715         Call bus_connection_disconnect when we get a disconnected message.
1716         
1717 2003-02-15  Havoc Pennington  <hp@pobox.com>
1718
1719         * dbus/dbus-message.c (dbus_message_new): fool around with the
1720         docs
1721
1722 2003-02-14  Havoc Pennington  <hp@pobox.com>
1723
1724         * dbus/dbus-mempool.c: fail if the debug functions so indicate
1725
1726         * dbus/dbus-memory.c: fail if the debug functions indicate we
1727         should
1728
1729         * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
1730         (_dbus_decrement_fail_alloc_counter): debug functions to 
1731         simulate memory allocation failures
1732
1733 2003-02-14  Havoc Pennington  <hp@pobox.com>
1734
1735         * dbus/dbus-errors.h (struct DBusError): add a word of padding 
1736         to DBusError
1737
1738 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1739
1740         * bus/driver.c: (bus_driver_handle_hello):
1741         * bus/driver.h:
1742         * bus/services.c: (bus_service_lookup):
1743         Reorder message sending so we get a more sane order.
1744         
1745         * test/bus-test.c: (message_handler):
1746         Fix tyop.
1747         
1748 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1749
1750         * bus/driver.c: (bus_driver_send_service_deleted),
1751         (bus_driver_send_service_created), (bus_driver_send_service_lost),
1752         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
1753         (bus_driver_send_welcome_message),
1754         (bus_driver_handle_list_services),
1755         (bus_driver_handle_acquire_service),
1756         (bus_driver_handle_service_exists):
1757         * dbus/dbus-bus.c: (dbus_bus_register_client),
1758         (dbus_bus_acquire_service), (dbus_bus_service_exists):
1759         * dbus/dbus-errors.c: (dbus_result_to_string):
1760         * dbus/dbus-errors.h:
1761         * dbus/dbus-message.c: (dbus_message_append_args),
1762         (dbus_message_append_args_valist), (dbus_message_get_args),
1763         (dbus_message_get_args_valist), (dbus_message_get_args_iter),
1764         (dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
1765         (dbus_message_iter_get_byte_array),
1766         (dbus_message_iter_get_string_array), (message_iter_test),
1767         (check_message_handling), (_dbus_message_test):
1768         * dbus/dbus-message.h:
1769         * test/bus-test.c: (main):
1770         Change fields to arguments in messages, so that they won't be
1771         confused with header fields.
1772         
1773         * glib/test-dbus-glib.c: (main):
1774         Remove append_fields from hello message.
1775         
1776 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1777
1778         * dbus/dbus-errors.c:
1779         * dbus/dbus-message.c:
1780         * dbus/dbus-string.c:
1781         Documentation fixes.
1782
1783 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1784
1785         * glib/dbus-gmain.c: (timeout_handler), (add_timeout),
1786         (remove_timeout):
1787         Implement support for timeouts in dbus-glib.
1788         
1789 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1790
1791         * dbus/dbus-message-builder.c: (_dbus_message_data_load):
1792         * dbus/dbus-message.c: (process_test_subdir):
1793         * test/break-loader.c: (find_breaks_based_on):
1794         Plug some memory leaks.
1795         
1796 2003-02-13  Richard Hult  <rhult@codefactory.se>
1797
1798         * bus/main.c: Fix build.
1799
1800         * dbus/dbus-errors.h: 
1801         * dbus/dbus-errors.c: Fix copyright for Anders.
1802
1803 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1804
1805         * bus/Makefile.am:
1806         Add utils.[ch]
1807         
1808         * bus/connection.c: (bus_connection_foreach):
1809         Fix a warning.
1810         
1811         * bus/desktop-file.c: (grow_lines_in_section), (grow_sections),
1812         (unescape_string), (new_section), (parse_section_start),
1813         (parse_key_value), (report_error), (bus_desktop_file_load),
1814         (bus_desktop_file_get_string):
1815         * bus/desktop-file.h:
1816         Use DBusError for error reporting.
1817         
1818         * bus/dispatch.c: (send_one_message),
1819         (bus_dispatch_message_handler):
1820         * bus/driver.c: (bus_driver_send_service_deleted),
1821         (bus_driver_send_service_created), (bus_driver_send_service_lost),
1822         (bus_driver_send_service_acquired), (bus_driver_handle_hello),
1823         (bus_driver_send_welcome_message),
1824         (bus_driver_handle_list_services),
1825         (bus_driver_handle_acquire_service),
1826         (bus_driver_handle_service_exists):
1827         * bus/loop.c: (bus_loop_run):
1828         * bus/main.c:
1829         Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM.
1830         
1831         * bus/utils.c: (bus_wait_for_memory):
1832         * bus/utils.h:
1833         New files with general utility functions.
1834         
1835         * dbus/dbus-internals.h:
1836         Remove _DBUS_HANDLE_OOM.
1837         
1838 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1839
1840         * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
1841         (dbus_error_free), (dbus_set_error_const), (dbus_set_error):
1842         * dbus/dbus-errors.h:
1843         Add DBusError structure.
1844         
1845 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1846
1847         * test/data/valid-messages/standard-acquire-service.message:
1848         * test/data/valid-messages/standard-hello.message:
1849         * test/data/valid-messages/standard-list-services.message:
1850         * test/data/valid-messages/standard-service-exists.message:
1851         Add some standard messages.
1852         
1853 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1854
1855         * bus/driver.c: (bus_driver_send_welcome_message),
1856         (bus_driver_handle_list_services),
1857         (bus_driver_handle_acquire_service),
1858         (bus_driver_handle_service_exists), (bus_driver_handle_message):
1859         Update for API changes in libdbus.
1860         
1861         * dbus/dbus-message.c: (dbus_message_new_reply):
1862         * dbus/dbus-message.h:
1863         Remove the name argument. The spec states that replies shouldn't
1864         have a name.
1865
1866 2003-02-13  Anders Carlsson  <andersca@codefactory.se>
1867
1868         * bus/desktop-file.c: (parse_section_start), (parse_key_value),
1869         (report_error), (bus_desktop_file_load), (lookup_section),
1870         (lookup_line), (bus_desktop_file_get_raw),
1871         (bus_desktop_file_get_string):
1872         * bus/desktop-file.h:
1873         Some fixes, and new functions for getting a key value from a section.
1874         
1875 2003-02-13  Havoc Pennington  <hp@pobox.com>
1876
1877         * test/data/auth/fail-after-n-attempts.auth-script: new test
1878
1879         * dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
1880         reject the client.
1881
1882 2003-02-13  Havoc Pennington  <hp@pobox.com>
1883
1884         * dbus/dbus-auth.c (handle_server_data_external_mech): args to
1885         dbus_credentials_match were backward
1886
1887         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support
1888         NO_CREDENTIALS and ROOT_CREDENTIALS
1889
1890         * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine 
1891         into here. Never process more commands after we've reached an 
1892         end state; store further data as unused bytes.
1893
1894         * test/data/auth/*: add more auth tests
1895         
1896         * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT
1897         command to match exact string and EXPECT_UNUSED to match unused
1898         bytes
1899
1900         * test/Makefile.am (dist-hook): fix to dist all the test stuff
1901
1902 2003-02-12  Havoc Pennington  <hp@pobox.com>
1903
1904         * dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
1905         \r off of popped lines
1906
1907         * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
1908         scripts
1909
1910         * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
1911         SEND, append \r\n
1912
1913 2003-02-12  Havoc Pennington  <hp@pobox.com>
1914
1915         * dbus/Makefile.am: remove break-loader from the build, since it
1916         moved.
1917
1918         * configure.in: add --enable-gcov to turn on coverage profiling
1919         flags and disable optimization
1920
1921 2003-02-10  Havoc Pennington  <hp@pobox.com>
1922
1923         * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync 
1924         initial cut at test framework for DBusAuth from laptop.
1925         Doesn't quite work yet but it compiles and I need to get 
1926         it off the 266mhz laptop. ;-)
1927         
1928         * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
1929         fix a memleak in error case
1930
1931 2003-02-12  Anders Carlsson  <andersca@codefactory.se>
1932
1933         * bus/Makefile.am:
1934         * bus/desktop-file.c:
1935         * bus/desktop-file.h:
1936         Add a desktop file parser.
1937
1938 2003-02-11  Zack Rusin  <zack@kde.org>
1939
1940         * qt/message.[h|cpp]: sample implementation
1941         of the KDE wrapper for DBusMessage
1942
1943 2003-02-09  Zack Rusin  <zack@kde.org>
1944
1945         * test/bus-test.c: make_it_compile
1946         * doc/dbus-specification.sgml: minimal semantic fix
1947
1948 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
1949
1950         Release 0.3
1951         
1952         * NEWS: Update
1953
1954 2003-02-06  Anders Carlsson  <andersca@codefactory.se>
1955
1956         * dbus/Makefile.am:
1957         * dbus/dbus-break-loader.c:
1958         * test/Makefile.am:
1959         * test/break-loader.c:
1960         Move dbus-break-loader to test/ and rename it to break-loader.
1961
1962 2003-02-02  Havoc Pennington  <hp@pobox.com>
1963
1964         * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files 
1965         for code to manage cookies in your home directory
1966
1967         * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function
1968
1969         * dbus/dbus-auth.c (get_state): impose a maximum number of tries
1970         to authenticate, then disconnect the client.
1971
1972 2003-02-03  Alexander Larsson  <alexl@redhat.com>
1973
1974         * dbus/dbus-message.c (dbus_message_append_fields):
1975         Correct docs.
1976
1977 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
1978
1979         * doc/dbus-specification.sgml:
1980         Update address format section.
1981         
1982 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
1983
1984         * test/Makefile.am:
1985         * test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
1986         (message_handler), (new_connection_callback), (loop_quit),
1987         (loop_run), (main):
1988         Add bus test.
1989         
1990 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
1991
1992         * bus/driver.c: (bus_driver_handle_service_exists):
1993         Simplify the code a bit.
1994         
1995         * dbus/dbus-bus.c: (dbus_bus_service_exists):
1996         Fix a silly. 
1997         
1998 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
1999
2000         * bus/Makefile.am:
2001         Add libdbus-daemon.la and link to it.
2002
2003 2003-02-01  James Willcox  <jwillcox@gnome.org>
2004
2005         * bus/driver.c: (bus_driver_handle_own_service):
2006         Actually include the service reply code in the message.
2007
2008 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2009
2010         * bus/driver.c: (bus_driver_handle_service_exists):
2011         Don't unref the incoming message.
2012         
2013 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2014
2015         * dbus/dbus.h: Add dbus-address.h and dbus-bus.h
2016
2017 2003-02-02  Anders Carlsson  <andersca@codefactory.se>
2018
2019         * dbus/dbus-server.c: (dbus_server_listen):
2020         * dbus/dbus-transport.c: (_dbus_transport_open):
2021         ifdef out the calls to the debug transport and server.
2022         
2023 2003-02-02  Alexander Larsson  <alexl@redhat.com>
2024
2025         * dbus/dbus-watch.c (dbus_watch_get_flags):
2026         Add note in the docs that ERROR or HANGUP won't be returned
2027         and are assumed always on.
2028
2029         * glib/dbus-gmain.c (add_watch):
2030         Always add IO_ERR | IO_HUP
2031
2032         * dbus/dbus-message.h:
2033         Add semicolon after dbus_message_iter_get_string_array().
2034         Makes qt code build again
2035
2036 2003-02-01  Anders Carlsson  <andersca@codefactory.se>
2037
2038         * bus/driver.c: (create_unique_client_name),
2039         (bus_driver_handle_hello):
2040         Don't take a name, just use a numeric id to identify
2041         each client.
2042         
2043         * dbus/Makefile.am:
2044         * dbus/dbus-bus.c: (dbus_bus_register_client),
2045         (dbus_bus_acquire_service), (dbus_bus_service_exists):
2046         * dbus/dbus-bus.h:
2047         Add new convenience functions for communicating with the bus.
2048         
2049         * dbus/dbus-message.h:
2050         
2051         * dbus/dbus-protocol.h:
2052         Fix a typo.
2053         
2054 2003-02-01  Alexander Larsson  <alexl@redhat.com>
2055
2056         * dbus/dbus-message.c (dbus_message_append_fields):
2057         Add some more doc comments.
2058
2059 2003-02-01  Havoc Pennington  <hp@pobox.com>
2060
2061         * dbus/dbus-break-loader.c (randomly_modify_length): change 
2062         a 4-byte value in the message as if it were a length
2063
2064         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set
2065         execute bit on saved files
2066
2067 2003-02-01  Havoc Pennington  <hp@pobox.com>
2068
2069         * dbus/dbus-break-loader.c (main): new program to find messages
2070         that break the loader.
2071
2072         * dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
2073         * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function
2074
2075         * dbus/dbus-string.c (_dbus_string_set_byte): new
2076         
2077 2003-01-31  Havoc Pennington  <hp@pobox.com>
2078
2079         * dbus/dbus-message.c: refactor the test code to be more general, 
2080         in preparation for writing a "randomly permute test cases to 
2081         try to break the loader" program.
2082
2083 2003-01-31  Havoc Pennington  <hp@pobox.com>
2084         
2085         * doc/dbus-specification.sgml: work on the specification
2086
2087         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check 
2088         the protocol version of the message.
2089
2090         * dbus/dbus-protocol.h: drop special _REPLY names, the spec 
2091         no longer specifies that.
2092         (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not 
2093         1/2/3/4)
2094
2095         * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing
2096         "break" for DBUS_TYPE_NIL, remove @todo
2097
2098 2003-01-31  Havoc Pennington  <hp@pobox.com>
2099
2100         * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename 
2101         just set_is_error/get_is_error as this is a commonly-used
2102         function, and write docs.
2103
2104 2003-01-31  Anders Carlsson  <andersca@codefactory.se>
2105
2106         * dbus/dbus-address.c: (dbus_address_entry_free):
2107         Free key and value lists.
2108         
2109         * dbus/dbus-internals.c: (_dbus_type_to_string):
2110         Add the types we didn't have.
2111         
2112         * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
2113         (_dbus_marshal_validate_arg):
2114         Add NIL types.
2115         
2116         * dbus/dbus-message.c: (dbus_message_set_sender):
2117         Remove todo about being able to set sender to NULL.
2118         
2119         (dbus_message_set_is_error_reply),
2120         (dbus_message_get_is_error_reply):
2121         * dbus/dbus-message.h:
2122         New functions.
2123         
2124         * dbus/dbus-protocol.h:
2125         Add error reply flag.
2126         
2127         * test/data/valid-messages/opposite-endian.message:
2128         Add NIL type to test.
2129         
2130 2003-01-31  Havoc Pennington  <hp@pobox.com>
2131
2132         * doc/dbus-specification.sgml: fully specify the header.  Add
2133         flags and major protocol version, and change header/body len to
2134         unsigned.
2135
2136         * dbus/dbus-message-builder.c (append_saved_length): append length
2137         as uint32
2138
2139         * dbus/dbus-message.c (dbus_message_create_header): change header
2140         length and body length to unsigned. Add the new fields from the
2141         spec
2142         (_dbus_message_loader_return_buffer): unsigned header/body len
2143
2144 2003-01-30  Havoc Pennington  <hp@pobox.com>
2145
2146         * dbus/dbus-auth.c: rework to use only REJECTED, no 
2147         MECHANISMS
2148
2149         * doc/dbus-sasl-profile.txt: drop MECHANISMS and just 
2150         use REJECTED, suggested by Mark McLoughlin
2151
2152 2003-01-30  Havoc Pennington  <hp@pobox.com>
2153
2154         * dbus/dbus-server.c (dbus_server_listen): @todo about how we need
2155         a better way to report errors here. e.g.  "unix address lacks
2156         path" or something. also "no such file" when the path doesn't
2157         exist, etc.
2158
2159         * dbus/dbus-address.c (dbus_address_entries_free): add @todo about
2160         leaking list nodes
2161         (dbus_parse_address): add @todo about documenting address format, 
2162         and allowing , and ; to be escaped
2163
2164 2003-01-30  Anders Carlsson  <andersca@codefactory.se>
2165
2166         * dbus/Makefile.am:
2167         Add dbus-address.[ch]
2168         
2169         * dbus/dbus-address.c: (dbus_address_entry_free),
2170         (dbus_address_entries_free), (create_entry),
2171         (dbus_address_entry_get_method), (dbus_address_entry_get_value),
2172         (dbus_parse_address), (_dbus_address_test):
2173         * dbus/dbus-address.h:
2174         New files for dealing with address parsing.
2175         
2176         * dbus/dbus-connection.c:
2177         Document timeout functions.
2178         
2179         * dbus/dbus-message.c:
2180         Document dbus_message_new_from_message.
2181         
2182         * dbus/dbus-server-debug.c:
2183         Document.
2184         
2185         * dbus/dbus-server.c: (dbus_server_listen):
2186         Parse address and use correct server implementation.
2187         
2188         * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test):
2189         * dbus/dbus-string.h:
2190         New function with test.
2191         
2192         * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests):
2193         * dbus/dbus-test.h:
2194         Add address tests.
2195         
2196         * dbus/dbus-transport-debug.c:
2197         Document.
2198         
2199         * dbus/dbus-transport.c: (_dbus_transport_open):
2200         Parse address and use correct transport implementation. 
2201
2202 2003-01-30  Havoc Pennington  <hp@pobox.com>
2203
2204         * dbus/dbus-message.c: use message->byte_order instead of 
2205         DBUS_COMPILER_BYTE_ORDER throughout.
2206         (dbus_message_create_header): pad header to align the 
2207         start of the body of the message to 8-byte boundary
2208
2209         * dbus/dbus-marshal.h: make all the demarshalers take const 
2210         DBusString arguments.
2211
2212         * dbus/dbus-message.c (_dbus_message_loader_return_buffer):
2213         validate message args here, so we don't have to do slow validation
2214         later, and so we catch bad messages as they are incoming. Also add
2215         better checks on header_len and body_len. Also fill in
2216         message->byte_order
2217
2218         * dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
2219         implemented properly)
2220         (_dbus_string_validate_nul): new function to check all-nul
2221
2222         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename 
2223         get_arg_end_pos and remove all validation
2224         (_dbus_marshal_validate_arg): actually do validation here.
2225
2226 2003-01-29  Havoc Pennington  <hp@pobox.com>
2227
2228         * dbus/dbus-message.c (check_message_handling): fix assertion
2229         failure on set_client_serial
2230
2231 2003-01-28  Havoc Pennington  <hp@pobox.com>
2232
2233         * dbus/dbus-server-debug.c: Add doc section comments
2234         
2235         * dbus/dbus-transport-debug.c: add doc section comments
2236         
2237 2003-01-28  Havoc Pennington  <hp@redhat.com>
2238
2239         * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
2240         the reverse order from how I had it
2241         (_dbus_string_base64_encode): reverse encoding order. I was
2242         basically byteswapping everything during encoding.
2243
2244 2003-01-28  Anders Carlsson  <andersca@codefactory.se>
2245
2246         * dbus/dbus-connection-internal.h:
2247         * dbus/dbus-connection.c: (_dbus_connection_add_timeout),
2248         (_dbus_connection_remove_timeout):
2249         Add functions for adding and removing timeouts.
2250         
2251         * dbus/dbus-message.c: (dbus_message_new_from_message):
2252         Add new function that takes a message and creates an exact
2253         copy of it, but with the refcount set to 1.
2254         (check_message_handling):
2255         Fix build error.
2256         
2257         * dbus/dbus-server-protected.h:
2258         * dbus/dbus-server.c: (_dbus_server_init_base),
2259         (_dbus_server_finalize_base), (_dbus_server_add_timeout),
2260         (dbus_server_set_timeout_functions):
2261         (_dbus_server_remove_timeout):
2262         New functions so that a server can add and remove timeouts.
2263
2264         (dbus_server_listen):
2265         Add commented out call to dbus_server_debug_new.
2266
2267         * dbus/dbus-timeout.c: (_dbus_timeout_new):
2268         Actually set the handler, doh.
2269         
2270         * dbus/dbus-transport.c: (_dbus_transport_open):
2271         Add commented out call to dbus_transport_debug_client_new.
2272         
2273         * dbus/Makefile.am:
2274         Add dbus-transport-debug.[ch] and dbus-server-debug.[ch]
2275         
2276 2003-01-28  Havoc Pennington  <hp@pobox.com>
2277
2278         * dbus/dbus-message.c (check_message_handling): function to check 
2279         on the loaded message, iterates over it etc.
2280
2281 2003-01-28  Havoc Pennington  <hp@pobox.com>
2282
2283         * test/Makefile.am (dist-hook): fix make distdir
2284
2285         * dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check
2286
2287 2003-01-27  Havoc Pennington  <hp@pobox.com>
2288
2289         * dbus/dbus-mempool.c (time_for_size): replace printf with 
2290         _dbus_verbose
2291
2292         * dbus/dbus-message-builder.c (_dbus_message_data_load): allow
2293         empty lines; fix the SAVE_LENGTH stuff to be
2294         START_LENGTH/END_LENGTH so it actually works; couple other 
2295         bugfixes
2296         
2297         * test/Makefile.am (dist-hook): add dist-hook for .message files
2298
2299         * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
2300         can be constant or locked.
2301         (_dbus_string_free): allow freeing a const string as
2302         documented/intended
2303
2304         * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility
2305
2306         * dbus/dbus-test-main.c (main): take an argument which is the 
2307         directory containing test data
2308
2309         * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
2310         argument to this and load all the messages in test/data/
2311         checking that they can be loaded or not loaded as appropriate.
2312
2313 2003-01-27  Anders Carlsson  <andersca@codefactory.se>
2314
2315         * bus/dispatch.c: (bus_dispatch_message_handler):
2316         Dispatch messages sent to services.
2317         
2318         * bus/driver.c: (bus_driver_send_service_deleted),
2319         (bus_driver_send_service_created), (bus_driver_send_service_lost),
2320         (bus_driver_send_service_acquired):
2321         Add helper functions for sending service related messages.
2322
2323         (bus_driver_send_welcome_message):
2324         Send HELLO_REPLY instead of WELCOME.
2325         
2326         (bus_driver_handle_list_services):
2327         Send LIST_SERVICES_REPLY instead of SERVICES.
2328         
2329         (bus_driver_handle_own_service),
2330         (bus_driver_handle_service_exists):
2331         New message handlers.
2332         
2333         (bus_driver_handle_message):
2334         Invoke new message handlers.
2335         
2336         (bus_driver_remove_connection):
2337         Don't remove any services here since that's done automatically
2338         by bus_service_remove_owner now.
2339         
2340         * bus/driver.h:
2341         New function signatures.
2342         
2343         * bus/services.c: (bus_service_add_owner):
2344         Send ServiceAcquired message if we're the only primary owner.
2345         
2346         (bus_service_remove_owner):
2347         Send ServiceAcquired/ServiceLost messages.
2348         
2349         (bus_service_set_prohibit_replacement),
2350         (bus_service_get_prohibit_replacement):
2351         Functions for setting prohibit replacement.
2352         
2353         (bus_service_has_owner):
2354         New function that checks if a connection is in the owner queue of 
2355         a certain service.
2356         
2357         * bus/services.h:
2358         Add new function signatures.
2359         
2360         * dbus/dbus-list.c: (_dbus_list_test):
2361         Add tests for _dbus_list_remove_last and traversing the list backwards.
2362         
2363         * dbus/dbus-list.h:
2364         Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't
2365         go any further, so return NULL then.
2366         
2367         * dbus/dbus-protocol.h:
2368         Add new messages, service flags and service replies.
2369         
2370 2003-01-26  Havoc Pennington  <hp@pobox.com>
2371
2372         * dbus/dbus-message-builder.c: implement, completely untested.
2373
2374         * test/data/*: add data to be used in testing. 
2375         ".message" files are our simple loadable text format.
2376         ".message-raw" will be binary dumps of messages.
2377
2378         * dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
2379
2380 2003-01-26  Havoc Pennington  <hp@pobox.com>
2381
2382         * dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function
2383
2384         * dbus/dbus-errors.c (dbus_result_to_string): add
2385         file errors
2386
2387         * dbus/dbus-message-builder.c: new file, will contain code to load
2388         up messages from files. Not implemented yet.
2389
2390 2003-01-26  Havoc Pennington  <hp@pobox.com>
2391
2392         * dbus/dbus-message.c (dbus_message_set_sender): support deleting
2393         the sender by setting to NULL
2394
2395 2003-01-26  Havoc Pennington  <hp@pobox.com>
2396
2397         The unit tests pass, but otherwise untested.  If it breaks, the
2398         tests should have been better. ;-)
2399         
2400         * bus/driver.c (bus_driver_handle_hello): return if we disconnect
2401         the connection.
2402
2403         * dbus/dbus-message.c: redo everything so we maintain 
2404         message->header as the only copy of the various fields.
2405         This avoids the possibility of out-of-memory in some cases,
2406         for example dbus_message_lock() can't run out of memory anymore,
2407         and avoids extra copying. Figured I may as well go ahead and do 
2408         this since it was busted for dbus_message_lock to not return 
2409         failure on OOM, and dbus_message_write_header was totally
2410         unchecked for OOM. Also fixed some random other bugs.
2411
2412         * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify
2413         that strings are nul-terminated. Also, end_pos can be equal 
2414         to string length just not greater than, I think.
2415         (_dbus_marshal_set_int32): new function
2416         (_dbus_marshal_set_uint32): new function
2417         (_dbus_marshal_set_string): new function
2418
2419         * dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
2420         a warning, init timeout_list to NULL
2421         (dbus_connection_send_message): don't use uninitialized variable
2422         "serial"
2423
2424         * dbus/dbus-string.c (_dbus_string_replace_len): new function
2425
2426 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
2427
2428         * bus/driver.c: (bus_driver_handle_hello),
2429         (bus_driver_send_welcome_message):
2430         Plug leaks
2431         
2432 2003-01-26  Anders Carlsson  <andersca@codefactory.se>
2433
2434         * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
2435         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
2436         (dbus_connection_unref):
2437         * dbus/dbus-marshal.c: (_dbus_marshal_test):
2438         * dbus/dbus-message.c: (dbus_message_unref),
2439         Plug memory leaks.
2440         
2441         (dbus_message_get_fields): 
2442         Remove debugging printout.
2443
2444         (_dbus_message_loader_return_buffer):
2445         Don't store the header string.
2446         
2447         (_dbus_message_test):
2448         Plug leaks.
2449
2450 2003-01-26  Richard Hult  <rhult@codefactory.se>
2451
2452         * glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
2453         the file descriptor list, since it can change under us.
2454
2455 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2456
2457         * glib/dbus-gmain.c: (dbus_connection_prepare),
2458         (dbus_connection_check), (dbus_connection_dispatch), (add_watch),
2459         (remove_watch), (dbus_connection_hookup_with_g_main):
2460         Rewrite the glib handling to use its own GSource instead of a 
2461         GIOChannel so we can catch messages put in the queue while waiting
2462         for a reply.
2463         
2464 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2465
2466         * bus/Makefile.am:
2467         * bus/connection.c: (connection_disconnect_handler),
2468         (connection_watch_callback), (bus_connection_setup):
2469         * bus/dispatch.c: (send_one_message),
2470         (bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
2471         (bus_dispatch_add_connection), (bus_dispatch_remove_connection):
2472         * bus/dispatch.h:
2473         * bus/driver.c: (bus_driver_send_service_deleted),
2474         (bus_driver_send_service_created), (bus_driver_handle_hello),
2475         (bus_driver_send_welcome_message),
2476         (bus_driver_handle_list_services), (bus_driver_remove_connection),
2477         (bus_driver_handle_message):
2478         * bus/driver.h:
2479         Refactor code, put the message dispatching in its own file. Use 
2480         _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
2481         is disconnected.
2482         
2483 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2484
2485         * dbus/dbus-internals.h:
2486         Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently.
2487         
2488         * dbus/dbus-message.c: (dbus_message_get_sender):
2489         * dbus/dbus-message.h:
2490         Implement dbus_message_get_sender.
2491         
2492         * dbus/dbus-protocol.h:
2493         Add message and service defines.
2494         
2495 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2496
2497         * dbus/dbus-connection.c: (dbus_connection_send_message):
2498         * dbus/dbus-message-internal.h:
2499         * dbus/dbus-message.c: (_dbus_message_get_client_serial),
2500         (dbus_message_write_header):
2501         Remove _dbus_messag_unlock and don't set the client serial on a 
2502         message if one already exists.
2503         
2504 2003-01-24  Havoc Pennington  <hp@pobox.com>
2505
2506         * dbus/dbus-list.c (alloc_link): put a thread lock on the global
2507         list_pool
2508
2509         * bus/driver.c (bus_driver_handle_list_services): fix a leak 
2510         on OOM
2511
2512 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2513
2514         * dbus/dbus-list.c: (alloc_link), (free_link):
2515         Use a memory pool for the links.
2516         
2517 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2518
2519         * bus/connection.c: (bus_connection_foreach):
2520         * bus/connection.h:
2521         Add new bus_connection_foreach function.
2522         
2523         * bus/driver.c: (send_one_message), (bus_driver_broadcast_message):
2524         Add function that broadcasts a message to all clients.
2525         
2526         (bus_driver_send_service_created), (bus_driver_handle_hello),
2527         (bus_driver_send_welcome_message),
2528         (bus_driver_handle_list_services), (bus_driver_message_handler):
2529         Implement functions that take care of listing services, and notifying
2530         clients when new services are created.
2531         
2532         * bus/services.c: (bus_services_list):
2533         * bus/services.h:
2534         Add new function that returns an array of strings with the currently
2535         registered services.
2536         
2537         * glib/dbus-glib.h:
2538         * glib/dbus-gmain.c:
2539         Update copyright year.
2540         
2541 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
2542
2543         * dbus/dbus-connection.c: (dbus_connection_send_message):
2544         Unlock the message in case it was sent earlier.
2545         
2546         (dbus_connection_send_message_with_reply_and_block):
2547         Remove the reply message from the list.
2548         
2549         * dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
2550         Set array_len and new_pos correctly.
2551         
2552         (_dbus_marshal_test):
2553         Remove debug output.
2554         
2555         * dbus/dbus-message-internal.h:
2556         * dbus/dbus-message.c: (_dbus_message_get_reply_serial):
2557         New function that returns the reply serial.
2558         
2559         (_dbus_message_unlock):
2560         New function that unlocks a message and resets its header.
2561
2562         (dbus_message_append_string_array), 
2563         (dbus_message_get_fields_valist),
2564         (dbus_message_iter_get_field_type),
2565         (dbus_message_iter_get_string_array),   
2566         (dbus_message_get_fields),      
2567         (dbus_message_append_fields_valist):
2568         Handle string arrays.
2569         
2570         (dbus_message_set_sender):
2571         Make this function public since the bus daemon needs it.
2572         
2573         (decode_header_data):
2574         Set the reply serial to -1 initially.
2575
2576         * dbus/dbus-message.h:
2577         Add dbus_message_set_sender.    
2578
2579 2003-01-24  Havoc Pennington  <hp@pobox.com>
2580
2581         * doc/dbus-specification.sgml: add some stuff
2582
2583 2003-01-22  Havoc Pennington  <hp@pobox.com>
2584
2585         * doc/dbus-specification.sgml: Start to document the protocol.
2586
2587 2003-01-22  Havoc Pennington  <hp@pobox.com>
2588
2589         * dbus/dbus-connection.c
2590         (dbus_connection_send_message_with_reply_and_block): add some @todo
2591
2592         * bus/driver.c (bus_driver_add_connection): add a FIXME about memleak
2593
2594 2003-01-21  Havoc Pennington  <hp@pobox.com>
2595
2596         (patch untested because can't compile)
2597         
2598         * bus/driver.c (create_unique_client_name): make this function
2599         never recycle client names. Also, caller should initialize 
2600         the DBusString.
2601
2602         * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function
2603
2604 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
2605
2606         * dbus/dbus-marshal.c: (_dbus_marshal_double),
2607         (_dbus_marshal_int32), (_dbus_marshal_uint32),
2608         (_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
2609         (_dbus_marshal_double_array), (_dbus_marshal_string_array),
2610         (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
2611         (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
2612         (_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
2613         * dbus/dbus-marshal.h:
2614         * dbus/dbus-protocol.h:
2615         Add support for marshalling and demarshalling integer, double
2616         and string arrays.
2617         
2618 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
2619
2620         * bus/Makefile.am:
2621         Add driver.[ch]
2622         
2623         * bus/connection.c: (connection_disconnect_handler):
2624         Remove the connection from the bus driver's list.
2625         
2626         (connection_watch_callback): Dispatch messages.
2627
2628         (free_connection_data): Free connection name.
2629         
2630         (bus_connection_setup): Add connection to the bus driver's list.
2631         (bus_connection_remove_owned_service): 
2632         (bus_connection_set_name), (bus_connection_get_name):
2633         Add functions for setting and getting the connection's name.
2634         
2635         * bus/connection.h:
2636         Add function headers.
2637         
2638         * bus/driver.c: (create_unique_client_name),
2639         (bus_driver_handle_hello_message),
2640         (bus_driver_send_welcome_message), (bus_driver_message_handler),
2641         (bus_driver_add_connection), (bus_driver_remove_connection):
2642         * bus/driver.h:
2643         * bus/main.c:
2644         * bus/services.c: (bus_service_free):
2645         * bus/services.h:
2646         New file that handles communication and registreation with the bus
2647         itself. 
2648         
2649 2003-01-21  Anders Carlsson  <andersca@codefactory.se>
2650
2651         * dbus/dbus-connection.c: (dbus_connection_send_message):
2652         Add a new client_serial parameter.
2653         
2654         (dbus_connection_send_message_with_reply):
2655         Remove a @todo since we've implemented the blocking function.
2656         
2657         (dbus_connection_send_message_with_reply_and_block):
2658         New function that sends a message and waits for a reply and
2659         then returns the reply.
2660         
2661         * dbus/dbus-connection.h:
2662         Add new functions.
2663         
2664         * dbus/dbus-errors.c: (dbus_result_to_string):
2665         * dbus/dbus-errors.h:
2666         Add new DBUS_RESULT.
2667         
2668         * dbus/dbus-message-internal.h:
2669         * dbus/dbus-message.c: (_dbus_message_get_reply_serial),
2670         (_dbus_message_set_sender), (dbus_message_write_header),
2671         (dbus_message_new_reply), (decode_header_data),
2672         (_dbus_message_loader_return_buffer), (_dbus_message_test):
2673         * dbus/dbus-message.h:
2674         Add new functions that set the reply serial and sender.
2675         Also marshal and demarshal them correctly and add test.
2676         
2677         * dbus/dbus-protocol.h:
2678         Add new DBUS_MESSAGE_TYPE_SENDER.
2679         
2680         * glib/dbus-glib.h:
2681         * glib/dbus-gmain.c: (watch_callback), (free_callback_data),
2682         (add_watch), (remove_watch), (add_timeout), (remove_timeout),
2683         (dbus_connection_hookup_with_g_main):
2684         * glib/test-dbus-glib.c: (main):
2685         Rewrite to use GIOChannel and remove the GSource crack.
2686         
2687         * test/echo-client.c: (main):
2688         * test/watch.c: (check_messages):
2689         Update for changed APIs
2690         
2691 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
2692
2693         * dbus/Makefile.am: Add dbus-timeout.[cħ]
2694         
2695         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
2696         Create a DBusTimeoutList.       
2697         (dbus_connection_set_timeout_functions): Add new function to
2698         set timeout callbacks
2699         
2700         * dbus/dbus-connection.h: Add public DBusTimeout API.
2701         
2702         * dbus/dbus-message.c: (dbus_message_get_service):
2703         * dbus/dbus-message.h:  New function.
2704
2705         * dbus/dbus-server.c: Fix small doc typo.
2706         
2707         * dbus/dbus-timeout.[ch]: New files for mainloop timeouts.
2708
2709 2003-01-19  Anders Carlsson  <andersca@codefactory.se>
2710
2711         * dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
2712         of the string, just as long as specified.
2713
2714 2003-01-19  Havoc Pennington  <hp@pobox.com>
2715
2716         * dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
2717         new function
2718
2719         * dbus/dbus-server.c (dbus_server_set_max_connections)
2720         (dbus_server_get_max_connections, dbus_server_get_n_connections):
2721         keep track of current number of connections, and add API for
2722         setting a max (but haven't implemented enforcing the max yet)
2723
2724 2003-01-18  Havoc Pennington  <hp@pobox.com>
2725
2726         * dbus/dbus-transport-unix.c (unix_do_iteration): only do the
2727         reading/writing if read_watch != NULL or write_watch != NULL.
2728
2729         * dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
2730         the message loader code to actually load message->header and
2731         message->body into the newly-created message.
2732
2733         * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak
2734         in OOM case
2735
2736         * dbus/dbus-connection.c (dbus_connection_set_max_message_size) 
2737         (dbus_connection_get_max_message_size) 
2738         (dbus_connection_set_max_live_messages_size) 
2739         (dbus_connection_get_max_live_messages_size): implement some
2740         resource limitation functions
2741
2742         * dbus/dbus-resources.c: new file implementing some of the
2743         resource limits stuff
2744
2745         * dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
2746         missing docs, add @todo to handle OOM etc.
2747
2748         * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
2749         docs
2750         
2751 2003-01-18  Havoc Pennington  <hp@pobox.com>
2752
2753         * dbus/dbus-connection.c (dbus_connection_unref): disconnect the 
2754         connection if it hasn't been already.
2755
2756         * dbus/dbus-connection.h: kill off the idea of an ErrorFunction,
2757         replace with DisconnectFunction.
2758
2759 2003-01-18  Havoc Pennington  <hp@pobox.com>
2760
2761         Building --disable-verbose-mode --disable-asserts --disable-tests
2762         cuts the library from 112K to 45K or so
2763         
2764         * configure.in: check for varargs macro support, 
2765         add --enable-verbose-mode, --enable-asserts. 
2766
2767         * dbus/dbus-internals.h (_dbus_assert): support
2768         DBUS_DISABLE_ASSERT
2769         (_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE
2770
2771 2003-01-18  Havoc Pennington  <hp@pobox.com>
2772
2773         * dbus/dbus-test.c: include config.h so that tests actually run
2774
2775         * dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
2776         so the failure mode when that assumption fails will be plenty
2777         obvious.
2778
2779 2003-01-18  Havoc Pennington  <hp@pobox.com>
2780
2781         * configure.in: default --enable-tests to $USE_MAINTAINER_MODE
2782
2783         * dbus/Makefile.am: fix it up so dubs-test-main.c is included in
2784         the distribution
2785
2786         * test/Makefile.am: don't use special variable "TESTS" for echo-*
2787         since we don't want to use those in make check
2788
2789 2003-01-15  Havoc Pennington  <hp@redhat.com>
2790
2791         Release 0.2
2792         
2793         * NEWS: update
2794
2795 2003-01-15  Havoc Pennington  <hp@redhat.com>
2796
2797         * test/Makefile.am: fix so that test source code ends up in the
2798         distribution on make distcheck
2799
2800 2003-01-15  Havoc Pennington  <hp@redhat.com>
2801
2802         Release 0.1.
2803         
2804         * NEWS: update  
2805
2806 2003-01-15  Havoc Pennington  <hp@redhat.com>
2807
2808         * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
2809         fix build when --disable-tests
2810
2811         * Makefile.am (EXTRA_DIST): put HACKING in here
2812
2813         * HACKING: document procedure for making a tarball release.
2814
2815 2003-01-14  Anders Carlsson  <andersca@codefactory.se>
2816
2817         * bus/connection.c: (connection_error_handler),
2818         (bus_connection_setup):
2819         * bus/main.c: (main):
2820         Make sure that the DBusConnectionData struct is NULLed
2821         out to prevent a segfault.
2822         
2823         * dbus/dbus-errors.c: (dbus_result_to_string):
2824         * dbus/dbus-errors.h:
2825         * dbus/dbus-message.c: (dbus_message_get_fields),
2826         (dbus_message_get_fields_valist), (_dbus_message_test):
2827         * dbus/dbus-message.h:
2828         Make dbus_message_get_fields return a result code so we can
2829         track invalid fields as well as oom.
2830         
2831 2003-01-11  Havoc Pennington  <hp@pobox.com>
2832
2833         * configure.in: change --enable-test/--enable-ansi action-if-given
2834         to enable_foo=$enableval instead of enable_foo=yes
2835
2836 2003-01-08  Havoc Pennington  <hp@pobox.com>
2837
2838         * dbus/dbus-string.c (_dbus_string_align_length): new function
2839
2840         * dbus/dbus-test-main.c: move main() for test app here
2841         * dbus/dbus-test.c
2842         (dbus_internal_symbol_do_not_use_run_tests): we have to export a
2843         symbol to run tests, because dbus-test isn't in the main 
2844         library
2845
2846         Code review nitpicks.
2847         
2848         * dbus/dbus-message.c (dbus_message_write_header): add newlines
2849         for people with narrow emacs ;-). Assert client_serial was filled
2850         in. Assert message->name != NULL.
2851         (dbus_message_append_fields): have "first_field_type" arg separate
2852         from va list, needed for C++ binding that also uses varargs IIRC
2853         and helps with type safety
2854         (dbus_message_new): add @todo about using DBusString to store
2855         service/name internally
2856         (dbus_message_new): don't leak ->service and ->name on OOM later
2857         in the function
2858         (dbus_message_unref): free the service name
2859         (dbus_message_get_fields): same change to varargs
2860         i.e. first_field_type
2861         (_dbus_message_loader_return_buffer): assert that the message data
2862         is aligned (if not it's a bug in our code). Put in verbose griping
2863         about why we set corrupted = TRUE.
2864         (decode_header_data): add FIXME that char* is evil.  Was going to
2865         add FIXME about evil locale-specific string.h strncmp, but just
2866         switched to wacky string-as-uint32 optimization. Move check for
2867         "no room for field name" above get_const_data_len() to avoid
2868         assertion failure in get_const_data_len if we have trailing 2
2869         bytes or the like. Check for service and name fields being
2870         provided twice. Don't leak service/name on error. Require field
2871         names to be aligned to 4 bytes.
2872
2873         * dbus/dbus-marshal.c: move byte swap stuff to header
2874         (_dbus_pack_int32): uscore-prefix
2875         (_dbus_unpack_int32): uscore-prefix
2876         (_dbus_unpack_uint32): export
2877         (_dbus_demarshal_string): add @todo complaining about use of
2878         memcpy()
2879         (_dbus_marshal_get_field_end_pos): add @todo about bad error
2880         handling allowing corrupt data to go unchecked
2881
2882 2003-01-08  Havoc Pennington  <hp@redhat.com>
2883
2884         * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write 
2885         to the select() as needed for authentication. (should be using
2886         _dbus_poll() not select, but for another day)
2887
2888         * dbus/dbus.h: include dbus/dbus-protocol.h
2889
2890 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
2891
2892         * dbus/Makefile.am (dbusinclude_HEADERS): Install
2893         dbus-connection.h
2894
2895 2003-01-08  Anders Carlsson  <andersca@codefactory.se>
2896
2897         * dbus/dbus-internals.c: (_dbus_type_to_string):
2898         New function that returns a string describing a type.
2899         
2900         * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array):
2901         * dbus/dbus-marshal.h:
2902         * dbus/dbus-message.c: (dbus_message_get_fields_valist),
2903         (dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
2904         (dbus_message_iter_get_byte_array):
2905         * dbus/dbus-message.h:
2906         Add new convenience functions for appending and getting message fields.
2907         Also add demarshalling routines for byte arrays.
2908
2909 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
2910
2911         * dbus/dbus-connection-internal.h:
2912         * dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
2913         (_dbus_connection_get_next_client_serial),
2914         (dbus_connection_send_message):
2915         * dbus/dbus-internals.h:
2916         * dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
2917         (dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
2918         (_dbus_marshal_uint32), (_dbus_demarshal_double),
2919         (_dbus_demarshal_int32), (_dbus_demarshal_uint32),
2920         (_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
2921         (_dbus_verbose_bytes), (_dbus_marshal_test):
2922         * dbus/dbus-marshal.h:
2923         * dbus/dbus-message-internal.h:
2924         * dbus/dbus-message.c: (_dbus_message_set_client_serial),
2925         (dbus_message_write_header), (_dbus_message_lock),
2926         (dbus_message_new), (dbus_message_ref), (dbus_message_unref),
2927         (dbus_message_get_name), (dbus_message_append_int32),
2928         (dbus_message_append_uint32), (dbus_message_append_double),
2929         (dbus_message_append_string), (dbus_message_append_byte_array),
2930         (dbus_message_get_fields_iter), (dbus_message_iter_ref),
2931         (dbus_message_iter_unref), (dbus_message_iter_has_next),
2932         (dbus_message_iter_next), (dbus_message_iter_get_field_type),
2933         (dbus_message_iter_get_string), (dbus_message_iter_get_int32),
2934         (dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
2935         (decode_header_data), (_dbus_message_loader_return_buffer),
2936         (message_iter_test), (_dbus_message_test):
2937         * dbus/dbus-message.h:
2938         * dbus/dbus-protocol.h:
2939         * dbus/dbus-test.c: (main):
2940         * dbus/dbus-test.h:
2941         * glib/test-dbus-glib.c: (message_handler), (main):
2942         * test/echo-client.c: (main):
2943         * test/watch.c: (check_messages):
2944         Make messages sendable and receivable for real.
2945         
2946 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
2947
2948         * dbus/dbus-marshal.c: (_dbus_marshal_double),
2949         (_dbus_marshal_string), (_dbus_marshal_byte_array):
2950         * dbus/dbus-message.c: (dbus_message_append_int32),
2951         (dbus_message_append_uint32), (dbus_message_append_double),
2952         (dbus_message_append_string), (dbus_message_append_byte_array):
2953         Handle OOM restoration.
2954         
2955 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
2956
2957         * dbus/dbus-marshal.c: (_dbus_marshal_string),
2958         (_dbus_demarshal_string), (_dbus_marshal_test):
2959         * dbus/dbus-marshal.h:
2960         * dbus/dbus-message.c: (dbus_message_get_name),
2961         Document these functions.
2962         
2963         (dbus_message_append_int32), (dbus_message_append_uint32),
2964         (dbus_message_append_double), (dbus_message_append_string),
2965         (dbus_message_append_byte_array):
2966         * dbus/dbus-message.h:
2967         Add functions for adding message fields of different types.
2968         
2969         * dbus/dbus-protocol.h:
2970         Add the different types.
2971
2972 2003-01-05  Havoc Pennington  <hp@pobox.com>
2973
2974         * bus/connection.c: implement routines for handling connections,
2975         first thing is keeping a list of owned services on each connection
2976         and setting up watches etc.
2977
2978         * bus/services.c: implement a mapping from service names to lists
2979         of connections
2980
2981         * dbus/dbus-hash.c: add DBUS_HASH_POINTER
2982
2983         * dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
2984         to use static mutexes for global data
2985
2986         * dbus/dbus-connection.c (dbus_connection_set_data): add new
2987         collection of functions to set/get application-specific data
2988         on the DBusConnection.
2989
2990 2003-01-04  Havoc Pennington  <hp@pobox.com>
2991
2992         * dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
2993         (_dbus_poll): new function
2994
2995         * dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
2996         copied from GLib
2997
2998         * bus/loop.c: initial code for the daemon main loop
2999
3000 2003-01-04  Havoc Pennington  <hp@pobox.com>
3001
3002         * test/watch.c (error_handler): make it safe if the error handler 
3003         is called multiple times (if we s/error handler/disconnect
3004         handler/ we should just guarantee it's called only once)
3005
3006         * dbus/dbus-transport.c (_dbus_transport_disconnect): call the
3007         error handler on disconnect (it's quite possible we should
3008         just change the error handler to a "disconnect handler," I'm 
3009         not sure we have any other meaningful errors)
3010
3011         * configure.in: check for getpwnam_r
3012
3013         * dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
3014         dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
3015         mechanism as in SASL spec, using socket credentials
3016
3017         * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
3018         (_dbus_send_credentials_unix_socket): new function
3019
3020         * dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
3021         dbus_accept()
3022         (_dbus_write): only check errno if <0 returned
3023         (_dbus_write_two): ditto
3024
3025 2003-01-02  Anders Carlsson  <andersca@codefactory.se>
3026
3027         * dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
3028         (_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
3029         (_dbus_marshal_test):
3030         * dbus/dbus-marshal.h:
3031         Add _dbus_marshal_byte_array and rename _dbus_marshal_string
3032         to _dbus_marshal_utf8_string. Also fix some tests.
3033         
3034 2002-12-28  Harri Porten  <porten@kde.org>
3035
3036         * configure.in: added check for C++ compiler and a very cheesy
3037         check for the Qt integration
3038
3039         * Makefile.am (SUBDIRS): compile qt subdir if support is enabled
3040
3041         * qt/Makefile.am: added 
3042
3043         * qt/.cvsignore: added  
3044
3045         * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
3046         latter, added #ifdef QT_THREAD_SUPPORT guard.
3047
3048         * dbus/Makefile.am: added missing headers for make dist
3049
3050 2002-12-28  Kristian Rietveld  <kris@gtk.org>
3051
3052         * dbus/Makefile.am: fixup export-symbols-regex.
3053
3054 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
3055
3056         * acinclude.m4: Add this file and put the 
3057         PKG_CHECK_MODULE macro in it.
3058
3059 2002-12-27  Anders Carlsson  <andersca@codefactory.se>
3060
3061         * dbus/dbus-marshal.c: (_dbus_marshal_string),
3062         (_dbus_demarshal_double), (_dbus_demarshal_int32),
3063         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
3064         (_dbus_marshal_test):
3065         Make the demarshalling routines align the pos argument.
3066         Add string marshalling tests and fix the obvious bugs 
3067         discovered.
3068         
3069 2002-12-26  Havoc Pennington  <hp@pobox.com>
3070
3071         * dbus/dbus-auth.c: fixes fixes fixes
3072
3073         * dbus/dbus-transport-unix.c: wire up support for
3074         encoding/decoding data on the wire
3075
3076         * dbus/dbus-auth.c (_dbus_auth_encode_data) 
3077         (_dbus_auth_decode_data): append to target string 
3078         instead of nuking it.
3079
3080 2002-12-26  Havoc Pennington  <hp@pobox.com>
3081
3082         * dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
3083         WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
3084         doh
3085
3086         * dbus/dbus-marshal.c: Add macros to do int swapping in-place and
3087         avoid swap_bytes() overhead (ignoring possible assembly stuff for 
3088         now). Main point is because I wanted unpack_uint32 to implement
3089         _dbus_verbose_bytes
3090         (_dbus_verbose_bytes): new function
3091
3092         * dbus/dbus-string.c (_dbus_string_validate_ascii): new function
3093
3094         * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add
3095         mechanism to handle a corrupt message stream
3096         (_dbus_message_loader_new): fix preallocation to only prealloc, 
3097         not prelengthen
3098         
3099         * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function
3100         (_dbus_string_test): enhance tests for copy/move and fix the
3101         functions
3102
3103         * dbus/dbus-transport-unix.c: Hold references in more places to 
3104         avoid reentrancy problems
3105
3106         * dbus/dbus-transport.c: ditto
3107
3108         * dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
3109         leak reference count in no-message case
3110
3111         * test/watch.c (do_mainloop): handle adding/removing watches
3112         during iteration over the watches. Also, ref the connection/server
3113         stored on a watch, so we don't try to mangle a destroyed one.
3114
3115         * dbus/dbus-transport-unix.c (do_authentication): perform
3116         authentication
3117
3118         * dbus/dbus-auth.c (get_state): add a state
3119         AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
3120         (_dbus_auth_get_unused_bytes): append the unused bytes
3121         to the passed in string, rather than prepend
3122
3123         * dbus/dbus-transport.c (_dbus_transport_init_base): create 
3124         the auth conversation DBusAuth
3125
3126         * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
3127         (_dbus_transport_new_for_domain_socket): when creating a
3128         transport, pass in whether it's a client-side or server-side
3129         transport so we know which DBusAuth to create
3130
3131 2002-12-03  Havoc Pennington  <hp@pobox.com>
3132
3133         * dbus/dbus-transport-unix.c (unix_finalize): finalize base
3134         _after_ finalizing the derived members
3135         (unix_connection_set): unref watch if we fail to add it
3136
3137         * dbus/dbus-connection.c (dbus_connection_unref): delete the
3138         transport first, so that the connection owned by the 
3139         transport will be valid as the transport finalizes.
3140
3141         * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch
3142         if necessary, and remove watches from the connection.
3143         
3144         * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment
3145         
3146 2002-12-26  Anders Carlsson  <andersca@codefactory.se>
3147
3148         * dbus/dbus-marshal.c: (_dbus_marshal_string),
3149         (_dbus_demarshal_double), (_dbus_demarshal_int32),
3150         (_dbus_demarshal_uint32), (_dbus_demarshal_string),
3151         (_dbus_marshal_test):
3152         * dbus/dbus-marshal.h:
3153         Add string marshal functions and have the demarshal functions
3154         return the new position.
3155         
3156 2002-12-25  Havoc Pennington  <hp@pobox.com>
3157
3158         * doc/dbus-sasl-profile.txt: docs on the authentication protocol, 
3159         it is a simple protocol that just maps directly to SASL.
3160
3161         * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol
3162         initial implementation, not actually used yet.
3163         
3164         * dbus/dbus-string.c (_dbus_string_find): new function
3165         (_dbus_string_equal): new function
3166         (_dbus_string_base64_encode): new function
3167         (_dbus_string_base64_decode): new function
3168
3169 2002-12-25  Anders Carlsson  <andersca@codefactory.se>
3170
3171         * dbus/Makefile.am:
3172         * dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
3173         (_dbus_marshal_int32), (_dbus_marshal_uint32),
3174         (_dbus_demarshal_double), (_dbus_demarshal_int32),
3175         (_dbus_demarshal_uint32), (_dbus_marshal_test):
3176         * dbus/dbus-marshal.h:
3177         * dbus/dbus-protocol.h:
3178         * dbus/dbus-test.c: (main):
3179         * dbus/dbus-test.h:
3180         Add un-optimized marshalling/demarshalling routines.
3181         
3182 2002-12-25  Harri Porten  <porten@kde.org>
3183
3184         * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions
3185
3186 2002-12-24  Zack Rusin  <zack@kde.org>
3187
3188         * qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
3189         * qt/dbus-qt.h: skeleton with two sample implemenatation of the
3190         main loop stuff
3191
3192 2002-12-24  Havoc Pennington  <hp@pobox.com>
3193
3194         * glib/dbus-gthread.c: fix include
3195
3196         * glib/dbus-glib.h: rename DBusMessageHandler for now. 
3197         I think glib API needs to change, though, as you don't 
3198         want to use DBusMessageFunction, you want to use the 
3199         DBusMessageHandler object. Probably 
3200         dbus_connection_open_with_g_main_loop()
3201         and dbus_connection_setup_g_main_loop() or something like that
3202         (but think of better names...) that just create a connection 
3203         that has watch/timeout functions etc. already set up.
3204
3205         * dbus/dbus-connection.c
3206         (dbus_connection_send_message_with_reply): new function just to 
3207         show how the message handler helps us deal with replies.
3208
3209         * dbus/dbus-list.c (_dbus_list_remove_last): new function
3210
3211         * dbus/dbus-string.c (_dbus_string_test): free a string that
3212         wasn't
3213
3214         * dbus/dbus-hash.c: use memory pools for the hash entries
3215         (rebuild_table): be more paranoid about overflow, and 
3216         shrink table when we can
3217         (_dbus_hash_test): reduce number of sprintfs and write
3218         valid C89. Add tests for case where we grow and then 
3219         shrink the hash table.
3220
3221         * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools
3222
3223         * dbus/dbus-connection.c (dbus_connection_register_handler) 
3224         (dbus_connection_unregister_handler): new functions
3225
3226         * dbus/dbus-message.c (dbus_message_get_name): new
3227
3228         * dbus/dbus-list.c: fix docs typo
3229
3230         * dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
3231         an object representing a handler for messages.
3232
3233 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
3234
3235         * glib/dbus-glib.h:
3236         * glib/dbus-gthread.c: (dbus_gthread_init):
3237         Don't use the gdbus prefix for public functions.
3238         
3239 2002-12-16  Anders Carlsson  <andersca@codefactory.se>
3240
3241         * Makefile.am:
3242         * configure.in:
3243         Add GLib checks and fixup .pc files
3244         
3245         * glib/Makefile.am:
3246         * glib/dbus-glib.h:
3247         * glib/dbus-gmain.c: (gdbus_connection_prepare),
3248         (gdbus_connection_check), (gdbus_connection_dispatch),
3249         (gdbus_add_connection_watch), (gdbus_remove_connection_watch),
3250         (dbus_connection_gsource_new):
3251         * glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
3252         (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init):
3253         * glib/test-dbus-glib.c: (message_handler), (main):
3254         Add GLib support.
3255         
3256 2002-12-15  Harri Porten  <porten@kde.org>
3257
3258         * autogen.sh: check for libtoolize before attempting to use it 
3259         
3260         * dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
3261         struct.
3262         
3263         * .cvsignore: ignore more stamp files
3264
3265         * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error
3266
3267         * test/Makefile.am: added -I$(top_srcdir) to be able to compile
3268         without make install.
3269
3270 2002-12-15  Havoc Pennington  <hp@pobox.com>
3271
3272         * dbus/dbus-threads.c: add thread stubs that a higher library
3273         layer can fill in. e.g. the GLib wrapper might fill them in with
3274         GThread stuff. We still need to use this thread API to
3275         thread-safe-ize the library.
3276
3277 2002-12-12  Havoc Pennington  <hp@pobox.com>
3278
3279         * dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
3280         below new interfaces and include fewer system headers.
3281
3282         * dbus/dbus-sysdeps.c (_dbus_read): new function
3283         (_dbus_write): new function
3284         (_dbus_write_two): new function
3285         (_dbus_connect_unix_socket): new function
3286         (_dbus_listen_unix_socket): new function
3287
3288         * dbus/dbus-message-internal.h: change interfaces to use
3289         DBusString
3290
3291 2002-12-11  Havoc Pennington  <hp@pobox.com>
3292
3293         * dbus/dbus-types.h: add dbus_unichar
3294
3295         * dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv
3296
3297         * dbus/dbus-connection.c (dbus_connection_send_message): return
3298         TRUE on success
3299
3300         * dbus/dbus-transport.c: include dbus-watch.h   
3301
3302         * dbus/dbus-connection.c: include dbus-message-internal.h
3303
3304         * HACKING: add file with coding guidelines stuff.
3305
3306         * dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
3307         handling here, for security purposes (as in vsftpd). Not actually
3308         using this class yet.
3309
3310         * dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
3311         system/libc usage here, as in vsftpd, for ease of auditing (and
3312         should also simplify portability). Haven't actually moved all the
3313         system/libc usage into here yet.
3314         
3315 2002-11-25  Havoc Pennington  <hp@pobox.com>
3316
3317         * dbus/dbus-internals.c (_dbus_verbose): fix to not 
3318         always print the first verbose message.
3319
3320 2002-11-24  Havoc Pennington  <hp@pobox.com>
3321
3322         * test/echo-client.c, test/echo-server.c: cheesy test 
3323         clients.
3324         
3325         * configure.in (AC_CHECK_FUNCS): check for writev
3326
3327         * dbus/dbus-message.c (_dbus_message_get_network_data): new
3328         function
3329
3330         * dbus/dbus-list.c (_dbus_list_foreach): new function
3331
3332         * dbus/dbus-internals.c (_dbus_verbose): new function
3333
3334         * dbus/dbus-server.c, dbus/dbus-server.h: public object
3335         representing a server that listens for connections.
3336
3337         * dbus/.cvsignore: create
3338
3339         * dbus/dbus-errors.h, dbus/dbus-errors.c:
3340         public API for reporting errors
3341
3342         * dbus/dbus-connection.h, dbus/dbus-connection.c:
3343         public object representing a connection that 
3344         sends/receives messages. (Same object used for 
3345         both client and server.)
3346
3347         * dbus/dbus-transport.h, dbus/dbus-transport.c:
3348         Basic abstraction for different kinds of stream
3349         that we might read/write messages from.
3350
3351 2002-11-23  Havoc Pennington  <hp@pobox.com>
3352
3353         * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN 
3354         _DBUS_INT_MAX
3355
3356         * dbus/dbus-test.c (main): add list test, and include 
3357         dbus-test.h as intended
3358
3359         * dbus/dbus-hash.c (_dbus_hash_table_remove_string) 
3360         (_dbus_hash_table_remove_int): return value indicates 
3361         whether the entry existed to remove
3362
3363         * dbus/dbus-list.c: add linked list utility class, 
3364         with docs and tests
3365
3366         * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket 
3367         array sometimes.
3368
3369 2002-11-23  Havoc Pennington  <hp@pobox.com>
3370
3371         * Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
3372         DBUS_END_DECLS to nothing, that should fix this once and for all
3373
3374         * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES
3375
3376         * dbus/dbus-message.c, dbus/dbus-hash.c: 
3377         add some missing @brief
3378
3379 2002-11-23  Havoc Pennington  <hp@pobox.com>
3380
3381         * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS 
3382         to avoid confusing Doxygen
3383
3384         * dbus/dbus-hash.c: @} not }@
3385
3386         * dbus/dbus-message.c (struct DBusMessage): split out 
3387         internals docs
3388
3389 2002-11-23  Havoc Pennington  <hp@pobox.com>
3390
3391         * configure.in: pile on more warning flags if using gcc
3392
3393         * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have 
3394         to document static functions
3395
3396         * configure.in: add summary to end of configure so it 
3397         looks nice and attractive
3398
3399         * dbus/dbus-hash.c: finish implementation and write unit 
3400         tests and docs
3401
3402         * configure.in: add --enable-tests to enable unit tests
3403
3404         * dbus/dbus-test.c: test program to run unit tests 
3405         for all files in dbus/*, initially runs a test for 
3406         dbus-hash.c
3407         
3408         * dbus/dbus-internals.h: file to hold some internal utility stuff
3409
3410 2002-11-22  Havoc Pennington  <hp@redhat.com>
3411
3412         * dbus/dbus-hash.c: copy in Tcl hash table, not yet 
3413         "ported" away from Tcl
3414
3415         * dbus/dbus-types.h: header for types such as dbus_bool_t
3416
3417 2002-11-22  Havoc Pennington  <hp@redhat.com>
3418
3419         * dbus/dbus.h: fixups for doc warnings
3420
3421         * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up 
3422         macros
3423         (QUIET): make it quiet so we can see warnings
3424
3425         * dbus/dbus-memory.c: teach D-BUS to allocate and free memory
3426
3427 2002-11-22  Havoc Pennington  <hp@redhat.com>
3428
3429         * Makefile.am: include "Doxyfile" target in all-local
3430
3431         * configure.in: generate the Doxyfile
3432
3433         * Doxyfile.in: move Doxyfile here, so we can use 
3434         configure to generate a Doxyfile with the right 
3435         version number etc.
3436
3437 2002-11-22  Havoc Pennington  <hp@redhat.com>
3438
3439         * dbus/dbus-message.c: move inline docs into .c file
3440
3441         * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api
3442         so all docs are under doc/
3443         (MAN_EXTENSION): generate man pages. Use extension 
3444         ".3dbus" which matches ".3qt" on my system, 
3445         I guess this is OK, I don't know really.
3446         (FILE_PATTERNS): look for .c files not .h, makes sense
3447         for plain C I think
3448
3449 2002-11-22  Havoc Pennington  <hp@pobox.com>
3450
3451         * Makefile.am (SUBDIRS): rename subdir "server" to "bus" 
3452         because any app can be a server, and any app can be a client, 
3453         the bus is a special kind of server.
3454
3455 Thu Nov 21 23:35:31 2002  Zack Rusin  <zack@kde.org>
3456
3457         * Doxyfile : adding. Still needs Makefile rules to be generated
3458         automatically (just run "doxygen" in the toplevel dir for now to
3459         generate docs)
3460         
3461         * dbus/dbus-message.h : Adding sample docs (javadoc since
3462         resembles gtk-doc a little more)
3463
3464         * dbus/dbus.h : Adding sample docs
3465
3466 2002-11-21  Havoc Pennington  <hp@redhat.com>
3467
3468         * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION 
3469         so we can allow ourselves to include files directly, 
3470         instead of having to use dbus.h
3471
3472         * dbus/dbus.h: fill in
3473
3474         * dbus/dbus-message.h: sketch out a sample header file.
3475         Include griping if you include it directly instead of 
3476         via dbus.h
3477
3478         * dbus/dbus-macros.h: new file with macros for extern "C", 
3479         TRUE/FALSE, NULL, etc.
3480
3481         * doc/file-boilerplate.c: put include guards in here
3482
3483 2002-11-21  Havoc Pennington  <hp@redhat.com>
3484
3485         * doc/file-boilerplate.c: include both AFL and GPL boilerplate.
3486
3487         * COPYING: include the GPL as well, and license code 
3488         under both AFL and GPL.
3489
3490 2002-11-21  Havoc Pennington  <hp@redhat.com>
3491
3492         * acconfig.h: get rid of this
3493
3494         * autogen.sh (run_configure): add --no-configure option
3495
3496         * configure.in: remove AC_ARG_PROGRAM to make
3497         autoconf complain less. add AC_PREREQ. 
3498         add AC_DEFINE third arg.
3499         
3500 2002-11-21  Anders Carlsson  <andersca@codefactory.se>
3501
3502         * doc/Makefile.am:
3503         Fix references so we can distcheck.
3504
3505 2002-11-21  Havoc Pennington  <hp@redhat.com>
3506
3507         * Initial module creation
3508