Scott Finley writes:
I have found what appears to be a bug in ASIO. From boost/asio/detail/socket_select_interrupter.hpp, starting on line 53:
sockaddr_in4_type addr; socket_addr_len_type addr_len = sizeof(addr); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr("127.0.0.1"); addr.sin_port = 0; if (socket_ops::bind(acceptor.get(), (const socket_addr_type*)&addr, addr_len, ec) == socket_error_retval) { boost::system::system_error e(ec, "socket_select_interrupter"); boost::throw_exception(e); }
addr needs to be cleared before it is used. The failure to do this caused the bind call to fail for me on VxWorks 6.4.
I know nothing at all about VxWorks so please excuse my ignorance. Does VxWorks have a POSIX programming interface or is it based on Win32? The socket_select_interrupter class is only intended for Win32. POSIX implementations are supposed to use pipe_select_interrupter instead. Cheers, Chris