WSAStartup() needs to be called before using winsock2 related functions. We need this for almost all the utilities. So call it through OVS_CONSTRUCTOR.
Signed-off-by: Gurucharan Shetty <gshe...@nicira.com> --- lib/stream.c | 29 ----------------------------- lib/util.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/lib/stream.c b/lib/stream.c index 55632fe..4e512da 100644 --- a/lib/stream.c +++ b/lib/stream.c @@ -75,27 +75,6 @@ static const struct pstream_class *pstream_classes[] = { #endif }; -#ifdef _WIN32 -static void -do_winsock_start(void) -{ - WSADATA wsaData; - int error; - - error = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (error != 0) { - VLOG_FATAL("WSAStartup failed: %s", sock_strerror(sock_errno())); - } -} - -static void -winsock_start(void) -{ - static pthread_once_t once = PTHREAD_ONCE_INIT; - pthread_once(&once, do_winsock_start); -} -#endif - /* Check the validity of the stream class structures. */ static void check_stream_classes(void) @@ -234,10 +213,6 @@ stream_open(const char *name, struct stream **streamp, uint8_t dscp) COVERAGE_INC(stream_open); -#ifdef _WIN32 - winsock_start(); -#endif - /* Look up the class. */ error = stream_lookup_class(name, &class); if (!class) { @@ -528,10 +503,6 @@ pstream_open(const char *name, struct pstream **pstreamp, uint8_t dscp) COVERAGE_INC(pstream_open); -#ifdef _WIN32 - winsock_start(); -#endif - /* Look up the class. */ error = pstream_lookup_class(name, &class); if (!class) { diff --git a/lib/util.c b/lib/util.c index 74dc889..830cf4f 100644 --- a/lib/util.c +++ b/lib/util.c @@ -32,6 +32,7 @@ #include "coverage.h" #include "ovs-rcu.h" #include "ovs-thread.h" +#include "socket-util.h" #include "vlog.h" #ifdef HAVE_PTHREAD_SET_NAME_NP #include <pthread_np.h> @@ -1803,4 +1804,14 @@ ftruncate(int fd, off_t length) } return 0; } + +OVS_CONSTRUCTOR(winsock_start) { + WSADATA wsaData; + int error; + + error = WSAStartup(MAKEWORD(2, 2), &wsaData); + if (error != 0) { + VLOG_FATAL("WSAStartup failed: %s", sock_strerror(sock_errno())); + } +} #endif -- 1.7.9.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev