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 @@ ...@@ -7,7 +7,9 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/location.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/threading/thread_task_runner_handle.h"
#include "components/account_id/account_id.h" #include "components/account_id/account_id.h"
#include "dbus/bus.h" #include "dbus/bus.h"
#include "dbus/message.h" #include "dbus/message.h"
...@@ -69,7 +71,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient { ...@@ -69,7 +71,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient {
authpolicy::kJoinADDomainMethod); authpolicy::kJoinADDomainMethod);
dbus::MessageWriter writer(&method_call); dbus::MessageWriter writer(&method_call);
if (!writer.AppendProtoAsArrayOfBytes(request)) { 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; return;
} }
writer.AppendFileDescriptor(password_fd); writer.AppendFileDescriptor(password_fd);
...@@ -86,8 +91,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient { ...@@ -86,8 +91,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient {
authpolicy::kAuthenticateUserMethod); authpolicy::kAuthenticateUserMethod);
dbus::MessageWriter writer(&method_call); dbus::MessageWriter writer(&method_call);
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE, base::ThreadTaskRunnerHandle::Get()->PostTask(
authpolicy::ActiveDirectoryAccountInfo()); FROM_HERE,
base::BindOnce(std::move(callback), authpolicy::ERROR_DBUS_FAILURE,
authpolicy::ActiveDirectoryAccountInfo()));
return; return;
} }
writer.AppendFileDescriptor(password_fd); writer.AppendFileDescriptor(password_fd);
...@@ -104,8 +111,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient { ...@@ -104,8 +111,10 @@ class AuthPolicyClientImpl : public AuthPolicyClient {
authpolicy::kGetUserStatusMethod); authpolicy::kGetUserStatusMethod);
dbus::MessageWriter writer(&method_call); dbus::MessageWriter writer(&method_call);
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
std::move(callback).Run(authpolicy::ERROR_DBUS_FAILURE, base::ThreadTaskRunnerHandle::Get()->PostTask(
authpolicy::ActiveDirectoryUserStatus()); FROM_HERE,
base::BindOnce(std::move(callback), authpolicy::ERROR_DBUS_FAILURE,
authpolicy::ActiveDirectoryUserStatus()));
return; return;
} }
proxy_->CallMethod( proxy_->CallMethod(
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "chromeos/dbus/cicerone_client.h" #include "chromeos/dbus/cicerone_client.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/location.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "dbus/bus.h" #include "dbus/bus.h"
...@@ -64,7 +65,9 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -64,7 +65,9 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) LOG(ERROR)
<< "Failed to encode LaunchContainerApplicationRequest protobuf"; << "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; return;
} }
...@@ -87,7 +90,8 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -87,7 +90,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode ContainerAppIonRequest protobuf"; 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; return;
} }
...@@ -109,7 +113,8 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -109,7 +113,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode InstallLinuxPackageRequest protobuf"; 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; return;
} }
...@@ -130,7 +135,8 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -130,7 +135,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode CreateLxdContainerRequest protobuf"; 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; return;
} }
...@@ -152,7 +158,8 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -152,7 +158,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode StartLxdContainerRequest protobuf"; 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; return;
} }
...@@ -175,7 +182,8 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -175,7 +182,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode GetLxdContainerUsernameRequest protobuf"; 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; return;
} }
...@@ -197,7 +205,8 @@ class CiceroneClientImpl : public CiceroneClient { ...@@ -197,7 +205,8 @@ class CiceroneClientImpl : public CiceroneClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode SetUpLxdContainerUserRequest protobuf"; 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; return;
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <utility> #include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/location.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "dbus/bus.h" #include "dbus/bus.h"
...@@ -47,7 +48,8 @@ class ConciergeClientImpl : public ConciergeClient { ...@@ -47,7 +48,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode CreateDiskImageRequest protobuf"; 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; return;
} }
...@@ -68,7 +70,8 @@ class ConciergeClientImpl : public ConciergeClient { ...@@ -68,7 +70,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode DestroyDiskImageRequest protobuf"; 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; return;
} }
...@@ -88,7 +91,8 @@ class ConciergeClientImpl : public ConciergeClient { ...@@ -88,7 +91,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode ListVmDisksRequest protobuf"; 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; return;
} }
...@@ -108,7 +112,8 @@ class ConciergeClientImpl : public ConciergeClient { ...@@ -108,7 +112,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode StartVmRequest protobuf"; 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; return;
} }
...@@ -131,7 +136,8 @@ class ConciergeClientImpl : public ConciergeClient { ...@@ -131,7 +136,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode StopVmRequest protobuf"; 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; return;
} }
...@@ -159,7 +165,8 @@ class ConciergeClientImpl : public ConciergeClient { ...@@ -159,7 +165,8 @@ class ConciergeClientImpl : public ConciergeClient {
if (!writer.AppendProtoAsArrayOfBytes(request)) { if (!writer.AppendProtoAsArrayOfBytes(request)) {
LOG(ERROR) << "Failed to encode ContainerSshKeysRequest protobuf"; 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; 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