| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/dial/dial_service.h" | 5 #include "chrome/browser/extensions/api/dial/dial_service.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 net::NetLog::Source net_log_source) { | 165 net::NetLog::Source net_log_source) { |
| 166 DCHECK(thread_checker_.CalledOnValidThread()); | 166 DCHECK(thread_checker_.CalledOnValidThread()); |
| 167 DCHECK(!socket_.get()); | 167 DCHECK(!socket_.get()); |
| 168 DCHECK(bind_ip_address.size() == net::kIPv4AddressSize); | 168 DCHECK(bind_ip_address.size() == net::kIPv4AddressSize); |
| 169 | 169 |
| 170 net::RandIntCallback rand_cb = base::Bind(&base::RandInt); | 170 net::RandIntCallback rand_cb = base::Bind(&base::RandInt); |
| 171 socket_.reset(new UDPSocket(net::DatagramSocket::RANDOM_BIND, | 171 socket_.reset(new UDPSocket(net::DatagramSocket::RANDOM_BIND, |
| 172 rand_cb, | 172 rand_cb, |
| 173 net_log, | 173 net_log, |
| 174 net_log_source)); | 174 net_log_source)); |
| 175 socket_->AllowBroadcast(); | |
| 176 | 175 |
| 177 // 0 means bind a random port | 176 // 0 means bind a random port |
| 178 net::IPEndPoint address(bind_ip_address, 0); | 177 net::IPEndPoint address(bind_ip_address, 0); |
| 179 | 178 |
| 180 if (!CheckResult("Bind", socket_->Bind(address))) | 179 if (socket_->Open(address.GetFamily()) != net::OK || |
| 180 socket_->SetBroadcast(true) != net::OK || |
| 181 !CheckResult("Bind", socket_->Bind(address))) { |
| 182 socket_.reset(); |
| 181 return false; | 183 return false; |
| 184 } |
| 182 | 185 |
| 183 DCHECK(socket_.get()); | 186 DCHECK(socket_.get()); |
| 184 | 187 |
| 185 recv_buffer_ = new IOBufferWithSize(kDialRecvBufferSize); | 188 recv_buffer_ = new IOBufferWithSize(kDialRecvBufferSize); |
| 186 return ReadSocket(); | 189 return ReadSocket(); |
| 187 } | 190 } |
| 188 | 191 |
| 189 void DialServiceImpl::DialSocket::SendOneRequest( | 192 void DialServiceImpl::DialSocket::SendOneRequest( |
| 190 const net::IPEndPoint& send_address, | 193 const net::IPEndPoint& send_address, |
| 191 const scoped_refptr<net::StringIOBuffer>& send_buffer) { | 194 const scoped_refptr<net::StringIOBuffer>& send_buffer) { |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 for (ScopedVector<DialSocket>::const_iterator iter = dial_sockets_.begin(); | 617 for (ScopedVector<DialSocket>::const_iterator iter = dial_sockets_.begin(); |
| 615 iter != dial_sockets_.end(); | 618 iter != dial_sockets_.end(); |
| 616 ++iter) { | 619 ++iter) { |
| 617 if (!((*iter)->IsClosed())) | 620 if (!((*iter)->IsClosed())) |
| 618 return true; | 621 return true; |
| 619 } | 622 } |
| 620 return false; | 623 return false; |
| 621 } | 624 } |
| 622 | 625 |
| 623 } // namespace extensions | 626 } // namespace extensions |
| OLD | NEW |