Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5928)

Unified Diff: chrome/test/chromedriver/net/port_server.cc

Issue 655063002: Use uint16 for port numbers more pervasively. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert bad change Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/chromedriver/net/port_server.h ('k') | chrome/test/chromedriver/net/port_server_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « chrome/test/chromedriver/net/port_server.h ('k') | chrome/test/chromedriver/net/port_server_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698