Commit 3038335

mokha <mokha@cisco.com>
2019-03-03 20:07:27
process mail using a loop.
1 parent ed4fa5c
Changed files (1)
lib
lib/minbox/client.rb
@@ -10,18 +10,10 @@ module Minbox
 
     def mail_message
       socket.puts "220"
-
-      line = socket.gets
-      process(line, socket)
-
-      line = socket.gets
-      until line.start_with?("DATA")
+      while (line = socket.gets)
         process(line, socket)
-        line = socket.gets
       end
-      process(line, socket)
       socket.close
-
       Mail.new(mail[:body].join)
     end
 
@@ -34,6 +26,7 @@ module Minbox
       when /^MAIL FROM/i then mail_from(line, socket)
       when /^RCPT TO/i then rcpt_to(line, socket)
       when /^DATA/i then data(line, socket)
+      when /^QUIT/i then quit(line, socket)
       else
         puts "***" * 10
         puts line.inspect
@@ -42,6 +35,10 @@ module Minbox
       end
     end
 
+    def quit(line, socket)
+      socket.puts "221 Bye"
+    end
+
     def data(line, socket)
       socket.puts "354 End data with <CR><LF>.<CR><LF>"
       line = socket.gets
@@ -50,7 +47,7 @@ module Minbox
         line = socket.gets
       end
       socket.puts "250 OK"
-      socket.puts "221 Bye"
+      quit(line, socket)
     end
 
     def rcpt_to(line, socket)