diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-07 21:44:56 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-07 21:44:56 +0000 |
commit | 7054e78fe6a2fcda72b06dc196b5f91cfdc75872 (patch) | |
tree | 2efdd9b07a784a17905d737df9b762d88a6cd1c4 /net/socket/tcp_server_socket_win.cc | |
parent | cd46545164adf645d744f3955b256cf89412cdc6 (diff) | |
download | chromium_src-7054e78fe6a2fcda72b06dc196b5f91cfdc75872.zip chromium_src-7054e78fe6a2fcda72b06dc196b5f91cfdc75872.tar.gz chromium_src-7054e78fe6a2fcda72b06dc196b5f91cfdc75872.tar.bz2 |
Reimplements net::AddressList without struct addrinfo.
net::AddressList extends std::vector<std::IPEndPoint> by canonical name. (Canonical name is planned to be removed as well.)
Removes dependency on sys_addrinfo.h throughout the codebase.
Introduces net::SockaddrStorage for convenience.
BUG=125696
TEST=green waterfall
Review URL: http://codereview.chromium.org/10309002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135731 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/tcp_server_socket_win.cc')
-rw-r--r-- | net/socket/tcp_server_socket_win.cc | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/net/socket/tcp_server_socket_win.cc b/net/socket/tcp_server_socket_win.cc index 7e5cf4d..5b88233 100644 --- a/net/socket/tcp_server_socket_win.cc +++ b/net/socket/tcp_server_socket_win.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -57,13 +57,11 @@ int TCPServerSocketWin::Listen(const IPEndPoint& address, int backlog) { return result; } - struct sockaddr_storage addr_storage; - size_t addr_len = sizeof(addr_storage); - struct sockaddr* addr = reinterpret_cast<struct sockaddr*>(&addr_storage); - if (!address.ToSockAddr(addr, &addr_len)) + SockaddrStorage storage; + if (!address.ToSockAddr(storage.addr, &storage.addr_len)) return ERR_INVALID_ARGUMENT; - int result = bind(socket_, addr, addr_len); + int result = bind(socket_, storage.addr, storage.addr_len); if (result < 0) { PLOG(ERROR) << "bind() returned an error"; result = MapSystemError(WSAGetLastError()); @@ -86,12 +84,10 @@ int TCPServerSocketWin::GetLocalAddress(IPEndPoint* address) const { DCHECK(CalledOnValidThread()); DCHECK(address); - struct sockaddr_storage addr_storage; - socklen_t addr_len = sizeof(addr_storage); - struct sockaddr* addr = reinterpret_cast<struct sockaddr*>(&addr_storage); - if (getsockname(socket_, addr, &addr_len)) + SockaddrStorage storage; + if (getsockname(socket_, storage.addr, &storage.addr_len)) return MapSystemError(WSAGetLastError()); - if (!address->FromSockAddr(addr, addr_len)) + if (!address->FromSockAddr(storage.addr, storage.addr_len)) return ERR_FAILED; return OK; @@ -121,11 +117,8 @@ int TCPServerSocketWin::Accept( } int TCPServerSocketWin::AcceptInternal(scoped_ptr<StreamSocket>* socket) { - struct sockaddr_storage addr_storage; - socklen_t addr_len = sizeof(addr_storage); - struct sockaddr* addr = reinterpret_cast<struct sockaddr*>(&addr_storage); - - int new_socket = accept(socket_, addr, &addr_len); + SockaddrStorage storage; + int new_socket = accept(socket_, storage.addr, &storage.addr_len); if (new_socket < 0) { int net_error = MapSystemError(WSAGetLastError()); if (net_error != ERR_IO_PENDING) @@ -134,7 +127,7 @@ int TCPServerSocketWin::AcceptInternal(scoped_ptr<StreamSocket>* socket) { } IPEndPoint address; - if (!address.FromSockAddr(addr, addr_len)) { + if (!address.FromSockAddr(storage.addr, storage.addr_len)) { NOTREACHED(); if (closesocket(new_socket) < 0) PLOG(ERROR) << "closesocket"; @@ -142,7 +135,7 @@ int TCPServerSocketWin::AcceptInternal(scoped_ptr<StreamSocket>* socket) { return ERR_FAILED; } scoped_ptr<TCPClientSocket> tcp_socket(new TCPClientSocket( - AddressList::CreateFromIPAddress(address.address(), address.port()), + AddressList(address), net_log_.net_log(), net_log_.source())); int adopt_result = tcp_socket->AdoptSocket(new_socket); if (adopt_result != OK) { |