FATAL: Dying from an exception handling failure;
exception: [no active exception]
Converting `this` to CbcPointer in a constructor of an abstract class
like Ftp::Client does not work because our virtual toCbdata() method
remains pure until the final/child class constructor runs.
Conceptually, the bug was probably introduced in 2013 commit
434a79b,
when FTP class hierarchy grew, making Ftp::Client an abstract class, but
the trigger was recent commit
337b9aa that removed CBDATA_CLASS() from
Ftp::Client class declaration. We discovered, described, and addressed
several such bugs in that commit, but we missed this case.
/// FTP client functionality shared among FTP Gateway and Relay clients.
class Client: public ::Client
{
+ CBDATA_INTERMEDIATE();
+
public:
explicit Client(FwdState *fwdState);
~Client() override;