Reported by Wolf Wolfswinkel on Qpid users http://qpid.2158936.n2.nabble.com/Heartbeats-in-C-broker-on-Windows-td7118702.html 22-Dec-2011
The simplest test case is in attached main.cpp. Establish a good network connection to the broker and then start the program. It creates a connection, sends two messages, and then pauses for 15 seconds. During the pause disconnect the network connection to the broker for at least two heartbeat timeouts (12 seconds).
After the heartbeat timeout the timer task fires and a debug trace shows:
Traffic timeout, TCPConnector::abort, TCPConnector::eof, TCPConnector::close
But the connection is not actually closed until something happens on the network to wake up the thread waiting in Poller::run().
The timer event appears unable to interrupt the IO thread waiting for the completion port.