396: def process_data_line ln
397: if ln == "."
398: if @databuffer.length > 0
399: receive_data_chunk @databuffer
400: @databuffer.clear
401: end
402:
403:
404: succeeded = proc {
405: send_data "250 Message accepted\r\n"
406: }
407: failed = proc {
408: send_data "550 Message rejected\r\n"
409: }
410:
411: d = receive_message
412:
413: if d.respond_to?(:set_deferred_status)
414: d.callback &succeeded
415: d.errback &failed
416: else
417: (d ? succeeded : failed).call
418: end
419:
420: @state.delete :data
421: else
422:
423: ln.slice!(0...1) if ln[0] == 46
424: @databuffer << ln
425: if @databuffer.length > @@parms[:chunksize]
426: receive_data_chunk @databuffer
427: @databuffer.clear
428: end
429: end
430: end