ChangeLog 311 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
2005-03-05  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c:
	(pseudorandom_generate_random_bytes_buffer): fix to have no return
	value
	(_dbus_generate_random_bytes_buffer): fix return value

	* dbus/dbus-sysdeps-util.c: s/GETPWNAME/GETPWNAM/ so configure
	checks actually work, from Tom Parker <fdo@tevp.net>

11 12
2005-03-01  Colin Walters  <walters@verbum.org>

13 14 15 16 17 18 19
	* test/glib/test-dbus-glib.c (lose, lose_gerror): Utility
	functions copied from dbus-glib-tool.c.
	(main): Convert lots of error code to use them.
	Also add some testing for introspection bits.

2005-03-01  Colin Walters  <walters@verbum.org>
	
20 21
	* doc/TODO: Remove introspection signature TODO.

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
2005-02-27  Colin Walters  <walters@verbum.org>

	* glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
	Change return value to const char * instead of int so we can do
	full signatures.
	(struct PropertyInfo, struct ArgInfo): Store char *.
	(property_info_new, arg_info_new): Update parameters, strdup.
	(property_info_unref, arg_info_unref): Free.

	* glib/dbus-gidl.h: Update prototypes.

	* glib/dbus-gparser.c (basic_type_from_string): Delete.
	(validate_signature): New function, just validates signature and
	sets GError.
	(parse_property, parse_arg): Invoke validate_signature.  Store
	signature instead of just type code.

	* glib/dbus-gvalue.c (base_type_from_signature): New utility
	function to return a primary type for a signature, dropping
	information about types in container types.
	(dbus_gvalue_genmarshal_name_from_type)
	(dbus_gvalue_binding_type_from_type)
	(dbus_gvalue_ctype_from_type): Update to take full signature
	 instead of type code.
	(dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.

	* glib/dbus-gvalue.h: Update prototypes for above.

	* glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
	glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
	(introspect_properties, introspect_signals, write_interface):
	Update to handle signatures, and remove usage of
	_dbus_gutils_type_to_string.
	(handle_introspect): Print out type codes instead of e.g. "string"
	in hardcoded introspection XML; also use x_AS_STRING constants
	instead of hardcoding in string.

	* glib/dbus-glib-tool.c (pretty_print): Handle signature change
	to string.  Remove usage of _dbus_gutils_type_to_string.

	* glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.

	* glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
	deletion.
	
	* glib/dbus-binding-tool-glib.c (compute_marshaller)
	(compute_marshaller_name, generate_glue): Handle signature change
	to string.
	(write_formal_parameters, write_args_for_direction): Ditto, and
	remove FIXME.

	* tools/dbus-tree-view.c (type_to_string): Delete.
	(info_set_func_text): Update to print full signatures.

	* test/glib/test-service-glib.xml: Change types to new
	introspection format.

79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
2005-02-26  Havoc Pennington  <hp@redhat.com>

	* doc/TODO: remove the "guid" item

	* test/glib/test-profile.c (no_bus_thread_func): use open_private
	(with_bus_thread_func): use open_private

	* dbus/dbus-connection.c (dbus_connection_open_private): new
	function that works like the old dbus_connection_open()
	(dbus_connection_open): now returns an existing connection if
	possible

	* dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
	through the GUID to the transport

	* dbus/dbus-server.c (_dbus_server_init_base): keep around the
	GUID in hex-encoded form.

	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	pass GUID argument in to the transport

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
	guid argument

	* dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument

	* dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument

107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
2005-02-25  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: document the GUID thing

	* dbus/dbus-server.c (_dbus_server_init_base): initialize a
	globally unique ID for the server, and put a "guid=hexencoded"
	field in the address

	* dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h

	* dbus/dbus-message.c: ditto

	* dbus/dbus-dataslot.c: ditto

	* dbus/dbus-list.c: ditto

	* dbus/dbus-internals.h: wait, just include
	dbus-threads-internal.h here
	
	* dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
	use in main library

	* dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function

131 132 133 134
2005-02-24  Colin Walters  <walters@verbum.org>

	* test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml

135 136 137 138 139
2005-02-24  John (J5) Palmieir  <johnp@redhat.com>

	* glib/Makefile.am: added dbus-gobject.h to sources list
	so distcheck doesn't fail
	
140 141 142 143 144 145 146 147 148 149 150 151 152 153
2005-02-24  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
	you must disconnect before unref, since locking and other things
	are screwed up otherwise. Fix assorted other locking stuff.

	* dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
	fix compilation

	* dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
	into a private header and don't export from the library

	* throughout - call _dbus_thread_stuff vs. dbus_thread_stuff

154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
2005-02-24  Colin Walters  <walters@verbum.org>
	
	* dbus/dbus-signature.c: New file; implements various functions
	related to type signatures.  Includes an interator for parsing,
	validation functions.
	(dbus_type_is_basic): Moved here from
	dbus-marshal-basic.c:_dbus_type_is_basic.
	(dbus_type_is_container): Moved here from
	dbus-marshal-basic.c:_dbus_type_is_container.

	All callers of _dbus_type_is_container and _dbus_type_is_basic
	updated, and include dbus-signature.h.

	* dbus/dbus-signature.h: New file; prototypes for the above.

	* dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
	dbus-signature.h.

	* dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
	function factored out of _dbus_first_type_in_signature.
	(_dbus_first_type_in_signature_c_str): New function; returns first
	type code for a type signature character.

	* dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
	handle function moves.

	* dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.

	* dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
	function; skips to next complete type in type signature.
	Implemented using previous skip_one_complete_type.  Now
	skip_one_complete_type just delegates to
	_dbus_type_signature_next.

	* dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
	to dbus-signature.c
	(_dbus_type_is_container): Ditto.

	* doc/dbus-specification.xml: Update introspection sample to
	use real type signatures.

	* dbus/dbus-test.h: Prototype signature test.

	* dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
	signature tests.

	* dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.

202 203 204 205 206
2005-02-23  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in (PendingCall::get_reply):
	s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply

207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
2005-02-21  Colin Walters  <walters@verbum.org>

	* dbus/dbus-test-main.c (main): Take optional specific test
	argument.

	* dbus/dbus-test.c (run_test): New function, runs a test function
	with no data directory.
	(run_data_test): Like above, but takes data directory.
	(dbus_internal_do_not_use_run_tests): Take
	specific test argument.  Replace lots of cut n' paste code
	with run_test and run_data_test.

	* dbus/dbus-test.h: Update prototype for
	dbus_internal_do_not_use_run_tests.

222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
2005-02-20  Havoc Pennington  <hp@redhat.com>

        Fix bugs reported by Daniel P. Berrange
	
	* dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
	(protected_change_watch): new function
	(_dbus_server_toggle_watch, _dbus_server_remove_watch)
	(_dbus_server_add_watch): change to work like the
	dbus-connection.c equivalents; like those, probably kind of
	busted, but should at least mostly work for now
	(dbus_server_disconnect): drop the lock if we were already
	disconnected, patch from Daniel P. Berrange

	* dbus/dbus-server.c (_dbus_server_toggle_timeout) 
	(_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
	same stuff

	* doc/TODO: todo about unscrewing this mess

241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
2005-02-19  Colin Walters  <walters@verbum.org>

	* glib/dbus-binding-tool-glib.c
	(dbus_binding_tool_output_glib_server): Fix iochannel refcounting.

	* glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
	as errno.h and sys/stat.h.
	(lose): New function, prints error with
	newline and exits.
	(lose_gerror): Similar, but takes GError for message.
	(main): Add --output argument to specify output file to write to,
	instead of always printing to stdout.  In this mode, determine
	timestamps on source files to see whether any are newer than the
	target file.  If not, exit.  Also convert a number of error
	messages to use lose (since it's shorter), and switch to using
	g_io_channel_shutdown.

258 259 260 261 262 263 264 265 266 267
2005-02-19  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gobject.c
	(_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs

	* glib/dbus-glib.c: fix doxygen warnings

	* glib/dbus-gparser.c (parse_annotation): error if an annotation
	is found on an <arg>

268 269 270 271 272 273 274 275 276 277 278
2005-02-17  Colin Walters  <walters@verbum.org>

	* glib/dbus-gobject.h: Don't export
	_dbus_glib_marshal_dbus_message_to_gvalue_array.
	
	* glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
	(invoke_object_method): Handle it.

	* glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
	Handle rename.
	
279 280
2005-02-17  Colin Walters  <walters@verbum.org>

281 282 283 284 285 286
	* bus/.cvsignore, doc/.cvsignore
	* test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
	Update.

2005-02-17  Colin Walters  <walters@verbum.org>
	
287 288 289 290
	* dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
	Rename to DBUS_SERVICE_DBUS.
	(DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
	(DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
Colin Walters's avatar
Colin Walters committed
291 292
	Change the value from "org.freedesktop.Local"
	to "org.freedesktop.DBus.Local".
293 294 295
	(DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
	DBUS_INTERFACE_INTROSPECTABLE.
Colin Walters's avatar
Colin Walters committed
296 297
	Change the value from "org.freedesktop.Introspectable"
	to "org.freedesktop.DBus.Introspectable".
298 299
	(DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
	DBUS_INTERFACE_PROPERTIES.
Colin Walters's avatar
Colin Walters committed
300 301
	Change the value from "org.freedesktop.Properties"
	to "org.freedesktop.DBus.Properties".
302 303
	(DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
	DBUS_INTERFACE_PEER.
Colin Walters's avatar
Colin Walters committed
304 305
	Change the value from "org.freedesktop.Peer"
	to "org.freedesktop.DBus.Peer".
306 307
	(DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL): 
	DBUS_INTERFACE_LOCAL.
Colin Walters's avatar
Colin Walters committed
308 309
	Change the value from "org.freedesktop.Local"
	to "org.freedesktop.DBus.Local".
310 311 312 313 314 315 316 317 318

	All other users of those constants have been changed.

	* bus/driver.c (bus_driver_handle_introspect): Use constants.

	* glib/dbus-gobject.c (handle_introspect): Use constants.

	* doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.

319
2005-02-17  Colin Walters  <walters@verbum.org>
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354

	* glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
	(parse_node, parse_interface, parse_method, parse_signal)
	(parse_property, parse_annotation): Lose if we're currently in an
	annotation.
	(parse_annotation): New function.
	(parser_start_element, parser_end_element): Handle annotation.
	(parse_method, parse_interface): Remove support for c_name attribute,
	switch to annotations.

	* glib/dbus-gidl.h (interface_info_get_binding_names)
	(method_info_get_binding_names)
	(interface_info_get_binding_name, method_info_get_binding_name)
	(interface_info_set_binding_name, method_info_set_binding_name):
	Remove.
	(interface_info_get_annotations, method_info_get_annotations)
	(interface_info_get_annotation, method_info_get_annotation)
	(interface_info_add_annotation, method_info_add_annotation):
	Prototype.

	* glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
	for "bindings".
	(struct MethodInfo): Ditto.
	Straightfoward conversion of binding methods into annotation methods
	as prototyped.

	* glib/dbus-glib-tool.c (pretty_print): Print annotations.

	* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.

	* glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
	Use new annotation API.

	* doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
	annotation element.
355
	
356 357 358 359 360 361 362
	* doc/dbus-specification.xml: Discuss introspection annotations,
	include list of well-known annotations.

	* test/glib/test-service-glib.xml: Make validate against new DTD.

2005-02-17  Colin Walters  <walters@verbum.org>

363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489
	This patch is based on initial work from
	Paul Kuliniewicz <kuliniew@purdue.edu>.

	* glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
	initialization of GValue from dbus type to here.
	(dbus_gvalue_genmarshal_name_from_type): New function; generates a string
	for the "glib-genmarshal" program from a DBus type.
	(dbus_gvalue_binding_type_from_type): New function; turns a DBus type
	into the C name for it we use in the glib bindings.
	(dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
	glib C type (not GValue).
	(dbus_gvalue_demarshal): invoke dbus_gvalue_init.

	* glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
	from dbus-gobject.c.

	* glib/dbus-gutils.h: Prototype it.

	* glib/dbus-gproxy.c: Include new dbus-gobject.h.
	(marshal_dbus_message_to_g_marshaller): Use new shared function
	dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
	Will be changed once we have annotations.

	* glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
	GStaticRWLock.  Callers updated.
	(wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
	(string_table_next): New function for iterating over zero-terminated
	string value array.
	(string_table_lookup): New function; retrieves specific entry in
	array.
	(get_method_data): New function; look up method data in object data chunk.
	(object_error_domain_prefix_from_object_info)
	(object_error_code_from_object_info): New functions, but not implemented yet.
	(method_interface_from_object_info): New function; retrieve interface name.
	(method_name_from_object_info): New function; retrieve method name.
	(method_arg_info_from_object_info): New function; retrieve argument data.
	(arg_iterate): New function; iterates over serialized argument data.
	(method_dir_signature_from_object_info): New function; returns a
	GString holding type signature for arguments for just one
	direction (input or output).
	(method_input_signature_from_object_info)
	(method_output_signature_from_object_info): New functions.
	(dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
	converts dbus message arguments into a GValue array.  Used for both
	signal handling and method invocation.
	(struct DBusGlibWriteIterfaceData): New utility structure.
	(write_interface): New function; generate introspection XML for
	an interface.
	(introspect_interfaces): New function; gathers all interface->methods,
	generates introspection XML for them.
	(handle_introspect): Invoke introspect_interfaces.
	(get_object_property): Be sure to zero-initalize stack-allocated GValue.
	(lookup_object_and_method): New function; examines an incoming message
	and attempts to match it up (via interface, method name, and argument
	signature) with a known object and method.
	(gerror_domaincode_to_dbus_error_name): New function; converts a
	GError domain and code into a DBus error name.  Needs GError data
	added to object introspection to work well.
	(gerror_to_dbus_error_message): Creates a DBusMessage error return from
	GError.
	(invoke_object_method): New function to invoke an object method
	looked up via lookup_object_and_method.  Parses the incoming
	message, turns it into a GValue array, then invokes the marshaller
	specified in the DBusGMethodInfo.  Creates a new message with
	either return values or error message as appropriate.
	(gobject_message_function): Invoke lookup_object_and_method and
	invoke_object_method.

	* glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
	(enum DBusBindingOutputMode): New enum for binding output modes.
	(pretty_print): Print binding names.
	(dbus_binding_tool_error_quark): GError bits.
	(version): Fix typo.
	(main): Create GIOChannel for output.  Parse new --mode argument,
	possible values are "pretty-print", "glib-server", "glib-client".
	Use mode to invoke appropriate function.
	
	* glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-glib-tool.h: New header, just includes GError bits
	for now.

	* glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
	maps binding style to name.
	(struct MethodInfo): Ditto.
	(get_hash_keys, get_hash_key): Utility function, returns keys for
	a GHashTable.
	(interface_info_new, method_info_new): Initialize bindings.
	(interface_info_unref, method_info_unref): Destroy bindings.
	(method_info_get_binding_names, method_info_get_binding_name)
	(interface_info_get_binding_names, interface_info_get_binding_name):
	Functions for retrieving binding names.
	(method_info_set_binding_name, interface_info_set_binding_name):
	Functions for setting binding names.

	* glib/dbus-binding-tool-glib.h: New file, has prototypes
	for glib binding generation.

	* glib/dbus-binding-tool-glib.c: New file, implements server-side
	and client-side glib glue generation.

	* glib/Makefile.am (dbus_binding_tool_SOURCES): Add
	dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
	dbus-glib-tool.h.

	* dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
	of using GClosureMarshal directly.
	(struct DBusGObjectInfo): Add n_infos member.

	* test/glib/test-service-glib.xml: New file; contains introspection data
	for MyTestObject used in test-service-glib.c.

	* test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
	(my_object_do_nothing, my_object_increment, my_object_throw_error)
	(my_object_uppercase, my_object_many_args): New test methods.
	(main): Use dbus_g_object_class_install_info to include generated object
	info.

	* test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
	as well as client-side bindings.

	* test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
	(main): Activate TestSuiteGLibService; test invoke a bunch of its methods
	using both the dbus_gproxy stuff directly as well as the generated bindings.

490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
2005-02-15  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_dispatch): always
	complete a pending call, don't run filters first.

	* glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
	dbus_pending_call_steal_reply

	* dbus/dbus-pending-call.c (dbus_pending_call_block): just call
	_dbus_connection_block_pending_call
	(dbus_pending_call_get_reply): change to steal_reply and return a
	ref

	* dbus/dbus-connection.c
	(dbus_connection_send_with_reply_and_block): port to work in terms
	of DBusPendingCall
	(_dbus_connection_block_pending_call): replace block_for_reply
	with this

509 510 511 512 513 514
2005-02-14  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
	properly handle looking up group information by name; fix 
	from j@bootlab.org

515 516 517 518 519 520 521 522 523 524
2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_return_message) 
	(dbus_connection_borrow_message): hold dispatch lock while message
	is outstanding
	(_dbus_connection_block_for_reply): hold dispatch lock while we
	block for the reply, so nobody steals our reply
	(dbus_connection_pop_message): hold the dispatch lock while we
	pluck the message

525 526 527 528 529 530 531 532 533 534
2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
	(_dbus_connection_release_dispatch)
	(_dbus_connection_acquire_io_path)
	(_dbus_connection_release_io_path): make the mutex and condvar
	control access to the "acquired" flag. Drop the connection lock
	while waiting on the condvar. Hopefully these are baby steps in
	roughly the right direction.

535 536 537 538 539 540
2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c: use separate mutexes for the condition
	variables; this is some kind of baseline for sanity, but the
	condition variables still aren't used correctly afaict

541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573
2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
	fix a double-unlock

	* dbus/dbus-connection.c
	(_dbus_connection_detach_pending_call_unlocked): add this

        Initial semi-correct pass through to fix thread locking; there are
	still some issues with the condition variable paths I'm pretty
	sure
	
	* dbus/dbus-server.c: add a mutex on DBusServer and appropriate
	lock/unlock calls

	* dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
	rename to add _unlocked
	(struct DBusConnection): move "dispatch_acquired" and
	"io_path_acquired" to use only one bit each.
	(CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
	(dbus_connection_set_watch_functions): hacky fix to reentrancy
	(_dbus_connection_add_watch, _dbus_connection_remove_watch) 
	(_dbus_connection_toggle_watch, _dbus_connection_add_timeout) 
	(_dbus_connection_remove_timeout) 
	(_dbus_connection_toggle_timeout): drop lock when calling out to
	user functions; done in a hacky/bad way.
	(_dbus_connection_send_and_unlock): add a missing unlock
	(_dbus_connection_block_for_reply): add a missing unlock

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	drop lock in a hacky probably unsafe way to call out to user
	function

574 575 576 577 578 579 580 581 582 583 584 585 586
2005-02-12  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-tree-view.c (info_set_func_text): display more
	details on args

	* bus/driver.c (bus_driver_handle_list_services): list the bus
	driver

	* glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied

	* glib/dbus-gidl.c (signal_info_get_n_args): new function
	(method_info_get_n_args): new function

587 588 589 590 591
2005-02-12  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c (bus_driver_handle_introspect): add introspection
	for bus driver

592 593 594 595 596 597
2005-02-12  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c: put the signature of each bus driver method in the
	table of handlers and check it on incoming calls; this isn't
	really useful, but going to add introspect support in a minute.

598 599 600 601 602 603 604 605 606 607
2005-02-11  Joe Shaw  <joeshaw@novell.com>

	* mono/Connection.cs: The unpredictability of finalizers in mono
	prevents us from deterministically disconnecting the filters from
	the Service class's finalizer, so move tracking of filters and
	matches here.  Add API for that.

	* mono/Service.cs: Remove the code, add code which calls the
	methods now on the Connection class.

608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644
2005-02-11  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus.py (class Sender): added to support dbus signals better
	(Bus::add_signal_receiver): added expand_args parameter which defaults
	to True.  When expand args is True the signal handler will pass the 
	message arguments as parameters to the signal handler.  If False
	revert to previous behavior where the signal handler must get the
	argument list from the message.  This is to help port applications
	like HAL that have a tendancy to send variable length argument lists.
	self._match_rule_to_receivers is now a dict of dicts.
	(Bus::remove_signal_receiver): pop handler off the dict intead of 
	removing it from a list
	(Bus::_signal_func): change signal handlers so that interface,
	signal_name, service, path and message are packed into a Sender
	object and that is passed to the handler.  If expand_args is True
	extract the args list from the message and append it to the parameter
	list
	
	* python/dbus_bindings.pyx.in (class Signature): added to support 
	signiature types
	(MessageIter::__init__): changed iteration limit to match D-BUS
	(MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY, 
	STRUCT and VARIENT type support
	(MessageIter::python_value_to_dbus_sig): made recursive to support
	recursive types
	(MessageIter::append*): added Signature, dict, tuple 
	support

	* python/examples/example-client.py: added examples of getting tuples
	and dicts

	* python/examples/example-service.py: added examples of sending tuples
	and dicts

	* python/examples/example-signal-recipient.py: Fixed to handle new
	signal callback format

645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662
2005-02-10  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
	(call dbus_g_proxy_add_signal)

	* dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
	escape the hostname
	(_dbus_server_new_for_domain_socket): escape the path

	* dbus/dbus-address.c (dbus_address_escape_value): new
	(dbus_address_unescape_value): new
	(dbus_parse_address): unescape values

	* dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function

	* doc/dbus-specification.xml: explain how to escape values in
	addresses

663 664 665 666 667 668 669 670 671 672 673 674 675 676
2005-02-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c (generate_special): modify test to
	avoid using a non-basic dict key

	* dbus/dbus-marshal-validate-util.c: add test for the below

	* doc/dbus-specification.xml: require that dict keys are a basic
	type

	* dbus/dbus-marshal-validate.c
	(_dbus_validate_signature_with_reason): require that dict key is a
	basic type

677 678 679 680 681 682 683 684 685
2005-02-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
	change to be _and_unlock instead of _unlocked

	* dbus/dbus-connection.c
	(_dbus_connection_send_preallocated_unlocked_no_update): rename to
	have no_update so we can find this bug quickly in future

686 687 688 689 690 691 692 693
2005-02-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-util.c (verify_test_message): tests for string
	array

	* dbus/dbus-message.c (dbus_message_append_args_valist): add
	support for arrays of string/signature/path

694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717
2005-02-10  Joe Shaw  <joeshaw@novell.com>

	* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message_link,
	_dbus_connection_message_sent): Add the path to
	the verbose output.
	(_dbus_connection_send_preallocated_and_unlock): Added.  Calls
	_dbus_connection_send_preallocated_unlocked(), updated the
	dispatch status, and unlocks.  Fixes a bug where certain
	situations (like a broken pipe) could cause a Disconnect message
	to not be sent, tricking the bus into thinking a service was still
	there when the process had quit.
	(_dbus_connection_send_preallocated): Call
	_dbus_connection_send_preallocated_and_unlock().
	(_dbus_connection_send_and_unlock): Added.  Calls
	_dbus_connection_send_preallocated_and_unlock().
	(dbus_connection_send): Call _dbus_connection_send_and_unlock().
	(dbus_connection_send_with_reply): Update the dispatch status and
	unlock.

	* mono/Service.cs (~Service): Added.  Removes the filter so that
	we don't get unmanaged code calling back into a GCed delegate.
	(RemoveFilter); Added.

718 719 720 721 722 723 724
2005-02-09  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-message.c (dbus_message_iter_open_container):
	- Removed check for iterator type being an array because
	get_arg_type does not work with writer iterators
	- Pass NULL to _dbus_type_writer_recurse if signiture is NULL

725 726 727 728 729 730 731
2005-02-07  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: some more language cleanups; add
	stuff about how to deal with invalid protocol and extension
	points; add _ to allowed chars in auth commands; add EXTENSION_
	auth command prefix

732 733 734 735
2005-02-06  Havoc Pennington  <hp@redhat.com>

	* s/expected/required/ in a couple places for clarity

736 737 738 739 740
2005-02-07  Colin Walters  <walters@verbum.org>

	* bus/selinux.c (bus_selinux_allows_send): Handle NULL for
	sender or proposed_recipient.

741 742 743 744 745 746 747
2005-02-06  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c (generate_special): more tests

	* dbus/dbus-marshal-validate.c (validate_body_helper): detect
	array length that exceeds the maximum

748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764
2005-02-05  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c (generate_special): more test cases,
	increasing coverage

	* dbus/dbus-marshal-validate.c (validate_body_helper): return the
	reason why a signature was invalid

	* dbus/dbus-marshal-header.c (load_and_validate_field): fix to
	skip the length of the string before we look at it in validation

	* dbus/dbus-string-util.c (_dbus_string_test): add tests for
	equal_substring

	* dbus/dbus-message.c (_dbus_message_loader_new): default
	max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH

765 766 767 768 769 770 771 772 773 774
2005-02-05  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
	if the signature of a variant was empty
	(_dbus_validate_signature_with_reason): catch "(a)" (array inside
	struct with no element type)

	* dbus/dbus-message-factory.c (generate_uint32_changed): add more
	mangled messages to break things

775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790
2005-02-04  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
	g_quark_try_string() so it actually can return 0
	(dbus_g_proxy_connect_signal): ditto

2005-02-04  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
	bogus warning
	(tristring_from_message): assert cleanly on null path/interface
	(should not be possible though I decided later)
	(dbus_g_proxy_dispose): move proxy manager unregistration here
	(DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
	g_return_if_fail() checks

791 792 793 794 795 796 797 798 799 800
2005-02-04  Havoc Pennington  <hp@redhat.com>

	* doc/Makefile.am (EXTRA_DIST): add DTDs to makefile

	* doc/introspect.dtd: add introspect.dtd from David A. Wheeler
	(with some minor changes)

	* doc/dbus-specification.xml: add deprecated attribute to
	introspection format

801 802 803 804 805
2005-01-31  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c: rewrite how signals work again, this time I
	think it's sort of right

806 807 808 809
2005-01-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-viewer.c: kind of half-ass hook up the option menu.

810 811 812 813 814 815 816 817 818 819 820 821
2005-01-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-names-model.c: dynamically watch NameOwnerChanged

	* autogen.sh: change to autotools 1.9

	* glib/dbus-gproxy.c: completely change how signals work
	(dbus_g_proxy_add_signal): new function to specify signature of a
	signal
	(dbus_g_proxy_emit_received): marshal the dbus message to GValues,
	and g_warning if the incoming message has the wrong signature.

822 823 824 825 826 827 828
2005-01-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-names-model.c (have_names_notify): fix this

	* dbus/dbus-message.c (_dbus_message_iter_get_args_valist): clean
	up the string array handling a bit 

829 830 831 832 833 834 835 836 837 838 839 840 841 842 843
2005-01-30  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-glib.c (dbus_g_pending_call_set_notify): new function
	(dbus_g_pending_call_cancel): new function

	* dbus/dbus-glib.h: move GType decls for connection/message here;
	* dbus/dbus-glib.c: move all the g_type and ref/unref stuff in
	here, just kind of rationalizing how we handle all that

	* tools/dbus-names-model.c: new file for a tree model listing the
	services on a bus

	* tools/dbus-tree-view.c (model_new): use proper typing on the
	model rows

844 845 846 847 848 849 850 851 852 853
2005-01-30  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c: add a custom GSource back that just checks
	whether the message queue has anything in it; otherwise, there are 
	cases where we won't see messages in the queue since there was no 
	IO visible to the glib main loop

	* dbus/dbus-connection-internal.h (_DBUS_DEFAULT_TIMEOUT_VALUE):
	increase default message timeout to 25 seconds

854 855
2005-01-30  Havoc Pennington  <hp@redhat.com>

856 857 858
	* test/glib/test-profile.c (no_bus_stop_server): remove the
	warning about the g_warning that I just fixed

859 860 861 862
	* glib/dbus-gmain.c: rewrite the main loop stuff to avoid the
	custom source, seems to be a lot easier to understand and work
	better.

863 864 865 866 867 868 869 870 871 872
2005-01-30  Havoc Pennington  <hp@redhat.com>

        I think this main loop thing is conceptually broken, but here are 
	some band aids. I'll maybe rewrite it in a minute.
	
	* glib/dbus-gmain.c (add_timeout): timeout stuff doesn't use the
	custom GSource, so don't pass it in; confusing
	(gsource_server_finalize, gsource_connection_finalize): add
	finalize handlers that remove all the watches.	

873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892
2005-01-30  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gobject.c (introspect_properties): fix the XML
	generated

	* dbus/dbus-message.c (dbus_message_unref): add an in_cache flag
	which effectively detects the use of freed messages

	* glib/dbus-gobject.c (handle_introspect): modify and return the
	reply message instead of the incoming message

	* dbus/dbus-object-tree.c (handle_default_introspect_unlocked):
	gee, maybe it should SEND THE XML instead of just making a string
	and freeing it again ;-)

	* tools/dbus-print-message.c (print_message): improve printing of
	messages

	* configure.in: add debug-glib.service to the output

893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938
2005-01-30  Havoc Pennington  <hp@redhat.com>

        dbus-viewer introspected and displayed the bus driver
	
	* dbus/dbus-object-tree.c 
	(object_tree_test_iteration): add tests for a handler registered on "/"

	* dbus/dbus-object-tree.c
	(_dbus_decompose_path): fix to handle path "/" properly
	(run_decompose_tests): add tests for path decomposition
	
	* glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
	properly

	* glib/dbus-gobject.c (handle_introspect): fix quotes

	* test/glib/run-test.sh: support launching the bus, then running
	dbus-viewer

	* test/glib/test-service-glib.c (main): put in a trivial gobject
	subclass and register it on the connection

	* bus/driver.c (bus_driver_handle_introspect): implement
	introspection of the bus driver service

	* dbus/dbus-protocol.h: add #defines for the XML namespace,
	identifiers, doctype decl

	* bus/driver.c (bus_driver_handle_get_service_owner): handle
	attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by 
	returning the service unchanged.
	(bus_driver_handle_message): remove old check for reply_serial in
	method calls, now the message type deals with that
	(bus_driver_handle_message): handle NULL interface

	* glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function

	* glib/dbus-gloader-expat.c (description_load_from_string): allow
	-1 for len

	* tools/dbus-viewer.c: add support for introspecting a service on
	a bus

	* glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
	(dbus_g_pending_call_unref): add

939 940 941 942 943 944 945 946
2005-01-29  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-tree-view.c: add support for displaying properties.
	(run dbus-viewer with an introspect xml file as arg, then resize
	the window so the tree elements show up, not sure what that is)

	* glib/dbus-gobject.c (handle_introspect): return
	org.freedesktop.Properties and org.freedesktop.Introspectable
947
	interfaces when we are introspected.
948 949 950 951

	* doc/dbus-specification.xml: allow empty interface name when 
	Get/Set a property

952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975
2005-01-29  Havoc Pennington  <hp@redhat.com>

	* glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
	though it uses glib, it could be extended for any binding in
	principle

	* glib/dbus-gobject.c (gobject_message_function): change to the
	new way properties work

	* dbus/dbus-protocol.h: add the new interfaces

	* doc/dbus-specification.xml: document the introspection format,
	Introspectable interface, and add an org.freedesktop.Properties
	interface.

	* glib/dbus-gparser.c: add support for a <property> element

	* glib/dbus-gidl.c: add PropertyInfo

	* glib/dbus-gobject.c (handle_introspect): put the outermost
	<node> outside the signal and property descriptions.
	(introspect_properties): export properties as <property> rather
	than as method calls

976 977 978 979 980
2005-01-28  Havoc Pennington  <hp@redhat.com>

	* doc/TODO, doc/dbus-specification.xml: spec and TODO tweaks
	related to authentication protocol

981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025
2005-01-28  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: Updated to handle new D-BUS type system
		- BUS_ACTIVATION -> BUS_STARTER
		- DBUS_BUS_ACTIVATION -> DBUS_BUS_STARTER
		- class MessageIter (__init__): Added recursion checking 
		so we throw a nice error instead of just disconnecting from the
		bus.
		(get): Added arg_type parameter for recursion.
		Removed the nil type
		Added signiture type placeholder (not implemented)
		Added struct type placeholder (not implemented)
		Added varient type placeholder (not implemented)
		Commented out dict type for now	    
		(get_element_type): renamed from get_array_type
		(get_*): changed to use the dbus_message_iter_get_basic API
		(get_*_array): removed in favor of recursive get_array method
		(get_array): new recursive method which calls get to marshal
	        the elements of the array
		(value_to_dbus_sig): New method returns the corrasponding
		dbus signiture to a python value
		(append): Comment out dict handling for now
		Handle lists with the new recursive API
		Comment out None handling for now
		(append_nil): removed
		(append_*): changed to use dbus_message_iter_append_basic API
		(append_*_array): removed in favor of recursive append_array 
		method
		(__str__): Make it easier to print out recursive iterators
		for debugging
		- class Message (__str__): moved type inspection to the
		MessageIter class' __str__ method
		(get_iter): Added an append parameter wich defaults to False
		If True use the new API's to create an append iterator

	* python/dbus.py: Update to use new bindings API
		- TYPE_ACTIVATION -> TYPE_STARTER
		- class Bus (_get_match_rule): GetServiceOwner -> GetNameOwner
		- class ActivationBus -> class StarterBus
		- class RemoteObject (__call__): get an append iterator
		- (_dispatch_dbus_method_call): get an append iterator
		- class Object (emit_signal): get an append iterator

	* python/examples/: Fixed up the examples to work with the new API
		
1026 1027 1028 1029 1030 1031 1032
2005-01-28  Joe Shaw  <joeshaw@novell.com>

	* configure.in: Bump version up to 0.30.

	* HACKING: Add a release item to bump the version number up after 
	a release.

1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045
2005-01-28  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: update to describe 16-bit types and
	dict entries

	* dbus/dbus-marshal-basic.c (_dbus_unpack_uint16): fix broken
	assertion

	* dbus/dbus-protocol.h (DBUS_TYPE_DICT_ENTRY): add DICT_ENTRY as a
	type

	* dbus/dbus-marshal-recursive.c: implement

1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056
2005-01-27  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-arch-deps.h.in: add 16/32-bit types

	* configure.in: find the right type for 16 and 32 bit ints as well
	as 64

	* dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add
	the 16-bit types so people don't have to stuff them in 32-bit or
	byte arrays.

1057 1058 1059 1060 1061 1062 1063 1064 1065 1066
2005-01-27  Havoc Pennington  <hp@redhat.com>

        * dbus/dbus-message.c: byteswap the message if you init an
	iterator to read/write from it
	
	* dbus/dbus-marshal-byteswap.c: new file implementing 
	_dbus_marshal_byteswap()

	* dbus/dbus-marshal-basic.c: add _dbus_swap_array()

1067 1068 1069 1070 1071
2005-01-26  Havoc Pennington  <hp@redhat.com>
	
	* dbus/dbus-marshal-validate-util.c: break this out (and fix
	build, apparently - nobody noticed?)
	
1072 1073 1074 1075
2005-01-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-marshal-recursive.h: remove todo comment

1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121
2005-01-25  Joe Shaw  <joeshaw@novell.com>

	* Land the mono binding changes to conform to the new APIs.

	* mono/Makefile.am: Remove Custom.cs, DBusType/Custom.cs,
	DBusType/Dict.cs, and DBusType/Nil.cs from the build.

	* mono/Arguments.cs (GetCodeAsString): Added.  Returns the dbus
	type code as a string.
	(InitAppending): Rename dbus_message_append_iter_init() to
	dbus_message_iter_init_append().

	* mono/BusDriver.cs: Rename ServiceEventHandler to
	NameOwnerChangedHandler.  Rename GetServiceOwner to GetOwner.
	Rename ServiceOwnerChanged to NameOwnerChanged.

	* mono/Connection.cs: Rename BaseService to UniqueName, and the
	underlying C call.

	* mono/Custom.cs: Removed.  The CUSTOM type has been removed.

	* mono/Service.cs: Rename Exists to HasOwner, internally rename
	dbus_bus_acquire_service() to dbus_bus_request_name().

	* mono/DBusType/Array.cs (ctor): Use Type.GetElementType() instead
	of Type.UnderlyingSystemType to get the correct element type for
	the array.
	(ctor): Update code for new APIs: use dbus_message_iter_recurse(),
	dbus_message_get_{element|arg}_type() instead of
	dbus_message_iter_init_array_iterator().
	(Append): Replace dbus_message_iter_append_array() with
	dbus_message_iter_open_container() and
	dbus_message_iter_close_container().

	* mono/DBusType/Custom.cs, mono/DBusType/Nil.cs: Removed.  These
	types have been removed.
	
	* mono/DBusType/*.cs: Replace calls of
	dbus_message_iter_get_[type]() to dbus_message_iter_get_basic(),
	but specify the type in the DllImport extern declaration.  Ditto
	for dbus_message_iter_append_[type]() ->
	dbus_message_iter_append_basic().

	* mono/example/BusListener.cs: Update for ServiceEventHandler ->
	NameOwnerChangedHandler.

1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143
2005-01-25  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: Rename of methods and bindings
		- get_base_service -> get_unique_name
		- bus_get_base_service -> bus_get_unique_name
		- dbus_bus_get_base_service -> dbus_bus_get_unique_name
		- ACTIVATION_REPLY_ACTIVATED -> DBUS_START_REPLY_SUCCESS 
		- ACTIVATION_REPLY_ALREADY_ACTIVE -> DBUS_START_REPLY_ALREADY_RUNNING
		- bus_activate_service -> bus_start_service_by_name
		- dbus_bus_activate_service -> dbus_bus_start_service_by_name
		- bus_acquire_service -> bus_request_name
		- dbus_bus_acquire_service -> dbus_bus_request_name
		- bus_service_exists -> bus_name_has_owner
		- dbus_bus_service_exists -> dbus_bus_name_has_owner

	* python/dbus.py: Rename of methods
		- activate_service -> start_service_by_name
		- bus_acquire_service -> bus_request_name
		- ACTIVATION_REPLY_ACTIVATED -> START_REPLY_SUCCESS 
		- ACTIVATION_REPLY_ALREADY_ACTIVE -> START_REPLY_ALREADY_RUNNING

	
1144 1145 1146 1147 1148 1149 1150 1151 1152 1153
2005-01-24  Joe Shaw  <joeshaw@novell.com>

	* dbus/dbus-connection.c (dbus_connection_dispatch): Print out the
	signature for the method that can't be found.

	* dbus/dbus-message.c (dbus_message_iter_init): To check to see if
	the message has any arguments, we need to call
	_dbus_type_reader_get_current_type(), not
	_dbus_type_reader_has_next().

1154 1155 1156 1157 1158 1159 1160
2005-01-24  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c: more testing of message validation

	* dbus/dbus-protocol.h (DBUS_MINIMUM_HEADER_SIZE): move to this
	header

1161 1162 1163 1164 1165
2005-01-23  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c, dbus/dbus-message-util.c: 
	get this all working, not many tests in the framework yet though

1166 1167 1168 1169 1170
2005-01-22  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-faq.xml, doc/dbus-tutorial: add a FAQ and update
	tutorial, based on work from David Wheeler.

1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181
2005-01-21  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-bus.c: add more return_if_fail checks

	* dbus/dbus-message.c (load_message): have the "no validation"
	mode (have to edit the code to toggle the mode for now though)

	* dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that
	skips all validation; I want to use this at least for benchmark
	baseline, I'm not sure if it should be a publicly-available switch.

1182 1183 1184 1185 1186 1187 1188
2005-01-21  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c: don't put the GLib bindings in the same
	toplevel doxygen group as the low-level API stuff

	* dbus/dbus.h: note that libdbus is the low-level API

1189 1190 1191 1192 1193
2005-01-20  Havoc Pennington  <hp@redhat.com>

	* update-dbus-docs.sh: script to update docs on the web site, only
	works for me though. neener.

1194 1195 1196 1197 1198
2005-01-20  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_poll): amazingly, trying to compile
	code can reveal bugs in it

1199 1200 1201 1202 1203
2005-01-20  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
	select() version, patches from Tor Lillqvist

1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217
2005-01-20  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-tutorial.xml: replace > with &gt;

	* bus/services.c (bus_registry_acquire_service): validate the name
	and return a better error if it's no good.

	* doc/dbus-specification.xml: note NO_AUTO_START change

	* dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
	from AUTO_START, we're toggling the default

	* bus/dispatch.c: adapt the tests to change of auto-start default

Havoc Pennington's avatar
 
Havoc Pennington committed
1218 1219 1220 1221
2005-01-18  Havoc Pennington  <hp@redhat.com>

	* rename dbus-daemon-1 to dbus-daemon throughout

1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233
2005-01-18  Havoc Pennington  <hp@redhat.com>

        * Throughout, grand renaming to strip out the use of "service",
	just say "name" instead (or "bus name" when ambiguous).  Did not
	change the internal code of the message bus itself, only the
	programmer-facing API and messages.
	
	* doc/dbus-specification.xml: further update the message bus section
	
	* bus/config-parser.c (all_are_equiv): fix bug using freed string
	in error case

1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245
2005-01-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-types.h: remove 16-bit types since we don't use them
	ever

	* dbus/dbus-marshal-validate.c (_dbus_validate_path): disallow any
	"invalid name character" not only non-ASCII

	* doc/dbus-specification.xml: further update spec, message bus 
	parts are still out-of-date but the marshaling etc. stuff is now
	accurate-ish

1246 1247 1248 1249
2005-01-17  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: partially update spec

1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260
2005-01-17  Havoc Pennington  <hp@redhat.com>

        * Throughout, align variant bodies according to the contained
	type, rather than always to 8. Should save a fair bit of space in
	message headers.
	
	* dbus/dbus-marshal-validate.c (_dbus_validate_body_with_reason):
	fix handling of case where p == end

	* doc/TODO: remove the dbus_bool_t item and variant alignment items

1261 1262 1263 1264 1265 1266 1267 1268
2005-01-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-types.h: hardcode dbus_bool_t to 32 bits

	* Throughout: modify DBUS_TYPE_BOOLEAN to be a 32-bit type instead
	of an 8-bit type. Now dbus_bool_t is the type to use whenever you 
	are marshaling/unmarshaling a boolean.

1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292
2005-01-16  Havoc Pennington  <hp@redhat.com>

        This is about it on what can be disabled/deleted from libdbus
	easily, back below 150K anyhow. Deeper cuts are more work than 
	just turning the code off as I've done here.
	
	* dbus/dbus-marshal-basic.c (_dbus_pack_int32): we don't need the
	signed int convenience funcs

	* dbus/dbus-internals.c (_dbus_verbose_real): omit when not in
	verbose mode

	* dbus/dbus-string-util.c, dbus/dbus-string.c: more breaking
	things out of libdbus

	* dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-util.c: same
	
	* dbus/dbus-hash.c: purge the TWO_STRINGS crap (well, make it
	tests-enabled-only, though it should probably be deleted)

	* dbus/dbus-message-util.c: same stuff

	* dbus/dbus-auth-util.c: same stuff

1293 1294 1295 1296 1297 1298 1299 1300
2005-01-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb-util.c: split out part of dbus-userdb.c

	* dbus/dbus-sysdeps.c (_dbus_uid_from_string): move here to pave
	way for stripping down dbus-userdb.c stuff included in libdbus.
	Rename _dbus_parse_uid for consistency.

1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324
2005-01-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.c (_dbus_real_assert): print the function
	name the assertion failed in

	* dbus/dbus-internals.h (_dbus_return_if_fail) 
	(_dbus_return_val_if_fail): assert that the name of the function
	containing the check doesn't start with '_', since we only want to 
	use checks on public functions
	
	* dbus/dbus-connection.c (_dbus_connection_ref_unlocked): change
	checks to assertions

	* dbus/dbus-marshal-header.c (_dbus_header_set_field_basic):
	change checks to asserts for private function

	* dbus/dbus-message.c (_dbus_message_set_serial): checks
	to asserts for private function

	* dbus/dbus-marshal-recursive.c (skip_one_complete_type): remove
	broken assertion that was breaking make check
	(_dbus_type_reader_array_is_empty): remove this rather than fix
	it, was only used in assertions

1325 1326 1327 1328 1329 1330 1331 1332 1333 1334
2005-01-16  Havoc Pennington  <hp@redhat.com>

	* test/unused-code-gc.py: hacky script to find code that's used
	only by the bus (not libdbus) or used only by tests or not used at
	all. It has some false alarms, but looks like we can clean up a
	lot of size from libdbus.

	* dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
	dbus/Makefile.am: initially move 10K of binary size out of libdbus
	
1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351
2005-01-16  Havoc Pennington  <hp@redhat.com>

        * Add and fix docs according to Doxygen warnings throughout
	source.
	
	* dbus/dbus-marshal-recursive.c
	(_dbus_type_reader_array_is_empty): change this to just call
	array_reader_get_array_len() and make it static

	* dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
	from get_array_type
	(dbus_message_iter_init_append): rename from append_iter_init

	* dbus/dbus-marshal-recursive.c
	(_dbus_type_reader_get_element_type): rename from
	_dbus_type_reader_get_array_type

1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366
2005-01-15  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c (with_bus_server_filter): fix crash

	* dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
	when DBUS_DISABLE_ASSERT
	(_dbus_marshal_set_basic): be sure we align for the string length

	* dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
	this look faster

	* dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
	inline macro version
	(_dbus_string_set_byte): provide inline macro version

1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425
2005-01-15  Havoc Pennington  <hp@redhat.com>

	* Land the new message args API and type system.

	This patch is huge, but the public API change is not 
	really large. The set of D-BUS types has changed somewhat, 
	and the arg "getters" are more geared toward language bindings;
	they don't make a copy, etc.

	There are also some known issues. See these emails for details
	on this huge patch:
	http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
        http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
	
	* dbus/dbus-marshal-*: all the new stuff

	* dbus/dbus-message.c: basically rewritten

	* dbus/dbus-memory.c (check_guards): with "guards" enabled, init
	freed blocks to be all non-nul bytes so using freed memory is less
	likely to work right

	* dbus/dbus-internals.c (_dbus_test_oom_handling): add
	DBUS_FAIL_MALLOC=N environment variable, so you can do
	DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
	DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
	thorough.

	* qt/message.cpp: port to the new message args API
	(operator<<): use str.utf8() rather than str.unicode()
	(pretty sure this is right from the Qt docs?)

	* glib/dbus-gvalue.c: port to the new message args API

	* bus/dispatch.c, bus/driver.c: port to the new message args API

	* dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
	"locked" flag to TRUE and align_offset to 0; I guess we never
	looked at these anyhow, but seems cleaner.

	* dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
	move allocation padding macro to this header; use it to implement
	(_DBUS_STRING_STATIC): ability to declare a static string.

	* dbus/dbus-message.c (_dbus_message_has_type_interface_member):
	change to return TRUE if the interface is not set.

	* dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
	to dbus-marshal-validate.[hc]

	* dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
	dbus-internals.c

	* dbus/Makefile.am: cut over from dbus-marshal.[hc]
	to dbus-marshal-*.[hc]

	* dbus/dbus-object-tree.c (_dbus_decompose_path): move this
	function here from dbus-marshal.c

1426 1427 1428 1429 1430 1431
2005-01-12  Joe Shaw  <joeshaw@novell.com>

	* NEWS: Update for 0.23.

	* configure.in: Release 0.23.

1432 1433
2005-01-12  Joe Shaw  <joeshaw@novell.com>

1434 1435 1436 1437
	* mono/Makefile.am, mono/example/Makefile.am: Always build the 
	dbus DLL with --debug.  Clean up after the .mdb files this leaves
	behind.

1438 1439 1440
	* mono/doc/Makefile.am: Need to uninstall the docs on "make
	uninstall"

1441 1442 1443 1444
	* mono/Arguments.cs (GetDBusTypeConstructor): If the type
	is an enum, get the enum's underlying type.  Another mono
	1.1.3 fix.

1445 1446 1447 1448 1449 1450 1451
2005-01-11  Joe Shaw  <joeshaw@novell.com>

	Patch from Sjoerd Simons <sjoerd@luon.net>

	* mono/Makefile.am, mono/example/Makefile.am: Don't redefine
	DESTDIR.  It breaks stuff.

1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463
2005-01-11  Joe Shaw  <joeshaw@novell.com>

	Patch from Tambet Ingo <tambet@ximian.com>

	* mono/DBusType/Array.cs (Get): Get the underlying element type by
	calling type.GetElementType().  The code previously depended on
	broken Mono behavior, which was fixed in Mono 1.1.3.

	* mono/DBusType/Dict.cs (constructor): Fix the parameters for
	Activator.CreateInstance() so that the class's constructor is
	called with the right parameters.

1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474
2005-01-11  Joe Shaw  <joeshaw@novell.com>

	Patch from Timo Teräs <ext-timo.teras@nokia.com>

	* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message_link): Call
	_dbus_connection_remove_timeout() instead of the _locked()
	variant, since it's always called from
	_dbus_connection_handle_watch(), which handles the locking.
	Removed the _locked() variant since it's no longer used.

1475 1476 1477 1478 1479
2005-01-03  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
	return
	
1480 1481 1482 1483
2004-12-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert

1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494
2005-01-03  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
	floating point

	* dbus/dbus-string.c (_dbus_string_insert_alignment): new function

2005-01-02  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro

1495 1496 1497 1498
2005-01-01  Havoc Pennington  <hp@redhat.com>

	* configure.in: add -Wfloat-equal

1499 1500 1501 1502 1503
2005-01-01  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
	for a variety of reasons '==' doesn't do this.

1504 1505 1506 1507 1508
2004-12-31  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_equal_substrings): new function
	I keep wishing I had

1509 1510 1511 1512
2004-12-30  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED

1513 1514 1515 1516 1517 1518 1519
2004-12-30  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
	and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
	dbus-protocol.h.  Because they are defines and not enums they are not
	autogenerated.

1520 1521 1522 1523 1524 1525 1526 1527
2004-12-26  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in (bus_activate_service): Bind
	dbus_bus_activate_service

	* python/dbus.py (Bus.activate_service): activate a service on the
	bus.

1528 1529 1530 1531 1532 1533 1534
2004-12-24  Havoc Pennington  <hp@redhat.com>

	* test/decode-gcov.c: change to use .gcno and .gcda files, but the
	file format has also changed and I haven't adapted to that yet
	
	* Makefile.am: load .gcno files from latest gcc

1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546
2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
	* Patch from Rob Taylor <robtaylor@fastmail.fm>

	* python/dbus_bindings.pyx.in (bus_get_unix_user): New
	lowlevel binding

	* python/dbus.py (get_unix_user): Added binding to 
	call dbus_bindings.bus_get_unix_user

	* python/extract.py: Modified the proto_pat regex to
	handle unsigned long

1547 1548 1549 1550 1551
2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
	better POSIX compliance.

1552 1553 1554 1555 1556 1557 1558
2004-12-19  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
	(_dbus_string_insert_8_aligned): new functions

	* dbus/dbus-string.c (_dbus_string_alloc_space): new function

1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570
2004-12-18  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
	macro

	* dbus/dbus-message.c: fix a comment, and add a still-unused
	not-implemented function

	* dbus/dbus-marshal.h: fix comment

	* dbus/dbus-internals.h (_DBUS_ISASCII): new macro

1571 1572 1573 1574 1575 1576 1577 1578 1579
2004-12-17  Joe Shaw  <joeshaw@novell.com>

	* mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
	mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
	mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
	Type.UnderlyingSystemType to get the actual system type
	underneath.  This code previously depended on the broken Mono
	behavior, which was fixed in 1.1.3.

1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591
2004-11-27  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
	are disabled
	(_dbus_string_get_const_data): inline when asserts are disabled

	* dbus/dbus-message.c: record the _dbus_current_generation of
	creation so we can complain if dbus_shutdown() is used improperly.
	Do this only if checks are enabled.

	* dbus/dbus-connection.c: ditto
	
1592 1593 1594 1595 1596 1597 1598 1599 1600 1601
2004-11-26  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: add with_bus mode to profile echoes
	that go through the bus.

	* test/glib/run-test.sh: add ability to run test-profile

	* bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
	config file reload.

1602 1603 1604 1605 1606
2004-11-26  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: clean up how the fake_malloc_overhead
	thing was implemented

1607 1608 1609 1610 1611 1612 1613
2004-11-26  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: tweak a bit, add support for some
	made-up minimal malloc overhead with plain sockets, since in 
	real life some sort of buffers are unavoidable thus we could 
	count them in the theoretical best case

1614 1615 1616 1617 1618
2004-11-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
	where I was trying to cache one too many messages

1619 1620 1621 1622 1623
2004-11-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c: reimplement message cache as an array which 
	makes the cache about twice as fast and saves maybe 1.5% overall

1624
2004-11-26  Havoc Pennington  <hp@redhat.com>
1625 1626 1627 1628 1629 1630

	* dbus/dbus-threads.c (init_global_locks): forgot to put the
	message cache lock here

2004-11-26  Havoc Pennington  <hp@redhat.com>

1631 1632 1633 1634 1635 1636 1637 1638 1639 1640
	* dbus/dbus-message.c (struct DBusMessage): put the locked bit and
	the "char byte_order" next to each other to save 4 bytes
	(dbus_message_new_empty_header): reduce preallocation, since the
	message cache should achieve a similar effect
	(dbus_message_cache_or_finalize, dbus_message_get_cached): add a
	message cache that keeps a few DBusMessage around in a pool,
	another 8% speedup or so.

	* dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function

1641 1642 1643 1644 1645 1646 1647
2004-11-25  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
	to write, without reading or blocking, try it before the poll()
	and skip the poll() if nothing remains to write. This is about a
	3% speedup in the echo client/server

1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710
2004-11-25  Havoc Pennington  <hp@redhat.com>

        The primary change here is to always write() once before adding
	the write watch, which gives us about a 10% performance increase.
	
	* dbus/dbus-transport-unix.c: a number of modifications to cope
	with removing messages_pending
	(check_write_watch): properly handle
	DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
	messages_pending stuff
	(check_read_watch): properly handle WAITING_FOR_MEMORY and
	AUTHENTICATED cases
	(unix_handle_watch): after writing, see if the write watch can be
	removed
	(unix_do_iteration): assert that write_watch/read_watch are
	non-NULL rather than testing that they aren't, since they 
	aren't allowed to be NULL. check_write_watch() at the end so 
	we add the watch if we did not finish writing (e.g. got EAGAIN)

	* dbus/dbus-transport-protected.h: remove messages_pending call,
	since it resulted in too much inefficient watch adding/removing; 
	instead we now require that the transport user does an iteration 
	after queueing outgoing messages, and after trying the first
	write() we add a write watch if we got EAGAIN or exceeded our 
	max bytes to write per iteration setting

	* dbus/dbus-string.c (_dbus_string_validate_signature): add this
	function

	* dbus/dbus-server-unix.c (unix_finalize): the socket name was
	freed and then accessed, valgrind flagged this bug, fix it

	* dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
	as the last valid field plus 1, where really it is equal to the
	last valid field. Corrects some message corruption issues.

	* dbus/dbus-mainloop.c: verbosity changes

	* dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
	instead of aborting in one of the test codepaths

	* dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
	caused not printing the pid ever again if a verbose was missing
	the newline at the end
	(_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE

	* dbus/dbus-connection.c: verbosity changes; 
	(dbus_connection_has_messages_to_send): new function
	(_dbus_connection_message_sent): no longer call transport->messages_pending
	(_dbus_connection_send_preallocated_unlocked): do one iteration to
	try to write() immediately, so we can avoid the write watch. This
	is the core purpose of this patchset
	(_dbus_connection_get_dispatch_status_unlocked): if disconnected,
	dump the outgoing message queue, so nobody will get confused
	trying to send them or thinking stuff is pending to be sent

	* bus/test.c: verbosity changes

	* bus/driver.c: verbosity/assertion changes

	* bus/dispatch.c: a bunch of little tweaks to get it working again
	because this patchset changes when/where you need to block.

1711 1712 1713 1714 1715 1716
2004-11-23  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: modify to accept a plain_sockets
	argument in which case it will bench plain sockets instead of
	libdbus, for comparison purposes.

1717 1718 1719 1720 1721 1722 1723 1724
2004-11-22  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
	threads for more time, so sysprof can get a grip on it.

	* dbus/dbus-string.c (_dbus_string_validate_utf8): remove
	pointless variable

1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748
2004-11-13  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: fix this thing up a bit

	* dbus/dbus-message.c (dbus_message_new_empty_header): increase
	preallocation sizes by a fair bit; not sure if this will be an
	overall performance win or not, but it does reduce reallocs.

	* dbus/dbus-string.c (set_length, reallocate_for_length): ignore
	the test hack that forced constant realloc if asserts are
	disabled, so we can profile sanely. Sprinkle in some
	_DBUS_UNLIKELY() which are probably pointless, but before I
	noticed the real performance problem I put them in.
	(_dbus_string_validate_utf8): micro-optimize this thing a little
	bit, though callgrind says it didn't help; then special-case
	ascii, which did help a lot; then be sure we detect nul bytes as
	invalid, which is a bugfix.
	(align_length_then_lengthen): add some more _DBUS_UNLIKELY
	superstition; use memset to nul the padding instead of a manual
	loop.
	(_dbus_string_get_length): inline this as a
	macro; it showed up in the profile because it's used for loop
	tests and so forth

1749 1750 1751 1752 1753
2004-11-10  Colin Walters  <walters@verbum.org>

	* dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
	for extra paranoia.

1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787
2004-11-09  Colin Walters  <walters@verbum.org>

	* dbus/dbus-string.c (_dbus_string_get_length): New
	function, writes DBusString to C buffer.

	* dbus/dbus-string.h: Prototype it.

	* dbus/dbus-message.c (dbus_message_type_to_string): New
	function, converts message type into C string.

	* dbus/dbus-message.h: Prototype it.

	* bus/selinux.c (bus_selinux_check): Take source pid,
	target pid, and audit data.  Pass audit data to
	avc_has_perm.
	(log_audit_callback): New function, appends extra
	audit information.
	(bus_selinux_allows_acquire_service): Also take
	service name, add it to audit data.
	(bus_selinux_allows_send): Also take message
	type, interface, method member, error name,
	and destination, and add them to audit data.
	(log_cb): Initialize func_audit.
	
	* bus/selinux.h (bus_selinux_allows_acquire_service)
	(bus_selinux_allows_send): Update prototypes 

	* bus/services.c (bus_registry_acquire_service): Pass
	service name to bus_selinux_allows_acquire_service.

	* bus/bus.c (bus_context_check_security_policy): Pass
	additional audit data.  Move assignment of dest
	to its own line.

1788 1789 1790 1791 1792
2004-11-07  Colin Walters  <walters@verbum.org>

	* dbus/dbus-transport-unix.c (do_authentication): Always
	initialize auth_completed.
	
1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833
2004-11-07  Colin Walters  <walters@verbum.org>

	* bus/bus.c (load_config): Break into three
	separate functions: process_config_first_time_only,
	process_config_every_time, and process_config_postinit.
	(process_config_every_time): Move call of
	bus_registry_set_service_context_table into
	process_config_postinit.
	(process_config_postinit): New function, does
	any processing that needs to happen late
	in initialization (and also on reload).
	(bus_context_new): Instead of calling load_config,
	open config parser here and call process_config_first_time_only
	and process_config_every_time directly.  Later, after
	we have forked but before changing UID,
	invoke bus_selinux_full_init, and then call
	process_config_postinit.
	(bus_context_reload_config): As in bus_context_new,
	load parse file inside here, and call process_config_every_time
	and process_config_postinit.

	* bus/services.h, bus/services.c
	(bus_registry_set_service_context_table): Rename
	from bus_registry_set_sid_table.  Take string hash from config
	parser, and convert them here into SIDs.

	* bus/config-parser.c (struct BusConfigParser): Have
	config parser only store a mapping of service->context
	string.
	(merge_service_context_hash): New function.
	(merge_included): Merge context string hashes instead
	of using bus_selinux_id_table_union.
	(bus_config_parser_new): Don't use bus_selinux_id_table_new;
	simply create a new string hash.
	(bus_config_parser_unref): Unref it