Index: dbus/object_proxy.cc |
diff --git a/dbus/object_proxy.cc b/dbus/object_proxy.cc |
index 5167cab76035ee50ec7a9f49082e9a6656f76513..d0b660b600dbc368fc28e4804d905cc5b90e6198 100644 |
--- a/dbus/object_proxy.cc |
+++ b/dbus/object_proxy.cc |
@@ -24,6 +24,7 @@ namespace dbus { |
namespace { |
const char kErrorServiceUnknown[] = "org.freedesktop.DBus.Error.ServiceUnknown"; |
+const char kErrorObjectUnknown[] = "org.freedesktop.DBus.Error.UnknownObject"; |
// Used for success ratio histograms. 1 for success, 0 for failure. |
const int kSuccessRatioHistogramMaxValue = 2; |
@@ -561,12 +562,20 @@ void ObjectProxy::LogMethodCallFailure( |
const base::StringPiece& method_name, |
const base::StringPiece& error_name, |
const base::StringPiece& error_message) const { |
- if (ignore_service_unknown_errors_ && error_name == kErrorServiceUnknown) |
+ if (ignore_service_unknown_errors_ && |
+ (error_name == kErrorServiceUnknown || error_name == kErrorObjectUnknown)) |
return; |
- LOG(ERROR) << "Failed to call method: " |
- << interface_name << "." << method_name |
- << ": object_path= " << object_path_.value() |
- << ": " << error_name << ": " << error_message; |
+ logging::LogSeverity severity = logging::LOG_ERROR; |
+ // "UnknownObject" indicates that an object or service is no longer available, |
+ // e.g. a Shill network service has gone out of range. Treat these as warnings |
+ // not errors. |
+ if (error_name == kErrorObjectUnknown) |
+ severity = logging::LOG_WARNING; |
+ std::ostringstream msg; |
+ msg << "Failed to call method: " << interface_name << "." << method_name |
+ << ": object_path= " << object_path_.value() |
+ << ": " << error_name << ": " << error_message; |
+ logging::LogAtLevel(severity, msg.str()); |
} |
void ObjectProxy::OnCallMethodError(const std::string& interface_name, |