@@ -77,14 +77,17 @@ static void confirm_response(const char *input, void *user_data)
{
DBusConnection *conn = user_data;
- if (!strcmp(input, "yes"))
- g_dbus_send_reply(conn, pending_message, DBUS_TYPE_INVALID);
- else if (!strcmp(input, "no"))
- g_dbus_send_error(conn, pending_message,
+ if (pending_message != NULL) {
+ if (!strcmp(input, "yes"))
+ g_dbus_send_reply(conn, pending_message,
+ DBUS_TYPE_INVALID);
+ else if (!strcmp(input, "no"))
+ g_dbus_send_error(conn, pending_message,
"org.bluez.Error.Rejected", NULL);
- else
- g_dbus_send_error(conn, pending_message,
+ else
+ g_dbus_send_error(conn, pending_message,
"org.bluez.Error.Canceled", NULL);
+ }
}
static void agent_release(DBusConnection *conn)
@@ -849,10 +849,16 @@ static void prompt_input(const char *input, void *user_data)
&prompt.addr);
break;
case MGMT_EV_USER_CONFIRM_REQUEST:
- if (input[0] == 'y' || input[0] == 'Y')
- mgmt_confirm_reply(prompt.index, &prompt.addr);
- else
+ if (len) {
+ if (input[0] == 'y' || input[0] == 'Y')
+ mgmt_confirm_reply(prompt.index, &prompt.addr);
+ else
+ mgmt_confirm_neg_reply(prompt.index,
+ &prompt.addr);
+ } else {
mgmt_confirm_neg_reply(prompt.index, &prompt.addr);
+ bt_shell_set_prompt(PROMPT_ON);
+ }
break;
}
}