         # File lib/protocols/smtpserver.rb, line 431
    431:                 def process_data_line ln
    432:                         if ln == "."
    433:                                 if @databuffer.length > 0
    434:                                         receive_data_chunk @databuffer
    435:                                         @databuffer.clear
    436:                                 end
    437:
    438:
    439:                                 succeeded = proc {
    440:                                         send_data "250 Message accepted\r\n"
    441:                                 }
    442:                                 failed = proc {
    443:                                         send_data "550 Message rejected\r\n"
    444:                                 }
    445:
    446:                                 d = receive_message
    447:
    448:                                 if d.respond_to?(:set_deferred_status)
    449:                                         d.callback(&succeeded)
    450:                                         d.errback(&failed)
    451:                                 else
    452:                                         (d ? succeeded : failed).call
    453:                                 end
    454:
    455:                                 @state.delete :data
    456:                         else
    457:                                 # slice off leading . if any
    458:                                 ln.slice!(0...1) if ln[0] == 46
    459:                                 @databuffer << ln
    460:                                 if @databuffer.length > @@parms[:chunksize]
    461:                                         receive_data_chunk @databuffer
    462:                                         @databuffer.clear
    463:                                 end
    464:                         end
    465:                 end