diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-11 22:15:09 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-11 22:15:09 +0000 |
commit | 33cdc9b854044864f7494c23a21f78733a961236 (patch) | |
tree | 5cff7b26780bc68451fb3917baea18bdb9f1c95a /net/udp/udp_socket_libevent.cc | |
parent | a7fb410b943d13c9f4aed11fe8d2774f990b3220 (diff) | |
download | chromium_src-33cdc9b854044864f7494c23a21f78733a961236.zip chromium_src-33cdc9b854044864f7494c23a21f78733a961236.tar.gz chromium_src-33cdc9b854044864f7494c23a21f78733a961236.tar.bz2 |
Revert 77870 - UDP sockets implementation for windows.
BUG=None
TEST=Unittests
Review URL: http://codereview.chromium.org/6658027
TBR=sergeyu@chromium.org
Review URL: http://codereview.chromium.org/6681014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77872 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/udp/udp_socket_libevent.cc')
-rw-r--r-- | net/udp/udp_socket_libevent.cc | 42 |
1 files changed, 14 insertions, 28 deletions
diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc index de24253..7c75ce3 100644 --- a/net/udp/udp_socket_libevent.cc +++ b/net/udp/udp_socket_libevent.cc @@ -63,8 +63,6 @@ int MapPosixError(int os_error) { return ERR_ADDRESS_INVALID; case EMSGSIZE: return ERR_MSG_TOO_BIG; - case ENOTCONN: - return ERR_SOCKET_NOT_CONNECTED; case 0: return OK; default: @@ -101,21 +99,9 @@ UDPSocketLibevent::~UDPSocketLibevent() { } void UDPSocketLibevent::Close() { - DCHECK(CalledOnValidThread()); - - if (read_callback_) - DoReadCallback(ERR_ABORTED); - if (write_callback_) - DoReadCallback(ERR_ABORTED); - if (!is_connected()) return; - bool ok = read_socket_watcher_.StopWatchingFileDescriptor(); - DCHECK(ok); - ok = write_socket_watcher_.StopWatchingFileDescriptor(); - DCHECK(ok); - if (HANDLE_EINTR(close(socket_)) < 0) PLOG(ERROR) << "close"; @@ -175,7 +161,10 @@ int UDPSocketLibevent::Read(IOBuffer* buf, DCHECK(callback); // Synchronous operation not supported DCHECK_GT(buf_len, 0); - int nread = InternalRead(buf, buf_len); + read_buf_ = buf; + read_buf_len_ = buf_len; + + int nread = InternalRead(); if (nread != ERR_IO_PENDING) return nread; @@ -186,8 +175,6 @@ int UDPSocketLibevent::Read(IOBuffer* buf, return MapPosixError(errno); } - read_buf_ = buf; - read_buf_len_ = buf_len; read_callback_ = callback; return ERR_IO_PENDING; } @@ -245,7 +232,7 @@ int UDPSocketLibevent::Connect(const IPEndPoint& address) { DCHECK(!remote_address_.get()); int rv = CreateSocket(address); if (rv < 0) - return rv; + return MapPosixError(rv); struct sockaddr_storage addr_storage; size_t addr_len = sizeof(addr_storage); @@ -255,7 +242,7 @@ int UDPSocketLibevent::Connect(const IPEndPoint& address) { rv = HANDLE_EINTR(connect(socket_, addr, addr_len)); if (rv < 0) - return MapPosixError(errno); + return MapPosixError(rv); remote_address_.reset(new IPEndPoint(address)); return rv; @@ -266,7 +253,7 @@ int UDPSocketLibevent::Bind(const IPEndPoint& address) { DCHECK(!local_address_.get()); int rv = CreateSocket(address); if (rv < 0) - return rv; + return MapPosixError(rv); struct sockaddr_storage addr_storage; size_t addr_len = sizeof(addr_storage); @@ -276,7 +263,7 @@ int UDPSocketLibevent::Bind(const IPEndPoint& address) { rv = bind(socket_, addr, addr_len); if (rv < 0) - return MapPosixError(errno); + return MapPosixError(rv); local_address_.reset(new IPEndPoint(address)); return rv; @@ -305,7 +292,7 @@ void UDPSocketLibevent::DoWriteCallback(int rv) { } void UDPSocketLibevent::DidCompleteRead() { - int result = InternalRead(read_buf_, read_buf_len_); + int result = InternalRead(); if (result != ERR_IO_PENDING) { read_buf_ = NULL; read_buf_len_ = 0; @@ -318,9 +305,9 @@ void UDPSocketLibevent::DidCompleteRead() { int UDPSocketLibevent::CreateSocket(const IPEndPoint& address) { socket_ = socket(address.GetFamily(), SOCK_DGRAM, 0); if (socket_ == kInvalidSocket) - return MapPosixError(errno); + return errno; if (SetNonBlocking(socket_)) { - const int err = MapPosixError(errno); + const int err = errno; Close(); return err; } @@ -344,7 +331,7 @@ void UDPSocketLibevent::DidCompleteWrite() { } } -int UDPSocketLibevent::InternalRead(IOBuffer* buf, int buf_len) { +int UDPSocketLibevent::InternalRead() { int bytes_transferred; int flags = 0; @@ -354,8 +341,8 @@ int UDPSocketLibevent::InternalRead(IOBuffer* buf, int buf_len) { bytes_transferred = HANDLE_EINTR(recvfrom(socket_, - buf->data(), - buf_len, + read_buf_->data(), + read_buf_len_, flags, addr, &addr_len)); @@ -373,7 +360,6 @@ int UDPSocketLibevent::InternalRead(IOBuffer* buf, int buf_len) { } return result; } - int UDPSocketLibevent::InternalWrite(IOBuffer* buf, int buf_len) { struct sockaddr_storage addr_storage; size_t addr_len = sizeof(addr_storage); |