After some tracing, I found that these points are probably related to the problem.
1.When use federation, one broker will connect to another, and once the connection is established, broker will send an INIT message for negotiation. 2.In linux version, all the network operations, including connect, read and write, are asynchronous. So the INIT message is sent in the connected callback called by the network IO worker threads. But in windows version, connect is implemented synchronously, thus the INIT message is not sent even if the connection is established, because no connected callback will be called. 3.When the connection is established, the link state should be set to Operational, but the precondition is that when LinkRegistry::notifyConnection is called, the Link object must be in the pendingLinks list. For the same reason as [2], in linux version it will be no problem because the Link object is put into the pendingLinks by the connecting thread and LinkRegistry::notifyConnection will be called later by the network IO worker threads. But in windows version, because of the synchronous connect operation, LinkRegistry::notifyConnection will be called by the connecting thread before the Link object is put into pendingLinks. So the link state will not be set to Operational. Therefore, I tried to modify the source code, add a temporary thread to do the connection and call AsynchIO::notifyPendingWrite (which will call the idle callback to send the INIT message) after the synchoronous connect operation succeeds. Now the federation works on windows when use tcp, but when use ssl it still doesn't work. It seems that ssl negotiation is more complex than tcp, and I have no time to read the source code yet. But my modification is only a temporary solution because I didn't add any asynchronous connecting function to the IocpPoller, and if the correct modification is made, AsynchIO::notifyPendingWrite (or the idle callback) should be called automatically, I think. So, at the end, is there anyone who did test the federation functions on windows? Or the federation is not designed to work on windows yet? Or should I contact the developers' mailing list to ask this question? ;) Regards, Lei Dai