# File lib/mcollective/message.rb, line 179
    def decode!
      raise "Cannot decode message type #{type}" unless [:request, :reply].include?(type)

      @payload = PluginManager["security_plugin"].decodemsg(self)

      if type == :request
        raise 'callerid in request is not valid, surpressing reply to potentially forged request' unless PluginManager["security_plugin"].valid_callerid?(payload[:callerid])
      end

      [:collective, :agent, :filter, :requestid, :ttl, :msgtime].each do |prop|
        instance_variable_set("@#{prop}", payload[prop]) if payload.include?(prop)
      end
    end