Fixed "ftpReadTransferDone: Got code 426 after reading data" SEGV
Whenever ftpReadTransferDone got an unexpected status code, it would
also SEGV. It happened because the FtpStateData object was destroyed
in the middle of the dataRead method, just before the final call to
processReplyBody.
A workaround seems to be to call scheduleReadControlReply with
buffered_ok=0 so that the object isn't destroyed within the
same call sequence.
I was tempted to put a return after the dataComplete call in
ftpReadTransferDone so that we won't call processReplyBody
when len == 0, but I'm concerned that may break things when ICAP
is in use.