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

Unified Diff: content/browser/renderer_host/p2p_socket_host_posix.cc

Issue 6685013: Use IPEndPoint for P2P IPC messages (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 9 months 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
Index: content/browser/renderer_host/p2p_socket_host_posix.cc
diff --git a/content/browser/renderer_host/p2p_socket_host_posix.cc b/content/browser/renderer_host/p2p_socket_host_posix.cc
index e7a804b6e0a61ef3b10c94a37c9d54245cbc0e4c..eb1f8b3d51440254d2454d79fe31897bab2fe316 100644
--- a/content/browser/renderer_host/p2p_socket_host_posix.cc
+++ b/content/browser/renderer_host/p2p_socket_host_posix.cc
@@ -71,34 +71,6 @@ bool GetLocalAddress(sockaddr_in* addr) {
return found;
}
-bool SocketAddressToSockAddr(const P2PSocketAddress& address,
- sockaddr_in* addr) {
- // TODO(sergeyu): Add IPv6 support.
- if (address.address.size() != 4) {
- return false;
- }
-
- addr->sin_family = AF_INET;
- memcpy(&addr->sin_addr, &address.address[0], 4);
- addr->sin_port = htons(address.port);
- return true;
-}
-
-bool SockAddrToSocketAddress(sockaddr_in* addr,
- P2PSocketAddress* address) {
- if (addr->sin_family != AF_INET) {
- LOG(ERROR) << "SockAddrToSocketAddress: only IPv4 addresses are supported";
- // TODO(sergeyu): Add IPv6 support.
- return false;
- }
-
- address->address.resize(4);
- memcpy(&address->address[0], &addr->sin_addr, 4);
- address->port = ntohs(addr->sin_port);
-
- return true;
-}
-
} // namespace
P2PSocketHostPosix::P2PSocketHostPosix(
@@ -161,16 +133,14 @@ bool P2PSocketHostPosix::Init() {
return false;
}
- P2PSocketAddress address;
- if (!SockAddrToSocketAddress(&addr, &address)) {
+ net::IPEndPoint address;
+ if (!address.FromSockAddr(reinterpret_cast<sockaddr*>(&addr), addrlen)) {
OnError();
return false;
}
VLOG(1) << "getsockname() returned "
- << net::NetAddressToString(
- reinterpret_cast<sockaddr*>(&addr), sizeof(addr))
- << ":" << address.port;
+ << address.ToString();
state_ = STATE_OPEN;
@@ -196,24 +166,24 @@ void P2PSocketHostPosix::DidCompleteRead() {
std::vector<char> data;
data.resize(4096);
- sockaddr_in addr;
- socklen_t addr_len = sizeof(addr);
- int result = recvfrom(socket_, &data[0], data.size(), 0,
- reinterpret_cast<sockaddr*>(&addr), &addr_len);
+ sockaddr_storage addr_storage;
+ sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage);
+ socklen_t addr_len = sizeof(addr_storage);
+ int result = recvfrom(socket_, &data[0], data.size(), 0, addr, &addr_len);
if (result > 0) {
data.resize(result);
- VLOG(2) << "received " << result << " bytes from "
- << net::NetAddressToString(
- reinterpret_cast<sockaddr*>(&addr), sizeof(addr))
- << ":" << ntohs(addr.sin_port);
- P2PSocketAddress address;
- if (!SockAddrToSocketAddress(&addr, &address)) {
- // Address conversion fails only if we receive a non-IPv4
- // packet, which should never happen because the socket is IPv4.
+
+ net::IPEndPoint address;
+ if (!address.FromSockAddr(addr, addr_len) ||
+ address.GetFamily() != AF_INET) {
+ // We should never receive IPv6 packet on IPv4 packet.
NOTREACHED();
return;
}
+ VLOG(2) << "received " << result << " bytes from "
+ << address.ToString();
+
host_->Send(new P2PMsg_OnDataReceived(routing_id_, id_,
address, data));
} else if (result < 0) {
@@ -222,19 +192,18 @@ void P2PSocketHostPosix::DidCompleteRead() {
}
}
-void P2PSocketHostPosix::Send(const P2PSocketAddress& socket_address,
+void P2PSocketHostPosix::Send(const net::IPEndPoint& socket_address,
const std::vector<char>& data) {
- sockaddr_in addr;
- SocketAddressToSockAddr(socket_address, &addr);
- int result = sendto(socket_, &data[0], data.size(), 0,
- reinterpret_cast<sockaddr*>(&addr), sizeof(addr));
+ sockaddr_storage addr_storage;
+ sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage);
+ size_t addr_len = sizeof(addr_storage);
+ socket_address.ToSockAddr(addr, &addr_len);
+ int result = sendto(socket_, &data[0], data.size(), 0, addr, addr_len);
if (result < 0) {
LOG(ERROR) << "Send failed.";
} else {
VLOG(2) << "Sent " << result << " bytes to "
- << net::NetAddressToString(
- reinterpret_cast<sockaddr*>(&addr), sizeof(addr))
- << ":" << ntohs(addr.sin_port);
+ << socket_address.ToString();
}
}

Powered by Google App Engine
This is Rietveld 408576698