--- /dev/null
+--- bluez-utils-2.15/hcid/dbus.c.new_dbus_api 2005-03-08 15:43:44.890267000 -0500
++++ bluez-utils-2.15/hcid/dbus.c 2005-03-08 16:38:37.361500000 -0500
+@@ -72,7 +72,7 @@
+ size_t len;
+ char *pin;
+
+- message = dbus_pending_call_get_reply(call);
++ message = dbus_pending_call_steal_reply(call);
+
+ if (dbus_message_is_error(message, WRONG_ARGS_ERROR))
+ goto error;
+@@ -83,7 +83,7 @@
+ if (type != DBUS_TYPE_STRING)
+ goto error;
+
+- pin = dbus_message_iter_get_string(&iter);
++ dbus_message_iter_get_basic(&iter, &pin);
+ len = strlen(pin);
+
+ memset(&pr, 0, sizeof(pr));
+@@ -93,6 +93,7 @@
+ hci_send_cmd(req->dev, OGF_LINK_CTL, OCF_PIN_CODE_REPLY,
+ PIN_CODE_REPLY_CP_SIZE, &pr);
+
++ dbus_message_unref (message);
+ return;
+
+ error:
+@@ -127,11 +128,7 @@
+ req->dev = dev;
+ bacpy(&req->bda, &ci->bdaddr);
+
+- dbus_message_append_iter_init(message, &iter);
+-
+- dbus_message_iter_append_boolean(&iter, ci->out);
+- dbus_message_iter_append_byte_array(&iter,
+- (unsigned char *) &ci->bdaddr, sizeof(ci->bdaddr));
++ dbus_message_append_args(message, &iter, DBUS_TYPE_BOOLEAN, &ci->out, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &ci->bdaddr, sizeof(bdaddr_t), DBUS_TYPE_INVALID);
+
+ if (dbus_connection_send_with_reply(connection, message,
+ &pending, TIMEOUT) == FALSE) {
--- /dev/null
+--- bluez-utils-2.15/hcid/main.c~ 2005-02-01 00:13:02.000000000 +0000
++++ bluez-utils-2.15/hcid/main.c 2005-03-03 15:44:56.000000000 +0000
+@@ -573,7 +573,6 @@ int main(int argc, char *argv[], char *e
+ #ifdef ENABLE_DBUS
+ if (hcid_dbus_init() == FALSE && hcid.dbus_pin_helper) {
+ syslog(LOG_ERR, "Unable to get on D-BUS");
+- exit(1);
+ }
+ #else
+ if (hcid.dbus_pin_helper) {
+--- bluez-utils-2.15/hcid/dbus.c~ 2005-02-01 00:13:02.000000000 +0000
++++ bluez-utils-2.15/hcid/dbus.c 2005-03-03 15:38:53.000000000 +0000
+@@ -113,6 +113,9 @@ void hcid_dbus_request_pin(int dev, stru
+ DBusPendingCall *pending = NULL;
+ struct pin_request *req;
+
++ if (!connection && !hcid_dbus_init())
++ goto failed;
++
+ message = dbus_message_new_method_call(SERVICE_NAME, PATH_NAME,
+ INTERFACE_NAME, REQUEST_NAME);
+ if (message == NULL) {