1 /*
2  *  Copyright 2009 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "webrtc/base/win32socketinit.h"
12 
13 #include "webrtc/base/win32.h"
14 
15 namespace rtc {
16 
17 // Please don't remove this function.
EnsureWinsockInit()18 void EnsureWinsockInit() {
19   // The default implementation uses a global initializer, so WSAStartup
20   // happens at module load time.  Thus we don't need to do anything here.
21   // The hook is provided so that a client that statically links with
22   // libjingle can override it, to provide its own initialization.
23 }
24 
25 #if defined(WEBRTC_WIN)
26 class WinsockInitializer {
27  public:
WinsockInitializer()28   WinsockInitializer() {
29     WSADATA wsaData;
30     WORD wVersionRequested = MAKEWORD(1, 0);
31     err_ = WSAStartup(wVersionRequested, &wsaData);
32   }
~WinsockInitializer()33   ~WinsockInitializer() {
34     if (!err_)
35       WSACleanup();
36   }
error()37   int error() {
38     return err_;
39   }
40  private:
41   int err_;
42 };
43 WinsockInitializer g_winsockinit;
44 #endif
45 
46 }  // namespace rtc
47