lib/moped/protocol/reply.rb in moped-1.4.4 vs lib/moped/protocol/reply.rb in moped-1.4.5

- old
+ new

@@ -66,11 +66,11 @@ # @return [ true, false ] If the command failed. # # @since 1.2.10 def command_failure? result = documents[0] - result["ok"] != 1 || result["err"] || result["errmsg"] || result["$err"] + result["ok"] != 1 || error_message(result) end # Was the provided cursor id not found on the server? # # @example Is the cursor not on the server? @@ -108,11 +108,15 @@ # @return [ true, false ] If we had an authorization error. # # @since 1.2.10 def unauthorized? result = documents[0] - result && (UNAUTHORIZED.include?(result["code"]) || UNAUTHORIZED.include?(result["assertionCode"])) + return false if result.nil? + err = error_message(result) + UNAUTHORIZED.include?(result["code"]) || + UNAUTHORIZED.include?(result["assertionCode"]) || + (err && err =~ /unauthorized/) end class << self # Consumes a buffer, returning the deserialized Reply message. @@ -137,15 +141,17 @@ private def deserialize_documents(buffer) documents = [] - count.times do documents << BSON::Document.deserialize(buffer) end - @documents = documents + end + + def error_message(result) + result["err"] || result["errmsg"] || result["$err"] end end end end