def reput(msg)

      if doc = msg['doc']

        r = @storage.put(doc)

        return unless r.is_a?(Hash)

        doc['_rev'] = r['_rev']

        reput(msg)

      elsif msg = msg['msg']

        @storage.put_msg(msg['action'], msg)
      end
    end
def reput(msg)

      if doc = msg['doc']

        r = @storage.put(doc)

        return unless r.is_a?(Hash)

        doc['_rev'] = r['_rev']

        reput(msg)

      elsif msg = msg['msg']

        @storage.put_msg(msg['action'], msg)
      end
    end
Reputs a doc or a msg.

 Used by certain storage implementations to pass documents around workers
 or to reschedule msgs (see ruote-swf).