| Index: chrome/test/chromedriver/net/port_server.cc
|
| diff --git a/chrome/test/chromedriver/net/port_server.cc b/chrome/test/chromedriver/net/port_server.cc
|
| index b7a7502749af61facfb41aa4667e4f3db2353c54..d5173652a124cf79fdab72dcf28081cf3e8f6452 100644
|
| --- a/chrome/test/chromedriver/net/port_server.cc
|
| +++ b/chrome/test/chromedriver/net/port_server.cc
|
| @@ -23,7 +23,7 @@
|
| #include <sys/un.h>
|
| #endif
|
|
|
| -PortReservation::PortReservation(const base::Closure& on_free_func, int port)
|
| +PortReservation::PortReservation(const base::Closure& on_free_func, uint16 port)
|
| : on_free_func_(on_free_func), port_(port) {}
|
|
|
| PortReservation::~PortReservation() {
|
| @@ -43,9 +43,9 @@ PortServer::PortServer(const std::string& path) : path_(path) {
|
|
|
| PortServer::~PortServer() {}
|
|
|
| -Status PortServer::ReservePort(int* port,
|
| +Status PortServer::ReservePort(uint16* port,
|
| scoped_ptr<PortReservation>* reservation) {
|
| - int port_to_use = 0;
|
| + uint16 port_to_use = 0;
|
| {
|
| base::AutoLock lock(free_lock_);
|
| if (free_.size()) {
|
| @@ -65,7 +65,7 @@ Status PortServer::ReservePort(int* port,
|
| return Status(kOk);
|
| }
|
|
|
| -Status PortServer::RequestPort(int* port) {
|
| +Status PortServer::RequestPort(uint16* port) {
|
| // The client sends its PID + \n, and the server responds with a port + \n,
|
| // which is valid for the lifetime of the referred process.
|
| #if defined(OS_LINUX)
|
| @@ -120,54 +120,57 @@ Status PortServer::RequestPort(int* port) {
|
|
|
| int new_port = 0;
|
| if (*response.rbegin() != '\n' ||
|
| - !base::StringToInt(response.substr(0, response.length() - 1), &new_port))
|
| + !base::StringToInt(response.substr(0, response.length() - 1),
|
| + &new_port) ||
|
| + new_port < 0 || new_port > 65535)
|
| return Status(kUnknownError, "failed to parse portserver response");
|
| - *port = new_port;
|
| + *port = static_cast<uint16>(new_port);
|
| return Status(kOk);
|
| #else
|
| return Status(kUnknownError, "not implemented for this platform");
|
| #endif
|
| }
|
|
|
| -void PortServer::ReleasePort(int port) {
|
| +void PortServer::ReleasePort(uint16 port) {
|
| base::AutoLock lock(free_lock_);
|
| free_.push_back(port);
|
| }
|
|
|
| -PortManager::PortManager(int min_port, int max_port)
|
| +PortManager::PortManager(uint16 min_port, uint16 max_port)
|
| : min_port_(min_port), max_port_(max_port) {
|
| CHECK_GE(max_port_, min_port_);
|
| }
|
|
|
| PortManager::~PortManager() {}
|
|
|
| -int PortManager::FindAvailablePort() const {
|
| - int start = base::RandInt(min_port_, max_port_);
|
| +uint16 PortManager::FindAvailablePort() const {
|
| + uint16 start = static_cast<uint16>(base::RandInt(min_port_, max_port_));
|
| bool wrapped = false;
|
| - for (int try_port = start; try_port != start || !wrapped; ++try_port) {
|
| + for (uint32 try_port = start; try_port != start || !wrapped; ++try_port) {
|
| if (try_port > max_port_) {
|
| wrapped = true;
|
| if (min_port_ == max_port_)
|
| break;
|
| try_port = min_port_;
|
| }
|
| - if (taken_.count(try_port))
|
| + uint16 try_port_uint16 = static_cast<uint16>(try_port);
|
| + if (taken_.count(try_port_uint16))
|
| continue;
|
|
|
| char parts[] = {127, 0, 0, 1};
|
| net::IPAddressNumber address(parts, parts + arraysize(parts));
|
| net::NetLog::Source source;
|
| net::TCPServerSocket sock(NULL, source);
|
| - if (sock.Listen(net::IPEndPoint(address, try_port), 1) == net::OK)
|
| - return try_port;
|
| + if (sock.Listen(net::IPEndPoint(address, try_port_uint16), 1) == net::OK)
|
| + return try_port_uint16;
|
| }
|
| return 0;
|
| }
|
|
|
| -Status PortManager::ReservePort(int* port,
|
| +Status PortManager::ReservePort(uint16* port,
|
| scoped_ptr<PortReservation>* reservation) {
|
| base::AutoLock lock(lock_);
|
| - int port_to_use = FindAvailablePort();
|
| + uint16 port_to_use = FindAvailablePort();
|
| if (!port_to_use)
|
| return Status(kUnknownError, "unable to find open port");
|
|
|
| @@ -181,9 +184,10 @@ Status PortManager::ReservePort(int* port,
|
| }
|
|
|
| Status PortManager::ReservePortFromPool(
|
| - int* port, scoped_ptr<PortReservation>* reservation) {
|
| + uint16* port,
|
| + scoped_ptr<PortReservation>* reservation) {
|
| base::AutoLock lock(lock_);
|
| - int port_to_use = 0;
|
| + uint16 port_to_use = 0;
|
| if (unused_forwarded_port_.size()) {
|
| port_to_use = unused_forwarded_port_.front();
|
| unused_forwarded_port_.pop_front();
|
| @@ -202,12 +206,12 @@ Status PortManager::ReservePortFromPool(
|
| return Status(kOk);
|
| }
|
|
|
| -void PortManager::ReleasePort(int port) {
|
| +void PortManager::ReleasePort(uint16 port) {
|
| base::AutoLock lock(lock_);
|
| taken_.erase(port);
|
| }
|
|
|
| -void PortManager::ReleasePortToPool(int port) {
|
| +void PortManager::ReleasePortToPool(uint16 port) {
|
| base::AutoLock lock(lock_);
|
| taken_.erase(port);
|
| unused_forwarded_port_.push_back(port);
|
|
|