# File lib/rfilter/delivery_agent.rb, line 288def process(input, logfile)
begin
lda = RFilter::DeliveryAgent.new(input, logfile)
yield lda
lda.defer("finished without a final delivery")
rescue Exception => exception
if exception.class <= DeliveryComplete
raise exception
elsebegin
lda.log(0, "uncaught exception: " + exception.inspect)
lda.log(0, "uncaught exception backtrace:\n " +
exception.backtrace.join("\n "))
lda.defer("uncaught exception")
rescue Exception
if $!.class <= DeliveryComplete
# The lda.defer above will generate this, just re-raise# the delivery status exception.
raise
else# Any errors logging in the uncaught exception and we# just re-raise the original exception
raise exception
endendendendend