Details
Description
The CIP Class 3 client sends ForwardOpen/ForwardClose over UCMM with a fixed three seconds timeout.
If the timeout hits, because there is no response in the CIP layer, the opening fails, but the class 3 connection object remains allocated and in state "waiting for forward open response" until the underlying TCP stream closes or the server finally decides to send us a response (in the latter case we crashed/asserted because the callback was gone). That's odd.
We should rather free the class 3 connection object in such cases and also close the underlying TCP stream (in case we are the last CL3 connection on that stream).