I've made an attempt to fix the root problem, which is the change in behavior to ipAddrToAsciiEngine::release(). Instead of a singleton, the engine is now a lightweight struct which exists only to track transaction ownership. release() should now have the side-effect of canceling all pending or in-progress transactions created through that engine instance.
I've made an attempt to fix the root problem, which is the change in behavior to ipAddrToAsciiEn gine::release( ). Instead of a singleton, the engine is now a lightweight struct which exists only to track transaction ownership. release() should now have the side-effect of canceling all pending or in-progress transactions created through that engine instance.