Bug #9125
closedNet::SMTP - invalid method raised when attempting to connect using STARTTLS
Description
Simple attempt (in irb):
require 'net/smtp'
smtp = Net::SMTP.new('server', 587)
mtp.enable_starttls()
smtp.start()
NoMethodError: undefined method success?' for "200 dummy reply code":String from /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:949:in
check_response'
from /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:554:in do_start' from /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:525:in
start'
from (irb):9
from /usr/local/rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `'
The problem is with the critical() method, the method returns the "dummy response" if there already was a pending error.
The fix is to replace the line of:
return '200 dummy reply code' if @error_occured
to
return Response.parse('200 dummy reply code') if @error_occured
Alternatively, one can have a "canned" dummy response instance, but that may be unnecessary considering this only happens in error path.