377: def process_rcpt_to rcpt
378: unless @state.include?(:mail_from)
379: send_data "503 MAIL is required before RCPT\r\n"
380: else
381: succeeded = proc {
382: send_data "250 Ok\r\n"
383: @state << :rcpt unless @state.include?(:rcpt)
384: }
385: failed = proc {
386: send_data "550 recipient is unacceptable\r\n"
387: }
388:
389: d = receive_recipient rcpt
390:
391: if d.respond_to?(:set_deferred_status)
392: d.callback(&succeeded)
393: d.errback(&failed)
394: else
395: (d ? succeeded : failed).call
396: end
397:
398: ??
399: end
400: end