Merge "Reflect changes to libweave in weaved"
diff --git a/buffet/manager.cc b/buffet/manager.cc
index f5874f4..d5caf0c 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -89,7 +89,7 @@
 
   device_->Start(options, config_.get(), task_runner_.get(), http_client_.get(),
                  network_client_.get(), mdns_client_.get(),
-                 web_serv_client_.get());
+                 web_serv_client_.get(), nullptr);
 
   command_dispatcher_.reset(new DBusCommandDispacher{
       dbus_object_.GetObjectManager(), device_->GetCommands()});
diff --git a/buffet/socket_stream.cc b/buffet/socket_stream.cc
index 7941a92..9ce56bf 100644
--- a/buffet/socket_stream.cc
+++ b/buffet/socket_stream.cc
@@ -12,6 +12,7 @@
 
 #include <base/bind.h>
 #include <base/files/file_util.h>
+#include <base/message_loop/message_loop.h>
 #include <chromeos/streams/file_stream.h>
 #include <chromeos/streams/tls_stream.h>
 
@@ -68,35 +69,35 @@
 
 }  // namespace
 
-bool SocketStream::ReadAsync(
+void SocketStream::ReadAsync(
     void* buffer,
     size_t size_to_read,
     const base::Callback<void(size_t)>& success_callback,
-    const base::Callback<void(const weave::Error*)>& error_callback,
-    weave::ErrorPtr* error) {
+    const base::Callback<void(const weave::Error*)>& error_callback) {
   chromeos::ErrorPtr chromeos_error;
   if (!ptr_->ReadAsync(buffer, size_to_read, success_callback,
                        base::Bind(&OnError, error_callback), &chromeos_error)) {
-    ConvertError(*chromeos_error, error);
-    return false;
+    weave::ErrorPtr error;
+    ConvertError(*chromeos_error, &error);
+    base::MessageLoop::current()->PostTask(
+        FROM_HERE, base::Bind(error_callback, base::Owned(error.release())));
   }
-  return true;
 }
 
-bool SocketStream::WriteAllAsync(
+void SocketStream::WriteAllAsync(
     const void* buffer,
     size_t size_to_write,
     const base::Closure& success_callback,
-    const base::Callback<void(const weave::Error*)>& error_callback,
-    weave::ErrorPtr* error) {
+    const base::Callback<void(const weave::Error*)>& error_callback) {
   chromeos::ErrorPtr chromeos_error;
   if (!ptr_->WriteAllAsync(buffer, size_to_write, success_callback,
                            base::Bind(&OnError, error_callback),
                            &chromeos_error)) {
-    ConvertError(*chromeos_error, error);
-    return false;
+    weave::ErrorPtr error;
+    ConvertError(*chromeos_error, &error);
+    base::MessageLoop::current()->PostTask(
+        FROM_HERE, base::Bind(error_callback, base::Owned(error.release())));
   }
-  return true;
 }
 
 void SocketStream::CancelPendingAsyncOperations() {
diff --git a/buffet/socket_stream.h b/buffet/socket_stream.h
index 9574a1a..757190c 100644
--- a/buffet/socket_stream.h
+++ b/buffet/socket_stream.h
@@ -20,19 +20,17 @@
 
   ~SocketStream() override = default;
 
-  bool ReadAsync(
+  void ReadAsync(
       void* buffer,
       size_t size_to_read,
       const base::Callback<void(size_t)>& success_callback,
-      const base::Callback<void(const weave::Error*)>& error_callback,
-      weave::ErrorPtr* error) override;
+      const base::Callback<void(const weave::Error*)>& error_callback) override;
 
-  bool WriteAllAsync(
+  void WriteAllAsync(
       const void* buffer,
       size_t size_to_write,
       const base::Closure& success_callback,
-      const base::Callback<void(const weave::Error*)>& error_callback,
-      weave::ErrorPtr* error) override;
+      const base::Callback<void(const weave::Error*)>& error_callback) override;
 
   void CancelPendingAsyncOperations() override;