When quickfix is started(everything works on Windows), it creates pair client-server(TCP connection) on local machine. Everytime on random port. But after this it leaves alone hanging acceptor. So, if you will restart fix several times - you will get approrpriate opened tcp servers. Even more, any person, if it will know the port - can connect to this acceptor from another machine. We tried with telnet - it worked. We didn't try to do something more, but it's potential place for hack:).
So, can you explane - whta is this connection for? It is obvious, that you have to kill any resources, you opened during current session, so it's a bug. Actually, you're doing it with help of WSACleanup. But it doesn't work in my case. I refactored slightly - I'm closing acceptor socket explicity and it helped me.
As we checked out the code, the problem is here:
socket_createpair - in Utility.cpp. You create acceptor here, but then it exists forever until program will be terminated.
As we mentioned in another part of code, implementation for linux uses standart cernel function createsocketpair(or something like this), that doesn't create any accpetors after it. So the solution must be - to close acceptor after it was created. And create acceptor only for local connections - you can prevent yourself from connecting from another machines - use INADDR_LOOPBACK instead INADDR_ANY.
I'll appreciate any your help to make it clear for me, thank you.