diff --git a/lib/rpc.py b/lib/rpc.py
index 61895d56304be0ef954784648bee61c3260bd5a5..8701945ab9b958bd875aa1b5d6a6e76683b0c3a1 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -97,6 +97,7 @@ class RpcResult(object):
     self.offline = offline
     self.call = call
     self.node = node
+
     if offline:
       self.fail_msg = "Node is marked offline"
       self.data = self.payload = None
@@ -108,16 +109,26 @@ class RpcResult(object):
       if not isinstance(self.data, (tuple, list)):
         self.fail_msg = ("RPC layer error: invalid result type (%s)" %
                          type(self.data))
+        self.payload = None
       elif len(data) != 2:
         self.fail_msg = ("RPC layer error: invalid result length (%d), "
                          "expected 2" % len(self.data))
+        self.payload = None
       elif not self.data[0]:
         self.fail_msg = self._EnsureErr(self.data[1])
+        self.payload = None
       else:
         # finally success
         self.fail_msg = None
         self.payload = data[1]
 
+    assert hasattr(self, "call")
+    assert hasattr(self, "data")
+    assert hasattr(self, "fail_msg")
+    assert hasattr(self, "node")
+    assert hasattr(self, "offline")
+    assert hasattr(self, "payload")
+
   @staticmethod
   def _EnsureErr(val):
     """Helper to ensure we return a 'True' value for error."""