OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
| 10 #include "webrtc/base/physicalsocketserver.h" |
10 | 11 |
11 #if defined(_MSC_VER) && _MSC_VER < 1300 | 12 #if defined(_MSC_VER) && _MSC_VER < 1300 |
12 #pragma warning(disable:4786) | 13 #pragma warning(disable:4786) |
13 #endif | 14 #endif |
14 | 15 |
15 #include <assert.h> | 16 #include <assert.h> |
16 | 17 |
17 #ifdef MEMORY_SANITIZER | 18 #ifdef MEMORY_SANITIZER |
18 #include <sanitizer/msan_interface.h> | 19 #include <sanitizer/msan_interface.h> |
19 #endif | 20 #endif |
(...skipping 17 matching lines...) Expand all Loading... |
37 #endif | 38 #endif |
38 | 39 |
39 #include <algorithm> | 40 #include <algorithm> |
40 #include <map> | 41 #include <map> |
41 | 42 |
42 #include "webrtc/base/arraysize.h" | 43 #include "webrtc/base/arraysize.h" |
43 #include "webrtc/base/basictypes.h" | 44 #include "webrtc/base/basictypes.h" |
44 #include "webrtc/base/byteorder.h" | 45 #include "webrtc/base/byteorder.h" |
45 #include "webrtc/base/common.h" | 46 #include "webrtc/base/common.h" |
46 #include "webrtc/base/logging.h" | 47 #include "webrtc/base/logging.h" |
47 #include "webrtc/base/physicalsocketserver.h" | 48 #include "webrtc/base/networkmonitor.h" |
48 #include "webrtc/base/timeutils.h" | 49 #include "webrtc/base/timeutils.h" |
49 #include "webrtc/base/winping.h" | 50 #include "webrtc/base/winping.h" |
50 #include "webrtc/base/win32socketinit.h" | 51 #include "webrtc/base/win32socketinit.h" |
51 | 52 |
52 // stm: this will tell us if we are on OSX | 53 // stm: this will tell us if we are on OSX |
53 #ifdef HAVE_CONFIG_H | 54 #ifdef HAVE_CONFIG_H |
54 #include "config.h" | 55 #include "config.h" |
55 #endif | 56 #endif |
56 | 57 |
57 #if defined(WEBRTC_POSIX) | 58 #if defined(WEBRTC_POSIX) |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 size_t len = bind_addr.ToSockAddrStorage(&addr_storage); | 168 size_t len = bind_addr.ToSockAddrStorage(&addr_storage); |
168 sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage); | 169 sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage); |
169 int err = ::bind(s_, addr, static_cast<int>(len)); | 170 int err = ::bind(s_, addr, static_cast<int>(len)); |
170 UpdateLastError(); | 171 UpdateLastError(); |
171 #if !defined(NDEBUG) | 172 #if !defined(NDEBUG) |
172 if (0 == err) { | 173 if (0 == err) { |
173 dbg_addr_ = "Bound @ "; | 174 dbg_addr_ = "Bound @ "; |
174 dbg_addr_.append(GetLocalAddress().ToString()); | 175 dbg_addr_.append(GetLocalAddress().ToString()); |
175 } | 176 } |
176 #endif | 177 #endif |
| 178 if (ss_->network_binder()) { |
| 179 int result = |
| 180 ss_->network_binder()->BindSocketToNetwork(s_, bind_addr.ipaddr()); |
| 181 if (result < 0) { |
| 182 LOG(LS_INFO) << "Binding socket to network address " |
| 183 << bind_addr.ipaddr().ToString() << " result " << result; |
| 184 } |
| 185 } |
177 return err; | 186 return err; |
178 } | 187 } |
179 | 188 |
180 int PhysicalSocket::Connect(const SocketAddress& addr) { | 189 int PhysicalSocket::Connect(const SocketAddress& addr) { |
181 // TODO(pthatcher): Implicit creation is required to reconnect... | 190 // TODO(pthatcher): Implicit creation is required to reconnect... |
182 // ...but should we make it more explicit? | 191 // ...but should we make it more explicit? |
183 if (state_ != CS_CLOSED) { | 192 if (state_ != CS_CLOSED) { |
184 SetError(EALREADY); | 193 SetError(EALREADY); |
185 return SOCKET_ERROR; | 194 return SOCKET_ERROR; |
186 } | 195 } |
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 virtual SOCKET GetSocket() { | 1111 virtual SOCKET GetSocket() { |
1103 return INVALID_SOCKET; | 1112 return INVALID_SOCKET; |
1104 } | 1113 } |
1105 | 1114 |
1106 virtual bool CheckSignalClose() { return false; } | 1115 virtual bool CheckSignalClose() { return false; } |
1107 | 1116 |
1108 private: | 1117 private: |
1109 PhysicalSocketServer* ss_; | 1118 PhysicalSocketServer* ss_; |
1110 WSAEVENT hev_; | 1119 WSAEVENT hev_; |
1111 }; | 1120 }; |
1112 #endif // WEBRTC_WIN | 1121 #endif // WEBRTC_WIN |
1113 | 1122 |
1114 // Sets the value of a boolean value to false when signaled. | 1123 // Sets the value of a boolean value to false when signaled. |
1115 class Signaler : public EventDispatcher { | 1124 class Signaler : public EventDispatcher { |
1116 public: | 1125 public: |
1117 Signaler(PhysicalSocketServer* ss, bool* pf) | 1126 Signaler(PhysicalSocketServer* ss, bool* pf) |
1118 : EventDispatcher(ss), pf_(pf) { | 1127 : EventDispatcher(ss), pf_(pf) { |
1119 } | 1128 } |
1120 ~Signaler() override { } | 1129 ~Signaler() override { } |
1121 | 1130 |
1122 void OnEvent(uint32_t ff, int err) override { | 1131 void OnEvent(uint32_t ff, int err) override { |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1596 break; | 1605 break; |
1597 cmsElapsed = TimeSince(msStart); | 1606 cmsElapsed = TimeSince(msStart); |
1598 if ((cmsWait != kForever) && (cmsElapsed >= cmsWait)) { | 1607 if ((cmsWait != kForever) && (cmsElapsed >= cmsWait)) { |
1599 break; | 1608 break; |
1600 } | 1609 } |
1601 } | 1610 } |
1602 | 1611 |
1603 // Done | 1612 // Done |
1604 return true; | 1613 return true; |
1605 } | 1614 } |
1606 #endif // WEBRTC_WIN | 1615 #endif // WEBRTC_WIN |
1607 | 1616 |
1608 } // namespace rtc | 1617 } // namespace rtc |
OLD | NEW |