On 9/28/2012 12:44 PM, Jack Bates wrote:
On 9/28/2012 11:37 AM, Jack Bates wrote:
On 9/27/2012 3:30 PM, Jack Bates wrote:
Version: 2.1.9
Connecting directly to the proxy server on the LMTP port, issue lhlo, mail from, rcpt to, data. After the . closing of data, it just hangs there. The logs on the proxy server show:
Further testing shows that the connection fails are normally handled after the DATA block. It works perfectly if you only fail one recipient. If all recipients are failed, the code locks up instead of telling the client that they are all failed.
Now to find out where between lmtp_client_fail() and some other part of the code, we aren't treating it right. :(
It appears that the callbacks for the proxy connections are handled in the ioloop stuff. If you have at least one valid proxy session open, then proxy_try_finish will get called and all the replies are sent. The problem appears to be if all backend proxy sessions are bad (ie single recipient, proxy server down), there is nothing for ioloop to callback to. proxy_try_finish will never get called, and we end up locking up at epoll_wait as there are no events for us to process.
Code needs to be written to handle the special case of us not having any proxy callbacks as they are all bad.
Jack