Module: Groat::SMTPD::Extensions::Pipelining

Defined in:
lib/groat/smtpd/extensions/pipelining.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/groat/smtpd/extensions/pipelining.rb', line 30

def self.included(klass)
  puts "Included RFC 2920: Pipelining"
  klass.after_all_verbs do |verb|
    puts "After #{verb}"
    @pipelinable = false
  end
  klass.before_verb :rset, :pipelinable
  klass.before_verb :mail, :pipelinable
  klass.before_verb :send, :pipelinable
  klass.before_verb :soml, :pipelinable
  klass.before_verb :saml, :pipelinable
  klass.before_verb :rcpt, :pipelinable
  super
end

Instance Method Details

#check_command_groupObject



49
50
51
52
53
54
55
# File 'lib/groat/smtpd/extensions/pipelining.rb', line 49

def check_command_group
  if not esmtp? or not @pipelinable
    if clientdata?
      response_bad_sequence
    end
  end
end

#pipelinableObject



45
46
47
# File 'lib/groat/smtpd/extensions/pipelining.rb', line 45

def pipelinable
  @pipelinable = true
end

#reset_connectionObject



25
26
27
28
# File 'lib/groat/smtpd/extensions/pipelining.rb', line 25

def reset_connection
  @pipelinable = false
  super
end