Commit 33b46183 authored by Joel Hockey's avatar Joel Hockey Committed by Commit Bot

Fix D-Bus client proto serialization error handling to be async

Change-Id: I8f26e68d3043f0d6efe3a474ecebaa7ca738f143
Reviewed-on: https://chromium-review.googlesource.com/1200422
Commit-Queue: Joel Hockey <joelhockey@chromium.org>
Reviewed-by: default avatarDan Erat <derat@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588282}
parent ad5b9761
......@@ -7,7 +7,9 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/location.h"
#include "base/memory/weak_ptr.h"
#include "base/threading/thread_task_runner_handle.h"
#include "components/account_id/account_id.h"
#include "dbus/bus.h"
#include "dbus/message.h"
......@@ -69,7 +71,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient {
authpolicy::kJoinADDomainMethod);
dbus::MessageWriter writer(&method_call);
if (!writer.AppendProtoAsArrayOfBytes(request)) {
std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE, std::string());
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback), authpolicy::ERROR_DBUS_FAILURE,
std::string()));
return;
}
writer.AppendFileDescriptor(password_fd);
......@@ -86,8 +91,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient {
authpolicy::kAuthenticateUserMethod);
dbus::MessageWriter writer(&method_call);
if (!writer.AppendProtoAsArrayOfBytes(request)) {
std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE,
authpolicy::ActiveDirectoryAccountInfo());
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback), authpolicy::ERROR_DBUS_FAILURE,
authpolicy::ActiveDirectoryAccountInfo()));
return;
}
writer.AppendFileDescriptor(password_fd);
......@@ -104,8 +111,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient {
authpolicy::kGetUserStatusMethod);
dbus::MessageWriter writer(&method_call);
if (!writer.AppendProtoAsArrayOfBytes(request)) {
std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE,
authpolicy::ActiveDirectoryUserStatus());
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback), authpolicy::ERROR_DBUS_FAILURE,
authpolicy::ActiveDirectoryUserStatus()));
return;
}
proxy_->CallMethod(
......
......@@ -5,6 +5,7 @@
#include "chromeos/dbus/cicerone_client.h"
#include "base/bind.h"
#include "base/location.h"
#include "base/observer_list.h"
#include "base/threading/thread_task_runner_handle.h"
#include "dbus/bus.h"
......@@ -64,7 +65,9 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR)
<< "Failed to encode LaunchContainerApplicationRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -87,7 +90,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode ContainerAppIonRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -109,7 +113,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode InstallLinuxPackageRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -130,7 +135,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode CreateLxdContainerRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -152,7 +158,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode StartLxdContainerRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -175,7 +182,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode GetLxdContainerUsernameRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -197,7 +205,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode SetUpLxdContainerUserRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......
......@@ -8,6 +8,7 @@
#include <utility>
#include "base/bind.h"
#include "base/location.h"
#include "base/observer_list.h"
#include "base/threading/thread_task_runner_handle.h"
#include "dbus/bus.h"
......@@ -47,7 +48,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode CreateDiskImageRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -68,7 +70,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode DestroyDiskImageRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -88,7 +91,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode ListVmDisksRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -108,7 +112,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode StartVmRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -131,7 +136,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode StopVmRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......@@ -159,7 +165,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode ContainerSshKeysRequest protobuf";
std::move(callback).Run(base::nullopt);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), base::nullopt));
return;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment